//Fonction qui permet d'insérer un texte clignotant
//Utilisation : dans le code html : <blink>LE TEXTE QUI DOIT CLIGNOTER</blink>
function doBlink()
{
  var blink = document.all.tags("blink")
  for (var i=0; i < blink.length; i++)
    blink[i].style.visibility = blink[i].style.visibility == "" ? "hidden" : ""
}
function startBlink()
{
  if (document.all)
    setInterval("doBlink()",500)
}
window.onload = startBlink;




function phoneMask()
{
  /*
  *Phone Number Mask
  *Phone Number Mask to is to mask a text input to the form (xxx)xxx-xxxx.
  *On the keypress event, any characters besides "012345679" are basically ignored.
  */
  var sMask = "01234567890";
  var KeyTyped = String.fromCharCode(window.event.keyCode);
  var srcObject = window.event.srcElement;
  if (sMask.indexOf(KeyTyped.toString()) == -1)
  {
    window.event.keyCode = 0;
    _ret = false;
  }
  /*
  * The varible "frigger is used because" the friggen DOM
  *does not does not expose lenght via window.event.srcElement.length
  */
  frigger = document.getElementById(window.event.srcElement.id);
  keyCount = frigger.value.length;
  var tmpStr = "";
  keyEntered = KeyTyped;
  keyCount++;
  switch (keyCount)
  {
    case 3:
    srcObject.value += ".";
    break;
    case 6:
    srcObject.value += ".";
    break;
    case 9:
    srcObject.value += ".";
    break;
    case 12:
    srcObject.value += ".";
    break;
  }
  /*Utilisation :
  *<INPUT class=tbFlat onkeypress='phoneMask();' id=txtPhoneSample maxLength=13 size=14
  name='txtClassName'>
  */
}


function ssnMask(event)
{
  /*
  *SSN Mask
  *Social Security Number Mask to is to mask a text input to the form xxx-xxx-xxxx.
  *On the keypress event, any characters besides "012345679" are basically ignored.
  */
  var sMask = "01234567890";
  var KeyTyped = String.fromCharCode(getKeyCode(event));
  // IE only version var KeyTyped = String.fromCharCode(window.event.keyCode);
  // ** IE only var srcObject = window.event.srcElement;
  var targ = getTarget(event);
  keyCount = targ.value.length;
  if (getKeyCode(event) < 15) /* del, backspace and other movement characters are okay */
  {
    return true;
  } else if (sMask.indexOf(KeyTyped.toString()) == -1)
  {
    //window.event.keyCode = 0;
    //_ret = false;
    //alert(getKeyCode(event));
    return false;
  }
  var tmpStr = " ";
  keyEntered = KeyTyped;
  keyCount++;
  switch (keyCount)
  {
    case 2:
    targ.value += " ";
    break;
    case 5:
    targ.value += " ";
    break;
    case 8:
    targ.value += " ";
    break;
    case 11:
    targ.value += " ";
    break;
    case 15:
    targ.value += " ";
    break;
    case 19:
    targ.value += " ";
    break;
  }
  return true;
  /*Utilisation :
  * <INPUT class=tbFlat onkeypress='return ssnMask(event);' id=txtPhoneSample maxLength=12 size=14
  name='txtClassName'>
  */
}


function dateMask()
{
  var sMask = "01234567890";
  var KeyTyped = String.fromCharCode(window.event.keyCode);

  var srcObject = window.event.srcElement;
  if (sMask.indexOf(KeyTyped.toString()) == -1)
  {
    window.event.keyCode = 0;
    _ret = false;
  }
  frigger = document.getElementById(window.event.srcElement.id);
  keyCount = frigger.value.length;

  var tmpStr = "";
  keyEntered = KeyTyped;
  keyCount++;
  switch (keyCount)
  {
    case 3:
    srcObject.value += "/";
    break;
    case 6:
    srcObject.value += "/";
    break;
  }
  /*Utilisation :
  *<INPUT class=tbFlat onkeypress='dateMask();' id=sate maxLength=10 size=8
  name='date'>
  */
}


function anyMask(event, sMask)
{
  /*
  AnyMask
  *After creating the Social Security Number Mask and phone number mask,
  *I decide to create a more generic routine for masked input.

  *The functionality of this routine is similiar to the masked edit controls availible in VB
  */
  //var sMask = "**?##?####";
  var KeyTyped = String.fromCharCode(getKeyCode(event));
  var targ = getTarget(event);
  keyCount = targ.value.length;
  //alert(sMask.charAt(keyCount));
  if (sMask.charAt(keyCount) == '*')
    return true;
  if (sMask.charAt(keyCount) == KeyTyped)
  {
    return true;
  }
  if ((sMask.charAt(keyCount) == '#') && isNumeric(KeyTyped))
    return true;
  if ((sMask.charAt(keyCount) == 'A') && isAlpha(KeyTyped))
    return true;
  if ((sMask.charAt(keyCount) == '?') && isPunct(KeyTyped))
    return true;
  if (KeyTyped.charCodeAt(0) < 32) return true;
    return false;
  /*Utilisation :
  *<INPUT class=tbFlat onkeypress='return anyMask(event, "##AA??");' id='txtAnySample1' maxLength=12 size=14
  *name='txtAnySample1'>
  ***Character Reference
  ***'*' - Any Character
  ***'#' - Numbers 0-9
  ***'?' - Any Punctation Character
  ***'A' - 'A' thru little 'z'

  */
}


