﻿/*************************************************************************************************************************************/
/* FUNCTION SUR LOAD DE LA PAGE                                                                                                      */
/*************************************************************************************************************************************/
window.addEventListener ? window.addEventListener('load', $PopupLoad, false) : window.attachEvent('onload', $PopupLoad);
function $PopupLoad(){
  $Png();
}

/*************************************************************************************************************************************/
/* VARIABLES GLOBALES                                                                                                                */
/*************************************************************************************************************************************/
var TsNameNavigateur = 'FF'; // Par default Firefox
var TSVersionNavigateur = 0; // Par default pas de version
var TsAfficheFiltre = false;
var TsDocRef = null;
var TsMemoContentPopup = null;
var TsTabParams = new Array(); // Parametres pour appel de la popup avec formulaire
var TsTabParamsValues = new Array(); // Values des parametres pour appel de la popup avec formulaire

/*************************************************************************************************************************************/
/* LES FONCTIONS                                                                                                                     */
/*************************************************************************************************************************************/
// Navigateur et Version
function $Navigateur(TsNavigateur){
	var TsTabNav = TsNavigateur.split(';');
	for(var i=0,l=TsTabNav.length;i<l;i++){
		if(TsTabNav[i].indexOf('MSIE') > -1){ // Si IE
			TsNameNavigateur = 'IE';
			var TsVersion = TsTabNav[i].replace('MSIE','');
			TSVersionNavigateur = TsVersion.replace(' ','');
		}
	}
}

// IE et version inferieur à la 7
function $Png(TsDocument){
    TsDocument = TsDocument || null;

    if( !getById('TsSiteWebUrl') ){return false;} // Pas input de type hidden dans le master ou la page

    $Navigateur(navigator.appVersion);
    if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7) {
        if( getById(TsDocument) ){TsDocument = getById(TsDocument);}else{TsDocument = getById('global');}

        $ChangeImgPNG(TsDocument.getElementsByTagName('img'));
        $ChangeImgPNG(TsDocument.getElementsByTagName('input'));
        
    }
}


// Preload des PNGs
function $PreloadPng(TsDocument){
    if( !TsDocument ){return;}

    var TsPreloadComplete = false;

    var TsTabElementsImg = TsDocument.getElementsByTagName('img');
    var TsTabElementsInput = TsDocument.getElementsByTagName('input');
    for(var i=0, l=TsTabElementsInput.length;i<l;i++){
        TsTabElementsImg[TsTabElementsImg.length] = TsTabElementsInput[i];
    }
    
    while( !TsPreloadComplete ){
        var imgload = new Array();
        imgload.length = 0;
        var j = 0;
        TsPreloadComplete = true;

	    for (var i=0, l=TsTabElementsImg.length;i<l;i++) {
	        if(TsTabElementsImg[i].TSFlagComplete == true){continue;}
		    if(TsTabElementsImg[i].src.match(/\.png/i) == null) {continue};

            imgload[i] = new Image();
		    imgload[i].src = TsTabElementsImg[i].src;
		    imgload[i].width = TsTabElementsImg[i].offsetWidth;
		    imgload[i].height = TsTabElementsImg[i].offsetHeight;
		    if( !imgload[i].complete){TsPreloadComplete = imgload[i].complete;}else{TsTabElementsImg[i].TSFlagComplete = imgload[i].complete;}
	    }
    }
}

// Modification PNG pour IE
function $ChangeImgPNG(TsElements){
for (var i=0,l=TsElements.length;i<l;i++) {
	if(TsElements[i].src.match(/\.png/i) == null) {continue}; // pas un png

    // Si le png est affiche
    var TsPngAfficher = true;
    var TsElement = TsElements[i];
    while(TsElement){
        if( TsElement && TsElement.currentStyle && TsElement.currentStyle.display && TsElement.currentStyle.display.toLowerCase() == 'none' ){
            TsPngAfficher = false;
            break;
        }
        TsElement = TsElement.parentNode;
    }

	if( !TsPngAfficher ){continue;} // Png pas affiche

    TsElements[i].style.width = TsElements[i].offsetWidth + "px";
    TsElements[i].style.height = TsElements[i].offsetHeight + "px";
    TsElements[i].style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + TsElements[i].src + "', sizingMethod='scale')"
    TsElements[i].src = getById('TsSiteWebUrl').value + "/images/bg-blank.gif";
}
}

