/**
 * sets value to the element
 * parameters: elm=form name, itm=field name, val=value [, sbm=submit indicator (1=submit)]
 */ 
function setValueH(elm, itm, val, sbm) {
    sbm = sbm == null ? 0 : sbm;
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;
    eval("form."+itm+".value = val");
    
    if (sbm){
        form.submit();
        return false;
    } else {
        return true;
    }
}

/**
 *  set focus on the element
 */
function setFocus(elm, itm) {
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;
    eval("form."+itm+".focus();form."+itm+".select();");
}

/**
 *  check password confirmation
 */
function confirmPassword(frm, itm, itm2, msg) {
    var form = document.getElementById(frm);
    if (!form)
        form = elm.form;
    var pass = '';
    var pass2 = '';
    eval("pass = form."+itm+".value");
    eval("pass2 = form."+itm2+".value");
    if (pass2 == pass){
        return true;
    } else {
        alert(msg);
        return false;
    }
}

/**
 *  check if selected item exist
 */
function checkSelected(frm, itm, msg) {
    var form = document.getElementById(frm);
    if (!form)
        form = elm.form;
    var idx = 0;
    eval("idx = form."+itm+".selectedIndex");
    if (idx > 0){
        return true;
    } else {
        alert(msg);
        return false;
    }
}

/**
 *  check email address
 */
function checkEmail(frm, itm, msg) {
    var form = document.getElementById(frm);
    if (!form)
        form = elm.form;
    eval("var fld = form."+itm);
    var suc = true;
    var str = new String(fld.value);
    if (str != ""){
        if (str.indexOf("@") == -1 || str.indexOf(".") == -1) {    
            alert(msg);
            fld.focus();
            suc = false;
        }
    }
    return suc;
}

/**
 *  check email subject
 */
function checkSubject(frm, itm, msg) {
    var form = document.getElementById(frm);
    if (!form)
        form = elm.form;
        
    eval("var fld = form."+itm);
    
    var str = new String(fld.value);
    
    if  (str.indexOf(":") == -1) {    
        return true;
    } else {
        alert(msg);
        fld.focus();
        return false;
    }
}

/**
 * get position of the element...
 */
function findElement(id){
    element = getElement(id);
    if (!element)
        return false;
        
    return position = getPosition(element); 
}
function getElement(id){
    if (document.getElementById(id))
        return document.getElementById(id);
    return null;
}
function getPosition(element){
    var x = 0;
    var y = 0;
    while (element != null){
        x += element.offsetLeft - element.scrollLeft;
        y += element.offsetTop - element.scrollTop;
        element = element.offsetParent;
    }
    return {x:x,y:y};
}
function getPosition2(element){
    var x = 0;
    var y = 0;
    while (element != null){
        x += element.offsetLeft;
        y += element.offsetTop;
        element = element.offsetParent;
    }
    return {x:x,y:y};
}

/**
 * YesNo confirmation
 */
function yesNo(q) {
    q = q || "Are you sure you want to delete this item?";
    if (confirm(q)) {
        return true;
    }
    return false;
}

/**
 * select or deselect all grid rows
 */
function selectAllRows(elm, ind, itm) {
    itm = itm == null ? "sel_row" : itm;
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;
    
    for(i=0; i<form.elements.length; i++) {
        e = form.elements[i];
        if (e.type == "checkbox" && e.name != null && e.name.indexOf(itm) >= 0 && !e.disabled){
            e.checked = ind == 1 ? true : false;
        }
    }
}
function selectAllRows1(elm, ind, itm) {
 //alert(itm);
        
 var act;
 if(ind=='0'){
    act=0;
 }else{
    act=1;
 }
    itm = itm == null ? "sel_row" : itm;
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;
    
    for(i=0; i<form.elements.length; i++) {
        e = form.elements[i];
        
        if (e.type == "checkbox" && e.name != null && e.name.indexOf(itm) >= 0 && !e.disabled){
            if(e.type=="checkbox"){
                    var url = 'ajax_server.php';
                    var params = 'section=greeting&action=grid_contain&item_name='+e.value+'&act='+act;
                    var ajax = new Ajax.Request(
                    url, 
                    {
                        method: 'post', 
                        parameters: params
                    });
        //                    checkit(e.value,act);
            }
            //setTimeout('10000');
           e.checked = ind == 1 ? true : false;
        }
    }
    setTimeout("closeThis()",500);


}
function closeThis(){
        var dBox = new DialogBox(true, true); 
        var t = "<table width='300' border='0' cellPadding='0' cellSpacing='2'>";
                t+= "<tr>";
                t+= "<td class='text' align='center'>&nbsp;</td>";
                t+= "<td class='text' align='center'>Please Wait...</td>";
                t+= "</tr>";
                t+= "<tr>";
                t+= "<td class='text' align='center'>&nbsp;</td>";
                t+= "</tr>";
            t += "</table>";
//dBox.addButton('Close', "closeLayer('" + dBox.id + "')");
dBox.setVar('minimize', false);
    dBox.dialogBox('Wait until server done', t);
    setTimeout("closeLayer('" + dBox.id + "')",8000);
return;
}
/**
 * confirm delete selected rows
 */
