var tField = new Array();
var tFieldOblig = new Array();
var tFieldFunc = new Array();

function hpo_forms_verif(objId,obligatory,funcVerif){
    if (document.getElementById(objId))
        obj = document.getElementById(objId); 
    else {
        obj = objId;
        objId = obj.id;
    }
        
    ret = false;
    if (obligatory==1){
        //RTE
        if(objId.indexOf('RTEarea')!=-1){
            valId = objId.substring(7);
            objValue = RTEarea[valId]['editor'].getHTML();
        } else if (obj.type == "checkbox"){
            objValue = obj.checked;
        } else //Common
            objValue = obj.value;
        
        if (objValue!=''){
            document.getElementById("verif"+objId).className='verif ok';
            ret = true;
        } else
            document.getElementById("verif"+objId).className='verif nok';
    } else
        ret = true;
        
    if (funcVerif){
        ret = false;
        if (obj.value!=''){
            if (funcVerif=="email"){
                if (checkEmail(obj)){
                    document.getElementById("verif"+objId).className='verif ok';
                    ret = true;
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="phone"){
                if (checkTel(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="cellular"){
                if (checkCellular(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="cp"){
                if (checkCP(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="cpshort"){
                if (checkCPShort(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="multiEmail"){
                if (checkMultiEmail(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="emailConfirm"){
                if (checkEmailConfirm(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="passwdConfirm"){
                if (checkPasswdConfirm(obj)){
                    ret = true;
                    document.getElementById("verif"+objId).className='verif ok';
                } else
                    document.getElementById("verif"+objId).className='verif nok';
            } else if (funcVerif=="disableTruefield"){
                if (disableTruefield()){
                    ret = true;
                }
            }
        } else if (funcVerif=="disableTruefield"){
            if (disableTruefield()){
                ret = true;
            }
        } else if (!obligatory){
            ret = true;
            document.getElementById("verif"+objId).className='verif';
        }
    }
    return ret;
}

function hpo_forms_verifFields(form, nextpart, control){
    var i=0;
    bRet = true;
    
    document.getElementById('tcForm').value=nextpart;
    
    if (control){
        while (i<tField.length){
            //obj = document.getElementById(tField[i]);
            //bRet = bRet & hpo_forms_verif(obj, tFieldOblig[i], tFieldFunc[i]);
            bRet = bRet & hpo_forms_verif(tField[i], tFieldOblig[i], tFieldFunc[i]);
            i++;
        }
    }
    if (bRet){
        onSubmitRTE();
        form.submit();
    } else
        alert("Veuillez renseigner les champs incorrects");
}

function checkPasswdConfirm(obj) {
    if ( obj.value == obj.form.passwd.value )
        return true;
    return false;
}

function checkEmailConfirm(obj) {
    if ( obj.value == obj.form.email.value )
        return true;
    return false;
}

/**
 * Vérifie un siret
 *
 */
function checkFormSiret(siret) {
    /* Vérification du SIRET */
    if (!(/[0-9]{14}$/).test(siret.value)) {
        alert("Le champ SIRET doit contenir 14 chiffres.");
        return false;
    }
    return true;
}

/**
 * Vérifie si le champ est non vide
 * @param champ Le nom du champ
 * @param str Une chaine contenant le nom du champ pour l'alerte
 * @return True si le champ est rempli, False sinon
 */
function checkEmpty(champ, str) {
    b = (champ.value != "");    
    if (!b) {
        alert("Le champ " + str + " est obligatoire.");
        champ.focus();
    }
        
    return b;
}
 
 
/**
 * Vérifie de l'email : on vérifie la présence du @ et du .
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
 */
function checkEmail(champ) {
    if (!(/[A-Za-z0-9\-\.\_]+\@[A-Za-z0-9\-\.\_]+\.[a-z]{2,6}$/).test(champ.value)) {
        return false;
    }
    
    return true;
}
                    
 
/**
 * Vérifie le cp sous la forme "12345"
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
 */
function checkCP(champ) {
    if (isNaN(champ.value) || (champ.value.length != 5) || (champ.value.indexOf('.') != -1)) {
        return(false);
    }
    return(true);
}
 
/**
 * Vérifie le cp sous la forme "12"
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
 */
function checkCPShort(champ) {
    if (isNaN(champ.value) || (champ.value.length < 2 || champ.value.length > 5) || (champ.value.indexOf('.') != -1)) {
        return(false);
    }
    return(true);
}

/**
 * Vérifie la validité du champ : entier
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
 */
function checkInt(champ) {    
    if (isNaN(champ.value) || (champ.value == "") || (champ.value.indexOf('.') != -1)) {
        alert("La valeur doit être un nombre entier.\nVeuillez la corriger.");
        champ.value = 0;

        if (champ.focus)
            champ.focus();

        return(false);
    }
    return(true);
}


/**
 * Vérifie la validité du champ : décimal
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
 */
function checkDecimal(champ) {    
    if (isNaN(champ.value) || (champ.value == "")) {
        alert("La valeur doit être une valeur décimale.\nVeuillez la corriger.");
        champ.value = 0.00;

        if (champ.focus)
            champ.focus();
            
        return(false);
    }
    return(true);
}


/**
 * Vérification d'un numéro de téléphone
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
*/
function checkTel(champ) {
    ret = false;
    var verifPhoneFr = /^(01|02|03|04|05|06|08|09)[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/; 
    var verifPhoneInt = /^(\+[0-9]{2})[ \.\-]?[0-9][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
    if ( (verifPhoneFr).test(champ.value) )
        ret = true;
    if ( (verifPhoneInt).test(champ.value) )
        ret = ret | true;
    return(ret);
}

/**
 * Vérification d'un numéro de téléphone
 * @param champ Le nom du champ
 * @return True si le champ est bien rempli, False sinon
*/
function checkCellular(champ) {
    ret = false;
    var verifPhoneFr = /^(06)[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/; 
    var verifPhoneInt = /^(\+[0-9]{2})[ \.\-]?[6][ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}[ \.\-]?[0-9]{2}$/;
    if ( (verifPhoneFr).test(champ.value) )
        ret = true;
    if ( (verifPhoneInt).test(champ.value) )
        ret = ret | true;
    return(ret);
}

/**
 * Vérifie la longueur du champ (pour les textaera où les maxlength ne fonctionnent pas)
 * @param champ Le nom du champ
 * @return True si la maxlength n'est pas atteinte
 */
function checkNotMaxLength(champ, maxlength) {
    if (champ.value.length >= maxlength) {
        alert("La taille maximale du champ de " + maxlength + " caractères est atteinte.\nVeuillez raccourcir le texte.");
        champ.focus();
        return(false);
    }
    return(true);
}

function disableTruefield(){
    if (document.getElementById('etranger').checked){
        tFieldOblig[7] = '';
        tFieldOblig[8] = '';
        document.getElementById("verif"+tField[7]).className='verif';
        document.getElementById("verif"+tField[8]).className='verif';
    } else {
        tFieldOblig[7] = '1';
        tFieldOblig[8] = '1';
        document.getElementById("verif"+tField[7]).className='verif';
        document.getElementById("verif"+tField[8]).className='verif';
    }
    return true;
}

function checkMultiEmail(champ) {
    var tEmail = new Array();
    tEmail = champ.value.split(";");
    i=0;
    bRet = true;
    while (i<tEmail.length){
        bRetTmp = true;
        if (!(/[A-Za-z0-9\-\.\_]+\@[A-Za-z0-9\-\.\_]+\.[a-z]{2,6}$/).test(tEmail[i])) {
            bRetTmp = false;
        }
        bRet = bRet & bRetTmp;
        i++;
    }    
    return bRet;
}


/* *******************************************************************
/*                              AJAX
/* *******************************************************************/
    var globalUrl = null;
    var myBoxCrop = null;
    function showCropPage(url){
        
        document.getElementById('hpo_masquecontent').className = '';
        document.getElementById('hpo_masquecontent').innerHTML = '';
        
        new Ajax(url, {
            method: 'get',
            onComplete: function()
            {
                var contentHTML = this.response.text;
                $$('#hpo_masquecontent').setHTML(contentHTML);
                myBoxCrop = new HpoBoxCrop(458, 500, 'hpo_masque', 'hpo_masquecontent');
                myBoxCrop.boxHeight = document.getElementById('hpo_masquecontent').offsetHeight;
                
                var resizeImageHeight = document.getElementById('toCrop').offsetHeight;
                var resizeImageWidth = document.getElementById('toCrop').offsetWidth;
                
                resizeImageMaxWidth = 458;
                resizeImageMaxHeight = 168;
                        
                var resizedImage = $$('#toCrop').clone();
                resizedImage.setStyle('opacity', '0.4');
                    
                myBoxCrop.winContent.empty();
                myBoxCrop.winContent.adopt(resizedImage);
                
                var divImage = new Element('div');
                divImage.setStyle('position', 'absolute');
                divImage.setStyle('top', 0);
                divImage.setStyle('left', 0);
                divImage.setStyle('width', '454px');
                divImage.setStyle('height', '164px');
                divImage.setStyle('cursor', 'pointer');
                divImage.setStyle('border', '2px dashed #fff');
                divImage.setStyle('background', 'url("'+ document.getElementById('toCrop').src +'") no-repeat -2px -2px');
                divImageBkgTop = 2;
                divImageBkgLeft = 2;
                var divImageDrag = divImage.makeDraggable({
                    onDrag: function()
                    {
                        divImageBkgLeft = divImage.getStyle('left').toInt() + 2;
                        divImageBkgTop = divImage.getStyle('top').toInt() + 2;
                        if ( divImageBkgTop < 0 ) divImageBkgTop = 0;
                        if ( divImageBkgLeft < 0 ) divImageBkgLeft = 0;
                        divImage.setStyle('background-position', '-'+ divImageBkgLeft  +'px -'+ divImageBkgTop +'px');
                    }});
                var xLimit = resizeImageWidth-resizeImageMaxWidth;
                var yLimit = resizeImageHeight-resizeImageMaxHeight;
                divImageDrag.options.limit = { y:[0, yLimit], x:[0, xLimit] };
                
                myBoxCrop.winContent.adopt(divImage);
                
                var objDiv = document.createElement('div');
                objDiv.setAttribute('class','separator');
                
                var objText = document.createTextNode('Déplacez la boite encadrée à l\'aide de la souris pour choisir la zone de l\'image à afficher sur votre fiche.');
                objDiv.appendChild(objText);
                myBoxCrop.winContent.adopt(objDiv);
                
                var objA = document.createElement('a');
                objA.setAttribute('href','#');
                objA.onclick = function() {
                    myBoxCrop.close(); 
                    return false;
                };
                objText = document.createTextNode('Fermer');
                objA.appendChild(objText);
                
                myBoxCrop.winContent.adopt(objA);
                
                objA = document.createElement('a');
                objA.setAttribute('href','#');
                objA.onclick = function() {
                    getAjaxPage('/?type=307&image='+document.getElementById('toCrop').src+'&output='+document.getElementById('toCrop').name+'&cropX='+(divImageBkgLeft-2)+'&cropY='+(divImageBkgTop-2)+'&cropW='+resizeImageMaxWidth+'&cropH='+resizeImageMaxHeight);
                    return false;
                };
                var objText = document.createTextNode('Enregistrer');
                objA.appendChild(objText);
                
                myBoxCrop.winContent.adopt(objA);
                
                
                myBoxCrop.setPositions(); 
                globalUrl = url;
            }
        }).request();
    }    
    
    // gestion des formulaires dans un calques
    var HpoBoxObjCrop;
    var HpoBoxCrop = new Class({
        border: 0,

        initialize: function(boxWidth, boxHeight, masque, content) 
        {
            HpoBoxObjCrop = this;
            
            this.boxWidth = boxWidth;
            this.boxHeight = boxHeight;
            
            this.win = $$("#"+masque);
            this.winContent = $$("#"+ content);
            this.closeLink = $$("#"+ content + ' .close');
            
            this.setPositions();
        },
        
        setPositions: function() 
        {
            
            // $$('select').setStyle('display', 'none');
            $$('#MAIN select').setStyle('display', 'none');
            
            // masque
            this.win.setStyle('height', window.getSize().size.y + window.getSize().scroll.y);
            this.win.setStyle('display', 'block');
            
            // forms
            this.boxTop  = ((window.getSize().size.y - this.boxHeight) / 2);
            this.winContent.setStyle('top', (window.getSize().scroll.y + this.boxTop));
            this.winContent.setStyle('margin-left', '-'+(this.boxWidth/2)+"px");
            //this.winContent.setStyle('height', this.boxHeight);
            this.winContent.setStyle('width', this.boxWidth);
            this.winContent.setStyle('display', 'block');
            
            
            this.win.addEvent('click', function()
            {
                HpoBoxObjCrop.close();
            });
            this.closeLink.addEvent('click', function()
            {
                HpoBoxObjCrop.close();
            });
            window.addEvent('keydown', function(e)
            {
                e = new Event(e);
                if ( e.key == 'esc' )
                    HpoBoxObj.close();
            });
            window.addEvent('scroll', function()
            {
                HpoBoxObjCrop.onScroll();
            });
        },
        
        onScroll: function()
        {
            this.win.setStyle('height', window.getSize().size.y+window.getSize().scroll.y);
            this.winContent.setStyle('top', (window.getSize().scroll.y + this.boxTop));
        },
        
        close: function()
        {
             if (document.getElementById('refreshParent')){
                if (document.getElementById('refreshParent').value)
                    eval(document.getElementById('refreshParent').value);
             }
                
            $$('select').setStyle('display', 'block');
            this.win.setStyle('display', 'none');
            this.winContent.setStyle('display', 'none');
            
        }

    });