// Creation requete
function $Request(){
	var TsRequest;
	try { TsRequest = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) {}
	try { TsRequest = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) {}
	try { TsRequest = new XMLHttpRequest(); } catch(e) {}
	return TsRequest;
}

// Arret de la propagation sur evenement
function $ClearPropagation(e){
	e = e || window.event;
	
	e.preventDefault ? e.preventDefault() : e.returnValue = false;
	e.stopPropagation ? e.stopPropagation() : e.cancelBuble = true;
}

// Ajoute une class a un element
function AddClassName(TsClassName, TsClass){
	var TsTabClass = TsClass.split('|');
	for(i in TsTabClass){
		if(TsClassName.indexOf(TsTabClass[i]) > -1){continue;} // TsTabClass[i] deja dans TsClassName
		if(TsClassName.length > 0){TsClassName += ' ' + TsTabClass[i];}else{TsClassName = TsTabClass[i];}// Ajoute TsTabClass[i] dans TsClassName
	}
	return TsClassName;
}

// Supprime une class a un element
function DeleteClassName(TsClassName, TsClass){
	var TsTabClass = TsClass.split('|');
	for(i in TsTabClass){
		if(TsClassName.indexOf(TsTabClass[i]) <= -1){continue;} // TsTabClass[i] pas dans TsClassName
		var TsTabClassName = TsClassName.split(' ');
		for(j in TsTabClassName){if(TsTabClassName[j] == TsTabClass[i]){TsTabClassName[j] = '';}}// Supprime TsTabClass[i] dans TsTabClassName
		TsClassName = TsTabClassName.join(' ');
	}
	return TsClassName;
}

/*************************************************************************************************************************************/
/* POPUPS                                                                                                                            */
/*************************************************************************************************************************************/
// Document en cours
function $Document(){
	if(TsDocRef == null){
		if(document.documentElement && document.documentElement.clientWidth){
			TsDocRef = document.documentElement;
		}else{
			TsDocRef = document.body;
		}
	}
}

// Action de resize sur le filter et reposittionne popup
function $GestionFiltre(){
	if( !getById('filter') ){return false;}
	if(TsAfficheFiltre){
		setTimeout('$ShowFilter()', 20);
		setTimeout('$PositionPopup()', 20);
	}
}

// Affiche le filtre
function $ShowFilter(){
	if( !getById('filter') ){$CreateFilter();return false;}

	if(!TsAfficheFiltre){
		getById('filter').style.visibility = 'hidden';

		// Evenements pour gestion du filtre et de la popup
		window.addEventListener ? window.addEventListener('resize', $GestionFiltre, false) : window.attachEvent('onresize', $GestionFiltre);
		window.addEventListener ? window.addEventListener('DOMMouseScroll', $GestionFiltre, false) : window.attachEvent('DOMMouseScroll', $GestionFiltre);
		window.addEventListener ? window.addEventListener('scroll', $GestionFiltre, false) : window.attachEvent('onscroll', $GestionFiltre);
	}
	if(TsAfficheFiltre){getById('filter').style.display = 'none';}

	if(!TsDocRef){$Document();}

	TsLargeur = parseInt(TsDocRef.clientWidth) + parseInt(TsDocRef.scrollLeft);
	TsHauteur = parseInt(TsDocRef.clientHeight) + parseInt(TsDocRef.scrollTop);

    if( getById('global') ){ // Hauteur et largeur en fonction du contenu si celui-ci superieur au client
        if( getById('global').offsetHeight >  TsHauteur){TsHauteur = parseInt(getById('global').offsetHeight);}
        if( getById('global').offsetWidth  >  TsLargeur){TsLargeur = parseInt(getById('global').offsetWidth);}
    }

	getById('filter').style.width = TsLargeur + 'px';
	getById('filter').style.height = TsHauteur + 'px';

	if(!TsAfficheFiltre){
		if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7){$GestionSelect('hidden');} // Affiche les SELECT si < IE7

		getById('filter').style.visibility = 'visible';
		TsAfficheFiltre = true;
	}

	getById('filter').style.display = 'block';
}

