/*
* To use this method, follow the below steps
* Step 1.) include a empty div tag
*
* ex:
* <table border="0" cellpadding="3" cellspacing="0" width="370">
* <tr>
* <td align="left" colspan="3" width="370"><div id="errorMessage"></div></td>
* </tr>
* </table>
*
* at the top just after the grey separator tag.
*
* Step 2.) add a hidden variable with name and id as "required" in the form to be validated
*
* ex: <input type=hidden name="required" id="required" value="companyName,companyPassword"/>
*
* Step 3.) include the validator.js in the jsp using the below scriplet tag
* <SCRIPT language="JavaScript" src="/portal/jslib/validator.js"></SCRIPT>
*
* Step 4.) call the utility function using checkform(frmname)
*
* ex:
* <form action='action_url' method="POST" name="frmName" id="frmId" onsubmit="return checkform(this);" >
*
* Now the validator will validate for required fields in the form for text, email (identified by the field name as email), single select
* and multi-select fields
* (further field validations will be added in due course)
*/
var form_submitted=false;
function checkform(of)
{
// Test if DOM is available and there is an element called required
	//if(form_submitted) {return false;}
	if(!document.getElementById || !document.createTextNode){return;}
	//var reqdObj = eval("document." + of.name + ".required");
	var reqdObj = of.required;
	if(!reqdObj) {
		reqdObj = document.getElementById('required');
		if(!reqdObj)
			return;
	}
	//if(!document.getElementById('required')){return;}

// Define error messages and split the required fields
	var errorID='errormsg';
	var errorClass='error';

/* changes for named list */
	var errorMsg='Please enter the missing or incorrect entries as noted below:';
/* end changes for named list */
	var reqfields = reqdObj.value.split(',');

// Cleanup old mess
	// if there is an old errormessage field, delete it
	if(document.getElementById(errorID))
	{
		var em=document.getElementById(errorID);
		em.parentNode.removeChild(em);
		form_submitted = false;
	}

	// remove old error pointers and classes from the required fields

	for(var i=0;i<document.getElementsByTagName('label').length;i++)
	{
		document.getElementsByTagName('label')[i].className='';
	}

// loop over required fields
	for(var i=0;i<reqfields.length;i++)
	{
// check if required field is there
		var f=document.getElementById(reqfields[i]);
		if(!f){continue;}
// test if the required field has an error,
// according to its type
		switch(f.type.toLowerCase())
		{
			case 'text':
				if(Trim(f.value)=='' && f.id!='email'){cf_adderr(f)}
// email is a special field and needs checking
				if(f.id=='email' && !cf_isEmailAddr(Trim(f.value))){cf_adderr(f)}
			break;
			case 'password':
				if(Trim(f.value)==''){cf_adderr(f)}
			break;
			case 'textarea':
				if(Trim(f.value)==''){cf_adderr(f)}
			break;
			case 'checkbox':
			case 'radio':
				var name = f.name;
				var checked = false;
				var namedElement = document.getElementsByName(name);
				for(i=0;i<namedElement.length;i++) {if(namedElement[i].checked) {checked=true; break;}}
				if(!checked){cf_adderr(f)}
			break;
			case 'select-one':
			case 'select-multiple':
				if(!f.selectedIndex || f.selectedIndex==-1 ||Trim(f.value)=='' ){cf_adderr(f)}
			break;
		}
	}
	obj=document.getElementById("errormsg") ;
	if (null != obj) {
		window.scrollTo(obj.style.top,obj.style.left);
	}


	if (!document.getElementById(errorID)) {
		form_submitted = true;
		return true;
	} else {
		return false;
	}
	//return !document.getElementById(errorID);

	/* Tool methods */
	function cf_adderr(o)
	{
	// Check if there is no error message
		if(!document.getElementById(errorID))
		{
		// create errormessage and insert before first form elemenet
			var em=document.createElement('div');
			em.id=errorID;
			em.className=errorClass;
			var newp=document.createElement('p');
			newp.appendChild(document.createTextNode(errorMsg))
			em.appendChild(newp);
/* added for named list */
			var newul=document.createElement('ul');
			em.appendChild(newul);
/* end added for named list */
			// get the hidden div tag to display error block
			var sb=document.getElementById("errorMessage");
			if(sb)
			{
				sb.parentNode.insertBefore(em,sb);
			}
		}
/* added for named list */
		var em=document.getElementById(errorID).getElementsByTagName('ul')[0];
		var newli=document.createElement('li');
		newli.className=errorClass;
		var txt=null;
		for(var i=0;i<document.getElementsByTagName('label').length;i++)
		{
			if(document.getElementsByTagName('label')[i].htmlFor==o.id)
			{
				txt=document.getElementsByTagName('label')[i];
			}// else {
			//	document.getElementsByTagName('label')[i].className='';
			//}

		}
		if (txt) 
		{
			newli.appendChild(document.createTextNode(txt.firstChild.nodeValue));
			txt.className=errorClass;
			em.appendChild(newli);
		}
/* end added for named list */
	}
	function cf_isEmailAddr(str)
	{
		return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
}

var form_submitted=false;
function checkformForCompanyInfo(of)
{
// Test if DOM is available and there is an element called required
	//if(form_submitted) {return false;}
	if(!document.getElementById || !document.createTextNode){return;}
	//var reqdObj = eval("document." + of.name + ".required");
	var reqdObj = of.required;
	if(!reqdObj) {
		reqdObj = document.getElementById('required');
		if(!reqdObj)
			return;
	}
	//if(!document.getElementById('required')){return;}

// Define error messages and split the required fields
	var errorID='errormsg';
	var errorClass='error';

/* changes for named list */
	var errorMsg='Please enter the missing or incorrect entries as noted below:';
/* end changes for named list */
	var reqfields = reqdObj.value.split(',');

// Cleanup old mess
	// if there is an old errormessage field, delete it
	if(document.getElementById(errorID))
	{
		var em=document.getElementById(errorID);
		em.parentNode.removeChild(em);
		form_submitted = false;
	}

	// remove old error pointers and classes from the required fields

	for(var i=0;i<document.getElementsByTagName('label').length;i++)
	{
		document.getElementsByTagName('label')[i].className='';
	}

// loop over required fields
	for(var i=0;i<reqfields.length;i++)
	{
// check if required field is there
		var f=document.getElementById(reqfields[i]);
		if(!f){continue;}
// test if the required field has an error,
// according to its type
		switch(f.type.toLowerCase())
		{
			case 'text':
				if(Trim(f.value)=='' && f.id!='email'){cf_adderr(f)}
// email is a special field and needs checking
				if(f.id=='email' && !cf_isEmailAddr(Trim(f.value))){cf_adderr(f)}
			break;
			case 'password':
				if(Trim(f.value)==''){cf_adderr(f)}
			break;
			case 'textarea':
				if(Trim(f.value)==''){cf_adderr(f)}
			break;
			case 'checkbox':
			case 'radio':
				var name = f.name;
				var checked = false;
				var namedElement = document.getElementsByName(name);
				for(i=0;i<namedElement.length;i++) {if(namedElement[i].checked) {checked=true; break;}}
				if(!checked){cf_adderr(f)}
			break;
			case 'select-one':
			case 'select-multiple':
			{
				if(f.selectedIndex < 0 || f.value=='')
					cf_adderr(f);
			}
			break;
		}
	}
	obj=document.getElementById("errormsg") ;
	if (null != obj) {
		window.scrollTo(obj.style.top,obj.style.left);
	}


	if (!document.getElementById(errorID)) {
		form_submitted = true;
		return true;
	} else {
		return false;
	}
	//return !document.getElementById(errorID);

	/* Tool methods */
	function cf_adderr(o)
	{
	// Check if there is no error message
		if(!document.getElementById(errorID))
		{
		// create errormessage and insert before first form elemenet
			var em=document.createElement('div');
			em.id=errorID;
			em.className=errorClass;
			var newp=document.createElement('p');
			newp.appendChild(document.createTextNode(errorMsg))
			em.appendChild(newp);
/* added for named list */
			var newul=document.createElement('ul');
			em.appendChild(newul);
/* end added for named list */
			// get the hidden div tag to display error block
			var sb=document.getElementById("errorMessage");
			if(sb)
			{
				sb.parentNode.insertBefore(em,sb);
			}
		}
/* added for named list */
		var em=document.getElementById(errorID).getElementsByTagName('ul')[0];
		var newli=document.createElement('li');
		newli.className=errorClass;
		var txt=null;
		for(var i=0;i<document.getElementsByTagName('label').length;i++)
		{
			if(document.getElementsByTagName('label')[i].htmlFor==o.id)
			{
				txt=document.getElementsByTagName('label')[i];
			}// else {
			//	document.getElementsByTagName('label')[i].className='';
			//}

		}
		if (txt) 
		{
			newli.appendChild(document.createTextNode(txt.firstChild.nodeValue));
			txt.className=errorClass;
			em.appendChild(newli);
		}
/* end added for named list */
	}
	function cf_isEmailAddr(str)
	{
		return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
}


function Trim(TRIM_VALUE){
if(TRIM_VALUE.length < 1){
return"";
}
TRIM_VALUE = RTrim(TRIM_VALUE);
TRIM_VALUE = LTrim(TRIM_VALUE);
if(TRIM_VALUE==""){
return "";
}
else{
return TRIM_VALUE;
}
} //End Function

function RTrim(VALUE){
var w_space = String.fromCharCode(32);
var v_length = VALUE.length;
var strTemp = "";
if(v_length < 0){
return"";
}
var iTemp = v_length -1;

while(iTemp > -1){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(0,iTemp +1);
break;
}
iTemp = iTemp-1;

} //End While
return strTemp;

} //End Function

function LTrim(VALUE){
var w_space = String.fromCharCode(32);
if(v_length < 1){
return"";
}
var v_length = VALUE.length;
var strTemp = "";

var iTemp = 0;

while(iTemp < v_length){
if(VALUE.charAt(iTemp) == w_space){
}
else{
strTemp = VALUE.substring(iTemp,v_length);
break;
}
iTemp = iTemp + 1;
} //End While
return strTemp;
} //End Function

