/*****************************
SCRIPT WEB2I
*****************************/

function $(id) {
    return document.getElementById(id);
}
function $F(id) {
    return document.getElementById(id).value;
}

/*
function addslashes(str) {
    str=str.replace(/\'/g,'\\\'');
    str=str.replace(/\"/g,'\\"');
    str=str.replace(/\\/g,'\\\\');
    str=str.replace(/\0/g,'\\0');
    return str;
}
function htmlspecialchars(ch) {
    ch = ch.replace(/&/g,"&")
    ch = ch.replace(/\"/g,""")
    ch = ch.replace(/\'/g,"'")
    ch = ch.replace(/</g,"<")
    ch = ch.replace(/>/g,">")
    return ch
}
function stripslashes(str) {
    str=str.replace(/\\'/g,'\'');
    str=str.replace(/\\"/g,'"');
    str=str.replace(/\\\\/g,'\\');
    str=str.replace(/\\0/g,'\0');
    return str;
}
*/
function nl2br(str) {
    return str.replace(/\n/g, '<br />');
}

function trim(string)
{
    return string.replace(/(^\s*)|(\s*$)/g, '');
}

function go(url)
{
	document.location.href= url;
}
function back()
{
	history.go(-1);
}

function Hide(div){
    document.getElementById(div).style.display='none';
}
function Show(div){
    document.getElementById(div).style.display='block';
}
function Toogle_display(div){
	if(document.getElementById(div).style.display=='none')
    	Show(div);
	else
		Hide(div);
}


function getElementsByClass(searchClass,node,tag) {
	var classElements = new Array();
	if ( node == null )
		node = document;
	if ( tag == null )
		tag = '*';
	var els = node.getElementsByTagName(tag);
	var elsLen = els.length;
	var pattern = new RegExp('(^|\\\\s)'+searchClass+'(\\\\s|$)');
	for (i = 0, j = 0; i < elsLen; i++) {
		if ( pattern.test(els[i].className) ) {
			classElements[j] = els[i];
			j++;
		}
	}
	return classElements;
}

function getInput(searchName, node) {
    var els = node.getElementsByTagName('input');
    
    for (i=0; i<els.length; i++)
        if(els[i].name == searchName)
            return els[i];
}


/*******
descr: Renvoie le code de la touche appuyer
param: event
********/
function getkey(e)
{
    if (window.event)
    return window.event.keyCode;
    else if (e)
    return e.which;
    else
    return null;
}

/*******
descr: Fonction qui limites les caract?s saisies dans un input
param: event, liste de caract?s autoris 
********/
function goodchars(e, goods)
{
    var key, keychar;
    key = getkey(e);
    if (key == null) return true;

    // get character
    keychar = String.fromCharCode(key);
    keychar = keychar.toLowerCase();
    goods = goods.toLowerCase();

    // check goodkeys
    if (goods.indexOf(keychar) != -1)
    return true;

    // control keys
    if ( key==null || key==0 || key==8 || key==9 || key==13 || key==27 )
    return true;

    // else return false
    return false;
}


function getWindowHeight() {
    var windowHeight = 0;
    if (document.documentElement && document.documentElement.clientHeight) {
        windowHeight = document.documentElement.clientHeight;
    }
    else if (typeof(window.innerHeight) == 'number') {
        windowHeight = window.innerHeight;
    }
    else if (document.body && document.body.clientHeight) {
        windowHeight = document.body.clientHeight;
    }
    return windowHeight;
}



/*******
descr: Retour la hauteur 1/3 de l'?an
param: ---
********/
function getTop()
{
    return document.documentElement.scrollTop + Math.floor(getWindowHeight()/3);
}

/*******
descr: Div alerte
param: le texte ?fficher
********/
function showAlerte(id, txt)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = nl2br(txt);
    document.getElementById(id).style.display = "block";
}
function showElem(div){
	DivTop = getTop();
	document.getElementById(div).style.top = DivTop+'px';
    document.getElementById(div).style.display='block';
}
function closeAlerte(id)
{
    document.getElementById(id).style.display = "none";

}