// Cache le filtre
function $HideFilter(){
	if( getById('filter') ){getById('filter').style.display = 'none';}
	if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7){$GestionSelect('visible');} // Affiche les SELECT si < IE7
	TsAfficheFiltre = false;
}

// Creation du filtre
function $CreateFilter(){
	var TsTabElementBody = document.getElementsByTagName('body');
	if(!TsTabElementBody[0]){return false;}
	
	var TsFilter = document.createElement('div');
	var TsStyle = 'position:absolute;top:0;left:0;width:0px;height:0px;z-index:999998;background:#000;display:none;overflow:hidden;';
	TsFilter.setAttribute('id', 'filter');
	TsFilter.setAttribute('style', TsStyle);
	TsFilter.style.cssText = TsStyle;

	TsTabElementBody[0].appendChild(TsFilter);
	
	if( getById('filter') ){$ChangeOpacity(70, 'filter');$ShowFilter();} // Relance affichage du filtre
}

// Ouverture file Popup
function $OpenFilePopup(TsFile, TsType, TsSend , TSData){
    window.TsFile = TsFile;
    
    /* LOADER */
    getById('popup').TsAffichePopupLoader = 'true';
    getById('popup').innerHTML =  '<div id="loader" style="position:relative;width:300px;background:#fff;font:13px/1.2em Arial, \'Trebuchet MS\', Helvetica, Sans-serif;font-weight:normal;color:#CFD521;text-align:center;font-weight:bold;padding:10px;">' +
                                '<img src="'+ getById('TsSiteWebUrl').value + '/images/ajax-loader-popup.gif" alt="Chargement de la page en cours ...." width="42" height="42" />' +
                                '<p>Chargement de la page en cours ....</p>' +
                            '</div>';
	$ShowPopup1();
    /* lancement de la requete */
    var TsRequest = $Request();
    TsRequest.open(TsSend, TsFile, true);
    TsRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
    TsRequest.send(TSData);

	TsRequest.onreadystatechange = function(){
		if( TsRequest.readyState == 4 ){
 			if(TsRequest.status == 200){
				$ReadFilePopup(TsRequest, TsType);
				$ShowPopup1();
			}else{
			    if(getById('popup').innerHTML != ''){TsMemoContentPopup = getById('popup').innerHTML;}
				getById('popup').innerHTML = 'Erreur de lecture du fichier '+TsFile;
			}
 		}
	}
}

// Lecture file Popup
function $ReadFilePopup(TsRequest, TsType){
	if(!TsRequest){return null;}

	switch(TsType){
		case 'XML':
			var TsResponseXml =  TsRequest.responseXML;
		break;
		case 'HTML':
		    if(getById('popup').innerHTML != '' &&  getById('popup').TsAffichePopupLoader == 'false'){TsMemoContentPopup = getById('popup').innerHTML;}
			getById('popup').innerHTML = $GetContentPopupDotNet(TsRequest.responseText) + $GetContentPopup(TsRequest.responseText);
			getById('popup').TsAffichePopupLoader = 'false';
		break;
	}
}

// Recupere le contenu de la popup
function $GetContentPopup(TsContent){ 
	var x = TsContent.indexOf('<!-- Start popup -->');
	var y = TsContent.lastIndexOf('<!-- End popup -->'); 
	return TsContent.slice(x, y);
}

