function SetInputColor(inputID) {
    var input = document.getElementById(inputID);
    if (input) {
        input.onfocus = function() {
            this.style.color = 'black';
            this.value = '';
            input.onfocus = null;
        }
    }
}

function expandBlock(blockID, imgID) {
    var block = document.getElementById(blockID);
    var ArrowImg = document.getElementById(imgID);
    block.style.display == 'block' ? block.style.display = 'none' : block.style.display = 'block';
    block.style.display == 'block' ? ArrowImg.src = 'images/arrow_up.png' : ArrowImg.src = 'images/arrow_down.png';

}

function SetUniqueRadioButton(nameregex, current) {
    re = new RegExp(nameregex);
    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i]
        if (elm.type == 'radio') {
            if (re.test(elm.name)) {
                elm.checked = false;
            }
        }
    }
    current.checked = true;
}

function CheckOnePhoneIsInput(sender, args) {
    re = new RegExp('PhonesRepeater.*PhoneNumber');
    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i]
        if (elm.type == 'text') {
            if (re.test(elm.name)) {
                if (elm.value != '') {
                    args.IsValid = true;
                    return;
                }
            }
        }
    }
    args.IsValid = false;
}

function CheckBasicDriverIsInput() {
    re = new RegExp('DriversRepeater.*IsBasicDriverCheckbox');
    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i];
        if (elm.type == 'checkbox') {
            if (re.test(elm.name)) {
                if (elm.checked) {
                    return true;
                }
            }
        }
    }
    return false;
}

function PhoneLengthValidate(sender, args) {
    var index = sender.controltovalidate.indexOf('PhoneNumber');
    var codeId = sender.controltovalidate.substring(0, index) + 'PhoneCode';
    var regCountDigits = new RegExp('[0-9]{1}', 'g');
    var phone = document.getElementById(sender.controltovalidate).value + document.getElementById(codeId).value;
    args.IsValid = phone.match(regCountDigits).length == 10;
}



function DriverParamsValidate(sender, args) {
    var index = sender.controltovalidate.indexOf('DriveStandingTxtBox');
    var codeId = sender.controltovalidate.substring(0, index) + 'AgeTxtBox';
    var driveStandingTxtBox = document.getElementById(sender.controltovalidate);
    var ageTxtBox = document.getElementById(codeId);
    var age = parseInt(ageTxtBox.value)
    var outDriveStanding = parseInt(driveStandingTxtBox.value)
    //args.IsValid = (age - 18 >= outDriveStanding);
    args.IsValid = (age - 16 >= outDriveStanding);
}

function DisableEnableRadioButtons(nameregex, useProgramsId) {
    re = new RegExp(nameregex);
    for (i = 0; i < document.forms[0].elements.length; i++) {
        elm = document.forms[0].elements[i]
        if (elm.type == 'radio') {
            if (re.test(elm.name)) {
                elm.disabled = !document.getElementById(useProgramsId).checked;
            }
        }
    }
}

function SetSelectedProgram(hiddenFieldProgramId, hiddenFieldProgramName, hiddenFieldProgramCost, hiddenFieldProgramCostPercent, current, programID, programName, programCost, programCostPercent) {
    if (current.checked) {
        var hiddenIDField = document.getElementById(hiddenFieldProgramId);
        if (hiddenIDField != null) {
            hiddenIDField.value = programID;
        };
        var hiddenNameField = document.getElementById(hiddenFieldProgramName);
        if (hiddenNameField != null) {
            hiddenNameField.value = programName;
        };
        var hiddenCostField = document.getElementById(hiddenFieldProgramCost);
        if (hiddenCostField != null) {
            hiddenCostField.value = programCost;
        };
        var hiddenCostPercentField = document.getElementById(hiddenFieldProgramCostPercent);
        if (hiddenCostPercentField != null) {
            hiddenCostPercentField.value = programCostPercent;
        };
    };
}

function ValidatePassword(sender, args) {
    if (args != null) {
        var regLiterals = new RegExp("^[a-zA-Z0-9]{5,}$");
        var password = args.Value;
        if (regLiterals.test(password)) {
            //            var regCountLiterals = new RegExp('[a-zA-Z]{1}','g');
            //            var regCountDigits = new RegExp('[0-9]{1}', 'g');
            //            var countLiterals = password.match(regCountLiterals);
            //            var countDigits = password.match(regCountDigits);

            //            if ((countLiterals != null && countLiterals.length >= 2) && (countDigits!=null && countDigits.length >= 2)) {
            //                args.IsValid = true;
            //                return;
            //            }
            args.IsValid = true;
            return;
        }
    }
    args.IsValid = false;
}


function AdditionalRiskChecked(id, blockId) {
    var idElem = document.getElementById(id);
    if (idElem != null) {
        var blockElem = document.getElementById(blockId);
        if (blockElem != null) {
            idElem.checked ? blockElem.style.display = 'block' : blockElem.style.display = 'none';
        }
    }
}

function setOneBasicDriver(curObj, nameregex) {
    if (curObj.checked) {
        re = new RegExp(nameregex);
        for (i = 0; i < document.forms[0].elements.length; i++) {
            elm = document.forms[0].elements[i]
            if (elm.type == 'checkbox' && curObj != elm) {
                if (re.test(elm.name)) {
                    elm.checked = false;
                }
            }
        }
    }
    curObj.checked = true;
}

