
if (document.layers) {
    document.captureEvents(Event.KEYDOWN);
    document.captureEvents(Event.KEYPRESS);
    document.captureEvents(Event.KEYUP);
}

document.onkeydown = traderValidateForms;
document.onkeypress = traderValidateForms;
document.onkeyup = traderValidateForms;

var validTraderDate = "xxxx-xx-xx";
var validTraderTime = "xx:xx:xx";
var validTraderDateTime = "xxxx-xx-xx xx:xx:xx";
var validTraderRegistrationDate = "xx-xxxx";

function ValidateFields(sender, args) {
    if (args.Value == "" || args.Value == "-1") {
        ctrl = document.getElementById(sender.controltovalidate);
        ctrl.style.backgroundColor = '#FCF306';
        args.IsValid = false;
        window.scrollTo(0, 0);
    } else {
        ctrl = document.getElementById(sender.controltovalidate);
        ctrl.style.backgroundColor = '#FFFFFF';
        args.IsValid = true;
    }
}

function ValidateDescription(sender, args) {

    if (args.Value.length > 65000) {
        args.IsValid = false;
    } else {
        args.IsValid = true;
    }
}

function ValidateDescription(sender, args) {

    if (args.Value.length > 65000) {
        args.IsValid = false;
    } else {
        args.IsValid = true;
    }
}

function UnChecked(val0, val1) {

    var inputs = document.getElementsByTagName('input');
    for (i = 0; i < inputs.length; i++) {
        if (inputs[i].type == 'checkbox' && inputs[i].checked) {
            if (val0 != null) {
                if (inputs[i].parentNode.getAttribute('Text') == val0) {
                    inputs[i].checked = false;
                }
            }
            if (val1 != null) {

                if (inputs[i].parentNode.getAttribute('Text') == val1) {
                    inputs[i].checked = false;
                }
            }
        }
    }

}


//Walidacja numeru telefonu
function ChangePhoneNumberValidator(tboxPhone, prefixes) {
    if (prefixes.value == "0048") {
        tboxPhone.setAttribute("class", "PanelPhoneNumber_TboxPhoneNumber integerdisablezeroonstart");
    } else {
        tboxPhone.setAttribute("class", "PanelPhoneNumber_TboxPhoneNumber integer0^999999999999999");
    }

}

function getValidClassName(target) {
    var retVal = "";
    var className = target.className;
    if (className && className.length > 0) {
        className = className.toLowerCase();
        var classArray = (className + " ").split(" ");
        for (i = 0; i < classArray.length; i++) {
            s = classArray[i].toLowerCase();
            if (s.indexOf("integer") == 0) retVal = s;
            if (s.indexOf("float") == 0) retVal = s;
            if (s.indexOf("buildyear") == 0) retVal = s;
            if (s.indexOf("nip") == 0) retVal = s;
            if (s.indexOf("date") == 0) retVal = s;
            if (s.indexOf("datetime") == 0) retVal = s;
            if (s.indexOf("time") == 0) retVal = s;
            if (s.indexOf("string") == 0) retVal = s;
            if (s.indexOf("strcontains") == 0) retVal = s;
            if (s.indexOf("strnotcontains") == 0) retVal = s;
            if (s.indexOf("inputemail") == 0) retVal = s;
            if (s.indexOf("integerdisablezeroonstart") == 0) retVal = s;
            if (s.indexOf("registrationdate") == 0) retVal = s;
        }
    }
    return retVal;
}