// Recupere le contenu (input hidden)de la popup (parametres DOTNET)
function $GetContentPopupDotNet(TsContent){ 
	var TsInputHiddenDotNet = '';
	
	// __EVENTTARGET
	var x = TsContent.indexOf('<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" ');
	var y = TsContent.indexOf(' />', x); 
	TsInputHiddenDotNet +=  TsContent.slice(x, y+3);
	
	// __EVENTARGUMENT
	x = TsContent.indexOf('<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" ');
	y = TsContent.indexOf(' />', x); 
	TsInputHiddenDotNet +=  TsContent.slice(x, y+3);
	
	// __VIEWSTATE
	x = TsContent.indexOf('<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" ');
	y = TsContent.indexOf(' />', x); 
	TsInputHiddenDotNet +=  TsContent.slice(x, y+3);
	
	// __EVENTVALIDATION
	x = TsContent.indexOf('<input type="hidden" name="__EVENTVALIDATION" id="__EVENTVALIDATION" ');
	y = TsContent.indexOf(' />', x); 
	TsInputHiddenDotNet +=  TsContent.slice(x, y+3);
	
	return TsInputHiddenDotNet;
} 

// Affiche la Popup
function $ShowPopup(TsPopupFile, TsForm, TsSend, TsData){
    TsForm = TsForm || false; // Valeur par defaut si pas renseigne
    TsSend = TsSend || 'GET';
    TsData = TsData || null;
	
	if( !getById('TsSiteWebUrl') ){return false;}
	
	if( TsForm ){window.TsPopupFile = TsPopupFile;} // Si formulaire pour la popup

	if( !getById('popup') ){$CreatePopup(TsPopupFile);return false;}
	
	if( TsPopupFile.indexOf('?') != -1 ){
	    TsPopupFile = getById('TsSiteWebUrl').value+TsPopupFile+'&nocache='+Math.random();
	}else{
	    TsPopupFile = getById('TsSiteWebUrl').value+TsPopupFile+'?nocache='+Math.random();
	}

    $OpenFilePopup(TsPopupFile, 'HTML', TsSend, TsData); // Recherche le contenu a afficher
}

function $ShowPopup1(){
	$ShowFilter();

	getById('popup').style.visibility = 'hidden';
	getById('popup').style.display = 'block';

	// Recupere la largeur de la popup a afficher
	var TsTabElements = getById('popup').childNodes;
	
	for(var i=0,l=TsTabElements.length;i<l;i++){
		if($t(TsTabElements[i]) == 'div'){
			getById('popup').style.width = parseInt(TsTabElements[i].offsetWidth) + 'px';
			getById('popup').style.height = parseInt(TsTabElements[i].offsetHeight) + 'px';
			break;
		}
	}
	$PositionPopup();
	getById('popup').style.visibility = 'visible';
    $Navigateur(navigator.appVersion);
    if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7) {$PreloadPng(getById('popup'));$Png('popup');}
	

	if( window.TsFile.indexOf('popup_kdo.aspx') != -1 ){ // Si popup cadeau
    	if( !getById('flash_popup_kdo') ){return false;}

        var hasReqestedVersion = DetectFlashVer(requiredMajorVersion, requiredMinorVersion, requiredRevision);
        if (hasReqestedVersion) {
            getById('flash_popup_kdo').innerHTML = AC_FL_RunContent1( 'codebase','http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0','width','340','height','341','src',getById('TsSiteWebUrl').value+'/swf/option-cadeau','quality','high','wmode','transparent','pluginspage','http://www.macromedia.com/go/getflashplayer','movie',getById('TsSiteWebUrl').value+'/swf/option-cadeau','allowScriptAccess','sameDomain'); //end AC code
        }else{  // flash is too old or we can't detect the plugin
            getById('flash_popup_kdo').innerHTML = '<style type=\"text/css\">#message_flash{text-align:center;font-weight:bold;margin:0;}#message_flash span{font-weight:normal;}#message_flash a{color:#f00;text-decoration:underline;}#message_flash a:hover{text-decoration:none;}</style><div id=\"message_flash\">Attention votre plugin flash n\'est pas &agrave; jour ou non install&eacute;.<br /><span>Pour le t&eacute;l&eacute;charger veuillez cliquer ici :</span> <a href=\"http://www.adobe.com/go/getflash/\" target=\"_blank\">T&eacute;l&eacute;charger</a></div>';
        }
    }
    
    if( window.TsFile.indexOf('popup-ajouter-panier.aspx') != -1 ){$InitDefil('taille');}
}

