﻿//--------------------CHECKBOX INPUT CONTROL ------------------
function ValidateCheckBoxScript(chkID, HdnCustomCtrl, OtherTextboxCtrl, ValidatorOtherCntrl, CustomValidator, maxsel, isRequired) {

    var maxSelections = maxsel;
    var selectedLength = 0;

    var hiddenvalue = jQuery('#' + HdnCustomCtrl).val();
    var CustomTxtCntrl = jQuery('#' + OtherTextboxCtrl);
    var CustomValidatorCntrl = jQuery('#' + ValidatorOtherCntrl);
    var CustomValidatorCheckBox = jQuery('#' + CustomValidator);
    var chkBox = jQuery('#' + chkID);

    var currentselecteditems;
    
    currentselecteditems = jQuery("#" + chkID + " :input:checked").length;

    if (currentselecteditems > 0)
        selectedLength = currentselecteditems;

    if (currentselecteditems == maxSelections) {
        DisableUncheckedItems(chkID, OtherTextboxCtrl, hiddenvalue, true);
    }
    
    chkBox.find('input:checkbox').each(function(e) {
        var found = false;
        
        jQuery(this).click(function(e) {
            selectedLength = jQuery("#" + chkID + " :input:checked").size();

            if (jQuery(this).attr("checked") == true) {
                //CustomValidatorCheckBox.attr("enabled", false);
                //CustomValidatorCheckBox.css("display", "none");
                ValidatorEnable(CustomValidatorCheckBox[0], false);

                if (selectedLength == maxSelections) {
                    DisableUncheckedItems(chkID, OtherTextboxCtrl, hiddenvalue, true);
                }
            }
            else {
                if (selectedLength < maxSelections) {

                    if (selectedLength == 0) {
                        if (isRequired.toLowerCase() == "true" || isRequired.toLowerCase() == "1") {
                            ValidatorEnable(CustomValidatorCheckBox[0], true);
                        }
                    }

                    chkBox.find('input:checkbox').each(function() {
                        jQuery(this).attr("disabled", false);
                        jQuery(CustomTxtCntrl).attr("disabled", false);
                    });
                }
            }

            var selecteditem = jQuery(this).parent().attr("optionid");

            if (selecteditem == hiddenvalue) {
                found = true;
            }

            if (found) {
                if (jQuery(this).attr("checked")) {
                    CustomValidatorCntrl.attr("enabled", true);
                    CustomTxtCntrl.focus();
                }
                else {
                    CustomValidatorCntrl.attr("enabled", false);
                    CustomValidatorCntrl.css("display", "none");
                    CustomTxtCntrl.val("");
                }
            }
        });
    });
}

function saveControlState(chkID, hSelectedOptionID) {

    var chkBox = jQuery('#' + chkID);
    var hSelectedOptionContainer = jQuery('#' + hSelectedOptionID);

    chkBox.find('input:checkbox').each(function(e) {
        jQuery(this).click(function(e) {
            UpdateSelectedOptions(chkBox.find("input:checked"), chkBox.find("input:not(:checked)"), hSelectedOptionContainer);
        });
    });
}

function UpdateSelectedOptions(selectedOptionList, unselectedOptions, selectedContainer) {

    var selectedOptionString = '';

    selectedOptionList.each(function(e) {

        var selectedOptionID = jQuery(this).parent().attr("optionid");

        if (selectedOptionString == '') {
            selectedOptionString = selectedOptionID;
        }
        else {
            selectedOptionString += ';' + selectedOptionID;
        }
    });

    var unSelectedOptionString = '';
    
    unselectedOptions.each(function(e) {

        var unSelectedOptionID = jQuery(this).parent().attr("optionid");

        if (unSelectedOptionString == '') {
            unSelectedOptionString = unSelectedOptionID;
        }
        else {
            unSelectedOptionString += ';' + unSelectedOptionID;
        }
        
    });

    selectedContainer.val(selectedOptionString + '@' + unSelectedOptionString);
}

function DisableUncheckedItems(chkid, CustomTxtCntrl, hiddenval, state) {
    var chkbox;
    chkbox = jQuery('#' + chkid);
    var found = false;

    chkbox.find('input:checkbox:not(:checked)').each(function() {
        jQuery(this).attr("disabled", state);
    });

    chkbox.find('input:checkbox:checked').each(function() {
        if (jQuery(this).parent().attr("optionid") == hiddenval)
            found = true;
    });

    if (found)
        jQuery('#' + CustomTxtCntrl).attr("disabled", false);
    else
        jQuery('#' + CustomTxtCntrl).attr("disabled", true);
}


