/**
 * FormsHandler :
 * 
 * This part is set to confirm the definitiv deletion
 * trashed objects
 *
 * the method is called whith the onsubmit() command of the
 * form targ.
 *
 * the argument lang ist provided to define the language
 * of the confirmation message.
 * 
 */

function confDelete(lang) {
    var msg;
    if (lang == "fr")
        msg = "Opération irréversible!\n" +
              "les objects de la corbeille seront " +
              "supprimés définitivement.\n \n" +
              "Souhaitez-vous poursuivre";
    else if (lang == "de")
        msg = "Unwiderrufliche Operation \n" +
              "Die gecheckten Objekte " +
              "werden definitiv gelöscht.\n \n" +
              "Soll diese Operation ausgeführt werden";

    var myCheck = confirm(msg + "?");
    if (myCheck)
        return true;
    else 
        return false;
}
// returns the name of the current file
function fileName() {
    var myLocation = new String(document.location);
    var myLocation = myLocation.split("/");
    var myFile     = new String(myLocation.pop());
    var myFile     = myFile.split("?");
    var myFile     = myFile.shift();

    return myFile;
}

/* adds an attribute as soon as user has pressed key in a form field.  */
var formChanged;

function addCheckSave(lang) {
    formChanged = true;
    // get all Links 
    var myLinks    = document.body.getElementsByTagName("a");
    // pattern to check if it's a popup opene
    var matchPopup = /popup*/;
    for(var i = 0; i < myLinks.length; i++) {
        if (fileName() == "editor.php" || fileName() == "newsletter.php") {
            var checkIt = myLinks[i].getAttribute("id");
            if(!matchPopup.test(checkIt)) {
                if (document.all) {
                    myLinks[i].onclick=function(){
                        return leaveWithoutSave(lang);
                    }
                } else {
                    myLinks[i].setAttribute("onclick",
                        "return leaveWithoutSave('" + lang + "')");
                }
            }
        } else {
            if (document.all) {
                myLinks[i].onclick=function(){
                    return leaveWithoutSave(lang);
                }
            } else {
                myLinks[i].setAttribute("onclick",
                    "return leaveWithoutSave('" + lang + "')");
            }
        }
    }
    // if deleteForm (should be in selector Form only)
    if (fileName() == "selector.php") {
        if (window.document.deletor.trashEmptyFire) {
            if (document.all) {
                window.document.deletor.trashEmptyFire.onclick=function() {
                    return leaveWithoutSave(lang);
                }
            } else {
                window.document.deletor.trashEmptyFire.setAttribute("onclick",
                    "return leaveWithoutSave('" + lang + "')");
            }
        }
    }
}

/**
 * This function is used for subreferencer form.
 * To ensure that changes in main form are submitted.
 *  
 */
function checkFormChanges(lang) {
    if (formChanged) {
        return leaveWithoutSave(lang);
    }
    return true;
}

/* remove check save */
function remCheckSave() {
    var formChanged = false;
    // get all Links 
    var myLinks = document.body.getElementsByTagName("a");
    // pattern to check if it's a popup opener
    var matchPopup      = /popup*/;
    var matchHTMLViewer = /chkSrc*/;
    for(var i = 0; i < myLinks.length; i++) {
        var checkIt = myLinks[i].getAttribute("id");
        if(!matchPopup.test(checkIt) && !matchHTMLViewer.test(checkIt)) {
            if (document.all) { 
                myLinks[i].onclick="";
            } else {
                myLinks[i].removeAttribute("onclick");
            }
        } else if (matchHTMLViewer.test(checkIt)) {
            if (document.all) {
                myLinks[i].onclick=function(){
                    return submitForm(0, true);
                }
            } else {
                myLinks[i].setAttribute("onclick", "submitForm(0, true)");
            }
        }
    }
    // Reset the wysiwyg-editor field
    if (src = format_getSource()) { src.document.body.innerHTML = initialState; }
}

function leaveWithoutSave(lang) {
    var msg;
    if (lang == "fr") {
        msg = "ATTENTION: Le contenu de ce formulaire a été modifié. \n" +
              "Votre saisie ne sera pas enregistrée."; 
    } else if (lang == "de") {
        msg = "ACHTUNG: Es wurden Änderungen gemacht. \n" +
              "Ihre Erfassung wird nicht gespeichert."; 

    }
    return confirm(msg);

}


// GLOBAL to use it by reseting the editor-form.
var initialState;

function stateCompare(lang) {
    src = format_getSource();
    if (src) {
        // second argument set to true = check if content has changed
        if (arguments[1]) {
           var newState = src.document.body.innerHTML;
           if (newState != initialState) { 
               return leaveWithoutSave(lang);
           } else {
               return true;
           }
        } else { 
           initialState = src.document.body.innerHTML;
           var myForms  = document.body.getElementsByTagName("FORM");
           var myLinks  = document.body.getElementsByTagName("A");
           for(var i = 0; i < myLinks.length; i++) {
               if(!myLinks[i].getAttribute("onclick")) {
                   if (document.all) {
                        myLinks[i].onclick=function(){
                            return stateCompare(lang, true);
                        }
                   } else {
                       myLinks[i].setAttribute("onclick",
                           "return stateCompare('" + lang + "', true)");
                   }
               }
           }
           for(var i = 0; i < myForms.length; i++) {
               if (myForms[i].name != "wysiwygEditor") {
                   if (document.all) {
                        myLinks[i].onsubmit=function(){
                            return stateCompare(lang, true);
                        }
                   } else {
                       myForms[i].setAttribute("onsubmit", 
                           "return stateCompare('" + lang + "', true)");
                   }
               }
           }
        }
    }
}

