function YesNo(text) {
    var que = "Are you sure you want to delete this item?";
    if (text != null) 
        que = text;
    if (confirm(que)) {
        return true;
    }    
    return false;
}
function YesNo2(text,in_val) {
    var que = "Enter new value.";
    var rez = "";
    if (text != null) 
        que = text;
    if (rez = prompt(que,in_val)) {
        return rez;
    }    
    return false;
}
// sets directly Section field value via button
function SetSectionValue(elem,val) {
    var form = elem.form;
    if (val != "") {
        form.subsection.value = val;
        return true;
    }
    return false;
}

// sets directly Section field value via link and submits the form
function GoSubsection(elem,val) {
    var form = document.getElementById(elem);
    var val2 = parseInt(val);
    if (isNaN(val2)) {
        return false;
    } else if (val2 >= 0) {
        form.subsection.value = val2;
        form.submit();
        return false;
    }
    return false;
}

// sets directly value into field with name item
function SetItemValue(elem,item,val) {
    var form = elem.form;
    eval("form."+item+".value = val");
    return true;
}

// sets directly value into field with name item, elem is form ID
function SetItemValue2(elem,item,val) {
    var form = document.getElementById(elem);
    eval("form."+item+".value = val");
    return true;
}

// Shows access violation message
function CheckAccess(right) {
    if (right == "yes") {
        return true;
    } else {
        alert("You don't have access rights for this option.");
        return false;
    }
}

// Set the value of form's ACTION field.
function SetAction(elem,act) {
    var form = elem.form;
    if (act == "delete_item") {
        if (!YesNo()) {
            return false;
        }
    }
    form.action.value = act;
    return true;
}

// Change keyword and application to show messages for
function goSheme(frm,typ,sheme,item){
    var form = document.getElementById(frm);
    form.type.value = typ;
    form.sheme.value = sheme;    
    form.typeSheme.value = item;      
    return true;
}

// Select one of the messages on the current scheme 
function goSheme1(frm,typ,item1,item){
    var form = document.getElementById(frm);
    form.type.value = typ;
    form.sheme.value = item1;    
    form.id.value = item;    
    return true;
}

// This is used within sourceTarget, it compares case insensitive strings
function iCompare(s1, s2) {
    if (s1.toUpperCase() < s2.toUpperCase())
       return -1;
    if (s1.toUpperCase() > s2.toUpperCase())
       return 1;
    // a must be equal to b
    return 0;
}

// This function handles two multipleselection lists
function sourceTarget(butt, from_name, to_name) {
    var form = document.getElementById(butt);
    if (!form)
        form = butt.form;
    eval("var from = form."+from_name);
    eval("var to = form."+to_name);
    
    var offered = new Array();
    var choosed = new Array();
    var entries = new Object(); // Assoc. arrays, ["val"] value, ["back"] background
    var tmp_str = ""; // temporary string
    var tmp_pos = 0;  // temporary index of #

    for(var i = 0; i < from.length; i++) {
        // first make unique text like concatenation of original text + # + value
        tmp_str = from[i].text + "#" + from[i].value;
        entries[tmp_str] = new Object();
        entries[tmp_str]["val"] = from[i].value;
        entries[tmp_str]["back"] = from[i].style.backgroundColor;
        if(from[i].selected == true) { // The from element is selected
            choosed[choosed.length] = tmp_str; // Add element into to list
        } else {
            offered[offered.length] = tmp_str;
        }
    }

    for(i = 0; i < to.length; i++) {
        tmp_str = to[i].text + "#" + to[i].value;
        entries[tmp_str] = new Object();
        entries[tmp_str]["val"] = to[i].value;
        entries[tmp_str]["back"] = to[i].style.backgroundColor;
        choosed[choosed.length] = tmp_str;
    }

    from.length = 0; // Empty From and To lists
    to.length = 0;

    offered.sort(iCompare); // Sort temporary lists
    choosed.sort(iCompare);

    for(var j = 0; j < offered.length; j++) { // Copy temporary from into real from
        // here we need to slice # + value from 
        tmp_pos = offered[j].lastIndexOf("#");
        if (tmp_pos >= 0) { // remove # and all after it
            tmp_str = offered[j].slice(0,tmp_pos);
        } else {
            tmp_str = offered[j];
        }
        from[j] = new Option(tmp_str, entries[offered[j]]["val"]);
        from[j].style.backgroundColor = entries[offered[j]]["back"];
    }

    for(j = 0; j < choosed.length; j++) { // Copy temporary to into real to
        tmp_pos = choosed[j].lastIndexOf("#");
        if (tmp_pos >= 0) { // remove # and all after it
            tmp_str = choosed[j].slice(0,tmp_pos);
        } else {
            tmp_str = choosed[j];
        }
        to[j] = new Option(tmp_str, entries[choosed[j]]["val"]);
        to[j].style.backgroundColor = entries[choosed[j]]["back"];
    }
}