// Cache la Popup
function $HidePopup(){
	var TsFormPopupParams = $FormPopup(); // Si formulaire dans la popup

    if(TsMemoContentPopup != null){
        getById('popup').innerHTML = TsMemoContentPopup;
        TsMemoContentPopup = null;
        setTimeout("$ShowPopup1()", 20);
    }else{
		getById('popup').style.display = 'none';
		getById('popup').innerHTML = '';
		$HideFilter()
	}
	if(TsFormPopupParams != false){
	    $ShowPopup(window.TsPopupFile, false, 'POST', TsFormPopupParams);
	}
}

function $HidePopupAll(){
		getById('popup').style.display = 'none';
		getById('popup').innerHTML = '';
		TsMemoContentPopup = null;
		TsFormPopupParams = false;
		$HideFilter()
}

// Gestion des formulaires dans les popups
function $FormPopup(){
	if( !getById('popup') ){return false;}

	var TsTabElements = getById('popup').getElementsByTagName('*');
    var isForm = false;
    
	TsTabParams.splice(0, TsTabParams.length); // Init des Parametres
	TsTabParamsValues.splice(0, TsTabParams.length); // Init des values des Parametres

	for(var i=0; i<TsTabElements.length; i++){
		var TsClassName = TsTabElements[i].className.toLowerCase();
		if( TsClassName.indexOf('form_param') == -1 && TsClassName.indexOf('form_submit') == -1 && TsTabElements[i].getAttribute('id') != '__EVENTTARGET' && TsTabElements[i].getAttribute('id') != '__EVENTARGUMENT' && TsTabElements[i].getAttribute('id') != '__VIEWSTATE' && TsTabElements[i].getAttribute('id') != '__EVENTVALIDATION'){continue;} // pas un element de formulaire a traiter

        if (TsClassName.indexOf('form_submit') > -1 || TsClassName.indexOf('form_param') > -1) isForm = true;

		if( !(TsTabElements[i].tagName) ){continue;} 

		var TsTagName = TsTabElements[i].tagName.toLowerCase();
		switch (TsTagName){
			case 'input':
				var TsType = TsTabElements[i].type.toLowerCase();
				switch (TsType){
					case 'radio':
						if(TsTabElements[i].checked){$AddFormParams(TsTabElements[i].name, TsTabElements[i].value);}
					break;
					case 'checkbox':
						$AddFormParams(TsTabElements[i].name, TsTabElements[i].checked);
					break;
					case 'text':
					case 'hidden':
						$AddFormParams(TsTabElements[i].name, TsTabElements[i].value);
					break;
				}
			break;
			case 'textarea':
				$AddFormParams(TsTabElements[i].name, TsTabElements[i].value);
			break;
			case 'select':
				$AddFormParams(TsTabElements[i].name, TsTabElements[i].selectedIndex);
			break;
		}
	}
	
	if (!isForm) { return false; }
	
	var TsParams = null; // Liste des parametres pour GET
	for(var j=0; j<TsTabParams.length; j++){
		if( j == 0){
			TsParams = TsTabParams[j]+'='+encodeURIComponent(TsTabParamsValues[j]);
		}else{
			TsParams = TsParams+'&'+TsTabParams[j]+'='+encodeURIComponent(TsTabParamsValues[j]);
		}
	}
	return TsParams;
}

// Ajout des parametres dans un tableau
function $AddFormParams(TsParam, TsValue){
	for(var i=0; i<TsTabParams.length; i++){
		if(TsTabParams[i] == TsParam){
			TsTabParamsValues[i] = TsValue;
			return false;
		}
	}
	
	var TsTabLength = TsTabParams.length
	TsTabParams[TsTabLength] = TsParam; // Ajoute le nouveau parametres et sa valeur
	TsTabParamsValues[TsTabLength] = TsValue;
}

