﻿//Classe Utils
function Utils(){}

Utils.Navigateur = navigator.userAgent;

Utils.NomDomaines = new Array("www.changezlafacedumonde.org",
    "localhost:1277",
    "localhost:1278",
    "demo.lafacedumonde.org",
    "demo.lafacedumonde.com");
    
Utils.NiveauFenetreCourant = 0;

//Verifie si le navigateur est compatible
Utils.NavigateurCompatible = function()
{
    var estAjax = false;
    if(window.XMLHttpRequest) //Firefox et autres
    {
        try
        {
            estAjax = true;
        }
        catch (e)
        {
            estAjax = false;
        }
    } 
    else if(window.ActiveXObject) // Internet Explorer 
    {
        try
        {
            estAjax = true;
        }
        catch (e)
        {
            try
            {
                estAjax = true;
            }
            catch (e) 
            {
                estAjax = false;
            }
        }
    }
    
    return estAjax;
}

Utils.EstIE = function()
{
    var estIE = false;
    if(Utils.Navigateur.indexOf("MSIE") != -1)
    {
        estIE = true;
    }
    
    return estIE;
}

Utils.EstIE7 = function()
{
    var estIE = false;
    if(Utils.Navigateur.indexOf("MSIE 7") != -1)
    {
        estIE = true;
    }
    
    return estIE;
}

Utils.ParentFrame = function(idFrame)
{
    var parentFrame;
    if(Utils.EstIE())
    {
        parentFrame = parent.frames[idFrame];
    }
    else
    {
        parentFrame = parent.document.getElementById(idFrame).contentWindow;
    }
    
    return parentFrame;
}

//Valide si la page en cours est chargée dans un iframe
Utils.ValiderEnfant = function()
{
    if(self == top)
    {
        self.location.href = "/erreur.aspx?erreur=1";
    }
    
    try
    {
        var estDomaineValide = false;
        for(i = 0 ; i < Utils.NomDomaines.length ; i++)
        {
            if(parent.location.host == Utils.NomDomaines[i])
            {
                estDomaineValide = true;
            }
        }
    }
    catch(e){}
    
    if(!estDomaineValide)
    {
        self.location.href = "/erreur.aspx?erreur=2";
    }
}

//Vérifie si la page est correctement un enfant d'un iframe du site.
//Retourne VRAI si c'est le cas, FAUX sinon
Utils.EstValideEnfant = function()
{
    var estValide = false;
    
    if(self != top)
    {
        estValide = true;
    }
    
    if(estValide)
    {
        try
        {
            var estDomaineValide = false;
            for(i = 0 ; i < Utils.NomDomaines.length ; i++)
            {
                if(parent.location.host == Utils.NomDomaines[i])
                {
                    estValide = true;
                    break;
                }
            }
        }
        catch(e){}
    }
    
    return estValide;
}

Utils.OuvrirFenetreNiveau2 = function(adresse, largeur, hauteur)
{
    parent.Utils.NiveauFenetreCourant = 2;
    parent.Fenetre.DimensionnerFenetre("divFenetre3",largeur,hauteur);
    parent.Fenetre.AfficherFenetre("divFenetre3");
    parent.document.getElementById("divFenetre2").style.display = "none";
    parent.Utils.Naviguer(adresse, largeur, hauteur);
}

//Fonction qui ouvre une page de navigation et charge la page
Utils.Naviguer = function(adresse, largeur, hauteur)
{
    parent.Utils.AfficherFenetre3(adresse, largeur, hauteur, 1);
}

Utils.NaviguerLangue = function(adresse,largeur,hauteur)
{
    parent.Utils.AfficherFenetre3(adresse + "?idLangue=" + Carte.IdLangue, largeur, hauteur, 1);
}

//Fonction qui affiche un projet Oxfam
Utils.AfficherProjetOxfam = function(noProjet)
{
    parent.Utils.AfficherFenetre3("/projetOxfam.aspx?noProjet=" + noProjet, 400, 500, 0);
}

Utils.AfficherFenetre3 = function(adresse, largeur, hauteur, typeFenetre)
{
    Fenetre.DimensionnerFenetre("divFenetre3",largeur,hauteur);
    Fenetre.AfficherFenetre("divFenetre3");
    Fenetre.AfficherMasque();
    
    switch(typeFenetre)
    {
        case 0:
            Fenetre.ChangerCouleur('divFenetre3','#99CC33','','url(/images/ImagesSites/overlay-vert.png)','');
            break;
        case 1:
        default:
            Fenetre.ChangerCouleur('divFenetre3','#2979be','','url(/images/ImagesSites/overlay-bleu.png)','');
            break;
    }
    
    var tabDimension = Utils.getPageSize();
    
    Fenetre.Centrer("divFenetre3",tabDimension[0],tabDimension[1]);
    
    var frameNavigation = document.getElementById("frameNavigation");
    if(largeur > 0)
    {
        frameNavigation.style.width = largeur + "px";
    }
    if(hauteur > 0)
    {
        frameNavigation.style.height = hauteur -15 + "px";
    }
    frameNavigation.src = adresse;
}