function getValidClassNames(target) {
    var retVal = new Array()
    var className = target.className;
    if (className && className.length > 0) {
        className = className.toLowerCase();
        var classArray = (className + " ").split(" ");
        for (i = 0; i < classArray.length; i++) {
            s = classArray[i].toLowerCase();
            if (s.indexOf("integer") == 0) retVal[retVal.length] = s;
            if (s.indexOf("float") == 0) retVal[retVal.length] = s;
            if (s.indexOf("buildyear") == 0) retVal[retVal.length] = s;
            if (s.indexOf("nip") == 0) retVal[retVal.length] = s;
            if (s.indexOf("date") == 0) retVal[retVal.length] = s;
            if (s.indexOf("datetime") == 0) retVal[retVal.length] = s;
            if (s.indexOf("time") == 0) retVal[retVal.length] = s;
            if (s.indexOf("string") == 0) retVal[retVal.length] = s;
            if (s.indexOf("strcontains") == 0) retVal[retVal.length] = s;
            if (s.indexOf("strnotcontains") == 0) retVal[retVal.length] = s;
            if (s.indexOf("inputemail") == 0) retVal[retVal.length] = s;
            if (s.indexOf("integerdisablezeroonstart") == 0) retVal[retVal.length] = s;
            if (s.indexOf("registrationdate") == 0) retVal[retVal.length] = s;
        }
    }
    return retVal;
}

function traderValidateForms(e) {
    var target
    if (document.all) {
        target = window.event.srcElement;
    } else {
        target = e.target;
    }
    var classNames = getValidClassNames(target);
    for (i = 0; i < classNames.length; i++) {
        traderValidateForms2(e, target, classNames[i]);
    }

}

function traderValidateForms2(e, target, className) {

    aRange = getRange(target);
    if (className.substr(0, 7) == "integer") {
        var tmpMaxSize = getTraderValidNumber(className);
        var value = target.value;
        if (value.length > 0) {
            value = getTraderValidNumber(value);
            if (!isNaN(parseInt(aRange.to))) {
                value = checkValue(value, aRange.to);
            }
            if (!isNaN(parseInt(value))) {
                if (target.value != parseInt(value)) {
                    target.value = parseInt(value);
                }
            } else { target.value = "" }
        }
    }



    if (className == "integerdisablezeroonstart") {

        var value = target.value;
        if (value == "0") {
            value = "";
        }
        target.value = value;

        var tmpMaxSize = 999999999;

        if (value.length > 0) {
            value = getTraderValidNumber(value);
            if (!isNaN(parseInt(tmpMaxSize))) {
                value = checkValue(value, tmpMaxSize);
            }
            if (!isNaN(parseInt(value))) {
                if (target.value != parseInt(value)) {
                    target.value = parseInt(value);
                }
            } else { target.value = "" }
        }

    }


    if (className.substr(0, 9) == "buildyear") {
        var value = target.value;
        value = checkBuildYear(value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 9) == "nip") {
        var value = target.value;
        value = checkNip(value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 3) == "nip") {
        var value = target.value;
        value = checkNip(value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 5) == "float") {
        var value = target.value;
        value = value.replace(",", ".");
        value = getTraderValidNumber(value);

        if (!isNaN(parseFloat(aRange.to))) {
            value = checkValue(value, aRange.to);
        }
        if (!isNaN(parseFloat(value))) {
            if (target.value != value) target.value = value;
        } else {
            target.value = "";
        }
    }

    if (className.substr(0, 4) == "date") {
        var value = target.value;
        value = checkTraderDateTimeMask(validTraderDate, value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 8) == "datetime") {
        var value = target.value;
        value = checkTraderDateTimeMask(validTraderDateTime, value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 4) == "time") {
        var value = target.value;
        value = checkTraderDateTimeMask(validTraderTime, value)
        if (target.value != value) target.value = value;
    }

    if (className.substr(0, 6) == "string") {
        var tmpMaxSize = getTraderValidNumber(className)
        if (!isNaN(parseInt(tmpMaxSize))) {
            var maxSize = parseInt(tmpMaxSize);
            var value = target.value;
            if (value.length > maxSize) target.value = value.substr(0, maxSize);
        }
    }

    if (className.substr(0, 11) == "strcontains") {
        var value = target.value;
        if (value.length > 0) {
            var allowedchars = className.substring(12, className.length - 1);
            if (allowedchars.length > 0) {
                for (i = 0; i < value.length; i++) {
                    if (allowedchars.indexOf(value.charAt(i).toLowerCase()) == -1) {
                        var chr = value.charAt(i);
                        value = value.replace(chr, '');
                    }
                }
                target.value = value;
            }
        }
    }

    if (className.substr(0, 14) == "strnotcontains") {

        var value = target.value;
        if (value.length > 0) {

            var allowedchars = className.substring(15, className.length - 1);
            if (allowedchars.length > 0) {
                for (i = 0; i < value.length; i++) {
                    if (allowedchars.indexOf(value.charAt(i).toLowerCase()) >= 0) {
                        var chr = value.charAt(i);
                        value = value.replace(chr, '');
                    }
                }
                target.value = value;
            }
        }
    }

    if (className.substr(0, 16) == "registrationdate") {
        var value = target.value;
        value = checkTraderRegistrationDateTimeMask(validTraderRegistrationDate, value);
        if (target.value != value) target.value = value;
    }


}

