
function fps_required_isNumeric(sText)
{
   var ValidChars = "0123456789.-";
   var IsNumber=true;
   var Char;

   for (var j = 0; j < sText.length && IsNumber == true; j++)
   {
      Char = sText.charAt(j);
      if (ValidChars.indexOf(Char) == -1)
         {
         IsNumber = false;
         }
   }
   return IsNumber;
}

function fps_check_required(obj)
{
    if(obj)
		var x=obj.getElementsByTagName("select");
	else
		var x=document.getElementsByTagName("select");

  	for(var i=0;i<x.length;i++)
  	{
		var el = x[i];
  		var v = el.getAttributeNode("valid");
		if(v)
  		{
			if(v.nodeValue=="0")
			{
				return false;
			}
  		}
	}
	if(obj)
		var x=obj.getElementsByTagName("input");
	else
		var x=document.getElementsByTagName("input");

  	for(var i=0;i<x.length;i++)
  	{
		var el = x[i];
  		var v = el.getAttributeNode("valid");
		if(v)
  		{
			if(v.nodeValue=="0")
			{
				return false;
			}
  		}
	}
	if(obj)
		x=obj.getElementsByTagName("textarea");
	else
		x=document.getElementsByTagName("textarea");
  	for(i=0;i<x.length;i++)
  	{
		el = x[i];
  		v = el.getAttributeNode("valid");
  		if(v)
  		{
			if(v.nodeValue=="0")
			{
				return false;
			}
  		}
	}
	return true;
}