function showConfirmation(id, txt, action)
{
    DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = nl2br(txt);
    document.getElementById(id+'_ok').href = action;
    document.getElementById(id).style.display = "block";
}

function Confirm(url)
{
	id = 'alerteJS';
	DivTop = getTop();
    document.getElementById(id).style.top = DivTop+'px';
    document.getElementById(id+'_middle').innerHTML = 'Etes vous sûr(e) de vouloir continuer ?';
    document.getElementById(id+'confirm').innerHTML = "<div style='align:center'><a href="+url+">OUI</a>&nbsp;&nbsp;&nbsp;&nbsp;<a href='javascript:closeAlerte(\"alerteJS\")'>NON</a></div>";
    document.getElementById(id).style.display = "block";
}


/**************************************/
/**************************************/
/**************************************/

function Horloge() {
  //Récupération des deux div pour la date et l'heure
  var divDate = document.getElementById('js_date');
  var divHeure = document.getElementById('js_heure');
  
  //Récupération de l'heure actuel
  var Temps = new Date();
  var TempsLocal = Temps.getTime()+ (Temps.getTimezoneOffset()-60)*60;
  var Maintenant = new Date(TempsLocal);
  var Heure = " " + Maintenant.getHours();
  var minutes = Maintenant.getMinutes();
  //var secondes = Maintenant.getSeconds();
  Heure += ((minutes < 10) ? ":0" : ":") + minutes;
  //Heure += ((secondes < 10) ? ":0" : ":") + secondes;
  
  //Récupération du jour actuel
  var jour = Maintenant.getDate();
  var Mois = Maintenant.getMonth()+1;
  var Annee = Maintenant.getFullYear();
  jour = ((jour < 10) ? "0" : "") + jour;
  Mois = ((Mois < 10) ? "0" : "") + Mois;
  AujourdHui = jour + "/" + Mois + "/" + Annee;
  
  //Mise à jour des div et rebouclage pour avoir l'heure en continu
  divDate.innerHTML = AujourdHui;
  divHeure.innerHTML = Heure;
  window.setTimeout(Horloge, 1000);
}


/**************************************/
/**************************************/
/**************************************/
function ajax_fieldvalue_exist_control(field, value) {
    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", 'ajax.php?c=verif_ajout&champ='+field+'&value='+value, false);
        AJAX.send(null);
        var doc =  AJAX.responseXML;
    } else {
        return false;
    }
    var racine = doc.getElementsByTagName("response")[0];
    for (var i=0; i<racine.childNodes.length; i++) {
        child = racine.childNodes[i];
        if (child.nodeName == "code") {
            var code = child.firstChild.data;
        }
    }
    if (code == 0) {
        return true;
    }
    else if (code == 1) {
        return false;
    }
}

function check_text(value) {
    if (!trim(value).match(/.+/i)) {
        return false;
    }
    return true;
}

function check_format(format, value) {
    if (!trim(value).match(format)) {
        return false;
    }
    return true;
}

function check_select(field) {
    if ((field.options[field.options.selectedIndex].value != '') && (field.options[field.options.selectedIndex].value != 0)) {
        return true
    }
    return false;
}

function check_checkbox(field) {
    if (field.checked) {
        return true
    }
    return false;
}

function check_image(value) {
    if (!trim(value).match(/(gif|jpeg|jpg|png$)|(^$)/i)) {
        return false;
    }
    return true;
}

function check_confirm(value1, value2) {
    if ((trim(value1)!='') && (value1 != value2)) {
        return false;
    }
    return true;
}

function select_all(field) {
    for(var i=0; i<field.options.length; i++) {
        field.options[i].selected=true;
    }
}