// Implode sel multipleselection item into string with separator between elements
// if sel_only = true, only select items from multiselect will be used, by default all items will be used
function implodeSelection(frm_name, sel_name, itm_name, separator, sel_only) {
    var form = document.getElementById(frm_name);
    eval("var sel = form."+sel_name);
    eval("var itm = form."+itm_name);
    var sep = separator.substr(0,1); // separator has one character length
    var tmp_text = "";
    var selected_only = false;
    if (sel_only != null) 
        selected_only = sel_only;
    
    for(var i = 0; i < sel.length; i++) {
        if (selected_only == true && sel[i].selected == true) {
            tmp_text = tmp_text + sel[i].value + sep;
        } else if (selected_only == false) {
            tmp_text = tmp_text + sel[i].value + sep;
        }
    }
    // trim right separator
    if (tmp_text.length>0) {
        if (tmp_text.charAt(tmp_text.length-1) == sep) {
            tmp_text = tmp_text.substr(0,tmp_text.length-1);
        }
    }
    itm.value = tmp_text;
    return true;
}
// Field validation
function validateField(fld, mode,min_val,max_val,par_msg) {
    // Validate val, if validation fails show alert and return false else return true
    // Mode:
    // 1 - Only letters
    // 2 - Letters and _
    // 3 - Letters and numbers and _
    // 4 - Integer value
    // 5 - Number
    // 6 - Mobile phone like +number or 00number
    // 7 - Mail like ___@___.___
    // The new optional parameters min_val and max_val are added the modes 4 and 5 will be chacked against them
    var val = fld.value;
    var msg = "";
    var result = true;
    switch (mode) {
    case 1:
        pat = /\w/gi
        pat2 = /[0-9_]/gi
        if (par_msg != "") {
            msg = par_msg;
        } else {
            msg = "The field value contains invalid characters, the valid characters are letters, only";
        }
        break;
    case 2:
        pat = /\w/gi
        pat2 = /[0-9]/gi
        if (par_msg != "") {
            msg = par_msg;
        } else {
            msg = "The field value contains invalid characters, the valid characters are letters and _";
        }
        break;
    case 3:
        pat = /\w/gi
        pat2 = /\W/gi
        if (par_msg != "") {
            msg = par_msg;
        } else {
            msg = "The field value contains invalid characters, the valid characters are letters, numbers and _";
        }
        break;
    case 4:
        pat = /[0-9]/gi
        pat2 = /[^0-9]/gi
        if (par_msg != "") {
            msg = par_msg;
        } else {
            msg = "Invalid integer value";
        }
        break;
    }
    if (mode == 1 || mode == 2 || mode == 3 || mode == 4) {
        res = val.replace(pat,"");
        if (res != "") {               
            result = false;
        } else {
            if (pat2.test(val))
                result = false;
        }
    } else if (mode == 5) {
        floatValue=parseFloat(val);
        if (val != "" && isNaN(floatValue)) {
            if (par_msg != "") {
                msg = par_msg;
            } else {
                msg = "Invalid decimal number";
            }
            result = false;
        }
    } else if (mode == 6) {
        if (val.length > 0) {
            if (((val.charAt(0) == "+") || (val.charAt(0) == "0" && val.charAt(1) == "0")) && val.length > 7) {
                val = val.slice(1);
                pat = /[0-9]/gi
                pat2 = /[^0-9]/gi
                res = val.replace(pat,"");
                if (res != "") {               
                    result = false;
                } else {
                    if (pat2.test(val))
                        result = false;
                }
            } else {                
                result = false;
            }
            if (!result)
                if (par_msg != "") {
                    msg = par_msg;
                } else {
                    msg = "Invalid mobile phone number format";
                }
        }
    } else if (mode == 7) {
    
        if ((val != "") && ((val.indexOf('@')== -1) || (val.indexOf('.')== -1))){
            result = false; 
        }
        if (!result)
            if (par_msg != "") {
            msg = par_msg;
            } else {
                msg = "Invalid mail";
            }
    }
    
    if (result) { // now check min and max val
        if (val != "" && (mode == 4 || mode == 5)) {
            if (mode == 4) {
                new_val = parseInt(val);
            } else if (mode == 5) {
                new_val = parseFloat(val);
            }
            if (isNaN(new_val)) {
                new_val = 0;
            }
            if (min_val != null && new_val < min_val) {
                result = false;
            }
            if (max_val != null && new_val > max_val) {
                result = false;
            }
            if (!result) { //set the error message
                if (min_val != null && max_val != null) {
                    if (par_msg != "") {
                        msg = par_msg;
                    } else {
                        msg = "Invalid value, it must be between "+min_val+" and "+max_val+".";
                    }
                } else if (min_val != null) {
                    if (par_msg != "") {
                        msg = par_msg;
                    } else {
                        msg = "Invalid value, it must NOT be less then"+min_val+".";
                    }
                } else if (max_val != null) {
                    if (par_msg != "") {
                        msg = par_msg;
                    } else {
                        msg = "Invalid value, it must NOT be greater then"+max_val+".";
                    }
                }
            }
        }
    } 
    
    if (!result) {
        alert(msg);
        fld.focus();
    }
    return result;   
}

