//////////////////////
// Flash management
   function MM_controlShockwave(objStr,x,cmdName,frameNum) {
     var obj=MM_findObj(objStr);
     if (obj) eval('obj.'+cmdName+'('+((cmdName=='GotoFrame')?frameNum:'')+')');
   }

   function MM_preloadImages() { //v3.0
     var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
       var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
       if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
   }

   function MM_swapImgRestore() { //v3.0
     var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
   }

   function MM_findObj(n, d) { //v4.01
     var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
       d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
     if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
     for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
     if(!x && d.getElementById) x=d.getElementById(n); return x;
   }

   function MM_swapImage() { //v3.0
     var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
      if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
   }


function getURLParam(paramname){
  paramname = paramname.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+paramname+"=([^&#]*)";
  var regex = new RegExp(regexS);
  var results = regex.exec(window.location.href);
  if(results == null)
    return "";
  else
    return results[1];
}

function openWindow(waddr, wname, wwidth, wheight, woptions){
var w = screen.width, h = screen.height;
if (document.all || document.layers) {
   w = screen.availWidth;
   h = screen.availHeight;
}
var popW = wwidth, popH = wheight;
if(woptions == ""){
  woptions = "dependent=yes,location=no,menubar=no,personalbar=no,resizable=no,scrollbars=yes,toolbar=no";
}
var leftPos = (w-popW)/2, topPos = (h-popH)/2;
thewindow = window.open(waddr, wname, woptions+",top="+topPos+",left="+leftPos+",height="+popH+",width="+popW);
return thewindow;
}

function displayImage(imagename, imagewidth, imageheight, windowtitle){
  newWindow = openWindow("about:blank", windowtitle, imagewidth, imageheight,  "location=no,toolbar=no,menubar=no,scrollbars=no,resizable=no,resizeable=no,dependant=yes,status=no");
  newWindow.document.writeln("<html>");
  newWindow.document.writeln("<head>");
  newWindow.document.writeln("\t<title>"+windowtitle+"</title>");
  newWindow.document.writeln("</head>");
  newWindow.document.writeln("<body topmargin=\"0\" bottommargin=\"0\" leftmargin=\"0\" rightmargin=\"0\" bgcolor=\"white\">");
  newWindow.document.writeln("<table width=\"100%\" height=\"100%\" align=\"center\"><tr><td align=\"center\" valign=\"middle\">");
  newWindow.document.writeln("<a href=\"\" onClick=\"window.close();return false;\" title=\"Cliquez pour fermer la fenêtre\"><img src=\""+imagename+"\" border=\"0\"></a>");
  newWindow.document.writeln("</td></tr></table>");
  newWindow.document.writeln("</body>");
  newWindow.document.writeln("</html>");
  return;
}


//////////////////////
// Strings management
function LTrim(value) { 
  for(var x = 0; x < value.length; x++){
    if(value.charAt(x) != " "){
      return value.substring(x, 1+value.length);
    }
  }
  return "";
}
function RTrim(value) { 
  for (var x = value.length - 1; x >= 0; x--){
    if (value.charAt(x) != " "){
      return value.substring(0, x+1);
    }
  }
  return "";
}
function Trim (value) {
  return RTrim(LTrim(value));
}
function fIsEmpty(value) {
  var tmp = Trim(value);
  return ((tmp == "")||(tmp == null)); 
}

//////////////////////////
// E-mail coherency check
function fCheckEmail(email)
{
  address = email.toUpperCase();
	  
  if(address.length < 5)
    return false;
	  
  if(address.indexOf("..") != -1) 
    return false;
	  
  for(i=0; i<address.length; i++) {
    tmpchar = address[i];
    if((tmpchar != '.') && (tmpchar != '@')
       && ( (tmpchar <  '0') || (tmpchar  > '9') )
       && ( (tmpchar <  'A') || (tmpchar  > 'Z') )
       && ( (tmpchar <  '-') || (tmpchar  > '-') ) )
      return false;
  }

  if(address.indexOf('@') == -1)
    return false;

  if(address.indexOf('.') == -1)
    return false;

  if( (address.substring(0, 1) == '@') || (address.substring(0, 1) == '.') )
    return false;

  if( (address.substring(address.length -1, address.length) == '@') || (address.substring(address.length -1, address.length) == '.'))
    return false;
	  
  if(address.indexOf('@', address.indexOf('@', 0) + 1) != -1)
    return false;

  if(address.substring(address.indexOf('@') + 1, address.indexOf('@') +2) == '.')
    return false;

  if(address.substring(address.indexOf('@') - 1, address.indexOf('@')) == '.')
    return false;
	  
  // may be ok
  return true;
}

function fCheckZipCode(sValue) {
  var strValidChars = "0123456789";
  if( (sValue.length < 4) || (sValue.length > 6) ){
    return false;
  }

  for (i=0;i < sValue.length;i++) {
    if(strValidChars.indexOf(sValue.charAt(i)) == -1){
      return false;
    }
  }

  // may be OK
  return true;
}