function delSelRows(elm, itm, ask) {
	itm = itm == null ? "sel_row" : itm;
    ask = ask == null ? "Are you sure you want to delete selected row(s)?" : ask;   
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;

    var chkd = false;
    
    for(i=0; i<form.elements.length; i++) {
        e = form.elements[i];
        if (e.checked && e.name != null && e.name.indexOf(itm) >= 0 && !e.disabled){
            chkd = true;
        }
    }
    if(ask){
        if (chkd) {
                if (confirm(ask)) {
                    return true;
                } else {
                    return false;
                }
        } else {
            return false;
        }
    }else{
        return chkd;
    }
}

/**
 * implode checked elements (with hidden element optionally)
 * NOTE: if is hidden element used, it must be next element of a checkbox
 */
function implodeChecked(elm, itm, sep, itm_v) {
    itm = itm == null ? "sel_row" : itm;
    sep = sep == null ? ";" : sep;
    itm_v = itm_v == null ? "" : itm_v;
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;
        
    var istr = "";
    var itm_index = "";
    
    for(i=0; i<form.elements.length; i++) {
        cb = form.elements[i];
        if (cb.name != null && cb.name.indexOf(itm) >= 0 && cb.checked){
            // get index of the element
            itm_index = cb.name.substr(itm.length + 1, cb.name.length - itm.length - 2);
            
            if (itm_v != ""){
                hd = form.elements[i+1]; // get hidden element as next element of a checkbox
                if (hd.type == "hidden" && hd.name != null && hd.name == itm_v+"["+itm_index+"]"){
                    istr += itm_index + "#" + hd.value + sep;
                }
            } else {
                istr += itm_index + sep;
            }
        }
    }
    istr = istr.substr(0, istr.length - 1);
    
    return istr;
}
/**
 * explode string array to a select element
 */
function explodeToSelect(elm, srce, targ, sep) {
    sep = sep == null ? ";" : sep;
    var form = document.getElementById(elm);
    if (!form)
        form = elm.form;

    eval("se = form."+srce+".value");

    if (se != ""){
        se_ = se.split(";");
        eval("te = form."+targ);
        t_len = te.length;
        
        for(i=0; i<se_.length; i++) {
            eval("te["+(i + t_len)+"] = new Option('"+se_[i]+"', 1)");
        }
    }
    
    return true;
}

/**
 * navi functions
 */
function naviOver(elm){
    elm.style.color = '#ffffff';
    elm.style.backgroundColor = '#4B87D7';
}
function naviOut(elm){
    elm.style.color = '';
    elm.style.backgroundColor = '';
}

/**
 * function to open popup window
 */
var popupWin = false;
function popUp(getVar, wwidth, wheight) {
    var wwidth = wwidth != null ? wwidth : 1000;
    var wheight = wheight != null ? wheight : 700;
    var winPrm = "width="+wwidth+",height="+wheight+",resizable=yes,menubar=no,status=no,location=no,toolbar=no,titlebar=no,scrollbars=yes";
    var top_ = Math.round(getWindowHeight()/2 + getWindowYOffset() - wheight/2 - 10);
    var lft_ = Math.round(getWindowWidth()/2 - wwidth/2);
    top_ = top_ < 0 ? 0 : top_;
    lft_ = lft_ < 0 ? 0 : lft_;
    
    popupWin = window.open("popup.php?"+getVar, "popupWin", winPrm);
    popupWin.moveTo(lft_, top_);
    popupWin.focus();
}

function checkPopUp(e, check){
    if (check && popupWin){
        while (!popupWin.closed){
            if (confirm('Do you want to close popUp window?')){
                popupWin.close();
            } else {
                popupWin.focus();
                return false;
            }
        }
    }
}

function resizeWin(elm){
    elem = document.getElementById(elm);
    var height_value = elem.offsetHeight;
    var width_value = elem.offsetWidth;
    var diff = 65;
    if (height_value < 700){
        self.resizeTo(parseInt(width_value)+diff, parseInt(height_value)+diff+45);
    } else {
        self.resizeTo(parseInt(width_value)+diff, 700);
    }
}

/**
 * 
 */
function exportToExcel(getVar) {
    location.assign("export_csv.php?"+getVar);
}

/**
* check currency of selected batch template - is it equal as defined currency of the batch
*/
function checkBatchCurrency(elm, elm_c) {
    var batch_option = elm.options[elm.selectedIndex].text;
    var batch_currency = elm_c.options[elm_c.selectedIndex].text;
    
    if (elm.selectedIndex > 0 && batch_option.substr(batch_option.length - 3, 3) != batch_currency) {
        alert("Batch currencies must be equal!");
        elm.selectedIndex = 0;
        return false;
    } else {
        return true;
    }
}

function setCursor(obj, crs) {
    if (crs == 'over') {
        obj.style.cursor = 'pointer';
    } else {
        obj.style.cursor = 'default';
    }
}