// Check list of fields against NULL value
function mandatoryFields(frm_name, fList, mesg) {
    // field names in fList are separated with ,
    var form = document.getElementById(frm_name);
    var fArray = fList.split(",");
    var tmp = "";
    for (var i=0; i < fArray.length; i++) {
        eval("tmp = form."+fArray[i]+".value");
        if (tmp == "") {
            alert(mesg);
            return false;
        }
    }
    return true;
}

// Original functions
function showSubmit(frm) {
  frm.makeStats.value = "yes";
  frm.submit();
  return true;
}

function CheckAll(elem) {
  var form = elem.form;
  var len = form.APP.length;
  if(form.ALL.checked){
      for(i=0;i<len;++i){
        form.APP.options[i].selected = true;
      }
  }else{
      for(i=0;i<len;++i){
        form.APP.options[i].selected = false;
      }
  }
  MakeList(elem);
}

function MakeList(elem){
    var form = elem.form;    
    var len = form.APP.length;    
    var result = ";";
    for(var i=0;i<len;i++){
        if(form.APP.options[i].selected) {
            result = result + form.APP.options[i].value+";";
        }
    }
    form.listAPP.value=result;
} 

function goLink(id,act) {
  var form = document.getElementById(id);
  form.section.value = act;
  form.submit();   
}

function goLocation(frm,act,item){
  var form = document.getElementById(frm);
  form.action.value = act;
  form.id.value = item;
  form.submit();       
}
      
function goLocation1(frm,act,item){
  var form = document.getElementById(frm);
  form.type.value = act;
  form.files.value = item;    
  form.submit();       
}
                   
function getNCharUsed(frm){
  var len    = frm.message.value.length;
  var maxLen = 161;
  var msg_   = parseInt(len/maxLen) + (len < 1 ? 0 : 1);
  frm.curLen.value = len+"/"+msg_;
}

// functions for the application tool section
// ======================================================================================
function goApplication(frm) {
    var form = document.getElementById(frm);
    var len = form.applicationslist.length;
    for (var i=0; i<len; i++) {
        if (form.applicationslist.options[i].selected) {
            var fArray = form.applicationslist.options[i].value.split(",");
            form.selected_application.value = fArray[0];
            form.section.value = fArray[1];
        }
    }
    form.submit();
    return false;
}

//number of members
function getNumMembers(frm){
    var form = document.getElementById(frm);    
    var len = form.members.length;
    form.num_user.value = len;
}

// set value into some field and submit form
function SetAndSubmit(elem,item,val) {
    var form = document.getElementById(elem);
    eval("form."+item+".value = val");
    form.submit();
    return false;
}

// check time in form hh:mm
function checkTime(frm_name) {
    var form = document.getElementById(frm_name);
    var index = form.time.value.indexOf(":");
    var len = form.time.value.length;    
    var msg = "Time is not in a valid format!";
    re = /[0-9]/gi
    if (index < 1){
        alert(msg);
        return false;
    }else{
        var hour = form.time.value.substr(0,index);
        var min = form.time.value.substr(index + 1, len);
        while (hour.length < 2) hour = "0" + hour;
        while (min.length < 2) min = "0" + min;
        res = hour.replace(re, "");
        result = min.replace(re, ""); 
        if ((res != "")||(result != "")){
            alert(msg);
            return false;
        }
        if ((hour < 0) || (hour > 23) || (hour == "") || (min < 0) || (min > 59) || (min == "")){
            alert(msg);
            return false;
        }
    }
    form.time.value = hour + ":" + min;
    return true;  
}

