// JavaScript Document

function ouvrir_fenetre(id_fenetre)
{
	// Calcul du scroll top pour positioner la fenetre
	var db	=	document.documentElement.clientWidth;
	var D	=	document;
	db =! D.documentElement.clientWidth ? D.body : D.documentElement //quirk IE6
	var gk	=	window.Event ? 1 : 0/*Gecko*/;
	var sy	=	gk ? document.documentElement.scrollTop : db.scrollTop;  

	var arrayPageSize 			=	getPageSize();
	div_fenetre					=	MM_findObj(id_fenetre);
	div_masque.style.height		=	arrayPageSize[1]+'px';
	
	// Effets scriptaculous
	new Effect.Appear(div_masque, { duration: 0.2, from: 0.0, to: 0.2 });
	
	centrerDiv(div_fenetre);
	div_fenetre.style.display	=	"block";
}

function fermer_fenetre()
{
	new Effect.Fade(div_masque, { duration: 0.2, from: 0.2, to: 0.0 });
	div_fenetre.style.display	=	"none";
}

function getValue(id)
{
	return MM_findObj(id).value;
}

var func_entr	=	null;
function def_entr(code)
{
	func_entr	=	code;
}

function getStyle(x,styleProp)
{
	if (x.currentStyle)
		var y = x.currentStyle[styleProp];
	else if (window.getComputedStyle)
		var y = document.defaultView.getComputedStyle(x,null).getPropertyValue(styleProp);
	return y;
}

function centrerDiv(div)
{
	var Scroll	=	getScroll();
	ScrollX		=	Scroll[0];
	ScrollY		=	Scroll[1];
	
	var size	=	getViewPortSize();
	width		=	size[0];
	height		=	size[1];
	
	if(div.style.height == '')
		divHeight	=	getStyle(div, 'height');
	else
		divHeight	=	div.style.height;
	if(div.style.width == '')
		divWidth	=	getStyle(div, 'width');
	else
		divWidth	=	div.style.width;
		
	// On enleve le 'px'
	divHeight	=	divHeight.substr(0, divHeight.length - 2);
	divWidth	=	divWidth.substr(0, divWidth.length - 2);
	
	if(divHeight < height)
		div.style.top	=	((height / 2 - divHeight / 2 + ScrollY)) + "px";
	else
		div.style.top	=	(25 + ScrollY) +'px';
	
	if(divWidth < width)
		div.style.left	=	((width / 2 - divWidth / 2 + ScrollX)) + "px";
	else
		div.style.left	=	(25 + ScrollX) +'px';
}

function ajout_ok(texte, lang)
{
	flash	=	document.getElementById('marque_flash');
	
	if(ProdAlert = document.getElementById('ProdBasketAlert'))
		ProdAlert.parentNode.removeChild(ProdAlert);
	
	var BasketMsgHold = document.createElement("div");
	BasketMsgHold.style.display	=	"none";
	BasketMsgHold.style.backgroundColor = '#999999';
	BasketMsgHold.style.width = '323px';
	BasketMsgHold.style.height = '130px';
	BasketMsgHold.id = 'ProdBasketAlert';
	BasketMsgHold.style.position = 'absolute';

	var BasketMsg = document.createElement("div");
	BasketMsg.style.width = '323px';
	BasketMsg.style.height = '130px';
	BasketMsg.style.position = 'relative';
	BasketMsg.style.backgroundImage = 'url(images/fond_popup.gif)';
	BasketMsg.style.left = '-3px';
	BasketMsg.style.top = '-3px';
	var msg_art	=	(lang == "fr" ? 'L\article' : 'The product');
	var msg_add	=	(lang == "fr" ? 'a bien &eacute;t&eacute; ajout&eacute; &agrave; votre panier.' : 'has been added to your cart');
	var HTML = '<div style="background-image:url(images/caddy2.gif);background-repeat:no-repeat;background-position:right top">'
+ '<table width="305" align="center" border="0" cellspacing="0" cellpadding="1">'
+ '<tr>'
+ '<td style="height:26px;">'
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td style="height:18px;font-family:Arial;font-weight:bold;color:#FFFFFF">'
+ msg_art
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td colspan="2" valign="middle" style="height:18px;background-image:url(images/popup_blanc.gif);padding:2px">'
+ '<strong>'+texte+'</strong>'
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td colspan="2" style="height:18px;font-family:Arial;font-weight:bold;color:#FFFFFF">'
+ msg_add
+ '</td>'
+ '</tr>'
+ '<tr>'
+ '<td height="10" colspan="2"></td>'
+ '</tr>'
+ '<tr>'
+ '<td width="153" align="center" valign="top"><a href="#" class="lien" onclick="ProdAlertValidate(true); return false;"><img src="images/'+lang+'/continuer_shopping.gif" border="0"></a></td>'
+ '<td width="152" align="center" valign="top"><a href="#" class="lien" onclick="ProdAlertValidate(false); return false;"><img src="images/'+lang+'/voir_panier.gif" border="0"></a></td>'
+ '</tr>'
+ '</table>'
+ '</div>'
;
	BasketMsg.innerHTML = HTML;

	BasketMsgHold.appendChild(BasketMsg);
	document.body.appendChild(BasketMsgHold);
	
	var Scroll	=	getScroll();
	ScrollX		=	Scroll[0];
	ScrollY		=	Scroll[1];

	centrerDiv(BasketMsgHold);
	BasketMsgHold.style.display	=	"block";
	
	
}