function getTraderValidNumber(value) {
    var c;
    var retval = "";
    for (var i = 0; i < value.length; i++) {
        c = value.substr(i, 1);
        if ("0123456789.".indexOf(c) >= 0) retval = retval.concat(c);
    }
    value = retval;
    retval = "";
    var commaexists = false;
    for (var i = (value.length - 1); i >= 0; i--) {
        c = value.substr(i, 1);
        if ((c != ".") || (!commaexists)) retval = c + "" + retval;
        if (c == ".") commaexists = true;
    }
    return retval;
}


function getTraderValidDateTimeChars(value) {
    var c;
    var retval = "";
    var goodstring = "0123456789-: "
    for (var i = 0; i < value.length; i++) {
        c = value.substr(i, 1);
        if (goodstring.indexOf(c) >= 0) retval = retval.concat(c);
    }
    return retval;
}

function checkYearValue(value) {
    retval = "";
    var rexpstr = "(^19[0123456789][0123456789]$)|(^200[0123456789]$)|(^201[012]$)|(^19[0123456789]$)|(^20[012]$)|(^19$)|(^20$)|(^1$)|(^2$)";
    var re = new RegExp(rexpstr);
    var matchar = value.match(re);
    if (matchar) {
        if (matchar.length > 0) { retval = matchar[0] } else { retval = "" };
    } else { retval = ""; }
    return retval;
}

function checkBuildYear(value) {
    var validchars = "0123456789";
    var digitvalue = "";
    var checkedvalue = "";
    var retval = "";
    var lastchecked = "";
    if (value.length > 0) {
        var orgval = value;
        for (i = 0; i < orgval.length; i++) {
            if (validchars.indexOf(orgval.substr(i, 1)) >= 0) {
                digitvalue += orgval.substr(i, 1);
                checkedvalue = checkYearValue(digitvalue);
                if (checkedvalue.length > 0) {
                    lastchecked = checkedvalue;
                    retval = digitvalue;
                }
            }
        }
    }
    else {
        retval = "";
    }
    return retval;
}

function checkNip(value) {
    var digits = "0123456789";
    var nipmask = "xxx-xxx-xx-xx";
    var retval = "";
    var tmpval = "";

    if (value && (value.length > 0)) {
        for (i = 0; i < value.length; i++) {
            if (digits.indexOf(value.substr(i, 1)) >= 0) {
                tmpval += value.substr(i, 1);
            }
        }
        if (tmpval.length > 10) {
            tmpval = tmpval.substr(0, 10);
        }

        if (tmpval.length > 3) {
            retval = tmpval.substr(0, 3) + '-';
            tmpval = tmpval.replace(tmpval.substr(0, 3), '');
            if (tmpval.length > 3) {
                retval += tmpval.substr(0, 3) + '-';
                tmpval = tmpval.replace(tmpval.substr(0, 3), '');
                if (tmpval.length > 2) {
                    retval += tmpval.substr(0, 2) + '-';
                    tmpval = tmpval.replace(tmpval.substr(0, 2), '');
                }

            }
        }
        retval += tmpval;

    }
    return retval;
}