function disableResultsBtns(disable_sign, request_btnId, request_call_btnId, additionhal_services_btnId, no_btnId, save_order_btnId) {
    var request_btn = document.getElementById(request_btnId);
    if (request_btn != null) {
        request_btn.disabled = disable_sign;
    };
    var request_call_btn = document.getElementById(request_call_btnId);
    if (request_call_btn != null) {
        request_call_btn.disabled = disable_sign;
    };
    var additionhal_services_btn = document.getElementById(additionhal_services_btnId);
    if (additionhal_services_btn != null) {
        additionhal_services_btn.disabled = disable_sign;
    };
    var no_btn = document.getElementById(no_btnId);
    if (no_btn != null) {
        no_btn.disabled = disable_sign;
    };
    var save_order_btn = document.getElementById(save_order_btnId);
    if (save_order_btn != null) {
        save_order_btn.disabled = disable_sign;
    };
    var printBtn = document.getElementById('PrintBtn');
    if (printBtn != null) {
        printBtn.disabled = disable_sign;
    }
    if (disable_sign) {
        $(".button_input").addClass("button_input_disabled");
    }
    else {
        $(".button_input").removeClass("button_input_disabled");
    };
}

function enablePrintBtn() {
    var printBtn = document.getElementById('PrintBtn');
    if (printBtn != null) {
        printBtn.disabled = false; 
    }
}

function PrintBtnClick(url) {
    var printBtn = document.getElementById('PrintBtn');
    if (printBtn != null && printBtn.disabled) {
        return false;
    }
    else {
        window.open(url, 'new', '');
        return true;
    }
}

ApplyBtnClick = new function() {
    var clicked = false;

    function construct() {

        this.GetBtnClicked = function() {
            return clicked;
        }

        this.SetBtnClicked = function(val) {
            clicked = val;
        }
    }

    return new construct();
};

RequestCallDateTimeValidator = new function() {
    var selectedCallDateInputId = '';
    var selectedRequestCallDateInputId = '';

    function construct() {

        this.SetSelectedCallDateInputId = function(inputId) {
            selectedCallDateInputId = inputId;
        }

        this.SetSelectedRequestCallDateInputId = function(inputId) {
            selectedRequestCallDateInputId = inputId;
        }

        this.ValidateFromTime = function(source, args, inputId) {
            var nowDate = new Date();
            var nowHour = nowDate.getHours();
            var dateArray = document.getElementById(inputId).value.toString().split('.');
            var selectedDate = new Date(eval(dateArray[2]), eval(dateArray[1]) - 1, eval(dateArray[0]));
            if ((selectedDate != null && selectedDate.getDateOnly().getTicks() == nowDate.getDateOnly().getTicks()) && parseFloat(args.Value.split(':')[0]) <= nowHour) {
                args.IsValid = false;
            }
            else {
                args.IsValid = true;
            }
        }

        this.ValidateCallTime = function(source, args) {
            this.ValidateFromTime(source, args, selectedCallDateInputId);
        }

        this.ValidateRequestCallTime = function(source, args) {
            this.ValidateFromTime(source, args, selectedRequestCallDateInputId);
        }

        this.ValidateRequestCallDate = function(elem) {
            var nowDate = new Date();
            var nowHour = nowDate.getHours();
            var dateArray = elem.value.toString().split('.');
            var selectedDate = new Date(eval(dateArray[2]), eval(dateArray[1]) - 1, eval(dateArray[0]));
            if (selectedDate != null && selectedDate.getDateOnly().getTicks() < nowDate.getDateOnly().getTicks()) {
                elem.value = '';
            };
            Page_ClientValidate();
        }
    }
    return new construct();
}

PriceCustomRangeValidator = new function() {
    var maxCarPrice = 0;
    var minCarPrice = 0;

    function construct() {

        this.SetMaxCarPrice = function(maxPrice) {
            maxCarPrice = maxPrice;
        }

        this.SetMinCarPrice = function(minPrice) {
            minCarPrice = minPrice;
        }

       this.PriceTypeValidate = function(source, args) {
            var reg = new RegExp("^[0-9]*$");
            var trimPrice = args.Value.replace(/\s/g, '');
            if (reg.test(trimPrice) && parseInt(trimPrice, 10) >= 0) {
                args.Value = parseInt(trimPrice, 10);
                args.IsValid = true;
                return true;
            }
            args.IsValid = false;
            return false;
        }

        this.CarPriceValidate = function(source, args) {
            if (this.PriceTypeValidate(source, args) && parseInt(args.Value, 10) <= maxCarPrice && parseInt(args.Value, 10) >= minCarPrice) {
                args.IsValid = true;
                return true;
            };
            args.IsValid = false;
            return false
        }
    }
    return new construct();
}

function FormatPrice(elem) {
    var args = new Object();
    args.IsValid = false;
    args.Value = elem.value;
    if (PriceCustomRangeValidator.PriceTypeValidate(null, args)) {
        elem.value = $.currency(args.Value, { s: " ", d: ",", c: 0 });
    }
}

function UnformatPrice(val) {
    return val.replace(/\s/g, '');
}