function getTarget(e)
{
  // IE5
  if (e.srcElement)
  {
    return e.srcElement;
  }
  if (e.target)
  {
    return e.target;
  }
}


function getKeyCode(e)
{
 //IE5
 if (e.srcElement)
 {
   return e.keyCode
 }
 // NC5
 if (e.target)
 {
   return e.which
 }
}


function isNumeric(c)
{
  var sNumbers = "01234567890";
  if (sNumbers.indexOf(c) == -1)
  return false;
  else return true;
}


function isAlpha(c)
{
  var lCode = c.charCodeAt(0);
  if (lCode >= 65 && lCode <= 122 )
  {
    return true;
  }
  else
    return false;
}


function isPunct(c)
{
  var lCode = c.charCodeAt(0);
  if (lCode >= 32 && lCode <= 47 )
  {
    return true;
  }
  else
    return false;
}




function setFocusOnField(frmName,controlName)
{
  document.forms[frmName].elements[controlName].focus();
}


function InsertDebutNumSS()
{
  if (document.forms["smdb_frameint"].elements["smdb_field_int_secu"].value.length<=10) {
    var sex = document.forms["smdb_frameint"].elements["smdb_field_int_titre"].value;
    if (sex==2){
      sex=1;
    } else {
      sex=2;
    }
    var an_naiss=document.forms["smdb_frameint"].elements["smdb_field_int_date_naiss"].value.substring(8,10);
    var mois_naiss=document.forms["smdb_frameint"].elements["smdb_field_int_date_naiss"].value.substring(3,5)
    var dept_naiss=document.forms["smdb_frameint"].elements["smdb_field_int_dept_naiss"].value
    var tmpStr=sex+"-"+an_naiss+"-"+mois_naiss+"-"+dept_naiss;
    document.forms["smdb_frameint"].elements["smdb_field_int_secu"].value=tmpStr;
  }
}


//Fonction permettant d'afficher une boite de dialogue OK/Cancel
function confirmIt (dbMsg,okURL,cancelURL,aOkMsg,aCancelMsg,okTyp,cancelTyp,okWin,cancelWin) {
        if (confirm (dbMsg)) {
                if (okTyp=="u"){
                        if(okWin=="Self") location.href=okURL;
                        if(okWin=="Parent") parent.location.href=okURL;
                }
                else {
                        alert(aOkMsg);
                }
        }
        else {
                if (cancelTyp=="u") {
                        if(cancelWin=="Self") location.href=cancelURL;
                        if(cancelWin=="Parent") parent.location.href=cancelURL;
                }
                else {
                        alert(aCancelMsg);
                }
        }
    }
