// *** JSF Check
// *** (c) feel by fish 
// *** http://www.imagen.pl
// *** 2000.10.04
// *** GNU GPL distribution

// -> walidacja lancuchow
// na bazie wyrazen regularnych

var reWhitespace = /^\s+$/;
var reInteger = /^\d+$/;
var reSignedInteger = /^(\+|\-)?\d+$/;
var reFloat = /^((\d+(\.\d*)?)|((\d*\.)?\d+))$/;
var reSignedFloat = /^(((\+|\-)?\d+(\.\d*)?)|((\+|\-)?(\d*\.)?\d+))$/;
var reAlphabetic = /^[a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬ŻąśźĄŚŹ]+$/;
var reAlphanumeric = /^[a-zA-Z0-9±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬ŻąśźĄŚŹ]+$/;
var reAlphanumericNoPL = /^[a-zA-Z0-9]+$/;
var rePassword = /^[a-zA-Z0-9!@#$%^&*()\[\],.;:]+$/;
var reEmail = /\b(^(\S+@)([a-zA-Z0-9\-]+\.)+(com|net|edu|mil|gov|org|int|([a-zA-Z]{2}))$)\b/gi;
var reNazwisko = /^([a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬ŻąśźĄŚŹ']+[ \-]{0,1})+[a-zA-Z±ćęłńó¶ĽżˇĆĘŁŃÓ¦¬ŻąśźĄŚŹ']+$/gi;
var reTelefon = /^[\(\+]{0,1}([0-9 ]+[\/\-\(\)]{0,1})+[0-9]$/;
var reKod = /^\d{2}\-\d{3}$/;
var reData = /^\d{2}\-\D{3}\-\d{4}$/;


function isEmpty(s) {return ((s == null) || (s.length == 0))}
function isWhitespace(s) {return (isEmpty(s) || reWhitespace.test(s));}
function isInteger(s) {return reInteger.test(s);}
function isSignedInteger(s) {return reSignedInteger.test(s);}
function isFloat(s) {return reFloat.test(s);}
function isSignedFloat(s) {return reSignedFloat.test(s);}
function isAlphabetic(s) {return reAlphabetic.test(s);}
function isAlphanumeric(s) {return reAlphanumeric.test(s);}
function isAlphanumericNoPL(s) {return reAlphanumericNoPL.test(s);}
function isPassword(s) {return rePassword.test(s);}
function isEmail(s) {return reEmail.test(s);}
function isNazwisko(s) {return reNazwisko.test(s);}
function isTelefon(s) {return reTelefon.test(s);}
function isKod(s) {return reKod.test(s);}
function isData(s) {return reData.test(s);}

function isChecked(obj) {
	multi = true;
	if (obj.type == 'radio' || obj.type == 'checkbox') multi = false;
	
	var checked = false;
	if (multi) {
	   	for (var i = 0; i < obj.length; i++)
	   		if (obj[i].checked) {checked = true; break}
	}
	else checked = obj.checked;
	return checked;
}

function validrequired(fieldobj,errorMsg) {
	var result = true;	
	
if (fieldobj) {
	if (!fieldobj.length) { // only one element 
		if (fieldobj.type =='text' || fieldobj.type == 'textarea' || fieldobj.type == 'password' || fieldobj.type == 'file') {
			removeSpace(fieldobj);		
			if (fieldobj.value == "") {
				showpoperror(fieldobj,errorMsg);					
				fieldobj.focus();
				result = false;
			}
		}	
		//select value - select seems to have a length attribute as determined by options so it would normally go to else block
		if (fieldobj.type.indexOf('select') != -1) {													
			var selx=fieldobj.options.selectedIndex;
			var selvalue=fieldobj.options[selx].value;			
			if (selvalue=="") {				
				showpoperror(fieldobj,errorMsg);					
				fieldobj.focus();
				result = false;
			}		
		}
	    if (fieldobj.type == 'radio' || fieldobj.type == 'checkbox') {
			var checked = fieldobj.checked;
			if (!checked) {
				showpoperror(fieldobj,errorMsg);					
				fieldobj.focus();
				result =  false;
			 }
		}
	 }			
	 
	else {  
		if ((fieldobj.type) && fieldobj.type.indexOf('select') != -1) {																	
			var selx=fieldobj.options.selectedIndex;
			var selvalue=fieldobj.options[selx].value;			
			if (selvalue=="") {				
				showpoperror(fieldobj,errorMsg);					
				fieldobj.focus();
				result = false;
			}		
		}	
		else if (fieldobj[0].type == 'radio' || fieldobj[0].type == 'checkbox') {								
		      var ischecked = false;
			  for (var r = 0; r < fieldobj.length; r++) {				  	
		          if (fieldobj[r].checked==true) {
				    ischecked=true;
		            break;
				  }
			   }	  	
			   
		      if (!ischecked) {
				showpoperror(fieldobj[0],errorMsg);					
	        	result =  false;
		      }
		}
   }	
  }
 return result;	
}


function validEmail(fieldobj,errorMsg) {
	if (fieldobj) {
		removeSpace(fieldobj);
		if (fieldobj.value!="") { 
			if (!isEmailAddr(fieldobj.value)) {
				showpoperror(fieldobj,errorMsg);					
				fieldobj.focus();
				return false;
			}   
		}
	}	
	return true;
}

function isEmailAddr(email) {
	 var emailFilter=/^.+@.+\.(.{2,3}|aero|coop|info|museum|name|travel)$/;	 
	 return emailFilter.test(email);	 
}

function removeSpace(obj) {
	if ((!obj.length) && (obj.type == 'text' || obj.type == 'textarea' || obj.type == 'password')) {
		var origStr=obj.value;
		while (origStr.substring(0,1)==" ") {
		    var lent=origStr.length;
			if (lent == 0)
				break;
			origStr=origStr.substring(1,lent);
			}	
		lent=origStr.length;	
	    if (lent !=0) {
			while (origStr.substring(lent-1,lent)==" ") {
				if (lent == 0)
					break;
				origStr=origStr.substring(0,lent-1);
				var lent=origStr.length;
			}
		}	 
		obj.value=origStr;		
	}
 }

function validAlphanumeric(fieldobj,errorMsg) {
	 var strpattern=/^[0-9a-zA-Z]+$/;
	 if (fieldobj) {
	 	if ((!fieldobj.length) && (fieldobj.type =='text' || fieldobj.type == 'textarea' || 
			     fieldobj.type == 'password' || fieldobj.type == 'file')) {				 
		 	 removeSpace(fieldobj);
			 if (fieldobj.value!="") {
				 boolresult=strpattern.test(fieldobj.value);
				if (!boolresult)	{
					showpoperror(fieldobj,errorMsg);	
					fieldobj.focus();		
					return false;
				}
			 }			
		}	 
	 }	
	return true;	
}


function validNum(fieldobj,errorMsg) { 	
	if (fieldobj) {
		if ((!fieldobj.length) && (fieldobj.type =='text' || fieldobj.type == 'textarea' || 
			     fieldobj.type == 'password')) {
			removeSpace(fieldobj);
			if (fieldobj.value!="") { 		
				if (isNaN(fieldobj.value)) {
					showpoperror(fieldobj,errorMsg);				
					fieldobj.focus();		
					return false;
				}
			}
		}			
	}	
	return true;
}