function getScroll()
{
	if (navigator.appName=="Microsoft Internet Explorer")
	{
		ScrollY = document.documentElement.scrollTop + document.body.scrollTop;
		ScrollX = document.documentElement.scrollLeft + document.body.scrollLeft;
	}
	else
	{
		ScrollY = window.pageYOffset;
		ScrollX = window.pageXOffset;
	}
	return new Array(ScrollX, ScrollY);
}

function getViewPortSize()
{
	if (document.body)
	{
		var larg = (document.body.clientWidth);
		var haut = (document.body.clientHeight);
	}
	else
	{
		var larg = (window.innerWidth);
		var haut = (window.innerHeight);
	}
	return new Array(larg, haut);
}

function ProdAlertValidate(Stay)
{
	ProdAlert = document.getElementById('ProdBasketAlert');
	ProdAlert.parentNode.removeChild(ProdAlert);

	if (!Stay)
		document.location.href = 'panier.php';
		
	if(flash)
		flash.style.display	=	"block";
}	


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;
   if (isIE)
   {
	   x.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src=" + x.oSrcAlph + ",sizingMethod='scale')";	  
   }
  }
}

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; 
	   if (isIE)
	   {
		   x.oSrcAlph = x.srcAlpha;	  
	   }
   }
   x.src=a[i+2];}
   if (isIE)
	   correctPNG();
}

function isDateValid(date)
{
	var e = new RegExp("^[0-9]{1,2}\/[0-9]{1,2}\/([0-9]{2}|[0-9]{4})$");			
	if (!e.test(date)) // On teste l'expression régulière pour valider la forme de la date
		return false;
	else
		return true;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=args[i+1]; if ((val=val.value)!="") {
		if (test.indexOf('isDate')!=-1) {
			if(!isDate(val))
				errors+='- '+nm+' doit être une date existante au format jj/mm/aaaa.\n';
		}
		else  if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' doit être une adresse email valide.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' doit être un nombre.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' est obligatoire.\n'; }
  } 
  if (errors)
  	 alert('Les erreurs suivantes ont été trouvées:\n'+errors);
	

  document.MM_returnValue = (errors == '');
}

function getPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY)
	{	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} 
	else if (document.body.scrollHeight > document.body.offsetHeight)
	{ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} 
	else 
	{ // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) 
	{	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} 
	else if (document.documentElement && document.documentElement.clientHeight) 
	{ // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} 
	else if (document.body) 
	{ // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	} 
	else 
	{ 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	} 
	else 
	{
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

function number_format(valeur, nbDecimal, sep) 
{
	var div		=	Math.pow(10,nbDecimal);
	var val		=	Math.round( ( valeur * div) ) / div;

	
	var deci	=	val.toString().split(".");
	if(deci.length > 1)
	{
		var nbDeci	=	deci[1].length;
		var decim	=	deci[1];
	}
	else
	{
		var nbDeci	=	0;
		var decim	=	"";
	}
	for (var j = 0; j < (nbDecimal - nbDeci); j++) 
	{
		decim+="0";
	}
	return deci[0]+sep+decim;
}


/**
 * DHTML date validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */
// Declaring valid date character, minimum year and maximum year
var dtCh= "/";
var minYear=1900;
var maxYear=2100;

function isInteger(s){
	var i;
    for (i = 0; i < s.length; i++){   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag){
	var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++){   
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function daysInFebruary (year){
	// February has 29 days in any year evenly divisible by four,
    // EXCEPT for centurial years which are not also divisible by 400.
    return (((year % 4 == 0) && ( (!(year % 100 == 0)) || (year % 400 == 0))) ? 29 : 28 );
}
function DaysArray(n) {
	for (var i = 1; i <= n; i++) {
		this[i] = 31
		if (i==4 || i==6 || i==9 || i==11) {this[i] = 30}
		if (i==2) {this[i] = 29}
   } 
   return this
}

function isDate(dtStr){
	var daysInMonth = DaysArray(12)
	var pos1=dtStr.indexOf(dtCh)
	var pos2=dtStr.indexOf(dtCh,pos1+1)
	var strDay=dtStr.substring(0,pos1)
	var strMonth=dtStr.substring(pos1+1,pos2)
	var strYear=dtStr.substring(pos2+1)
	strYr=strYear
	if (strDay.charAt(0)=="0" && strDay.length>1) strDay=strDay.substring(1)
	if (strMonth.charAt(0)=="0" && strMonth.length>1) strMonth=strMonth.substring(1)
	for (var i = 1; i <= 3; i++) {
		if (strYr.charAt(0)=="0" && strYr.length>1) strYr=strYr.substring(1)
	}
	month=parseInt(strMonth)
	day=parseInt(strDay)
	year=parseInt(strYr)
	if (pos1==-1 || pos2==-1){
		//alert("The date format should be : mm/dd/yyyy")
		return false
	}
	if (strMonth.length<1 || month<1 || month>12){
		//alert("Please enter a valid month")
		return false
	}
	if (strDay.length<1 || day<1 || day>31 || (month==2 && day>daysInFebruary(year)) || day > daysInMonth[month]){
		//alert("Please enter a valid day")
		return false
	}
	if (strYear.length != 4 || year==0 || year<minYear || year>maxYear){
		//alert("Please enter a valid 4 digit year between "+minYear+" and "+maxYear)
		return false
	}
	if (dtStr.indexOf(dtCh,pos2+1)!=-1 || isInteger(stripCharsInBag(dtStr, dtCh))==false){
		//alert("Please enter a valid date")
		return false
	}
return true
}