// Calcule la position de la popup
function $PositionPopup(){
	$Document();

	var TsScrollTop = 0;
	var TsScrollLeft = 0;
	window.pageXOffset ? TsScrollLeft = window.pageXOffset : TsScrollLeft = TsDocRef.scrollLeft;
	window.pageYOffset ? TsScrollTop = window.pageYOffset : TsScrollTop = TsDocRef.scrollTop;

	window.innerHeight ? TsClientHeight = window.innerHeight : TsClientHeight = TsDocRef.clientHeight;
	var TsBlockTop = (parseInt(TsClientHeight) - parseInt(getById('popup').offsetHeight)) /2;
	getById('popup').style.top = TsScrollTop + parseInt(TsBlockTop) + 'px';
	var TsBlockLeft = (parseInt(TsDocRef.clientWidth) - parseInt(getById('popup').offsetWidth)) /2;
	getById('popup').style.left = TsScrollLeft + parseInt(TsBlockLeft) + 'px';
}

// Creation de la Popup
function $CreatePopup(TsPopupFile){
	var TsTabElementBody = document.getElementsByTagName('body');
	if(!TsTabElementBody[0]){return false;}
	
	var TsPopup = document.createElement('div');
	var TsStyle = 'position:absolute;top:0;left:0;z-index:999999;background:none;color:#fff;text-align:left;display:none;';
	TsPopup.setAttribute('id', 'popup');
	TsPopup.setAttribute('style', TsStyle);
	TsPopup.style.cssText = TsStyle;

	TsTabElementBody[0].appendChild(TsPopup);
	
	if( getById('popup') ){$ShowPopup(TsPopupFile);} // Relance affichage du filtre
}

// Change opacite
function $ChangeOpacity(TsOpacity, TsId){
	if( !getById(TsId) ){return false;}
	
	with(getById(TsId).style){
		opacity = (TsOpacity / 100);
		Mozopacity = (TsOpacity / 100);
		Khtmlopacity = (TsOpacity / 100);
		filter = "alpha(opacity=" + TsOpacity + ")";
	}
}

// Affiche ou Cache les SELECT de la page
function $GestionSelect(TsOption){
	var TsTabElements = document.getElementById('global').getElementsByTagName('select');
	for(var i=0;i<TsTabElements.length;i++){TsTabElements[i].style.visibility = TsOption;}
}
/*************************************************************************************************************************************/
/* FUNCTION SUR LES NODES                                                                                                            */
/*************************************************************************************************************************************/
function Contains(t, elt) {
	for (var i=0;i<t.length;i++) if (t[i]==elt) return true;
	return false;
}
function getById(o) {
	return (typeof o=='string') ? o=document.getElementById(o) : o;
}
function $t(o) {
	return getById(o).tagName ? getById(o).tagName.toLowerCase() : '';
}
function $c(o,t) {
	var at = t ? t.toLowerCase().split('|') : null;
	var a=new Array;
	if (!getById(o).childNodes) return null;
	for (var i=0;i<getById(o).childNodes.length;i++) {
		if (!at) { if (getById(o).childNodes[i].tagName) a[a.length]=getById(o).childNodes[i]; }
		else if (Contains(at,$t(getById(o).childNodes[i]))) a[a.length]=getById(o).childNodes[i];
	}
	return a;
}
function $p(o,t) {
	if (!o) return null;
	var at = t ? t.toLowerCase().split('|') : null;
	return $t(o)=='body' ? null : (Contains(at,$t(o)) ? getById(o) : $p(getById(o).parentNode, t));
}
function GetSrcElt(e){
	if(!e){e = window.e;}
	if(e.srcElement){return e.srcElement;}
	if(e.target){return e.target;}
	return null;
}
/*************************************************************************************************************************************/

