﻿function CheckKeyCode(obj,bDecimal, bMinus) {
    if (event.keyCode == 9 || event.keyCode == 36 || event.keyCode == 35)
        return true;

    //alert(event.keyCode);
    
    if (bDecimal && bMinus) {
        if ((event.keyCode == 189 || event.keyCode == 109 || event.keyCode == 110 || event.keyCode == 190) ||
              (event.keyCode == 8) ||
              (event.keyCode >= 37 && event.keyCode <= 40) ||
              (event.keyCode >= 48 && event.keyCode <= 57) ||
              (event.keyCode >= 96 && event.keyCode <= 105)) {
            if ((bDecimal) && (event.keyCode == 110 || event.keyCode == 190)) {
                if (obj.value.indexOf(".") == -1) {
                    return true;
                }
                else {
                    return false;
                }
            }
            else if ((bMinus) && (event.keyCode == 189)) {
                if (obj.value.indexOf("-") == -1) {
                    return true;
                }
                else {
                    return false;
                }
            }
            else {
                return true;
            }
        }
        else {
            return false;
        }
    }
    else if (bDecimal) {
        if ((event.keyCode == 109) ||
                  (event.keyCode == 8) ||
                  (event.keyCode >= 37 && event.keyCode <= 40) ||
                  (event.keyCode >= 48 && event.keyCode <= 57) ||
                  (event.keyCode >= 96 && event.keyCode <= 105)) {
            return true;
        }
        else if (event.keyCode == 110 || event.keyCode == 190) {
            if (obj.value.indexOf(".") > -1) {
                return false;
            }
            else {
                return true;
            }
        }
        else {
            return false;
        }
    }
    else if (bMinus) {
        if ((event.keyCode == 109) ||
              (event.keyCode == 8) ||
              (event.keyCode >= 37 && event.keyCode <= 40) ||
              (event.keyCode >= 48 && event.keyCode <= 57) ||
              (event.keyCode >= 96 && event.keyCode <= 105)) {
            return true;
        }
        else if (event.keyCode == 189) {
            if (obj.value.indexOf("-") == -1) {
                return true;
            }
            else {
                return false;
            }
        }
        else {
            return false;
        }
    }
    else {
        if ((event.keyCode == 109) ||
              (event.keyCode == 8) ||
              (event.keyCode >= 37 && event.keyCode <= 40) ||
              (event.keyCode >= 48 && event.keyCode <= 57) ||
              (event.keyCode >= 96 && event.keyCode <= 105)) {
            return true;
        }
        else {
            return false;
        }
    }
}

function onKeyPress() {
    event.returnValue = false;
}

function uppercase(obj) {
    event.keyCode = String.fromCharCode(event.keyCode).toUpperCase().charCodeAt(0);
}

