//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);
  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);
    if(!document.all){
    	  before= sel.options[0];
    	}else{
    	  before=0;
    	} 
    sel.add(elem,before);
    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);
      }
    }
  }
  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++;
    }
  }
  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;
  }
};

//FONCTION POUR LES TEXTAREA Avec l'AIDE HTML => insertion des balsies HTML'
	function insertion(repdeb, repfin,fieldId) {
	  var input = $(fieldId);
	  input.focus();
	  /* pour l'Explorer Internet  */
	  if(typeof document.selection != 'undefined') {
	    /* Insertion du code de formatage */
	    var range = document.selection.createRange();
	    var insText = range.text;
	    range.text = repdeb + insText + repfin;
	    /* Ajustement de la position du curseur  */
	    range = document.selection.createRange();
	    if (insText.length == 0) {
	      range.move('character', -repfin.length);
	    } else {
	      range.moveStart('character', repdeb.length + insText.length + repfin.length);
	    }
	    range.select();
	  }
	  
	  /* pour navigateurs plus récents basés sur Gecko */
	  else if(typeof input.selectionStart != 'undefined')
	  {
	    /* Insertion du code de formatage  */
	    var start = input.selectionStart;
	    var end = input.selectionEnd;
	    var insText = input.value.substring(start, end);
	    input.value = input.value.substr(0, start) + repdeb + insText + repfin + input.value.substr(end);
	    /* Ajustement de la position du curseur  */
	    var pos;
	    if (insText.length == 0) {
	      pos = start + repdeb.length;
	    } else {
	      pos = start + repdeb.length + insText.length + repfin.length;
	    }
	    input.selectionStart = pos;
	    input.selectionEnd = pos;
	  }
	  /* pour les autres navigateurs  */
	  else
	  {
	    /* requête de la position d'insertion  */
	    var pos;
	    var re = new RegExp('^[0-9]{0,3}$');
	    while(!re.test(pos)) {
	      pos = prompt("Insertion à la position (0.." + input.value.length + "):", "0");
	    }
	    if(pos > input.value.length) {
	      pos = input.value.length;
	    }
	    /* Insertion du code de formatage  */
	    var insText = prompt("Veuillez entrer le texte à formater:");
	    input.value = input.value.substr(0, pos) + repdeb + insText + repfin + input.value.substr(pos);
	  }
	}

	function getClientHeight() {
	      var h=0;
	      if(!window.opera && document.documentElement && document.documentElement.clientHeight) // v3.12
	        h=document.documentElement.clientHeight;
	      else if(document.body && document.body.clientHeight)
	        h=document.body.clientHeight;
	      else if(xDef(window.innerWidth,window.innerHeight,document.width)) {
	        h=window.innerHeight;
	        if(document.width>window.innerWidth) h-=16;
	      }
	      return h;
	    }
	function getClientWidth() {
	      var w=0;
	      if(!window.opera && document.documentElement && document.documentElement.clientWidth) // v3.12
	        w=document.documentElement.clientWidth;
	      else if(document.body && document.body.clientWidth)
	        w=document.body.clientWidth;
	      else if(xDef(window.innerWidth,window.innerHeight,document.width)) {
	        w=window.innerWidth;
	        if(document.width>window.innerWidth) w-=16;
	      }
	      return w;
	    }
	