function fCheckDateStr(str){
  if(fIsEmpty(str)){
    return false;
  }

  dateelements = str.split('/');
  if(dateelements.length != 3){
    return false;
  }

  day = dateelements[0];
  month = dateelements[1];
  year = dateelements[2];

  if(Number(year) < 1900){
    return false;
  }
  if((month < 1) || (month > 12)){
    return false;
  }
  if((day < 1) || (day > 31)){
    return false;
  }

  // date may be OK
  return true;
}

function fCheckDate(str){
  if(!fCheckDateStr(str)){
    return false;
  }
  dateelements = str.split('/');
  day = dateelements[0];
  month = dateelements[1];
  year = dateelements[2];

  // creation d'un objet Date a partir des elements fournis
  newdate = new Date(year, month - 1, day);

  // recuperation des valeurs du nouvel objet
  newyear = newdate.getFullYear();
  newmonth = newdate.getMonth() + 1;
  newday = newdate.getDate();

  // comparaison avec les elements fournis
  if((day == newday) && (month == newmonth) && (year == newyear)){
    return true;
  }

  // la date fournie n'est pas une date valide, meme si elle est syntaxiquement correcte!
  return false;
}

function getDate(str){
  if(!fCheckDateStr(str))
    return new Date();
  dateelements = str.split('/');
  day = dateelements[0];
  month = dateelements[1];
  year = dateelements[2];

  return new Date(year, month - 1, day);
}


function getToday(){
  today = new Date();
  today.setHours(0);
  today.setMinutes(0);
  today.setSeconds(-1); // a cause des millisecondes!!

  return today;
}

////////////////////////////
// form elements management
function fIsDefaultSelected(selectlist){
  return (selectlist.options[selectlist.selectedIndex].value == 0);
}

function checkContactForm(f){
  if(fIsEmpty(f.contactname.value)){
    alert("Le nom est obligatoire!");
    f.contactname.focus();
    return false;
  }
  if(fIsEmpty(f.contactemail.value) || !fCheckEmail(f.contactemail.value)){
    alert("L'adresse e-mail n'est pas valide !");
    f.contactemail.focus();
    return false;
  }
  if(fIsDefaultSelected(f.contactsubject)){
    alert("Le sujet est obligatoire!");
    f.contactsubject.focus();
    return false;
  }
  if(fIsEmpty(f.contactmsg.value)){
    alert("Le message est vide!");
    f.contactmsg.focus();
    return false;
  }
  return true;
}

////////////////////
// Customer account
function fCheckAccountForm(f){
  f.name.value = Trim(f.name.value);
  f.firstname.value = Trim(f.firstname.value);
  f.addr1.value = Trim(f.addr1.value);
  f.addr2.value = Trim(f.addr2.value);
  f.zipcode.value = Trim(f.zipcode.value);
  f.town.value = Trim(f.town.value);
  f.tel.value = Trim(f.tel.value);
  f.email.value = Trim(f.email.value);
  f.email2.value = Trim(f.email2.value);
  // controle des champs obligatoires
  if((f.civility[0].checked==false) && (f.civility[1].checked==false) && (f.civility[0].checked==false)){
    alert("La civilité est obligatoire !");
    f.civility[0].focus();
    return false;
  }
  if(fIsEmpty(f.name.value)){
    alert("Le nom est obligatoire !");
    f.name.focus();
    return false;
  }
  if(fIsEmpty(f.firstname.value)){
    alert("Le prénom est obligatoire !");
    f.firstname.focus();
    return false;
  }
  if(fIsEmpty(f.addr1.value)){
    alert("La premiére ligne d'adresse est obligatoire !");
    f.addr1.focus();
    return false;
  }
  if(fCheckZipCode(f.zipcode.value) == false){
    alert("Le code postal est obligatoire !");
    f.zipcode.focus();
    return false;
  }
  if(fIsEmpty(f.town.value)){
    alert("La ville est obligatoire !");
    f.town.focus();
    return false;
  }
  if(fIsEmpty(f.email.value)){
    alert("L'adresse e-mail est obligatoire !");
    f.email.focus();
    return false;
  }
  if(f.email.value != f.email2.value){
    alert("Les adresses e-mail ne correspondent pas !");
    f.email.focus();
    return false;
  }
  if(!fIsEmpty(f.email.value) && !fCheckEmail(f.email.value)){
    alert("L'adresse e-mail n'est pas valide !");
    f.email.focus();
    return false;
  }

  return true;
}

////////////////////
// Customer account
function fCheckCGV(f){
  if(f.cgv.checked==false){
    alert("Vous devez d'abord accepter les conditions générales de vente.");
    f.cgv.focus();
    return false;
  }
  return true;
}
