//  ============================================================================
//
//  Librairie Javascript/Ecmacript pour le au-resto.fr
//  (c) 3 mars 2007 ; Emmanuel Chavanon - deepsytomy@yahoo.fr
//
//  Fonctions propres aux Restos
//
//  ============================================================================

color_error  = "#EFB3B3";
normal_color = "#FFFFFF";
anim_time = 150;

window.onload=function()
{
    stripBorders();
}

function printFrame(nom_frame)
{
    parent.frames[nom_frame].print();
}

function popupImage(img_url)
{
    var printCheckSize = "<script type='text/javascript'>"+
    "\nfunction checksize() {"+
    "\nif (document.images[0].complete)"+
    "\n    {"+
    "\n        var w_height = document.images[0].height + 50;"+
    "\n        var w_width  = document.images[0].width + 5;"+
    "\n        window.resizeTo(w_width,w_height);"+
    "\n        window.focus();"+
    "\n    }"+
    "\n    else"+
    "\n        settimeout('checksize()',250);"+
    "\n}"+
    "\n</script>";

    var titre="Image taille réelle";
    var w=open("",'image','width=400,height=400,toolbar=no,scrollbars=no,resizable=yes');
    w.document.write("<html><head><title>"+titre+"</title>"+
                     printCheckSize +
                     "</head>");
    w.document.write("<body onload='checksize()' onblur='window.close()' onclick='window.close()' leftmargin=0 topmargin=0 marginwidth=0 marginheight=0>");
    w.document.write("<img src='"+img_url+"' border=0 alt='mon image'>");
    w.document.write("</body></html>");
    w.document.close();
}

function popupItem(url)
{
    var conf_str = "'width=300,height=300, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, directories=no, status=yes'";
    window.open(url, 'popup', conf_str);
    return false;
}

//  ----------------------------------------------------------------------------
//  Utilitaires divers de manipulation DOM
//  ----------------------------------------------------------------------------

//  Supprimer un élément Html
function removeElt(element_id)
{
    var element = document.getElementById(element_id);
    try{
        element.value = "";
    }
    catch(e){}

    var parent = element.parentNode;
    parent.removeChild(element);
}

// Afficher / cacher des éléments
function toggle(element_id)
{
	var element = document.getElementById(element_id);

	if (element.style.display != "block")
	   element.style.display = "block";

	else
		element.style.display = "none";
}

function hide(elt)
{
	document.getElementById(elt).style.display="none";
	return false;
}

function display(elt)
{
	document.getElementById(elt).style.display="block";
	return false;
}


function setAction(action)
{
	document.getElementById('do_action').value=action;
	return true;
}

function setFocus(elt)
{
	document.getElementById(elt).focus();
	return false;
}




// Set a class for all browsers
function setClasse(element, classe)
{
    element.setAttribute('class', classe);
    element.className = classe;
}

//  ------------------------------------------------------------------------------
//    Utilitaire pour récupérer la classe html d'un élément
//
function getClasse(element)
{
    if(window.XMLHttpRequest) // Gecko
        var classe = element.getAttribute('class');
    else if(window.ActiveXObject) // Internet Explorer
        var classe = element.getAttribute('className');

    return classe;
}

//  ==================================================================================================
//
//  GRAPHISMES & Co
//
//  ==================================================================================================
//  ------------------------------------------------------------------------------
//    Fonction dédiée à effacer les bordures des input de type checkbox et radio au démarrage
//    Pallie la lacune de IE qui ne sait traiter le selecteur CSS suivant :
//    input[type=checkbox]{border:none;}
function stripBorders()
{
    var inputz = document.getElementsByTagName("input");

    for(var i=0; i<inputz.length; i++ )
    {
        if(inputz[i].getAttribute("type") == "radio" || inputz[i].getAttribute("type") == "checkbox")
            setClasse(inputz[i], "noborder");
    }
}


