
/*********************************
 * PEM EFFECTS @ 2008
 *********************************/
var zeSelects = new Array();
var zeFlashs  = new Array();

var BgOpacity = 60;
var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

var myBrowser = BrowserDetect.browser;
var myBrowserVersion = BrowserDetect.version;

/*********************************************
*   FONCTION loadPageContent()
**********************************************/
var loadPageContent = function ( PageContent, MyDiv, ActionType ){

  // on appelle l'ajax
  var zeUrl = ASSurl + '?ActionType='+ActionType;


  if ( arguments.length == 4 ){
    var zeFormName = arguments[3];
    var query = GetFormData( zeFormName );
    zeUrl += '&'+query;
  }

  zeUrl += '&PageContent='+PageContent;

  if ( MyDiv == '' ) MyDiv = 'modal_popup';
//  alert( zeUrl + '\n' + MyDiv );
  AjaxRequest( zeUrl, MyDiv );
}


/*********************************************
*   FONCTION hideModalPopup()
**********************************************/
function hideModalPopup(){

  var zePopup = document.getElementById('modal_popup');
  var zeModal = document.getElementById('modal_bg');

  hideMe( zeModal );
  hideMe( zePopup );
/*  fadeElement( 'modal_bg' );*/

  // nous rétablissons la page
  enableSelectsAndFlashs();

}


/*********************************************
*   FONCTION showModal()
**********************************************/
function showModal( zePopup ){

  // nous nettoyons la page
  disableSelectsAndFlashs();

  var myel = document.getElementById( 'modal_bg' );
  myel.style.display="block";
  // en fonction du navigateur, la transparence n'est pas gérée de la même façon

  if ( myBrowser == 'Safari' || myBrowser == 'Konqueror' ){
    myel.style.opacity = ( BgOpacity / 100 );
    myel.style.KhtmlOpacity = (BgOpacity / 100);
  }else{
    if( myBrowser == 'Explorer' ){
      myel.style.filter = "alpha(opacity=" + BgOpacity + ")";
    }else{
      myel.style.MozOpacity = ( BgOpacity / 100 );
      myel.style.opacity = ( BgOpacity / 100 );
    }
  }

	array_page_size = getPageSize();
	array_page_scroll = getPageScroll();

  myel.style.width  = array_page_size[0]+'px';
	myel.style.height = array_page_size[1]+'px';

  zePopup.style.visibility = 'hidden';
  zePopup.style.display = 'block';
/*
  alert( zePopup.style.height );
  alert( zePopup.offsetHeight );
*/
  setTimeout( 'calcPopupPos( \'' + zePopup.id + '\', \'' + array_page_size[0] + '\', \'' + array_page_size[3] + '\', \'' + array_page_scroll[1] + '\' )', 80 );
//  calcPos( zePopup, array_page_size, array_page_scroll );
}


/*********************************************
*   FONCTION calcPopupPos()
**********************************************/
function calcPopupPos( zePopupId, array_page_size0, array_page_size3, array_page_scroll ){

  var zePopup = document.getElementById( zePopupId );

	var middleHeight = ( ( array_page_size3 * 1 ) / 2 ) - ((zePopup.offsetHeight * 1)/1.8);
//  alert( ( ( array_page_size3 * 1 ) / 2 ) +'\n'+ middleHeight +'\n'+ array_page_scroll + '\n'+ ((zePopup.offsetHeight * 1)/1.5) );
  var zeTop   = ( ( array_page_scroll * 1 ) + ( middleHeight * 1 ) );
//  alert( array_page_scroll + ' + ' + middleHeight );
	var zeLeft  = ( ( array_page_size0 * 1 ) / 2 - ( ( zePopup.offsetWidth * 1 ) / 2 ) );
  
  if ( zeTop < 30 ) zeTop = 30;
  
	zePopup.style.top  = zeTop   + 'px';// 200 pour la marge top
	zePopup.style.left = zeLeft  + 'px';
  zePopup.style.visibility = 'visible';

  var myel = document.getElementById( 'modal_bg' );
	array_page_size = getPageSize();
	array_page_scroll = getPageScroll();

  myel.style.width  = array_page_size[0]+'px';
	myel.style.height = array_page_size[1]+'px';

}


/*********************************************
*   FONCTION checkAddAddressForm()
**********************************************/
function checkAddAddressForm(){

  if ( document.getElementById('gender_m').checked == false && document.getElementById('gender_f').checked == false ){
    alert( 'La civilité doit être renseignée' );
    return false;
  }

  if ( document.getElementById('firstname').value == "" ){
    alert( 'Le prénom doit être renseigné' );
    return false;
  }

  if ( document.getElementById('lastname').value == "" ){
    alert( 'Le nom doit être renseigné' );
    return false;
  }

  if ( document.getElementById('street_address').value == "" ){
    alert( 'L\'adresse doit être renseignée' );
    return false;
  }

  if ( document.getElementById('postcode').value == "" ){
    alert( 'Le code postal doit être renseigné' );
    return false;
  }

  if ( document.getElementById('city').value == "" ){
    alert( 'La ville doit être renseignée' );
    return false;
  }

  if ( document.getElementById('country').options[document.getElementById('country').selectedIndex].value == "" ){
    alert( 'Le pays doit être renseigné' );
    return false;
  }

  document.getElementById('checkout_address').submit();

}


