//======================================================================
//	Copyright (c) 2000 Arch Ltd.
//	ALL RIGHTS RESERVED
//
//	FILE NAME:		form.js
//	REVISION:			1.00.01 Release
//	DESCRIPTION:	Library include file for field validation && 
//								enabling/disabling process in the WSS forms
//	AUTHOR:				(c) Arch Ltd., Alexander Bazylev, Marina Bolbas 
//	HISTORY:
//
//=======================================================================

//=======================================================================
//	DATA VALIDATION
//=======================================================================

// with Message box
	function isEmpty(obj) {
		
		var len = obj.value.length;
		var fl_empty = true;
		
		for(i = 0; i < len; i++) {
			if (obj.value.substring(i,i + 1) != " ")
				fl_empty = false;
			if (!fl_empty)
				break;
		}
		
		if (fl_empty) {
			obj.focus();
			obj.select();
			alert("Please, fills all mandatory fields!");
			return true;
		}

		return false;

	}
        function isNotEmpty(obj) {
		
		var len = obj.value.length;
		var fl_empty = true;
		
		for(i = 0; i < len; i++) {
			if (obj.value.substring(i,i + 1) != " ")
				fl_empty = false;
			if (!fl_empty)
				break;
		}
		
		if (fl_empty) {
			obj.focus();
			alert("Please, fills all mandatory fields!");
			return false;
		}

		return true;

	}

//--------------------------------------------------------------------

// without Message box
	function isEmpty1(obj) {
		var len = obj.value.length;
		var fl_empty = true;
		
		for(i=0;i<len;i++) {
			if ( obj.value.substring(i,i + 1) != " " ) 
				fl_empty = false;
			if ( !fl_empty )
				break;
		}
		
		if ( fl_empty )
			return true;
	
		return false;

	}

//--------------------------------------------------------------------

	function isSelected(obj) {
		if ( obj.value == "" || obj.selectedIndex == 0 ) {
			obj.focus();
			alert("Please, select an item in the list!");
			return false;
		}
		else
			return true;
	}

//-----------------------------------------------------------------

	function isChecked(obj) {

		var ok = false;
			if ( obj.checked )
				return true;
			else {
				alert("The field must be selected!");
				obj.focus();
				return false;
			}
	}

//--------------------------------------------------------------------

	function isPhone(obj) {
	
		var len = obj.value.length;
		var str = "`~!@=$%^&*_|\\}{[]:;\"'<,>?/";
		var char_tmp ="";
		
		for(i=0;i<len;i++) {
			char_tmp = obj.value.substring(i,i + 1);  
			if ( str.indexOf(char_tmp) != -1 )   {
				obj.focus();
				obj.select();
				alert("Symbol: " + char_tmp + " is not permitted for phone number!");
				return false;
			}
		}
		
		return true;


	}

//--------------------------------------------------------------------

	function isEmail(obj) {
		
		var len = obj.value.length;
		var str = " ~!#='`/$^&*()+\\|?><:;,\"{}[]";
		var char_tmp ="";
		
		for(i=0;i<len;i++) {
			char_tmp = obj.value.substring(i,i + 1);  
			if ( str.indexOf(char_tmp) != -1 )   {
				obj.focus();
				obj.select();
				alert("Symbol: " + char_tmp + " is not permitted for e-mail address!");
				return false;
			}
		}
		
			if (obj.value.indexOf("@", 0)>=0)
	 			return true;
			else {
				obj.focus();
				obj.select();
				alert("Entry must contain @ symbol as a part of valid e-mail address!");
				return false;
			}

		return true;
			
	}


//-------------------------------------------------------------------