function findToString(listaq, patt) {
    var offset = listaq.indexOf(patt);
    if (offset <= -1) return false;
    else return true;
}

function AddToList(frm, num, lista) {
    var form = document.getElementById(frm);    
    var pom = num;
    var p = "GR";
    var poz;
    var duz;
    var pom;
    p = p.concat(num);
    if (p.checked) {
        form.lista.value = form.lista.value.concat(num);
    }else {
        num = num.concat(";");
        poz = findToString(form.lista.value, num);
        duz = form.lista.value.length;
        if (poz) {
            poz = form.lista.value.indexOf(num);
            pom = form.lista.value.substr(0, poz);
            form.lista.value = pom.concat(form.lista.value.substr(poz + num.length, duz));
        } else {
            form.lista.value = form.lista.value.concat(num);
        }
    }
}

function CheckDate(elem) {
    if (elem.value == "")
        return;
    var isOK = true;
    var elems = elem.value.split(".");
    if (elems.length == 3) {
        var d=parseInt(elems[0], 10);
        var m=parseInt(elems[1], 10);
        var y=parseInt(elems[2], 10);
        if (isNaN(d) || isNaN(m) || isNaN(y)) {
            isOK = false;
        } else {
            if (d<1 || d>31)
                isOK = false;
            if (m<1 || m>12)
                isOK = false;
            if (y<1930 || y>2090)
                isOK = false;
        }
    } else {
        isOK = false;
    }
    if (isOK == false) {
        alert("The value " + elem.value + " is not a valid date in format: dd.mm.yyyy");
        elem.focus();
    }
}

// Function validates data in Direct Message Send Screen
function CheckSendMessage(form_id) {
    var form = document.getElementById(form_id);   
    var errMsg = "";
    if (form.template[0].value == 1 && form.template[0].checked) {
        if (form.news.value == "") 
            errMsg = "You have to choose message template you want to send.";
    } else if (form.template[1].value == 3 && form.template[1].checked) {
        if (form.new_template_title.value == "" || form.message.value == "") 
            errMsg = "Title and text are mandatory fields for new template.";
    } else if (form.template[2].value == 2 && form.template[2].checked) {
        if (form.message.value == "") 
            errMsg = "Message text is mandatory field for direct send.";
    }
    if (errMsg != "") {
        alert(errMsg);
        return false;
    }
    return true;
}

// Clear fields in Direct Message Send Screen when message source is changed
function ChangeSendMessageSource(form_id) {
    var form = document.getElementById(form_id);   
    if (form.template[0].value == 1 && form.template[0].checked) {
        form.new_template_title.value = "";
        form.message.value = "";
        form.curLen.value = "0/0";
    } else if (form.template[1].value == 3 && form.template[1].checked) {
        form.news.options[0].selected = true;
    } else if (form.template[2].value == 2 && form.template[2].checked) {
        form.news.options[0].selected = true;
        form.new_template_title.value = "";
    }
    return true;
}

// Check or clear all check boxes that begin with given name
function SetAllCheckBoxes(form_id, item_name, on_off) {
    // item_name is part of items name (del_item_123, del_item_56, ...)
    // on_off has value "on" or "off"
    var form = document.getElementById(form_id);
    var len = form.elements.length;
    // walk through all form's elements and find check boxes
    for (var i = 0; i < len; i++) {
        var e = form.elements[i];
        if (e.name.indexOf(item_name) >= 0 && e.type == "checkbox") {
            if (on_off == "on")
                e.checked = true;
            else 
                e.checked = false;
        }
    }    
    return false;
}

// Set state to all list item elements
function ToggleList(form_id, item_name, new_state) {
    // new_state may be on or off
    var form = document.getElementById(form_id);
    eval("var elem = form."+item_name);
    for(var i=0;i<elem.length;i++){
        if (new_state == "on")
            elem.options[i].selected = true;
        else 
            elem.options[i].selected = false;
    }
}

// Select specified list item element
function ToggleListItem(form_id, item_name, set_value) {
    // new_state may be on or off
    var form = document.getElementById(form_id);
    eval("var elem = form."+item_name);
    for(var i=0;i<elem.length;i++){
        if (elem.options[i].value == set_value)
            elem.options[i].selected = true;
        else 
            elem.options[i].selected = false;
    }
}