function MoveSelectedUp(objAssigned, hid) {
    var i, sValue, sText;

    for (i = 0; i < objAssigned.options.length; i++) {
        if (objAssigned.options[i].selected) {
            if (i == 0) {
                return;
            }
            else {
                sValue = objAssigned.options[i - 1].value;
                sText = objAssigned.options[i - 1].text;
                objAssigned.options[i - 1].value = objAssigned.options[i].value;
                objAssigned.options[i - 1].text = objAssigned.options[i].text;
                objAssigned.options[i].value = sValue;
                objAssigned.options[i].text = sText;

                //objAssigned.options[i].selected = false;
                //objAssigned.options[i - 1].selected = true;
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function MoveSelectedUp2(objAssigned, hid) {
    var i, oChild1, oChild2;

    for (i = 0; i < objAssigned.options.length; i++) {
        if (objAssigned.options[i].selected) {
            if (i == 0) {
                return;
            }
            else {
                oChild1 = document.createElement("OPTION")
                oChild1.text = objAssigned.options[i - 1].text
                oChild1.value = objAssigned.options[i - 1].value

                oChild2 = document.createElement("OPTION")
                oChild2.text = objAssigned.options[i].text
                oChild2.value = objAssigned.options[i].value

                objAssigned.options[i - 1].outerHTML = "";
                objAssigned.add(oChild2, i - 1);

                objAssigned.options[i].outerHTML = "";
                objAssigned.add(oChild1, i);

                objAssigned.options[i].selected = false;
                objAssigned.options[i - 1].selected = true;
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function MoveSelectedDown(objAssigned, hid) {
    var i, sValue, sText;

    for (i = objAssigned.options.length - 1; i >= 0; i--) {
        if (objAssigned.options[i].selected) {
            if (i == objAssigned.options.length - 1) {
                return;
            }
            else {
                sValue = objAssigned.options[i].value;
                sText = objAssigned.options[i].text;
                objAssigned.options[i].value = objAssigned.options[i + 1].value;
                objAssigned.options[i].text = objAssigned.options[i + 1].text;
                objAssigned.options[i + 1].value = sValue;
                objAssigned.options[i + 1].text = sText;

                objAssigned.options[i].selected = false;
                objAssigned.options[i + 1].selected = true;
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function MoveSelectedDown2(objAssigned, hid) {
    var i, oChild1, oChild2;

    for (i = objAssigned.options.length - 1; i >= 0; i--) {
        if (objAssigned.options[i].selected) {
            if (i == objAssigned.options.length - 1) {
                return;
            }
            else {
                oChild1 = document.createElement("OPTION")
                oChild1.text = objAssigned.options[i].text
                oChild1.value = objAssigned.options[i].value

                oChild2 = document.createElement("OPTION")
                oChild2.text = objAssigned.options[i + 1].text;
                oChild2.value = objAssigned.options[i + 1].value;

                objAssigned.options[i].outerHTML = "";
                objAssigned.add(oChild2, i);

                objAssigned.options[i + 1].outerHTML = "";
                objAssigned.add(oChild1, i + 1);

                objAssigned.options[i].selected = false;
                objAssigned.options[i + 1].selected = true;
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function AssignSelected(objSource, objTarget, objAssigned, hid) {
    var i, j, bFound, oChild, index;

    index = objTarget.options.length
    for (i = objSource.options.length - 1; i >= 0; i--) {
        if (objSource.options[i].selected) {
            bFound = false
            for (j = 0; j < objTarget.options.length; j++) {
                if (objSource.options[i].value == objTarget.options[j].value) {
                    bFound = true
                    break
                }
                //else if (objSource.options[i].text < objTarget.options[j].text) {
                //    index = j;
                //}
            }
            if (!bFound) {
                oChild = document.createElement("OPTION")
                oChild.text = objSource.options[i].text
                oChild.value = objSource.options[i].value
                objTarget.add(oChild, index)
                objSource.options[i].outerHTML = ""
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function AssignAll(objSource, objTarget, objAssigned, hid) {
    var i, j, bFound, oChild, index;

    index = objTarget.options.length
    for (i = objSource.options.length - 1; i >= 0; i--) {
        bFound = false
        for (j = 0; j < objTarget.options.length; j++) {
            if (objSource.options[i].value == objTarget.options[j].value) {
                bFound = true
                break
            }
            //else if (objSource.options[i].text < objTarget.options[j].text) {
            //    index = j;
            //}
        }
        if (!bFound) {
            oChild = document.createElement("OPTION")
            oChild.text = objSource.options[i].text
            oChild.value = objSource.options[i].value
            objTarget.add(oChild, index)
            objSource.options[i].outerHTML = ""
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function AssignSelectedWithSort(objSource, objTarget, objAssigned, hid) {
    var i, j, bFound, oChild, index;

    for (i = objSource.options.length - 1; i >= 0; i--) {
        if (objSource.options[i].selected) {
            index = objTarget.options.length
            bFound = false
            for (j = objTarget.options.length - 1; j >= 0; j--) {
                if (objSource.options[i].value == objTarget.options[j].value) {
                    bFound = true
                    break
                }
                else if (objSource.options[i].text < objTarget.options[j].text) {
                    index = j;
                }
            }
            if (!bFound) {
                oChild = document.createElement("OPTION")
                oChild.text = objSource.options[i].text
                oChild.value = objSource.options[i].value
                objTarget.add(oChild, index)
                objSource.options[i].outerHTML = ""
            }
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function AssignAllWithSort(objSource, objTarget, objAssigned, hid) {
    var i, j, bFound, oChild, index;

    for (i = objSource.options.length - 1; i >= 0; i--) {
        index = objTarget.options.length
        bFound = false
        for (j = objTarget.options.length - 1; j >= 0; j--) {
            if (objSource.options[i].value == objTarget.options[j].value) {
                bFound = true
                break
            }
            else if (objSource.options[i].text < objTarget.options[j].text) {
                index = j;
            }
        }
        if (!bFound) {
            oChild = document.createElement("OPTION")
            oChild.text = objSource.options[i].text
            oChild.value = objSource.options[i].value
            objTarget.add(oChild, index)
            objSource.options[i].outerHTML = ""
        }
    }

    UpdateListBoxValuesToHidden(objAssigned, hid);
    return false;
}

function UpdateListBoxValuesToHidden(objAssigned, hid) {
    var i;

    hid.value = '';
    for (i = 0; i < objAssigned.options.length; i++) {
        if (hid.value == '') {
            hid.value = objAssigned.options[i].value;
        }
        else {
            hid.value = hid.value + ',' + objAssigned.options[i].value;
        }
    }
}