function isEmailWG (obj) {

var emailStr=obj.value;
var checkTLD=1;
var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/i;
var emailPat=/^(.+)@(.+)$/;
var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";
var validChars="\[^\\s" + specialChars + "\]";
var quotedUser="(\"[^\"]*\")";
var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;
var atom=validChars + '+';
var word="(" + atom + "|" + quotedUser + ")";
var userPat=new RegExp("^" + word + "(\\." + word + ")*$");
var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");
var matchArray=emailStr.match(emailPat);

if (matchArray==null) {
 obj.focus();
 obj.select();
 alert("Email address seems incorrect (check @ and .'s)");
 return false;
}
var user=matchArray[1];
var domain=matchArray[2];

for (i=0; i<user.length; i++) {
 if (user.charCodeAt(i)>127) {
  obj.focus();
  obj.select();

  alert("Ths username contains invalid characters.");
  return false;
 }
}
for (i=0; i<domain.length; i++) {
 if (domain.charCodeAt(i)>127) {
  obj.focus();
  obj.select();
  alert("Ths domain name contains invalid characters.");
  return false;
 }
}

if (user.match(userPat)==null) {
 obj.focus();
 obj.select();
 alert("The username doesn't seem to be valid.");
 return false;
}

var IPArray=domain.match(ipDomainPat);
if (IPArray!=null) {
 for (var i=1;i<=4;i++) {
  if (IPArray[i]>255) {
   obj.focus();
   obj.select();
   alert("Destination IP address is invalid!");
   return false;
  }
 }
 return true;
}

 
var atomPat=new RegExp("^" + atom + "$");
var domArr=domain.split(".");
var len=domArr.length;
for (i=0;i<len;i++) {
if (domArr[i].search(atomPat)==-1) {
  obj.focus();
  obj.select();
  alert("The domain name does not seem to be valid.");
  return false;
 }
}


if (checkTLD && domArr[domArr.length-1].length!=2 && 
domArr[domArr.length-1].search(knownDomsPat)==-1) {
 obj.focus();
 obj.select();
 alert("The address must end in a well-known domain or two letter " + "country.");
 return false;
}


if (len<2) {
 obj.focus();
 obj.select();
 alert("This address is missing a hostname!");
 return false;
}

// If we've gotten this far, everything's valid!
return true;
}


//-------------------------------------------------------------------



	function isURL(obj) {

		var len = obj.value.length;
		var str = " !$%^*()\\|><;,\"{}[]";
		var char_tmp ="";
		
		for(i=0;i<len;i++) {
			char_tmp = obj.value.substring(i,i + 1);  
			if ( str.indexOf(char_tmp) != -1 )   {
				obj.focus();
				obj.select();
				alert("Symbol: " + char_tmp + " is not permitted for URL address!");
				return false;
			}
		}

		if (obj.value.indexOf("://", 0)>=0)
 			return true;
		else {
			obj.focus();
			obj.select();
			alert("Entry must contain :// symbols as a part of valid URL address!");
			return false;
		}
		
		return true;
	}

//-----------------------------------------------------------------

	function isRadioEmpty(obj) {

		var ok = false;
		var len = obj.length;
		for (i = 0; i < len; i++) {
			if (obj[i].checked) 
				{ ok= true; }	
		}
		if (!ok) {
			obj[0].focus();
			alert("One option must be selected in the group!");
			return true;
		}
		return false;

	}

//-----------------------------------------------------------------

	function isNumber(obj) {
	
		var len = obj.value.length;
		var str = "0123456789";
		var char_tmp ="";
		var count=0;
	
		for(i=0;i<len;i++) {
			char_tmp = obj.value.substring(i,i + 1);  
			if ( str.indexOf(char_tmp) != -1 )   
				count++;
		}
		
		if ( count == len )
			return true;
		else {
			obj.focus();
			obj.select();
			alert("Field must be numeric!");
			return false;
		}
	}

//-----------------------------------------------------------------

	function isNumberAndDot(obj) {
	
		var len = obj.value.length;
		var str = "0123456789.";
		var char_tmp ="";
		var count=0;
	
		for(i=0;i<len;i++) {
			char_tmp = obj.value.substring(i,i + 1);  
			if ( str.indexOf(char_tmp) != -1 )   
				count++;
		}
		
		if ( count == len )
			return true;
		else {
			obj.focus();
			obj.select();
			alert("Field must be numeric!");
			return false;
		}
	}

//=======================================================================
//	FIELD ENABLING/DISABLING
//=======================================================================

	var actColor = "#ffffff";
	var inactColor = "#cccccc";
	
	function disableText(obj) {
		obj.value = "";
		obj.disabled = true;
		obj.className = "controlgrey";
		return true;
	}

	function enableText(obj) {
		obj.disabled = false;
		obj.className = "control";
		return true;
	}

	function disableRadio(obj) {
		obj[0].disabled = true;
		obj[1].disabled = true;
		obj[0].className = "controlgrey";
		obj[1].className = "controlgrey";
		return true;
	}

	function enableRadio(obj) {
		obj[0].disabled = false;
		obj[1].disabled = false;
		obj[0].className = "control";
		obj[1].className = "control";
		return true;
	}

//-----------------------------------------------------------------