function changeDTToMask(value) {
    var c;
    var retval = "";
    for (var i = 0; i < value.length; i++) {
        c = value.substr(i, 1);
        if ("0123456789".indexOf(c) >= 0) {
            retval = retval.concat("x")
        } else {
            retval = retval.concat(c)
        }
    }
    return retval;
}

function checkTraderRegistrationDateTimeMask(mask, value) {
    var tmpval = value;
    var validformat = /^\d{2}\-\d{4}$/
    if (!validformat.test(value)) {
        var retval = "";
        tmpvalmask = "";
        for (var i = 1; i <= tmpval.length; i++) {
            tmpvalmask = changeDTToMask(tmpval);
            if (mask.substr(0, i) == tmpvalmask.substr(0, i)) retval = tmpval.substr(0, i)
        }
    } else retval = value
    return retval;
}

function checkTraderDateTimeMask(mask, value) {
    var tmpval = value;
    var validformat = /^\d{4}\-\d{1,2}\-\d{1,2}$/
    if (!validformat.test(value)) {
        var retval = "";
        tmpvalmask = "";
        for (var i = 1; i <= tmpval.length; i++) {
            tmpvalmask = changeDTToMask(tmpval);
            if (mask.substr(0, i) == tmpvalmask.substr(0, i)) retval = tmpval.substr(0, i)
        }
    } else retval = value
    return retval;
}

function checkValue(value, maxvalue) {
    var retval = "";
    var c;
    if ((value.length > 0) && (!isNaN(parseFloat(value)))) {
        value = parseFloat(value);
        if (value > maxvalue) {
            for (var i = 0; i < value.toString().length; i++) {
                c = value.toString().substr(i, 1);
                if (parseFloat(retval.concat(c)) <= maxvalue) {
                    retval = retval.concat(c);
                }
            }
        } else {
            retval = value;
        }
    }
    return retval;
}

function getRange(obj) {
    if (document.getElementById("test")) document.getElementById("test").value = "aaa";
    var range = new CRange();
    if (obj) {
        var tmp = "";
        var rangestr = "";
        var cname = getValidClassName(obj)

        if (cname.length > 0) {
            cname = cname.replace("\t", " ");
            cname = cname.replace("\t", " ");
            cname = cname.replace("\t", " ");
            cnamear = (cname + " ").split(" ");
            for (i = 0; i < cnamear.length; i++) {
                tmp = (cnamear[i]).toLowerCase();
                if (tmp.length > 0) { if (tmp.indexOf("integer") == 0) rangestr = tmp.replace("integer", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("float") == 0) rangestr = tmp.replace("float", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("buildyear") == 0) rangestr = tmp.replace("buildyear", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("date") == 0) rangestr = tmp.replace("date", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("datetime") == 0) rangestr = tmp.replace("datetime", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("time") == 0) rangestr = tmp.replace("time", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("string") == 0) rangestr = tmp.replace("string", ""); }
                if (tmp.length > 0) { if (tmp.indexOf("inputemail") == 0) rangestr = tmp.replace("inputemail", ""); }
            }
        }
        if (rangestr.length > 0) {
            if (rangestr.indexOf("^") >= 0) {
                rangestrar = rangestr.split("^");
                range.from = rangestrar[0];
                range.to = rangestrar[1];
            } else {
                range.to = rangestr;
            }
        }
    }
    if (document.getElementById("test")) document.getElementById("test").value = range.toString();
    return range
}

function ValidateDateInput(input, inputname) {
    var validformat = /^\d{4}\-\d{1,2}\-\d{1,2}$/
    var returnval = false
    if (!validformat.test(input.value))
        alert("Nieprawidłowy format daty w polu " + inputname + ". Proszę wpisać w formacie RRRR-MM-DD")
    else {

        var monthfield = input.value.split("-")[1]
        var dayfield = input.value.split("-")[2]
        var yearfield = input.value.split("-")[0]
        var dayobj = new Date(yearfield, monthfield - 1, dayfield)

        if ((dayobj.getMonth() + 1 != monthfield) || (dayobj.getDate() != dayfield) || (dayobj.getFullYear() != yearfield))
            alert("Nieprawidłowa data w polu " + inputname)
        else
            returnval = true
    }
    return returnval;
}