// sets insert statistic when SMS Gate is changed (test aplication)
function ChangeGate(elem,item) {
    var form = elem.form;
    if (form.from_ip.value == "999.999.999.999"){
        eval("form."+item+".checked = false");
    } else {
        eval("form."+item+".checked = true");
    }
    return true;
}

function frameSource(source){
    var frame_id = document.getElementById('frame_res'); 
    parent.frame_res.document.open(); 
    parent.frame_res.document.write('<html><body marginwidth=5 marginheight=5 style=\"font-family: Verdana, Arial, sans-serif; font-size: 11px\" bgcolor=#FFFFFF>'+source+'</body></html>'); 
    parent.frame_res.document.close();
}

function blank(){
    return "<html><body marginwidth=0 marginheight=0 style=\"font-family: Verdana, Arial, sans-serif; font-size: 11px\" bgcolor=#FFFFFF></body></html>";
}

//when press enter in the field, submit form
function enterSubmit(item) {
    var form = item.form;
    if (event.keyCode != null) {
        if (event.keyCode == 13) {
            form.submit();
        }
    }
}

// change the visibility attribute of an element id
function ToogleDisplay(elem,on_off) {
    var el = document.getElementById(elem);
    if (on_off == true) {
        el.style.visibility = 'inherit';
    } else {
        el.style.visibility = 'hidden';
    }
    return true;
}
// Shov popup windov
function myConfirm(title,msg,form,fild,submit,text1,val1,text2,val2,text3,val3) {
   msgWindow=window.open("","displayWindow","menubar=no,scrollbars=no,status=no,width=400,height=220,left=150,top=250")
   msgWindow.document.open();
   msgWindow.document.write
      ("<HEAD><TITLE>"+title+"</TITLE></HEAD><html><body bgcolor=#e6e6ee>"+
       //"<font style='color:#000000;font-family: Arial, sans-serif;font-size: 15px;font-weight: bold;'>"+title+"</font>"+
       "<table width=100% height=150 border=0><tr><td align=left valign=middle style='color:#000000;font-family: Arial, sans-serif;font-size: 12px;'>"+
       msg+
       "</td><tr>");
   msgWindow.document.write ("<tr><td align=center valign=middle height=30>");
   if(submit == "yes"){
       if (text1 != ""){
           msgWindow.document.write ("<INPUT TYPE='button' NAME='Button1' VALUE='"+text1+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val1+"\"; window.opener.document."+form+".submit();'>");
              msgWindow.document.write ("&nbsp;");
       }
       if (text2 != ""){
           msgWindow.document.write ("<INPUT TYPE='button' NAME='Button2' VALUE='"+text2+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val2+"\"; window.opener.document."+form+".submit();'>");
              msgWindow.document.write ("&nbsp;");
       }
       if (text3 != ""){
           msgWindow.document.write ("<INPUT TYPE='button' NAME='Button3' VALUE='"+text3+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val3+"\"; window.opener.document."+form+".submit();'>");
              msgWindow.document.write ("&nbsp;");
       }
   } else {
       if (form != ""){
           if (text1 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button1' VALUE='"+text1+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val1+"\";'>");
                  msgWindow.document.write ("&nbsp;");
           }
           if (text2 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button2' VALUE='"+text2+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val2+"\";'>");
                  msgWindow.document.write ("&nbsp;");
           }
           if (text3 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button3' VALUE='"+text3+"' onClick='window.close(); window.opener.document."+form+"."+fild+".value=\""+val3+"\";'>");
                  msgWindow.document.write ("&nbsp;");
           }
       } else {
           if (text1 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button1' VALUE='"+text1+"' onClick='window.close(); '>");
                  msgWindow.document.write ("&nbsp;");
           }
           if (text2 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button2' VALUE='"+text2+"' onClick='window.close(); '>");
                  msgWindow.document.write ("&nbsp;");
           }
           if (text3 != ""){
               msgWindow.document.write ("<INPUT TYPE='button' NAME='Button3' VALUE='"+text3+"' onClick='window.close(); '>");
                  msgWindow.document.write ("&nbsp;");
           }
       }
   }
   msgWindow.document.write ("<INPUT TYPE='button' NAME='Canacel' VALUE='Cancel' onClick='window.close();'></td></tr></table></body></html>");
   msgWindow.document.close();
}