function checkForm(formId) {
    var error = false;
    var error_str = 'Merci de corriger les champs suivants :\n';
    var CheckId;
    var formId;

    switch (arguments.length) {
        case 1 :
        CheckId = arguments[0];
        formId  = arguments[0];
        break;
        case 2 :
        formId = arguments[0];
        CheckId = arguments[1];
        break;
        default :
        exit;
        break;
    }

    with (document.forms[formId]) {
        switch (CheckId) {
            case 'inscription' : /* inscription d'un prof */
            var check_tab = new Array(
            new Array('nom','check_text', 'Votre nom'),
            new Array('prenom','check_text', 'Votre prénom'),
            new Array('eta_cp0','check_text', 'Un n°département'),
            new Array('eta_nom0','check_text', 'Un nom d\'établissement'),
            new Array('mail','check_format', 'Votre email est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('mail','ajax_fieldvalue_exist_control', 'Le mail est déjà existant', 'mail' ),
            new Array('mdp','check_text', 'Votre mot de passe' ),
            new Array('captcha','check_text', 'Code de sécurité manquant' ),
            new Array('domaine','check_text', 'Merci de saisir un nom de domaine' ),
            new Array('domaine','ajax_fieldvalue_exist_control', 'Le nom de domaine est déjà existant', 'sous_domaine' ),
            new Array('captcha','ajax_fieldvalue_exist_control', 'Code de sécurité incorrecte', 'captcha' ),
            new Array('reglement','check_checkbox', 'Accepter les conditions générales' )
            );
            break;
            case 'f_add_inscrit' : /* inscription d'un prof */
            var check_tab = new Array(
            new Array('nom','check_text', 'Nom'),
            new Array('prenom','check_text', 'Prénom'),
            new Array('mail','check_format', 'L\'adresse mail est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('mail','ajax_fieldvalue_exist_control', 'Le mail est déjà existant', 'mail' ),
            new Array('adresse','check_text', 'Adresse'),
            new Array('cp','check_text', 'Code postal'),
            new Array('ville','check_text', 'Ville')
            );
            break;
            case 'f_inscription' : /* inscription d'un prof */
            var check_tab = new Array(
            new Array('nom','check_text', 'Nom'),
            new Array('prenom','check_text', 'Prénom'),
            new Array('mail','check_format', 'L\'adresse mail est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('mail','ajax_fieldvalue_exist_control', 'Le mail est déjà existant', 'mail' ),
            new Array('adresse','check_text', 'Adresse'),
            new Array('cp','check_text', 'Code postal'),
            new Array('ville','check_text', 'Ville'),
            new Array('cgu','check_checkbox', 'Accepter les conditions générales' )
            );
            break;
            case 'f_edit_inscrit' : /* inscription d'un prof */
            var check_tab = new Array(
            new Array('nom','check_text', 'Nom'),
            new Array('prenom','check_text', 'Prénom'),
            new Array('mail','check_format', 'L\'adresse mail est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('adresse','check_text', 'Adresse'),
            new Array('cp','check_text', 'Code postal'),
            new Array('ville','check_text', 'Ville')
            );
            break;
            case 'f_ce' : /* inscription d'un prof */
            var check_tab = new Array(
            new Array('nom','check_text', 'Nom de l\'entreprise'),
            new Array('email','check_format', 'L\'adresse mail est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i )
            );
            break;
            case 'f_newce' : 
            var check_tab = new Array(
            new Array('nom','check_text', 'Nom de l\'entreprise'),
            new Array('contact_nom','check_text', 'Votre nom'),
            new Array('contact_prenom','check_text', 'Votre prénom'),
            new Array('email','check_format', 'L\'adresse mail est mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('cp','check_text', 'Code postal de l\'entreprise'),
            new Array('ville','check_text', 'Ville de l\'entreprise')
            );
            break;
            case 'f_recherche' :
            var check_tab = new Array(
            new Array('rechercher','check_text', 'Votre recherche')
            );
            break;
            case 'contact' : /* contact */
            var check_tab = new Array(
            new Array('nom','check_text', 'Votre nom'),
            new Array('mail','check_format', 'Email mal formé', /^[-a-zA-Z0-9._]+@[-a-zA-Z0-9._]+\.[a-zA-Z0-9._]+$/i ),
            new Array('sujet','check_select', 'Le sujet' ),
            new Array('message','check_text', 'Votre message' )
            );
            break;
        }
        for (var i=0; i<check_tab.length; i++) {
            switch(check_tab[i][1]) {
                case 'ajax_fieldvalue_exist_control' :
                if (!ajax_fieldvalue_exist_control(check_tab[i][3], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2].replace('{value}', elements[check_tab[i][0]].value)+'\n';
                }
                break;
                case 'check_text' :
                if (!check_text(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_format' :
                if (!check_format(check_tab[i][3], elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_select' :
                if (!check_select(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_checkbox' :
                if (!check_checkbox(elements[check_tab[i][0]])) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_image' :
                if (!check_image(elements[check_tab[i][0]].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_confirm' :
                if (!check_confirm(elements[check_tab[i][0]].value, elements[check_tab[i][0]+'_confirm'].value)) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
                case 'check_format_mult' :
                var error_loc = true;
                for (var j=0;j<check_tab[i][0].length; j++) {
                    if (check_format(check_tab[i][3], elements[check_tab[i][0][j]].value)) {
                        error_loc = false;
                    }
                }
                if (error_loc) {
                    error = true;
                    error_str += '- '+check_tab[i][2]+'\n';
                }
                break;
            }
        }
    }

    if(error) {
        showAlerte("alerteJS", error_str);
        return false;
    }
    document.forms[formId].submit();
    //return true;

}






/*** ESPACE PROF ***/
function update_content(url, div, timer)
{

    if (window.XMLHttpRequest) {
        AJAX=new XMLHttpRequest();
    } else {
        AJAX=new ActiveXObject("Microsoft.XMLHTTP");
    }
    if (AJAX) {
        AJAX.open("GET", url, false);
        AJAX.send(null);
        var doc =  AJAX.responseText;
    } else {
        return false;
    }
    
    $(div).innerHTML = doc;
    

    if (timer>0) {
        setTimeout("update_content('"+url+"','"+div+"', "+timer+")", timer);
    }

}

function getElementHeight(obj) {
	if(obj.offsetHeight){ return obj.offsetHeight;}
	else if(obj.style.pixelHeight){return obj.style.pixelHeight;}
}

function adaptEcran() {
	var ecran = getWindowHeight();
	var fond = $('conteneur').offsetHeight;
	if(fond < ecran)
	{
		$('conteneur').style.height = ecran+"px";
	}
}

function load() {
	adaptEcran();
}

function Ajout_etabl() 
{
    var champs_hidden = getElementsByClass('etablissement hidden');
    champs_hidden[0].className = 'etablissement';
} 
function Reinit_etabl() 
{
    var champs_hidden = getElementsByClass('etablissement');
    for(i=1; i<champs_hidden.length; i++)
        champs_hidden[i].className = 'etablissement hidden';
    document.forms[0].reset();
} 


function showSendBlock(id) {
	
	if ($(id).style.display == "block") {
		closeAlerte(id);
		return;
	}
	
	if(id == "send_file") {
		showElem('send_file')
		closeAlerte('send_ask');
	}
	else {
		showElem('send_ask')
		closeAlerte('send_file');
	}
}

/*******
descr: Fonction qui ouvre les liens de classe .blank dans une nouvelle fenÃªtre
param: ---
********/
function open_ext_link()
{
	var liens = document.getElementsByTagName('a');
	// On rÃ©cupÃ¨re tous les liens (<a>) du document dans une variable (un array), ici liens.
	// Une boucle qui parcourt le tableau (array) liens du dÃ©but Ã  la fin.
	for (var i = 0 ; i < liens.length ; ++i)  {
		// Si les liens ont un nom de class Ã©gal Ã  lien_ext, alors on agit.
		if (liens[i].className.match(/.*blank.*/))  {
			//liens[i].title = 'S\'ouvre dans une nouvelle fenÃªtre';
			// Au clique de la souris.
			liens[i].onclick = function()  {
				window.open(this.href);
				return false; // On ouvre une nouvelle page ayant pour URL le href du lien cliquÃ© et on inhibe le lien rÃ©el.
			};
		}
	}
}
window.onload = open_ext_link;
// Au chargement de la page, on appelle la fonction.