//Fonction qui change la langue en cours
Utils.ChangerLangue = function(idLangue)
{
    if(idLangue > 0 && idLangue < 3)
    {
        //On utilise le postback du link button sur la 
        //page index pour faire le changement de langue
        //Langue.ChangerLangue(idLangue);
    }
    else
    {
        switch(idLangue)
        {
            case 3 :
                alert("Disponible prôximamente");
                break;
            default:
                alert("Cette langue n'est pas disponible");
                break;
        }
    }
}

/*****
 * Desactiver : Permet de désactiver un element dans la page.
 */
function Desactiver(p_idElement)
{
    document.getElementById(p_idElement).disabled= true;  
}

/*****
 * Activer : Permet d'activer un element dans la page.
 */
function Activer(p_idElement)
{
    document.getElementById(p_idElement).disabled= false;
}

Utils.AfficherPixel = function(x,y)
{
    //On ferme toutes les fenêtres
    Utils.FermerFenetre();
    
    parent.Carte.AfficherPixel(x,y);
}

Utils.AfficherPixelZoom = function(x,y,zoom)
{
    //On ferme toutes les fenêtres
    Utils.FermerFenetre();
    Utils.FermerFenetreParent2();
    
    parent.Carte.CentrerPixel(x,y,zoom);
}

Utils.AcheterPixel = function(x,y)
{
    //On ferme toutes les fenêtres
    Utils.FermerFenetre();
    
    parent.Carte.AcheterPixel(x,y);
}

Utils.FermerFenetre = function()
{
    if(parent.Utils.NiveauFenetreCourant < 2)
    {
        parent.document.getElementById('divFenetre3').style.visibility = 'hidden';
        parent.document.getElementById('divMasque').style.visibility = 'hidden';
        parent.document.getElementById('frameNavigation').src = "/chargement.aspx";
    }
    else
    {
        parent.document.getElementById('divFenetre3').style.visibility = "hidden";
        parent.document.getElementById('frameNavigation').src = "";
        parent.document.getElementById('divFenetre2').style.display = "inline";
        parent.Utils.NiveauFenetreCourant = 1;
    }
}

Utils.FermerFenetre5 = function()
{
    parent.document.getElementById('divFenetre5').style.visibility = 'hidden';
    parent.document.getElementById('divMasque').style.visibility = 'hidden';
    parent.document.getElementById('frameIntro').src = "/intro.aspx";
}

function ChoixPhoto(p_imgPhoto, p_checkBox)
{
    var img= document.getElementById(p_imgPhoto);
    var chkBox=  document.getElementById(p_checkBox);
    img.src= "/Images/ImagesPerso/Anonymes/attente.gif";
    document.getElementById(p_checkBox).checked= false;
}

//Enlever le px à la fin de la valeur
Utils.GetValeurNumerique = function(valeur)
{
    var valNum = parseInt(valeur,10);
    return valNum;
}

//
// getPageSize()
// Returns array with page width, height and window width, height
// Core code from - quirksmode.org
// Edit for Firefox by pHaez
//
Utils.getPageSize = function()
{
	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 width less then width of the viewport
	var pageWidth, pageHeight
	if(xScroll < windowWidth)
	{	
		pageWidth = windowWidth;
	} 
	else 
	{
		pageWidth = xScroll;
	}
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight)
	{
		pageHeight = windowHeight;
	} 
	else 
	{ 
		pageHeight = yScroll;
	}
	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}

//
// getPageScroll()
// Returns array with x,y page scroll values.
// Core code from - quirksmode.org
//
Utils.getPageScroll = function()
{

	var yScroll, xScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}
	
	if (self.pageXOffset) {
		xScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollRigth){	 // Explorer 6 Strict
		xScroll = document.documentElement.scrollRigth;
	} else if (document.body) {// all other Explorers
		xScroll = document.body.scrollRigth;
	}

	arrayPageScroll = new Array(xScroll,yScroll) 
	return arrayPageScroll;
}


 function aleatoire(p_nb) 
 {
      return (Math.floor((p_nb)*Math.random()+1));
 }