//Utilisation :
//<a href="JavaScript:%20confirmIt('Texte à afficher','page à atteindre si ok','page à atteindre si cancel','','','u','u','Self','Self')">hyperlien</a>




  //expand or reduce a TextArea box
  //<textarea name="smdb_field_mla_filter" onFocus="textAreaZoomOnFocus(smdb_field_mla_filter,'Z',1,10);" onBlur="textAreaZoomOnFocus(smdb_field_mla_filter,'U',1,10);"  COLS=70  ROWS=1> (('[THEME]' eq 'ENSEIGNEMENT') and ('[CATEGORIE]' eq 'PRIMAIRE'))</textarea>


  function textAreaZoomOnFocus(e,zoomOrUnzoom,minRows,maxRows){
    if (zoomOrUnzoom=="Z"){
      e.rows=maxRows;
    }else{
      e.rows=minRows;
    }
  }




  //open a window that zoom a TEXT input box
  //<input type=button value=Zoom onClick="zoomElement(toto,'toto',200,300,18,15);"><input type=text name=toto >
  function showZoomFieldHtml(e,eName,width,height,cols,rows) {
      var fen = window.open('','Zoom','toolbar=0,location=0,directories=0,status=0,scrollbars=0,resizable=0,copyhistory=0,menuBar=0,width='+width+',height='+height+'');
      fen.document.open("text/html");
      fen.document.write("<HEAD><Title>Zoom</title></head>");
      fen.document.write("<TEXTAREA name=ZOOMTEXT ROWS="+rows+" COLS="+cols+">");
      fen.document.write(e.value);
      fen.document.write("</TEXTAREA><br>");
      fen.document.write("<input type=BUTTON value=Ok name=CloseOk onClick=\"window.opener."+eName+".value=ZOOMTEXT.value;window.close();\">");
      fen.document.write("<input type=BUTTON value=Cancel name=CloseCancel onClick=\"window.close();\">");
      fen.document.close();
  }


  //equivalent to debug_print but for JS object
  //debug_print(document,"document");
  function debug_print(object,objectName) {
      var fen = window.open();
      fen.document.open("text/html");


      fen.document.write("<H1>Contenu de l'objet " + objectName + "</H1>");
      fen.document.write("<TABLE>");


      for(var i in object) {
        fen.document.write("<TR><TD><TT>" + objectName + "." + i + " </TT>" +
                               "<TD><TT>== " + object[i] + "</TT>");
      }


      fen.document.write("</TABLE>");
      fen.document.close();
  }








  function storeCaret (textEl) {
    if (textEl.createTextRange)
      textEl.caretPos = document.selection.createRange().duplicate();
  }
  function insertAtCaret (textEl, text) {
    if (textEl.createTextRange && textEl.caretPos) {
      var caretPos = textEl.caretPos;
      caretPos.text =
      caretPos.text.charAt(caretPos.text.length - 1) == ' ' ?
      text + ' ' : text;
    }else{
      textEl.value = textEl.value + text;
    }
  }




  var divZoomSet  = Array();
  var elemZoomDiv = Array();
  var elemZoomCaretPos = Array();




  function setZoomDiv(id,txtvalue,cols,rows,fieldsStr) {
     if (!document.createElement) {
       return;
     }
     elemZoomDiv[id] =  document.createElement('div');
     if (typeof(elemZoomDiv[id].innerHTML) != 'string') {
       return;
     }
     var selectsFormElement;
     selectsFormElement='';
     if (fieldsStr){
       if (fieldsStr!=''){
         arrfields=fieldsStr.split("¤");
         selectsFormElement='Fields<br>'
                           +'<select name=SELECT_1_'+ id +' onChange="insertAtCaret(ZOOMTEXT'+id+',this.value);">';
                           var part_num=0;
                           while (part_num < arrfields.length){
                             selectsFormElement=selectsFormElement +'  <option value="\''+arrfields[part_num]+'\'">'+arrfields[part_num]+'</option>'
                             part_num+=1;
                           }
         selectsFormElement=selectsFormElement  +'</select><br>';
       }

     }
     selectsFormElement=selectsFormElement+
                       'Operators<br>'
                       +'<select name=SELECT_2_'+ id +' onChange="insertAtCaret(ZOOMTEXT'+id+',this.value);">'
                       +'  <option value="eq">equal (eq)</option>'
                       +'  <option value="neq">non equal (neq))</option>'
                       +'  <option value="&lt;&gt;">&lt;&gt; (diff)</option>'
                       +'  <option value="&lt">&lt;</option>'
                       +'  <option value="&gt;">&gt;</option>'
                       +'</select>';
     if(selectsFormElement=='') selectsFormElement='&nbsp;';


     elemZoomDiv[id].id = 'zoompicker'+id;
     elemZoomDiv[id].style.position = 'absolute';
     elemZoomDiv[id].style.display = 'none';
     elemZoomDiv[id].style.border = '#000000 1px solid';
     elemZoomDiv[id].style.background = '#FFFFFF';
     elemZoomDiv[id].innerHTML = '<span style="font-family:Verdana; font-size:11px;">'
          + '<table border=0 align=center>'
          + '  <tr>'
          + '    <td>'
          + '      <TEXTAREA name=ZOOMTEXT'+id+' ROWS='+rows+' COLS='+cols+' ONSELECT="storeCaret(this);" ONCLICK="storeCaret(this);" ONKEYUP="storeCaret(this);">'+ txtvalue +'</TEXTAREA><br>'

          + '    </td>'
          + '    <td valign=top>'
          + '    ' + selectsFormElement
          + '    </td>'
          + '  </tr>'
          + '  <tr>'
          + '    <td align=right colspan=2>'
          + '      <input type=BUTTON value=Ok name=CloseOk onClick="'+id+'.value=ZOOMTEXT'+id+'.value;hidePickZoom(\''+id+'\');">'
          + '        &nbsp;&nbsp;'
          + '      <input type=BUTTON value=Cancel name=CloseCancel onClick="hidePickZoom(\''+id+'\');">'
          + '    </td>'
          + '  </tr>'
          + '</table>'
          + '</span>';
     document.body.appendChild(elemZoomDiv[id]);
     divZoomSet[id] = true;
   }


   function hidePickZoom(id){
     var picker = getObj('zoompicker'+id);
     if (picker.style.display == 'block') { //id == curId &&
       picker.style.display = 'none';
     }
   }


   function showZoomField(id,cols,rows,fieldsStr) {
     var txtvalue,objfield,objTextArea;
     objfield = getObj(id);
     //debug_print(objfield,'objfield');
     txtvalue=objfield.value;
     if (!divZoomSet[id]) {
       setZoomDiv(id,txtvalue,rows,cols,fieldsStr);
     }else{
       objTextArea = getObj('ZOOMTEXT'+id);
       objTextArea.value = txtvalue;
     }


     var picker = getObj('zoompicker'+id);
     if ( picker.style.display == 'block') {
      picker.style.display = 'none';
      return;
    }
    curId = id;
    var thelink = getObj(id);
    picker.style.top = getAbsoluteOffsetTop(thelink) + 20;
    picker.style.left = getAbsoluteOffsetLeft(thelink);
    picker.style.display = 'block';
  }


  function make_new(sel,value) {
    var retval = document.createElement("OPTION");
    retval.text = value;
    retval.value = value;
    return retval;
  }
  function addSelectHtml(sel) {
    var value;
    value = prompt("Nouvelle valeur","");
    if (name != null){
      var elem = make_new(sel,value);
      sel.add(elem,0);
      sel.options[0].selected=true;
    }
  }


  // ====================================================================