/*********************************************
*   FONCTION disableSelectsAndFlashs()
**********************************************/
function disableSelectsAndFlashs(){

  var i = 0;
  var j = 0;

  var tempArr = new Array();

  // nous récupérons tous les selects
  var zeSels = document.getElementsByTagName( 'SELECT' );
  for ( i = 0; i < zeSels.length; i++ ){
//    alert( zeSels[i].name );
    if ( zeSels[i].style.display != 'none' ){
      if ( zeSels[i].style.display == '' ) zeSels[i].style.display = 'block';
      tempArr['num']    = i;
      tempArr['style']  = zeSels[i].style.display;
      zeSelects[j] = Aclone(tempArr);
      zeSels[i].style.display = 'none';
      j++;
    }
  }

  // nous récupérons tous les flash
  var zeFlas = document.getElementsByTagName( 'OBJECT' );
  j = 0;
  for ( var i = 0; i < zeFlas.length; i++ ){
    if ( zeFlas[i].style.display != 'none' ){
      tempArr['num']    = i;
      tempArr['style']  = zeFlas[i].style.display;
      zeFlashs[j] = Aclone(tempArr);
      zeFlas[i].style.display = 'none';
      j++;
    }
  }

}

function Oclone(MyObject){
	var o = new Object(); 
	for (var property in MyObject) {
		o[property] = typeof (MyObject[property]) == 'object' ? MyObject[property].clone() : MyObject[property];
	} 
	return o;	
}
function Aclone(MyArray){
	var a = new Array(); 
	for (var property in MyArray) {
		a[property] = typeof (MyArray[property]) == 'object' ? MyArray[property].clone() : MyArray[property];
	} 
	return a;	
}


/*********************************************
*   FONCTION enableSelectsAndFlashs()
**********************************************/
function enableSelectsAndFlashs(){

  var i = 0;
  var tempArr = new Array();

  // nous récupérons tous les selects
  var zeSels = document.getElementsByTagName( 'SELECT' );
  for ( i = 0; i < zeSelects.length; i++ ){
    tempArr = zeSelects[i];
//    alert( zeSelects[i]['num'] + '\n' + zeSels[zeSelects[i]['num']].name + '\n' + tempArr["num"] );
    zeSels[zeSelects[i]['num']].style.display = zeSelects[i]['style'];
  }

  // nous récupérons tous les flashs
  var zeFlas = document.getElementsByTagName( 'OBJECT' );
  for ( i = 0; i < zeFlashs.length; i++ ){
    zeFlas[zeFlashs[i]['num']].style.display = zeFlashs[i]['style'];
  }

}

/*********************************************
*   FONCTION GetFormData( zeFormName )
**********************************************/
function GetFormData( zeFormName ) {

  var theform = document.getElementById( zeFormName );
  var els = theform.elements;
  var len = els.length;
  var queryString = "";

  this.addField =
    function(name,value,text) {
      if (queryString.length>0) {
        queryString += "&";
      }
	  queryString += escape(name) + "=" + escape(value);//encodeURIComponent
    };
  for (var i=0; i<len; i++) {
    var el = els[i];
    if (!el.disabled) {
      switch(el.type) {
        case 'text': case 'password': case 'hidden': case 'textarea':
		  this.addField(el.name,el.value,el.text);
          break;
        case 'select-one':
          if (el.selectedIndex>=0) {
            this.addField(el.name,el.options[el.selectedIndex].value);
          }
          break;
        case 'select-multiple':
          for (var j=0; j<el.options.length; j++) {
            if (el.options[j].selected) {
              this.addField(el.name,el.options[j].value);
            }
          }
          break;
        case 'checkbox': case 'radio':
          if (el.checked) {
            this.addField(el.name,el.value);
          }
          break;
      }
    }
  }
  //alert('queryString='+queryString);
  delete theform;
  delete els;
  delete len;

  return queryString;
}

/*********************************************
*   FONCTION showAtPosition( TargetId, ParentId, position, e )
**********************************************/
var oldmouseover = "";
var oldmouseout  = "";
var oldowner     = "";

