/*************************************************************************************************************************************/
/* FUNCTION SUR LOAD DE LA PAGE                                                                                                      */
/*************************************************************************************************************************************/
window.addEventListener ? window.addEventListener('load', $Load, false) : window.attachEvent('onload', $Load);
function $Load(){
	$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;

/*************************************************************************************************************************************/
/* 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( !$n('TsSiteWebUrl') ){return false;} // Pas input de type hidden dans le master ou la page
	//alert(navigator.appVersion);
	$Navigateur(navigator.appVersion);

    if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7) {
        if( $n(TsDocument) ){
            TsDocument = document.getElementById(TsDocument);
        }else{
            TsDocument = document.getElementById('global');
        }

        var TsTabElements = TsDocument.getElementsByTagName('img');
		for (var i=0;i<TsTabElements.length;i++) {
			if(TsTabElements[i].src.match(/\.png/i) == null) {continue}; // pas un png

			with(TsTabElements[i]){
			    style.width = width + "px";
			    style.height = height + "px";
			    style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizingMethod='scale')"
			    src = $n('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){
	if(!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( !$n('filter') ){return false;}
	if(TsAfficheFiltre){
		setTimeout('$ShowFilter()', 20);
		setTimeout('$PositionPopup()', 20);
	}
}

// Affiche le filtre
function $ShowFilter(){
	if( !$n('filter') ){$CreateFilter();return false;}

	if(!TsAfficheFiltre){
		$n('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){$n('filter').style.display = 'none';}

	if(!TsDocRef){$Document();}

	TsLargeur = parseInt(TsDocRef.clientWidth) + parseInt(TsDocRef.scrollLeft);
	TsHauteur = parseInt(TsDocRef.clientHeight) + parseInt(TsDocRef.scrollTop);

    if( $n('global') ){ // Hauteur et largeur en fonction du contenu si celui-ci superieur au client
        if( $n('global').offsetHeight >  TsHauteur){TsHauteur = parseInt($n('global').offsetHeight);}
        if( $n('global').offsetWidth  >  TsLargeur){TsLargeur = parseInt($n('global').offsetWidth);}
    }

	$n('filter').style.width = TsLargeur + 'px';
	$n('filter').style.height = TsHauteur + 'px';

	if(!TsAfficheFiltre){
		if (TsNameNavigateur == 'IE' && TSVersionNavigateur < 7){$GestionSelect('hidden');} // Affiche les SELECT si < IE7

		$n('filter').style.visibility = 'visible';
		TsAfficheFiltre = true;
	}

	$n('filter').style.display = 'block';
}

// Cache le filtre
function $HideFilter(){
	$n('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( $n('filter') ){$ChangeOpacity(85, 'filter');$ShowFilter();} // Relance affichage du filtre
}

// Ouverture file Popup
function $OpenFilePopup(TsFile, TsType){
	var TsRequest = $Request();
	TsRequest.open('GET' ,TsFile ,true);

	TsRequest.onreadystatechange = function(){
		if( TsRequest.readyState == 4 ){
 			if(TsRequest.status == 200){
				$ReadFilePopup(TsRequest, TsType);
				$ShowPopup1();
			}else{
			    if($n('popup').innerHTML != ''){TsMemoContentPopup = $n('popup').innerHTML;}
				$n('popup').innerHTML = 'Erreur de lecture du fichier '+TsFile;
			}
 		}
	}
	
	TsRequest.send(null);
}

// Lecture file Popup
function $ReadFilePopup(TsRequest, TsType){
	if(!TsRequest){return null;}

	switch(TsType){
		case 'XML':
			var TsResponseXml =  TsRequest.responseXML;
		break;
		case 'HTML':
			$n('popup').innerHTML = $GetContentPopup(TsRequest.responseText);
		break;
	}
}

// Recupere le contenu de la popup
function $GetContentPopup(content){ 
   var x = content.indexOf('<!-- Start popup --');
   x = content.indexOf('>', x);    
   var y = content.lastIndexOf('<!-- End popup -->'); 
   return content.slice(x + 1, y);
} 

// Affiche la Popup
function $ShowPopup(TsPopupFile){
    if( !$n('TsSiteWebUrl') ){return false;}

	if( !$n('popup') ){$CreatePopup(TsPopupFile);return false;}

	$OpenFilePopup($n('TsSiteWebUrl').value+'/popups/'+TsPopupFile+'?nocache='+Math.random(), 'HTML'); // Recherche le contenu a afficher
}
function $ShowPopup1(){
	$ShowFilter();
	$n('popup').style.visibility = 'hidden';
	$n('popup').style.display = 'block';
	$Png('popup');

	// Recupere la largeur de la popup a afficher
	var TsTabElements = $n('popup').childNodes;
	
	for(var i=0;i<TsTabElements.length;i++){
		if(TsTabElements[i].tagName){
			$n('popup').style.width = parseInt(TsTabElements[i].offsetWidth) + 'px';
			$n('popup').style.height = parseInt(TsTabElements[i].offsetHeight) + 'px';
		}
	}
	$PositionPopup();
	$n('popup').style.visibility = 'visible';
}

// Cache la Popup
function $HidePopup(){
    if(TsMemoContentPopup != null){
        $n('popup').innerHTML = TsMemoContentPopup;
        TsMemoContentPopup = null;
        setTimeout("$ShowPopup1()", 20);
    }else{
		$n('popup').style.display = 'none';
		$n('popup').innerHTML = '';
		$HideFilter()
	}
}

// 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;

	var TsBlockTop = (parseInt(TsDocRef.clientHeight) - parseInt($n('popup').offsetHeight)) /2;
	$n('popup').style.top = TsScrollTop + parseInt(TsBlockTop) + 'px';
	var TsBlockLeft = (parseInt(TsDocRef.clientWidth) - parseInt($n('popup').offsetWidth)) /2;
	$n('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( $n('popup') ){$ShowPopup(TsPopupFile);} // Relance affichage du filtre
}

// Change opacite
function $ChangeOpacity(TsOpacity, TsId){
	if( !$n(TsId) ){return false;}
	
	with($n(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 $n(o) {
	return (typeof o=='string') ? o=document.getElementById(o) : o;
}
function $t(o) {
	return $n(o).tagName ? $n(o).tagName.toLowerCase() : '';
}
function $c(o,t) {
	var at = t ? t.toLowerCase().split('|') : null;
	var a=new Array;
	if (!$n(o).childNodes) return null;
	for (var i=0;i<$n(o).childNodes.length;i++) {
		if (!at) { if ($n(o).childNodes[i].tagName) a[a.length]=$n(o).childNodes[i]; }
		else if (Contains(at,$t($n(o).childNodes[i]))) a[a.length]=$n(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)) ? $n(o) : $p($n(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;
}
/*************************************************************************************************************************************/