//       URLEncode and URLDecode functions
//
// Copyright Albion Research Ltd. 2002
// http://www.albionresearch.com/
//
// You may copy these functions providing that
// (a) you leave this copyright notice intact, and
// (b) if you use these functions on a publicly accessible
//     web site you include a credit somewhere on the web site
//     with a link back to http://www.albionresarch.com/
//
// If you find or fix any bugs, please let us know at albionresearch.com
//
// SpecialThanks to Neelesh Thakur for being the first to
// report a bug in URLDecode() - now fixed 2003-02-19.
// ====================================================================
function URLEncode(plaintext )
{
    // The Javascript escape and unescape functions do not correspond
    // with what browsers actually do...
    var SAFECHARS = "0123456789" +                    // Numeric
                    "ABCDEFGHIJKLMNOPQRSTUVWXYZ" +    // Alphabetic
                    "abcdefghijklmnopqrstuvwxyz" +
                    "-_.!~*'()";                    // RFC2396 Mark characters
    var HEX = "0123456789ABCDEF";


    var encoded = "";
    for (var i = 0; i < plaintext.length; i++ ) {
        var ch = plaintext.charAt(i);
        if (ch == " ") {
            encoded += "+";                // x-www-urlencoded, rather than %20
        } else if (SAFECHARS.indexOf(ch) != -1) {
            encoded += ch;
        } else {
            var charCode = ch.charCodeAt(0);
            if (charCode > 255) {
                alert( "Unicode Character '"
                        + ch
                        + "' cannot be encoded using standard URL encoding.\n" +
                          "(URL encoding only supports 8-bit characters.)\n" +
                          "A space (+) will be substituted." );
                encoded += "+";
            } else {
                encoded += "%";
                encoded += HEX.charAt((charCode >> 4) & 0xF);
                encoded += HEX.charAt(charCode & 0xF);
            }
        }
    } // for


    return encoded;
};


function URLDecode(encoded )
{
   // Replace + with ' '
   // Replace %xx with equivalent character
   // Put [ERROR] in output if %xx is invalid.
   var HEXCHARS = "0123456789ABCDEFabcdef";
   var plaintext = "";
   var i = 0;
   while (i < encoded.length) {
       var ch = encoded.charAt(i);
       if (ch == "+") {
           plaintext += " ";
           i++;
       } else if (ch == "%") {
            if (i < (encoded.length-2)
                    && HEXCHARS.indexOf(encoded.charAt(i+1)) != -1
                    && HEXCHARS.indexOf(encoded.charAt(i+2)) != -1 ) {
                plaintext += unescape( encoded.substr(i,3) );
                i += 3;
            } else {
                alert( 'Bad escape combination near ...' + encoded.substr(i) );
                plaintext += "%[ERROR]";
                i++;
            }
        } else {
           plaintext += ch;
           i++;
        }
    } // while
   return plaintext;
};

function Decr_Stock (row) {        
  if (document.forms[row-1].elements["smdb_field_cmd_status"].value == "PAIEMENT_ACCEPTE") {
    if (confirm ("Voulez vous mettre à jour le stock correspondant à cette commande ? \nEn cliquant sur OK, le stock des produits de cette commande sera décrémenté.")) {
      //validateForm(this,false,false,false,true,16);
      document.smdb_framecmd.submit()
    }else{ 
      return false;
    }
  }
};

function CondVentAcc (elem) {
  if(document.getElementsByName(elem)[0].checked==false) {
    alert('Pour tout achat, vous devez accepter les conditions générales de vente.');
    return false;
  }
};
