	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 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) {
          // tboxPhone = document.getElementById("<%=tboxPhoneNumber.ClientID %>")
           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("inputemail")==0) retVal  = s;
				if (s.indexOf("integerdisablezeroonstart") == 0) retVal = s;
				if (s.indexOf("registrationdate") == 0) retVal = s;
			}
		}
		return retVal;
	}
	
	function traderValidateForms(e) {
		var target
			if (document.all){
				target = window.event.srcElement;
			}else{
				target = e.target
			};
			
			var className = getValidClassName(target);
			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, 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[0]$)|(^19[0123456789]$)|(^20[01]$)|(^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;
	}