function CRange(from, to) {
    if (from) {
        this.from = from;
    } else { this.from = "" }
    if (to) {
        this.to = to;
    } else { this.to = "" }
}
function CRangeToString() { return this.from + "^" + this.to; }
CRange.prototype.toString = CRangeToString;

function internalValidateForm(form) {
    var ret = true;
    if (form) {
        if (form.elements) {
            var elem;
            var aRange;
            var msg = "";
            for (i = 0; ((i < form.elements.length) && (msg == "")); i++) {
                elem = form.elements[i];
                if (elem) {
                    if (elem.type.toLowerCase() == "text") {
                        aRange = getRange(elem);
                        var basetype = "";
                        var cname = getValidClassName(elem);
                        if (cname.length > 0) {
                            cname = cname.replace("\t", " ");
                            cname = cname.replace("\t", " ");
                            cname = cname.replace("\t", " ");
                            cnamear = (cname + " ").split(" ");
                            for (i = 0; i < cnamear.length; i++) {
                                tmp = (cnamear[i]).toLowerCase();
                                if (tmp.length > 0) { if (tmp.indexOf("integer") == 0) basetype = "integer"; }
                                if (tmp.length > 0) { if (tmp.indexOf("float") == 0) basetype = "float"; }
                                if (tmp.length > 0) { if (tmp.indexOf("buildyear") == 0) basetype = "buildyear"; }
                                if (tmp.length > 0) { if (tmp.indexOf("date") == 0) basetype = "date"; }
                                if (tmp.length > 0) { if (tmp.indexOf("datetime") == 0) basetype = "datetime"; }
                                if (tmp.length > 0) { if (tmp.indexOf("time") == 0) basetype = "time"; }
                                if (tmp.length > 0) { if (tmp.indexOf("string") == 0) basetype = "string"; }
                                if (tmp.length > 0) { if (tmp.indexOf("inputemail") == 0) basetype = "inputemail"; }
                            }
                        }
                        if (basetype != "") {
                            if ((aRange.toString()).length > 1) {
                                if (aRange.from.length > 0) {
                                    if ((";integer;float;buildyear;").indexOf(";" + basetype + ";") > 0) {
                                        if (parseFloat(elem.value) < parseFloat(aRange.from)) msg += "wartość tego pola musi być większa od: " + aRange.from + "\n";
                                    }

                                    if ((";date;datetime;time;").indexOf(";" + basetype + ";") > 0) {
                                        if (elem.value < aRange.from) msg += "wartość tego pola musi być większa od: " + aRange.from + "\n";
                                    }

                                    if ((";string;inputemail;").indexOf(";" + basetype + ";") > 0) {
                                        if (elem.value.length < aRange.from) msg += "ilość znaków tego pola musi być większa od: " + aRange.from + "\n";
                                    }
                                }
                                if (aRange.to.length > 0) {
                                    if ((";integer;float;buildyear;").indexOf(";" + basetype + ";") > 0) {
                                        if (parseFloat(elem.value) > parseFloat(aRange.to)) msg += "wartość tego pola musi być mniejsza niż: " + aRange.to + "\n";
                                    }

                                    if ((";date;datetime;time;").indexOf(";" + basetype + ";") > 0) {
                                        if (elem.value > aRange.to) msg += "wartość tego pola musi być mniejsza niż: " + aRange.to + "\n";
                                    }

                                    if ((";string;inputemail;").indexOf(";" + basetype + ";") > 0) {
                                        if (elem.value.length > aRange.to) msg += "ilość znaków tego pola musi być mniejsza niż: " + aRange.to + "\n";
                                    }
                                }
                            }
                        }
                    }
                }
            }
            if (msg != "") {
                ret = false;
                try {
                    showAlertAdv("Błąd formularza", msg, "btn_fadeefect|btn_autohide|btn_timerhide", elem, "", "");
                } catch (e) { ; }
            }
        }
    }
    return ret;
}
	