function SelectCustomTextBoxForCB(chkID, HndCustomCtrl, ValidatorOtherCntrl, CustomTxtCntrl, maxsel, hSelectedOptionID) {
    if (jQuery('#' + CustomTxtCntrl).val() == "") {
        var HdnControl = jQuery('#' + HndCustomCtrl);
        var CBCntrl = jQuery('#' + chkID);
        var CustomValidatorCntrl = jQuery('#' + ValidatorOtherCntrl);
        var hSelectedOptionContainer = jQuery('#' + hSelectedOptionID);
        
        var flag = false;
        var currentselecteditems = 0;
        
        currentselecteditems = jQuery("#" + chkID + " :input:checked").size();

        if (currentselecteditems < maxsel) {

            CBCntrl.find('input:checkbox').each(function(e) {
                if (jQuery(this).parent().attr("optionid") == HdnControl.val()) {
                    if (jQuery(this).attr("checked") == false) {
                        jQuery(this).attr("checked", true);
                        UpdateSelectedOptions(CBCntrl.find("input:checked"), CBCntrl.find("input:not(:checked)"), hSelectedOptionContainer);
                        currentselecteditems = currentselecteditems + 1;
                    }
                    flag = true;
                }
            });

            if (flag)
                CustomValidatorCntrl.attr("enabled", true);
            else {
                CustomValidatorCntrl.attr("enabled", false);
                CustomValidatorCntrl.css("display", "none");
                jQuery('#' + CustomTxtCntrl).val("");
            }

            if (currentselecteditems == maxsel) {
                DisableUncheckedItems(chkID, CustomTxtCntrl, HdnControl.val(), true);
            }

        }
    }
}

function CheckForMinOption(source, args) {

    var checkBoxID = jQuery(source).attr("ctovalid");
    var chklist = document.getElementById(checkBoxID);
    var chkLista = chklist.getElementsByTagName("input");

    for (var i = 0; i < chkLista.length; i++) {
        if (chkLista[i].checked) {
            args.IsValid = true;
            return;
        }
    }
    args.IsValid = false;
}

function HideCheckBoxValidatorOnChecked(chkID, CustomValidator) {

    var CustomValidatorCheckBox = jQuery('#' + CustomValidator);
    var chkBox = jQuery('#' + chkID);

    chkBox.find('input:checkbox').each(function(e) {

        jQuery(this).click(function(e) {

            if (jQuery(this).attr("checked") == true) {
                CustomValidatorCheckBox.css("display", "none");
            }
        });
    });
}

//--------------------RADIO BUTTON INPUT CONTROL ------------------
function SelectCustomTextBoxForRD(RadioBtnCtrl, HndCustomCtrl, ValidatorOtherCntrl, hSelectedOptionID) {
    
    var RdCntrl = jQuery('#' + RadioBtnCtrl);
    var HdnControl = jQuery('#' + HndCustomCtrl);
    var CustomValidatorCntrl = jQuery('#' + ValidatorOtherCntrl);
    var hSelectedOption = jQuery('#' + hSelectedOptionID);
    
    RdCntrl.find('input:radio').each(function(e) {
        
        if (jQuery(this).val() == HdnControl.val()) {
            
            jQuery(this).attr("checked", true);

            hSelectedOption.val(jQuery(this).val());
            
            ValidatorEnable(CustomValidatorCntrl[0], true); 
            //CustomValidatorCntrl.attr("enabled", true);
        }
        else {
            ValidatorEnable(CustomValidatorCntrl[0], false); 
            //CustomValidatorCntrl.attr("enabled", false);
            //CustomValidatorCntrl.css("display", "none");
        }
    });
}

function EnableDisableCustomValidatorForRD(RadioBtnCtrl, HndCustomCtrl, OtherTextboxCtrl, ValidatorOtherCntrl, selectedOptionConatinerID) {
    
    var RdCntrl = jQuery('#' + RadioBtnCtrl);
    var HdnControl = jQuery('#' + HndCustomCtrl);
    var CustomTxtCntrl = jQuery('#' + OtherTextboxCtrl);
    var CustomValidatorCntrl = jQuery('#' + ValidatorOtherCntrl);
    var hSelectedOption = jQuery('#' + selectedOptionConatinerID);

    RdCntrl.find('input:radio').each(function(e) {
        jQuery(this).click(function(e1) {
            var selectedValue = jQuery(this).val();

            if (selectedValue == HdnControl.val()) {
                //CustomValidatorCntrl.attr("enabled", true);
                ValidatorEnable(CustomValidatorCntrl[0], true); 
            }
            else {
                ValidatorEnable(CustomValidatorCntrl[0], false); 
                //CustomValidatorCntrl.attr("enabled", false);
                //CustomValidatorCntrl.css("display", "none");
                CustomTxtCntrl.val("");
            }

            hSelectedOption.val(selectedValue);
        });
    });
}

