/**
 * Next two functions change the background-color in
 * a selector-list. This have to used when mouse is
 * over a whole line, or when line is currently updated.
 * 
 * This two functions are called 
 * in /cms/manage/xSelector.php (1)
 * in /cms/manage/FieldHandler.php (2)
 */
var setHighlight = true;
var lastElem     = "";
function highlightRow(elem, color) { // (1)
    if (setHighlight == true) {
        for (var i = 0; i < elem.length; i++) {
           if (elem[i].nodeType == 1)
              elem[i].style.backgroundColor=color;
        }
    }
}
function highlightActiveRow(elem, color) { // (2)
    setHighlight = true;
    if (lastElem != "") { highlightRow(lastElem, ''); }
    highlightRow(elem, color);
    lastElem     = elem;
    setHighlight = false;
}


/**
 * use it if you want to prevent double-click by submitting
 * form informations.
 * It may be used to submit form a non submit button object 
 */
function submitForm(nForm){
    var myForm = window.document.forms[nForm];
    if (arguments[1]) {
        isAction = myForm.getAttribute("action");
        myForm.setAttribute("action", isAction + "&viewHTML=true");
        doSubmit();
    }
    myForm.submit();
    submitForm = blockIt;
    return false;
}
// double click on form;
function blockIt(){
    return false;
}

/**
 * Submit a form with no check of previous post has been performed.
 * That may be usefull when a form is submitted by changing a select
 * box, in cases where the selected box is used as a kind of drop down
 * menu.
 */
function submitFormNoBlock(nForm){
    var myForm = window.document.forms[nForm];
    myForm.submit();
}

/**
 * Provides the preview of loaded mail or newsletter.
 * It's usefull if the mail contains news or documents
 * as attachments.
 *
 * So the user can previews the message before to send
 * it.
 */
function previewMessage(lang) {
    var prevTxt = "";
    var mform   = (arguments[1] ? arguments[1] : 1);
    src = window.opener.document.forms[mform];
    if(src.elements['mailText' + lang]) 
        prevTxt += src.elements['mailText' + lang].value + "\n\n";
    if(src.elements['attachments' + lang]) 
        prevTxt += src.elements['attachments' + lang].value + "\n\n";

    window.document.forms[0].elements[0].value = prevTxt;
}
// returns the name of the current file
function fileName(lang) {
    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;
}
// hide status
function hideStatus(txt) {
    window.status='txt';
    return true;
}
// debug function
function dbg() {
   var msg = "DEBUG INFORMATIONS:\n";
   for (var i = 0; i < arguments.length; i++) {
      msg += arguments[i] + "\n";
   }
   alert(msg);
}

/*****************************************************************************
 *
 * used to define a date 2 calculated
 * with date 1 + duration
 *
 */
function defDate (nForm, duration, dateFrom, dateTo){
   var dForm = window.document.forms[nForm];
   var dPer  = dForm.elements[duration].value;
   var date1 = dForm.elements[dateFrom].value;
   var date2 = dForm.elements[dateTo].value;
   var adDay = parseInt(dPer, 10) - 1;

   if (date1 != ""){
       var aDate = date1.split(".");

       var dDate = aDate[0];
       var mDate = aDate[1] - 1;
       var yDate = aDate[2];
   
       var myDate = new Date(yDate, mDate, dDate);
       myDate.setDate(myDate.getDate() + adDay);

       var nDate = new Array(myDate.getDate(),
                             myDate.getMonth() + 1,
                             myDate.getFullYear());
   
       if (nDate[0] <=9) nDate[0] = "0" + nDate[0];
       if (nDate[1] <=9) nDate[1] = "0" + nDate[1];

       var cDate = nDate[0] + "." + nDate[1] + "." + nDate[2];

       window.document.forms[nForm].elements[dateTo].value = cDate;
   }
}

/**
 * used to define add some string in a txt field
 * baf means before or after value
 * adStr is the string that muss be added
 *
 */
function adValue (nForm, nField, baf, adStr){
   var myForm = window.document.forms[nForm];
   var val2Set = myForm.elements[nField].value;
   if (baf == "after")
       myForm.elements[nField].value = val2Set + adStr;
   else if (baf == "before") 
       myForm.elements[nField].value = adStr + val2Set ;
   else 
       alert('"before" or "after" is waiting as third argument');
}
/**
 *
 * used to define add some string in a txt field
 * baf means before or after value
 * adStr is the string that muss be added
 *
 */
function formatMoney (nForm, nField){
   var myForm = window.document.forms[nForm];
   var val2Format = myForm.elements[nField].value;
   valElem = val2Format.split(".");
   if (!valElem[2]) 
       myForm.elements[nField].value = val2Format + ".00";
}

function valFromTo (form_1, field_1, form_2, field_2){
   var valFrom = window.document.forms[form_1].elements[field_1].value;
   return window.document.forms[form_2].elements[field_2].value = valFrom;
}

function valToForm (nForm, nField, val2Set){
   return valFrom = window.document.forms[nForm].elements[nField].value = val2Set;
}

function nameToForm(nForm, nField, name2Set){
   return valFrom = window.document.forms[nForm].elements[nField].name = name2Set;
}

function confirmSendNewsletter(newsletterForm, userLang) {

   if (formChanged && leaveWithoutSave(userLang) != true) {
       return;
   }
   
   msg = new Array();
   msg['de'] = "Das Newsletter wird gesendet.\n" +
               "Soll diese Operation ausgeführt werden?";
   msg['fr'] = "La newsletter sera envoyé.\n" +
               "Souhaitez-vous poursuivre?";

   if (confirm(msg[userLang])) 
       submitForm(newsletterForm);


}

function previewNewsletter(file, sizeW, sizeH, userLang) {

   if (formChanged && leaveWithoutSave(userLang) != true) {
       return;
   }
   doScrollablePopup(file, sizeW, sizeH);

}