function ChkAnonymePhoto(p_imgPhoto, p_chkBoxAnonymePhoto)
{
    var img= document.getElementById(p_imgPhoto);
    var chkBox=  document.getElementById(p_chkBoxAnonymePhoto);
    if (chkBox.checked)
    {
        var i= aleatoire(6);
        img.src= "/Images/ImagesPerso/Anonymes/anonyme" + i + ".jpg";
        document.getElementById("donateur_hiddenPhoto").value = "/Images/ImagesPerso/Anonymes/anonyme" + i + ".jpg";
    }
    else
    {
        img.src="/Images/ImagesPerso/Anonymes/attente.gif";
        document.getElementById("donateur_hiddenPhoto").value = "/Images/ImagesPerso/Anonymes/attente.gif";
    }    

}

function RadioTypeProfil(p_profil, 
                         p_imgDonateur, p_txtSurnom, p_groupesAge, p_hiddenPhoto, p_hiddenProfilAnonyme)
{
   
    var imgDonateur          =     document.getElementById(p_imgDonateur);
    var txtSurnom            =     document.getElementById(p_txtSurnom);
    var ddlGroupesAge        =     document.getElementById(p_groupesAge); 
    var hiddenPhoto          =     document.getElementById(p_hiddenPhoto); 
    var hiddenProfilAnonyme  =     document.getElementById(p_hiddenProfilAnonyme); 
    
    // Profil personnalisé
    if (p_profil[0].checked)
     
    {          
        imgDonateur.src = "/Images/ImagesPerso/TEMP/attente.gif";        
        txtSurnom.disabled = false;
        txtSurnom.value= "";
        hiddenProfilAnonyme.value = "";
        ddlGroupesAge.disabled = false;       
    }
    // Profil anonyme
    else
    {          
        var i= aleatoire(6);
        imgDonateur.src= "/Images/ImagesPerso/TEMP/anonyme" + i + ".jpg";
        hiddenPhoto.value = "/Images/ImagesPerso/TEMP/anonyme" + i + ".jpg";
        hiddenProfilAnonyme.value = "anonyme";
        txtSurnom.disabled = true;
        txtSurnom.value= "Anonyme";
        ddlGroupesAge.disabled = true;                
    } 
}


function ChangementPhoto(p_ddlPays, p_imgDrapeau, p_lblPaysProvince)
{
    var ddlPays   = document.getElementById(p_ddlPays);
    var imgDrapeau  = document.getElementById(p_imgDrapeau);
    var lblPaysProvince = document.getElementById(p_lblPaysProvince);
    var indice= ddlPays.selectedIndex;    
    var temp = ddlPays.options[indice].value;
    var tab= temp.split(';');
    
    if (tab[2])
    {
        imgDrapeau.style.display = "inline";
        lblPaysProvince.style.display = "inline";
        lblPaysProvince.innerHTML = tab[2];
        imgDrapeau.src= tab[1];
    }
}

//Fonction qui sert à fermer la fenêtre 2 dans la page parente
Utils.FermerFenetreParent2 = function()
{
    try
    {
        parent.document.getElementById('divFenetre2').style.visibility = 'hidden';
        parent.document.getElementById('divMasque').style.visibility = 'hidden';
        parent.document.getElementById('framePixel').src = "";
    }
    catch(e)
    {}
}

//Fonction qui ferme la fenêtre 1
Utils.FermerFenetre1 = function()
{
    try
    {
        parent.document.getElementById('divFenetre1').style.visibility = 'hidden';
    }
    catch(e)
    {}
}

Utils.GetText = function(idDiv)
{
    var divElement = document.getElementById(idDiv);
    var texte = null;
    
    if(divElement.innerText)
    {
        texte = divElement.innerText;
    }
    else if(divElement.textContent)
	{
		texte = divElement.textContent;
	}
	else if(divElement.value)
	{
		texte = divElement.value;
	}
	return texte;
}

Utils.SetText = function(idDiv, texte)
{
    var divElement = document.getElementById(idDiv);
    
    if(divElement.innerText)
    {
        divElement.innerText = texte;
    }
    else if(divElement.textContent)
	{
		divElement.textContent = texte;
	}
	else if(divElement.value)
	{
		divElement.value = texte;
	}
}

Utils.Pause = function(millisecondes)
{
    var now = new Date();
    var exitTime = now.getTime() + millisecondes;

    while(true)
    {
        now = new Date();
        if(now.getTime() > exitTime) return;
    }
}


Utils.TextAreaMax = function(field, maxlimit, divErreur) 
{
    var textArea= document.getElementById(field);
    var div = document.getElementById(divErreur);
    var isValid = false;
    
    if (textArea.value.length > maxlimit )
    {
        textArea.value = textArea.value.substring(0, maxlimit);
        div.innerHTML = "Le message ne peut pas dépasser " + maxlimit + " caractères.";
        div.style.display = "inline";
    }
    else
    {
        isValid = true;
        div.innerHTML = "Le message ne peut pas dépasser " + maxlimit + " caractères.";
        div.style.display = "none";
    }
    
    return isValid;
}