//--------------------DROPDOWN INPUT CONTROL ------------------
function EnableDisableCustomValidatorDD(DropdownCtrl, HndCtrl, TextboxCtrl, CustomValidatorOtherCntrl) {
    var DDCntrl = jQuery('#' + DropdownCtrl);
    var HdnControl = jQuery('#' + HndCtrl);
    var CustomTxtCntrl = jQuery('#' + TextboxCtrl);
    var CustomValidatorCntrl = jQuery('#' + CustomValidatorOtherCntrl);

    if (DDCntrl != null && HdnControl != null) {
        if (DDCntrl.val() == HdnControl.val()) {
            //CustomValidatorCntrl.attr("enabled", true);
            ValidatorEnable(CustomValidatorCntrl[0], true); 
        }
        else {
            //CustomValidatorCntrl.attr("enabled", false);
            //CustomValidatorCntrl.css("display", "none");
            ValidatorEnable(CustomValidatorCntrl[0], false); 
            CustomTxtCntrl.val("");
        }
    }
}

function SelectCustomTextDD(DDCtrl, HndCtrl, CustomValidatorOtherCntrl) {
    var Ctrl = jQuery('#' + DDCtrl);
    var HdnControl = jQuery('#' + HndCtrl);
    var CustomValidatorCntrl = jQuery('#' + CustomValidatorOtherCntrl);
    var flag = false;

    jQuery('#' + DDCtrl + ' option').each(function(index, option) {
        if (jQuery(option).val() == HdnControl.val()) {
            jQuery(option).attr("selected", "selected");
            flag = true;
        }
    });

    if (flag) {
        CustomValidatorCntrl.attr("enabled", true);
    }
    else {
        CustomValidatorCntrl.attr("enabled", false);
    }
}

//--------------------TEXT AREA INPUT CONTROL ------------------
function maxLength(field, maxChars) {
    if (field.value.length >= maxChars) {
        event.returnValue = false;
        return false;
    }
}

function maxLengthPaste(field, maxChars) {
    var str = window.clipboardData.getData("Text");
    var maxlen = maxChars - field.value.length;
    if ((field.value.length + window.clipboardData.getData("Text").length) > maxChars) {
        field.value = field.value + str.substring(0, maxlen);
        return false;
    }
}
 
//--------------------CALENDER INPUT CONTROL ------------------
function IsLeapYear(yeardd) {
    if (yeardd.val() != null) {
        var res;
        res = yeardd.val() % 4;

        if (res == 0)
            return true;
        else
            return false;
    }
}

function PopulateDatesByLeapYear(datedd, yeardd) {
    var noofdays;
    var ddlyear;
    ddlyear = jQuery('#' + yeardd);

    if (datedd != null) {
        jQuery("select[id$=" + datedd + "] > option").remove();

        if (IsLeapYear(ddlyear)) {
            noofdays = 29;
        }
        else {
            noofdays = 28;
        }

        var i = 0;
        for (i = 0; i < noofdays; i = i + 1) {
            addOption(datedd, i + 1, i + 1);
        }
    }
}

function addOption(selectbox, text, value) {
    selectbox.append(jQuery("<option></option>").attr("value", value).text(text));
}

function PopulateMonth(ddmonth, dddate, ddyear) {
    var ddlmonth;
    ddlmonth = jQuery('#' + ddmonth);

    if (ddlmonth != null) {
        var ddldate;
        ddldate = jQuery('#' + dddate);
        jQuery('#' + dddate + '>option').remove();
        var month = new Array('31', '28', '31', '30', '31', '30', '31', '31', '30', '31', '30', '31');

        if (ddldate != null) {
            if (ddlmonth.val() == 2) {
                PopulateDatesByLeapYear(ddldate, ddyear);
            }
            else if (ddlmonth.val() == -1) {
                for (var i = 0; i < 31; ++i) {
                    addOption(ddldate, i + 1, i + 1);
                }
            }
            else {
                for (var i = 0; i < month[ddlmonth.val() - 1]; ++i) {
                    addOption(ddldate, i + 1, i + 1);
                }
            }
        }
    }
}