function manage_emptySub (fName) {
    var mforms  = window.document.forms[fName];
    for(var i = 0; i < mforms.length; i++) {
        if (mforms.elements[i].getAttribute("type") == "text" ||
            mforms.elements[i].getAttribute("type") == "checkbox" ||
            mforms.elements[i].getAttribute("type") == "radio")
            mforms.elements[i].value = "";
        if (mforms.elements[i].getAttribute("type") == "checkbox")
            mforms.elements[i].checked=false;
    }
    var selectBoxes = window.document.getElementsByTagName("select");
    var matchFilterEnum = /^selector_filter/;
    for (var i = 0; i < selectBoxes.length; i++) {
         if(matchFilterEnum.test(selectBoxes[i].getAttribute("name"))) {
            selectBoxes[i].options[0] = new Option("-","",true,true);
         }
    }
    submitForm(fName);
}

function manage_setFocusToFirstTextField(felem) {

    // do nothing if an anchor does hav to be reached
    if (window.location.hash == "#bottom") {
        return;
    }

    // otherwise set focus to the first input text field
    if (window.document.forms[felem]) {
        var mform = window.document.forms[felem];
        for (var i = 0; i < mform.elements.length; i++) {
            if (mform.elements[i].type == "text") {
                mform.elements[i].focus();
                break;
            }
        }
    }

}

function manage_setSelectedOptionFromPopup(mForm, mElem, option) {
    var myForm = window.opener.document.forms[mForm];
    var myElem = myForm.elements[mElem];
    for (var i = 0; i < myElem.options.length; i++) {
        if (myElem.options[i].value == option) {
            myElem.options[i].selected=true;
            break;
        }
    }
    window.self.close();
}


function manage_setVisibility(elemId, isRow) {
    var elem = window.document.getElementById(elemId);
    elem.style.visibility = (elem.style.visibility == "hidden" ? 
        "visible" : "hidden");
    elem.style.display = (elem.style.display == "none" ? 
        (isRow ? "table-row" : "block") : "none");
}

function manage_checkUserForm(mform, lang) {
    
    formIsOk = true;

    for (var i = 0; i < mform.length; i++) {   

        if (mform.elements[i].name.indexOf("_name") != -1) {

           formIsOk = manage_checkUserNameField(mform.elements[i], lang);
           if (formIsOk == false)
               break;

        } else if (mform.elements[i].name.indexOf("_pwd") != -1) {

           formIsOk = manage_checkUserPwdField(mform.elements[i], lang);
           if (formIsOk == false)
               break;

        }

    }
    return formIsOk;
    
}

function manage_checkUserPwdField(elem, lang) {

   var fieldIsOk = true;
   var minlength = 8;

   var msg = new Array();

   if (elem.value.indexOf('\'') != -1) {

        msg["fr"] = "Le mot de passe ne doit pas contenir d'apostrophe\n";
        msg["de"] = "Kennwort darf kein Hochkomma beinhalten\n";

        fieldIsOk = false;

   } else if (elem.value.length < minlength) {
       
        msg["fr"] = "Le mot de passe doit contenir au moins " +
                    minlength + " caractères\n";
        msg["de"] = "Kennwort muss mindestens " +
                    minlength + " Zeichen lang sein\n";

        fieldIsOk = false;

   }

   if (!fieldIsOk) {

        msg["fr"] += "Veuillez corriger le mot de passe " + elem. value;
        msg["de"] += "Bitte korrigieren Sie den Kennwort " + elem. value;

        alert(msg[lang]);
        elem.focus();

   }

   return fieldIsOk;


}

function manage_checkUserNameField(elem, lang) {

   var fieldIsOk = true;

   var msg = new Array();

   if (elem.value.indexOf(' ') != -1) {

        msg["fr"] = "Le nom d'utisateur \"" + elem.value +
                    "\" ne doit pas contenir d'espace";
        msg["de"] = "Bitte Benutzername \"" + elem.value +
                    "\" ohne Leerzeichen erfassen";

        fieldIsOk = false;

   } else {

       var reg = /[^a-zA-Z0-9.@]/;

       if (reg.test(elem.value)) {

           msg["fr"] = "Le nom d'utisateur \"" + elem.value +
                "\" contient un ou plusieurs caractères non autorisés." +
                "\n\nVeuillez ne saisir que des chiffres, des lettres " +
                "(majuscules ou minuscules).";

           msg["de"] = "Benutzername \"" + elem.value + 
                "\" enthälte unerlaubte Zeichen.\n\nGeben Sie bitte nur " +
                "Zahlen, Gross- oder Kleinbuchstabbe, oder das Zeichen.";

           fieldIsOk = false;

       }

   }

   if (!fieldIsOk) {

        alert(msg[lang]);
        elem.focus();

   }

   return fieldIsOk;

}