function showAtPosition( TargetId, ParentId, position, e ){

	if (!e) {
		e = window.event;
	}	
  killEvent( e );
  
  
//  alert( TargetId + ' -- ' + ParentId + ' -- ' + position );
  
  zeTargetId = TargetId;
  
  var zeTarget  = document.getElementById( TargetId );
  var owner     = document.getElementById( ParentId );
/*  
  oldmouseout       = owner.onmouseout;
  owner.onmouseover();
  owner.onmouseout  = null;
  oldowner          = owner;
*/
  // nous récupérons la position du parent;
  var oTop      = getTop( owner ) * 1;
  var oLeft     = getLeft( owner ) * 1;

  var oWidth    = owner.offsetWidth * 1;
  var oHeight   = owner.offsetHeight * 1;

//  alert( 'T : ' + oTop + ' -- L : ' + oLeft + ' -- W : ' + oWidth + ' -- H : ' + oHeight );

  // nous nettoyons la page
  disableSelectsAndFlashs();

  var myel = document.getElementById( 'modal_bg' );
  // en fonction du navigateur, la transparence n'est pas gérée de la même façon

  if ( myBrowser == 'Safari' || myBrowser == 'Konqueror' ){
    myel.style.opacity = ( 0 / 100 );
    myel.style.KhtmlOpacity = (0 / 100);
  }else{
    if( myBrowser == 'Explorer' ){
      myel.style.filter = "alpha(opacity=" + 0 + ")";
    }else{
      myel.style.MozOpacity = ( 0 / 100 );
      myel.style.opacity = ( 0 / 100 );
    }
  }

	array_page_size    = getPageSize();
	array_page_scroll  = getPageScroll();

  myel.style.width   = ( array_page_size[0] - 20 ) +'px';
	myel.style.height  = ( array_page_size[1] - 20 ) +'px';

  myel.style.display = "block";
	myel.onmouseover   = hideMenuJs;

  zeTarget.style.visibility    = 'hidden';
  zeTarget.style.display       = 'block';

  zeTarget.style.paddingBottom = '0px';
  zeTarget.style.paddingTop    = '0px';
  zeTarget.style.paddingLeft   = '0px';
  zeTarget.style.paddingRight  = '0px';

  var zePadder = document.getElementById('padder');

  switch( position ){
    
    case "top" :
      zeTarget.style.top        = ( oTop - zeTarget.offsetHeight ) + 'px';
      zeTarget.style.left       = ( oLeft + 2 ) + 'px';
      zeTarget.style.paddingBottom = ( oHeight + 5 ) + 'px';
      break;
      
    case "left" :
      zeTarget.style.top          = oTop + 'px';
      zeTarget.style.left         = ( oLeft - zeTarget.offsetWidth ) + 'px';
      zeTarget.style.paddingRight = ( oWidth ) + 'px';
      break;
    
    case "bottom" : 
      zePadder.style.top        = oTop + 'px';
      zePadder.style.left       = oLeft + 'px';
      zePadder.style.height     = oHeight + 'px';
      zePadder.style.width      = oWidth + 'px';
      
      zeTarget.style.top        = ( oTop + oHeight ) + 'px';
      zeTarget.style.left       = oLeft + 'px';
//      zeTarget.style.paddingTop = oHeight + 'px';
/*
      zeTarget.style.width      = ( oWidth ) + 'px';
*/
      break;
    
    case "right" :
    default :
      zeTarget.style.top          = oTop + 'px';
      zeTarget.style.left         = ( oLeft ) + 'px';
      zeTarget.style.paddingLeft  = ( oWidth ) + 'px';
/*
      zeTarget.style.paddingTop = ( oHeight - 5 ) + 'px';
      zeTarget.style.width      = ( oWidth ) + 'px';
*/
    
  }

  zeTarget.style.visibility    = 'visible';
  zePadder.style.visibility    = 'visible';
  zePadder.style.display       = 'block';

  myel.style.zIndex     = 400;
  zePadder.style.zIndex = 500;
  zeTarget.style.zIndex = 600;
  
}

/*********************************************
*   FONCTION hideMenuJs(e, TargetId)
**********************************************/
function hideMenuJs(e, TargetId){

  if ( zeTargetId == '' && TargetId == null ) return false;
  if ( TargetId == null && zeTargetId != '' ) TargetId = zeTargetId;
  
  document.getElementById( TargetId ).style.display = 'none';
  var zeModal = document.getElementById('modal_bg');

  if ( oldmouseout != "" && oldowner != "" ){
  	//alert(oldmouseout);
    oldowner.onmouseout  = oldmouseout;
    oldowner.onmouseout();
  }

  hideMe( zeModal );
  enableSelectsAndFlashs();
}

function refreshCartBox(){

  var zeCartBox = document.getElementById('box_spcCart');
  if ( zeCartBox != null && zeCartBox != 'undefined' ){
    // animation de la box qui va dans le panier plus refresh du panier
    zeCartBox.innerHTML           = '<img src="images/design/loading.gif" style="vertical-align:middle;"/>';
    loadPageContent( 'includes/boxes/shopping_cart.php', 'box_spcCart', 'loadpage&glob=cart|new_products_id_in_cart|currencies' );
//    zeCartBox.style = oldStyle;
    hideModalPopup();
  }else{
    hideModalPopup();
  }

}
