// JavaScript Document

var complete_validation=true;
var varray = new Array();
var class_name='error_red';
var error_array = new Array();
var error_count=0;
var nfile = new Array();
var fcount = 0;


function create_function(vid,vmsg,vtype,vflag)
{
var createid = "create"+vid;

if(vflag == 1)
{
	complete_validation = false;
	error_array[error_count++] = new Array(createid,vmsg);
}
else
{
	error_array[error_count++] = new Array(createid,"");
}
}

function display_error()
{
 var createid;
 for(var t in varray)
		{		
		createid = "create"+varray[t][0];
		if(document.getElementById(createid) == null)
			{
				file1 = document.createElement("span");
				file1.setAttribute("id",createid);
			}//if ends
	 		 	document.getElementById(varray[t][0]).parentNode.insertBefore(file1, null);
				document.getElementById(createid).innerHTML = varray[t][2]; 
				document.getElementById(createid).style.display ="none";
				document.getElementById(createid).className = class_name;
		}
		
		for(var t in error_array)
		{
			if(error_array[t][1] != ""){
				document.getElementById(error_array[t][0]).innerHTML = error_array[t][1];
				document.getElementById(error_array[t][0]).style.display ="";
			}
			else
			{
				document.getElementById(error_array[t][0]).style.display ="none";
			}
		}

}

function validation_function(vid,vtype,vmsg)
{
	
	var tmptype = vtype.split('-')[0];
	
switch(tmptype)
{
case 'required':
(document.getElementById(vid).value == "")?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'email':
(!(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/.test(document.getElementById(vid).value)))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'telurl':
(!(/^[a-zA-Z]{1,}[a-zA-Z0-9\-\.]*$/.test(document.getElementById(vid).value)))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'exact':
(!(document.getElementById(vid).value.length == parseInt(vtype.split('-')[1])))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'max':
(document.getElementById(vid).value.length >= parseInt(vtype.split('-')[1]))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'min':
(document.getElementById(vid).value.length <= parseInt(vtype.split('-')[1]))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'maxmin':
(document.getElementById(vid).value.length > parseInt(vtype.split('-')[1]) && document.getElementById(vid).value.length < parseInt(vtype.split('-')[2]))?create_function(vid,vmsg,tmptype,0):create_function(vid,vmsg,tmptype,1);
break;
case 'alpha':
(!(document.getElementById(vid).value.match(/^[a-zA-Z0-9]+$/)))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'num':
(!(document.getElementById(vid).value.match(/^[0-9]+$/)))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'dropdown':
(document.getElementById(vid).value == "" || document.getElementById(vid).value == "0")?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'matches':
(document.getElementById(vtype.split('-')[1]).value != document.getElementById(vtype.split('-')[2]).value)?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
case 'alphanum':
(!(document.getElementById(vid).value.match(/^([a-zA-Z])+([a-zA-Z0-9])+$/)))?create_function(vid,vmsg,tmptype,1):create_function(vid,vmsg,tmptype,0);
break;
default:
alert('Invalid Parameter - "'+vtype+'"');
}
}

function controller_function()
{
	var chkids= new Array();
	var chkflag = 0;
	/* to check ids in a page*/
for(var t in varray){
	if(document.getElementById(varray[t][0]) == null){
	chkids[t]=varray[t][0];
	chkflag =1;
		}
	}
	/* to check ids in a page*/
	
complete_validation = true;
	
if(chkflag == 0)
{
for(var t in varray){
validation_function(varray[t][0],varray[t][1],varray[t][2]);
}
}
else
{
	alert(chkids);
}	/* display all ids which are invalid*/
display_error();

return complete_validation;
}/*function ends*/