//  ==================================================================================================
//
//  OUTILS COMMUNS AUX VERIFICATIONS DE FORMULAIRESS
//
//  ==================================================================================================

//  ----------------------------------------------------------------------------
// Vérification du login / Mot de passe
function verifLoginGroupe()
{
    var err = "";
    var login = document.getElementById('login');
    var password = document.getElementById('password');

    // RAZ
    login.style.borderColor = "#9E9E9E";
    password.style.borderColor = "#9E9E9E";

    if(login.value == "")
    {
        err += "Vous devez spécifier un Identifiant.\n";
        login.style.borderColor = color_error;
    }
    if(password.value == "")
    {
        err += "Vous devez spécifier un mot de passe.\n";
        password.style.borderColor = color_error;
    }

    return renderErrorAlert(err);
}



// Vérification pour le module de contact
function verifContact()
{
    var err = "";
    var err_brochure = "";
	var email = document.getElementById('email');
    email.parentNode.style.backgroundColor = normal_color;

    var should_not_be_empty_fields = new Array();
    // Champs obligatoires
    should_not_be_empty_fields.push( document.getElementById('nom') );
    should_not_be_empty_fields.push( document.getElementById('email') );


    // Vérification des champs vides
    err = verifEmptyElements(should_not_be_empty_fields);
    if(err != "")
        err = "Les champs suivants sont manquants "+err_brochure+": \n" + err;

    if(err == "" && !verif_mail(email.value))
    {
        err += "L'email n'est pas correct.\n";
        email.parentNode.style.backgroundColor = color_error;
    }

    return renderErrorAlert(err);
}



//  ------------------------------------------------------------------------------
//  Vérifier le format d'un email
function verif_mail(a_mail) {
   mymail = a_mail;
   var mail_err = 0
   var r_mail = /^[A-Za-z0-9._-]+@[A-Za-z0-9.-]{2,}[.][A-Za-z]{2,4}$/
   ok_mail = r_mail.exec(mymail);
   if (!ok_mail) {
      return false;
   } else {
      return true;
   }
}

// -----------------------------------------------------------------------------
// Générique pour la vérification des champs vides
// Le focus est placé sur le 1er élément vide de la liste
// Avec un adapter pour tinyMCE
function verifEmptyElements(array)
{
    var err = "";
    var first_element = null;
    for(var i=0; i< array.length; i++)
    {
        var element = array[i];
        try{ element.parentNode.style.backgroundColor = normal_color;}
        catch(e){
            alert ("problème avec l'élément " + i + "\n" + e.message );
            return false;
        }


        try{      var element_value = tinyMCE.getContent(element.id);}
        catch(e){ var element_value = element.value;}

        if(element_value == "")
        {
            err += "- " + element.title + "\n";
            element.parentNode.style.backgroundColor = color_error;
            if(!first_element)
            {
                first_element = element;
                element.focus();
            }
        }
    }

    return err;
}

// -----------------------------------------------------------------------------
// Générique pour une vérif de date vide
function verifEmptyDate(date_str)
{
    if(date_str == "" || date_str == "0000-00-00")
        return true;

    return false;
}

// -----------------------------------------------------------------------------
// Générique pour l'affichage de l'erreur
function renderErrorAlert(err)
{
    if(err != "")
    {
        alert(err);
        return false;
    }
    else
        return true;
}

// Permet d'afficher le champ parcourir traditionnel.
function checkPieceJointe(element, input_file)
{
    var input_file = document.getElementById(input_file);

    if(element.value == "change")
    {
        input_file.style.display = "inline";
    }
    else
    {
        input_file.style.display = "none";
        input_file.value = "";
    }
}



//  ----------------------------------------------------------------------------
//  Animations jQuery
function slideThese(button, elements_to_slide_str)
{
    if($(button).attr('checked'))
        $(elements_to_slide_str).slideDown(anim_time);
    else
        $(elements_to_slide_str).slideUp(anim_time);
}