/**
* functions used in time.inc.php class
*/
function displayTime(elm, ind) {
    if (ind == 1) {
        $(elm + '-time').style.display = 'block';
        $(elm + '-icon').style.display = 'none';
    } else {
        $(elm + '-time').style.display = 'none';
        $(elm + '-icon').style.display = 'block';
    }
    setTime(elm, ind)
}
function setTime(elm, set) {
    if (set) {
        $(elm).value = $(elm + '-hour').value + ':' + $(elm + '-minute').value;
        if ($(elm + '-second')) $(elm).value += ':' + $(elm + '-second').value;
    } else {
        $(elm).value = '';
    }
}

/**
* add checked element into a hidden field (as list of checked elements)
*/
function updateElementList(frm, elm, idx, list) {
    var form = document.getElementById(frm);
    if (!form)
        form = elm.form;
        
    var sep = ";";
    var listElem = false;
    var theElem  = false;
    var elm_name = elm + idx;
    
    for (i=0; i<form.elements.length; i++) {
        if (form.elements[i].name == list) listElem  = form.elements[i];
        if (form.elements[i].name == elm_name) theElem = form.elements[i];
    }
    
    if (theElem.checked) {
        // add to the list...
        listElem.value = listElem.value.concat(idx + sep);
    } else {
        // remove from the list...
        var list_ = listElem.value.split(sep);
        var new_list = '';
        
        for (i=0; i<list_.length; i++){
            if (list_[i] != idx && list_[i] != ''){
                new_list += list_[i] + sep;
            }
        }
        listElem.value = new_list;
    }
}

/**
* check if is any checkBox checked
*/
function mandatoryCheckBox(elm, itm, msg){
    var form = $(elm);
    if (!form)
        form = elm.form;

    var is_checked = false;

    for (i=0; i<form.elements.length; i++) {
        e = form.elements[i];
        if (e.type == "checkbox" && e.name != null && e.name.indexOf(itm) >= 0){
            if (e.checked) is_checked = true;
        }
    }

    if (!is_checked) alert(msg);

    return is_checked;
}
// Field validation
function validateField(fld, mode, min_val, max_val) {
    // 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 ___@___.___
    // 8 - Phone number in format [+]number
    // 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 letters = "qwertyuiopasdfghjklzxcvbnm";
    var special = "_";
    var plus    = "+";
    var numbers = "0123456789";
    var allowed = "";
    var result = true;
    switch (mode) {
        case 1:
                allowed = letters;
        msg = "The field value contains invalid characters, the valid characters are letters, only.";
        break;
        case 2:
                allowed = letters+special;
        msg = "The field value contains invalid characters, the valid characters are letters and _.";
        break;
        case 3:
                allowed = letters+special+numbers;
        msg = "The field value contains invalid characters, the valid characters are letters, numbers and _.";
        break;
        case 4:
                allowed = numbers;
        msg = "Invalid integer value!";
        break;
    }
    if (mode == 1 || mode == 2 || mode == 3 || mode == 4) {
        var tmpVal = val.toLowerCase(); // make lowercase copy to speeup searching
        for (i=0;i<tmpVal.length;i++) {
            if (allowed.indexOf(tmpVal.charAt(i)) < 0) {
                result = false;
                break;
            }
        }
    } else if (mode == 5) {
        floatValue=parseFloat(val);
        if (val != "" && isNaN(floatValue)) {
            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)
            msg = _text("invalid_mobile");
        }
    } else if (mode == 7) {
        if ((val != "") && ((val.indexOf('@')== -1) || (val.indexOf('.')== -1))){
            result = false;
        }
        if (!result)
        msg = _text("invalid_mail");
            
    } else if (mode == 8) {
        if (val.length > 0) {
            fc = val.charAt(0);
            if (((fc == "+") || (Number(fc) >= 0 && Number(fc) <= 9)) && val.length > 2) {
                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)
            msg = _text("invalid_phone");
        }
    }
    
    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) {
                    msg = "Invalid value, it must be between "+min_val+" and "+max_val+".";
                } else if (min_val != null) {
                    msg = "Invalid value, it must NOT be less then"+min_val+".";
                } else if (max_val != null) {
                    msg = "Invalid value, it must NOT be greater then"+max_val+".";
                }
            }
        }
    }
    
    if (!result) {
        alert(msg);
        fld.focus();
    }
    return result;
}
//change style of button on mouseover and mouseout
function changeStyle(obj, ind){
    if (ind == 1){
        obj.style.color = '#f69431';
        obj.style.cursor = 'pointer';
    } else {
        obj.style.color = '#ffffff';
        obj.style.cursor = 'default';
    }
}
//limit field input to "+",".","-","/"," ","digit"
function customNumber(elm){
    var phone = elm.value;
    var pattern = /[^\+\.\-\/\s\d]/gi;
    if(phone.search(pattern) != -1){
        elm.value = phone.replace(pattern,'');
        alert(_text("allowed_chars"));
    }
}