function fps_required(invalid_color,original_color)
{
	var i;


	//select -k keresése
    var ta=document.getElementsByTagName("select");
  	for(i=0;i<ta.length;i++)
  	{
		var el = ta[i];
		var myfield = el.getAttributeNode("class");
		if(myfield)
		{
			var str = myfield.nodeValue;
			var splitted = str.split(" ");
			splitted = splitted[0].split("_");
			var rmode = splitted[0];
		}
		else continue;
		if(rmode=="required")
  		{
  			//elmentjük a hibás háttérszínt
        	var invalidbgcolor=document.createAttribute("invalidbgcolor");
  			if(invalid_color)
  			{
				invalidbgcolor.nodeValue=invalid_color;
			}
			else
			{
				invalidbgcolor.nodeValue="#f4c0ac";
			}
			el.setAttributeNode(invalidbgcolor);
  			//elmentjük az eredeti háttérszínt
  			if(!el.getAttributeNode("origbgcolor"))
  			{
        		origbgcolor=document.createAttribute("origbgcolor");
				origbgcolor.nodeValue = (original_color) ? original_color : '#F5F5F5';
				el.setAttributeNode(origbgcolor);
			}
  			//eltároljuk hogy érvényes-e a mező
        	validfield=document.createAttribute("valid");
			validfield.nodeValue="1";
			el.setAttributeNode(validfield);

			eventSELECT = function(target){
				origbgcolor = target.getAttributeNode("origbgcolor");
				invalidbgcolor = target.getAttributeNode("invalidbgcolor");
				validfield = target.getAttributeNode('valid');
				if(target.selectedIndex==0){
					target.style.background = invalidbgcolor.value;
					validfield.nodeValue = '0';
				}else{
					target.style.background = origbgcolor.value;
					validfield.nodeValue = '1';
				}
			}
			eventSELECT(el);
            var myonchange = el.getAttributeNode("onchange");
			if(myonchange)
			{
				myeval = myonchange.value;
        		oldonchange=document.createAttribute("oldonchange");
        		oldonchange.nodeValue = myeval;
				el.setAttributeNode(oldonchange);
			}

			el.onchange = function(){
				eventSELECT(this);
            	var oldonchange = this.getAttributeNode("oldonchange");
				if(oldonchange)
				{
					eval(oldonchange.value);
				}
			}

		}
	}

	//textarea -k keresése
    var ta=document.getElementsByTagName("textarea");
  	for(i=0;i<ta.length;i++)
  	{
		var el = ta[i];
		var myfield = el.getAttributeNode("class");
		if(myfield)
		{
			var str = myfield.nodeValue;
			var splitted = str.split(" ");
			splitted = splitted[0].split("_");
			var rmode = splitted[0];
			var rtype = splitted[1];
			var rparam1 = splitted[2];
			var rparam2 = splitted[3];
		}
		else continue;
		if(rmode=="required"||rmode=="optional")
  		{
  			//elmentjük a hibás háttérszínt
        	var invalidbgcolor=document.createAttribute("invalidbgcolor");
  			if(invalid_color)
  			{
				invalidbgcolor.nodeValue=invalid_color;
			}
			else
			{
				invalidbgcolor.nodeValue="#f4c0ac";
			}
			el.setAttributeNode(invalidbgcolor);
  			//elmentjük az eredeti háttérszínt
  			if(!el.getAttributeNode("origbgcolor"))
  			{
        		origbgcolor=document.createAttribute("origbgcolor");
				origbgcolor.nodeValue = (original_color) ? original_color : '#F5F5F5';
				el.setAttributeNode(origbgcolor);
			}
  			//eltároljuk hogy érvényes-e a mező
        	validfield=document.createAttribute("valid");
			validfield.nodeValue="1";
			el.setAttributeNode(validfield);

			//kiértékelés
  			switch(rtype)
  			{
  				default:
  				case "text":
  					// első kiértékelés
					if(el.value.length>0)
					{
						el.style.background=origbgcolor.nodeValue;
					}
					else
					{
						el.style.background=invalidbgcolor.nodeValue;
						validfield.nodeValue="0";
					}

  					// többi kiértékelés
					el.onkeyup = function()
					{
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						validfield = this.getAttributeNode("valid");
						if(this.value.length>0)
						{
							this.style.background=origbgcolor.nodeValue;
							validfield.nodeValue="1";
						}
						else
						{
							this.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
				break;
			}
		}
	}

	//input mezők keresése
    var x=document.getElementsByTagName("input");
  	for(i=0;i<x.length;i++)
  	{
		el = x[i];
		myfield = el.getAttributeNode("class");
		if(myfield)
		{
			str = myfield.nodeValue;
			var splitted = str.split(" ");
			splitted = splitted[0].split("_");
			rmode = splitted[0];
			rtype = splitted[1];
			rparam1 = splitted[2];
			rparam2 = splitted[3];
		}
		else continue;
		if(rmode=="required"||rmode=="optional")
  		{
  			//elmentjük a hibás háttérszínt
        	invalidbgcolor=document.createAttribute("invalidbgcolor");
  			if(invalid_color)
  			{
				invalidbgcolor.nodeValue=invalid_color;
			}
			else
			{
				invalidbgcolor.nodeValue="#f4c0ac";
			}
			el.setAttributeNode(invalidbgcolor);
  			//elmentjük az eredeti háttérszínt
  			if(!el.getAttributeNode("origbgcolor"))
  			{
        		origbgcolor=document.createAttribute("origbgcolor");
				origbgcolor.nodeValue = (original_color) ? original_color : '#F5F5F5';
				el.setAttributeNode(origbgcolor);
			}
  			//eltároljuk hogy érvényes-e a mező
        	validfield=document.createAttribute("valid");
			validfield.nodeValue="1";
			el.setAttributeNode(validfield);

			//mezők kiértékelése
  			switch(rtype)
  			{
  				default:
  				case "text":
  					// első kiértékelés
					if(el.value.length>0)
					{
						el.style.background=origbgcolor.nodeValue;
					}
					else
					{
						el.style.background=invalidbgcolor.nodeValue;
						validfield.nodeValue="0";
					}

  					// többi kiértékelés
					el.onkeyup = function()
					{
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						validfield = this.getAttributeNode("valid");
						if(this.value.length>0)
						{
							this.style.background=origbgcolor.nodeValue;
							validfield.nodeValue="1";
						}
						else
						{
							this.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
				break;
				case "email":
  					// első kiértékelés
					if(el.value.match(/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/)||(rmode=="optional"&&el.value.length==0))
					{
						el.style.background=origbgcolor.nodeValue;
					}
					else
					{
						el.style.background=invalidbgcolor.nodeValue;
						validfield.nodeValue="0";
					}

  					// többi kiértékelés
					el.onkeyup = function()
					{
						myfield = this.getAttributeNode("class");
						if(myfield)
						{
							str = myfield.nodeValue;
							var splitted = str.split(" ");
							splitted = splitted[0].split("_");
							rmode = splitted[0];
						}
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						validfield = this.getAttributeNode("valid");
						if(this.value.match(/^[a-z0-9_\-]+(\.[_a-z0-9\-]+)*@([_a-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel)$/)||(rmode=="optional"&&this.value.length==0))
						{
							this.style.background=origbgcolor.nodeValue;
							validfield.nodeValue="1";
						}
						else
						{
							this.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
				break;
				case "seourl":
  					// első kiértékelés
  					switch(rparam1)
  					{
  						case "long":
							if(el.value.match(/^([a-z0-9_\-])*([a-z0-9_\-]|([a-z0-9_\-])+\/)*([a-z0-9_\-])+$/)||((rmode=="optional")&&(el.value.length==0)))
							{
								el.style.background=origbgcolor.nodeValue;
							}
							else
							{
								el.style.background=invalidbgcolor.nodeValue;
								validfield.nodeValue="0";
							}
							break;
  						case "wc":
							if(el.value.match(/^(\*\/)*([a-z0-9_\-]|([a-z0-9_\-])+\/)*([a-z0-9_\-])+$/)||((rmode=="optional")&&(el.value.length==0)))
							{
								el.style.background=origbgcolor.nodeValue;
							}
							else
							{
								el.style.background=invalidbgcolor.nodeValue;
								validfield.nodeValue="0";
							}
							break;
  						default:
							if(el.value.match(/^([a-z0-9_\-])+$/)||((rmode=="optional")&&(el.value.length==0)))
							{
								el.style.background=origbgcolor.nodeValue;
							}
							else
							{
								el.style.background=invalidbgcolor.nodeValue;
								validfield.nodeValue="0";
							}
							break;

					}

  					// többi kiértékelés
					el.onkeyup = function()
					{
						myfield = this.getAttributeNode("class");
						if(myfield)
						{
							str = myfield.nodeValue;
							var splitted = str.split(" ");
							splitted = splitted[0].split("_");
							rmode = splitted[0];
							rparam1 = splitted[2];
						}
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						validfield = this.getAttributeNode("valid");
						switch (rparam1)
						{
							case "long":
								if(this.value.match(/^([a-z0-9_\-])*([a-z0-9_\-]|([a-z0-9_\-])+\/)*([a-z0-9_\-])+$/)||((rmode=="optional")&&(this.value.length==0)))
								{
									this.style.background=origbgcolor.nodeValue;
									validfield.nodeValue="1";
								}
								else
								{
									this.style.background=invalidbgcolor.nodeValue;
									validfield.nodeValue="0";
								}
								break;
							case "wc":
								if(this.value.match(/^(\*\/)*([a-z0-9_\-]|([a-z0-9_\-])+\/)*([a-z0-9_\-])+$/)||((rmode=="optional")&&(this.value.length==0)))
								{
									this.style.background=origbgcolor.nodeValue;
									validfield.nodeValue="1";
								}
								else
								{
									this.style.background=invalidbgcolor.nodeValue;
									validfield.nodeValue="0";
								}
								break;
							default:
								if(this.value.match(/^([a-z0-9_\-])+$/)||((rmode=="optional")&&(this.value.length==0)))
								{
									this.style.background=origbgcolor.nodeValue;
									validfield.nodeValue="1";
								}
								else
								{
									this.style.background=invalidbgcolor.nodeValue;
									validfield.nodeValue="0";
								}
								break;
						}
					}
				break;
				case "url":
  					// első kiértékelés
					var point = el.value.indexOf("//");
					if(point==-1) point=0;
					else point=point+2;
  					protocol = el.value.substr(0,point);
  					protocolf = protocol.substr(0,1);
  					rest = el.value.substr(point);
  					if(protocol=="http://") validurl=true;
  					else if(protocol=="https://") validurl=true;
  					else if(protocol=="ftp://") validurl=true;
  					else if(protocol=="sftp://") validurl=true;
  					else validurl=false;
  					if(!validurl)
  					{
  						if(rmode=="required")
  							el.value="http://"+rest;
					}
					if((el.value.match(/^(http|https|sftp|ftp){1}[:][\/][\/]([öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel){1}([\/]+[öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\+\-]+)*[\/]*(\.[öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\+\-]+)*$/))||((rmode=="optional")&&(el.value.length==0)))
					{
						el.style.background=origbgcolor.nodeValue;
					}
					else
					{
						el.style.background=invalidbgcolor.nodeValue;
						validfield.nodeValue="0";
					}

  					// többi kiértékelés
					el.onkeyup = function()
					{
						if (typeof event != "undefined") var ch = event.keyCode; else ch = 0;
						myfield = this.getAttributeNode("class");
						if(myfield)
						{
							str = myfield.nodeValue;
							var splitted = str.split(" ");
							splitted = splitted[0].split("_");
							rmode = splitted[0];
						}
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						validfield = this.getAttributeNode("valid");
						point = this.value.indexOf("//");
						if(point==-1) point=0;
						else point=point+2;
  						protocol = this.value.substr(0,point);
						protocolf = protocol.substr(0,1);
  						rest = this.value.substr(point);
  						if(ch==190) //ez egy pont
  						{
  							if(protocol=="http://") validurl=true;
  							else if(protocol=="https://") validurl=true;
  							else if(protocol=="ftp://") validurl=true;
  							else if(protocol=="sftp://") validurl=true;
  							else validurl=false;
  							if(!validurl)
  							{
  								this.value="http://"+rest;
							}
						}

						if((this.value.match(/^(http|https|sftp|ftp){1}[:][\/][\/]([öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\-]+\.)+([a-z]{2}|aero|arpa|biz|com|coop|edu|gov|info|int|jobs|mil|museum|name|nato|net|org|pro|travel){1}([\/]+[öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\+\-]+)*[\/]*(\.[öüóúőűáéíŰÁÉÚŐÓÜÖÍ_A-Za-z0-9\+\-]+)*$/))||((rmode=="optional")&&(this.value.length==0)))
						{
							this.style.background=origbgcolor.nodeValue;
							validfield.nodeValue="1";
						}
						else
						{
							this.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
				break;
				case "password":
					// első kiértékelés
  					if(rparam1)
  					{
  						other = document.getElementById(rparam1);
  						if((other.value==el.value&&el.value.length>0&&rmode=="required")||(other.value==el.value&&rmode=="optional"))
						{
							el.style.background=origbgcolor.nodeValue;
							other.style.background=origbgcolor.nodeValue;
							validfield.nodeValue="1";
						}
						else
						{
							if(!other.getAttributeNode("origbgcolor"))
							{
                               	origbgcolor2=document.createAttribute("origbgcolor");
								origbgcolor2.nodeValue=origbgcolor.nodeValue;
                   				other.setAttributeNode(origbgcolor2);
							}
							el.style.background=invalidbgcolor.nodeValue;
							other.style.background=invalidbgcolor.nodeValue;
							alma = el.getAttributeNode("origbgcolor");
							validfield.nodeValue="0";
						}
					}

					// többi kiértékelés
					el.onkeyup = function()
					{
						myfield = this.getAttributeNode("class");
						if(myfield)
						{
							str = myfield.nodeValue;
							var splitted = str.split(" ");
							splitted = splitted[0].split("_");
							rmode = splitted[0];
							rtype = splitted[1];
							rparam1 = splitted[2];
							rparam2 = splitted[3];
						}
						validfield = this.getAttributeNode("valid");
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
  						if(rparam1)
  						{
  							other = document.getElementById(rparam1);
							validfield2 = other.getAttributeNode("valid");
  							if(((other.value==this.value)&&(this.value.length>0)&&(rmode=="required"))||(other.value==this.value&&rmode=="optional"))
							{
								this.style.background=origbgcolor.nodeValue;
								other.style.background=origbgcolor.nodeValue;
								validfield.nodeValue="1";
								validfield2.nodeValue="1";
							}
							else
							{
								this.style.background=invalidbgcolor.nodeValue;
								other.style.background=invalidbgcolor.nodeValue;
								validfield.nodeValue="0";
								validfield2.nodeValue="0";
							}
						}
					}
				break;
				case "numeric":
					// első kiértékelés
					if(fps_required_isNumeric(el.value)&&(rmode=="required"&&el.value.length>0||rmode=="optional"))
					{
						valid=true;
						if(el.value.length>0)
						{
							min = rparam1;
							if(min)
							{
						 		if(parseFloat(el.value)>=parseFloat(min)) valid=true;
						 		else valid=false;
							}
							max = rparam2;
							if(max&&valid)
							{
						 		if(parseFloat(el.value)<=parseFloat(max)) valid=true;
						 		else valid=false;
							}
						}
						if(valid) el.style.background=origbgcolor.nodeValue;
						else
						{
							el.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
					else
					{
						el.style.background=invalidbgcolor.nodeValue;
						validfield.nodeValue="0";
					}

					// többi kiértékelés
					el.onkeyup = function()
					{
						if (typeof event != "undefined") var ch = event.keyCode; else ch = 0;

						myfield = this.getAttributeNode("class");
						if(myfield)
						{
							str = myfield.nodeValue;
							var splitted = str.split(" ");
							splitted = splitted[0].split("_");
							rmode = splitted[0];
							rtype = splitted[1];
							rparam1 = splitted[2];
							rparam2 = splitted[3];
						}
						validfield = this.getAttributeNode("valid");
						origbgcolor = this.getAttributeNode("origbgcolor");
						invalidbgcolor = this.getAttributeNode("invalidbgcolor");
						num = parseFloat(this.value)
//						if(num||num==0)	this.value=num;	//todo float
	//					else this.value="";
						if((fps_required_isNumeric(this.value))&&(rmode=="required"&&this.value.length>0||rmode=="optional"))
						{
							valid=true;
							if(this.value.length>0)
							{
						 		min = rparam1;
						 		if(min)
						 		{
						 			if(parseFloat(this.value)>=parseFloat(rparam1)) valid=true;
						 			else valid=false;
						 		}
						 		max = rparam2;
						 		if(max&&valid)
						 		{
						 			if(parseFloat(this.value)<=parseFloat(rparam2)) valid=true;
						 			else valid=false;
						 		}
							}
						 	if(valid)
						 	{
						 		this.style.background=origbgcolor.nodeValue;
                                validfield.nodeValue="1";
							}
						 	else
						 	{
						 		this.style.background=invalidbgcolor.nodeValue;
           						validfield.nodeValue="0";
							}
						}
						else
						{
							this.style.background=invalidbgcolor.nodeValue;
							validfield.nodeValue="0";
						}
					}
				break;
			}
  		}
	}
}