function emailcheck(str) {
	var at="@"
	var dot="."
	var lat=str.indexOf(at)
	var lstr=str.length
	var ldot=str.indexOf(dot)
	if (str.indexOf(at)==-1){
	   return false
	}
	if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
	   return false
	}
	if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
	    return false
	}
	 if (str.indexOf(at,(lat+1))!=-1){
	    return false
	 }
	 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
	    return false
	 }
	 if (str.indexOf(dot,(lat+2))==-1){
	    return false
	 }
	
	 if (str.indexOf(" ")!=-1){
	    return false
	 }
 		 return true					
}

function isEmail(str) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(str) == false) {
      return false;
   }
   else
	  return true;
}

function IsNumeric(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
        {
			IsNumber = false;
		}
    }
   return IsNumber;   
}

function isText(sText)
{
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
 
   for (i = 0; i < sText.length && IsNumber == true; i++) 
   { 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
        {
			IsNumber = false;
		}
    }
   return IsNumber;   
}


function escapeHTMLspecial(elementID)
{
	document.getElementById(elementID).value = document.getElementById(elementID).value.replace("&", "&amp;");
	document.getElementById(elementID).value = document.getElementById(elementID).value.replace("\"", "&quot;");
	document.getElementById(elementID).value = document.getElementById(elementID).value.replace("'", "&#039;");
	document.getElementById(elementID).value = document.getElementById(elementID).value.replace("<", "&lt;");
	document.getElementById(elementID).value = document.getElementById(elementID).value.replace(">", "&gt;");
}

function escapeMySQLspecial(elementID)
{
	
}

function showError(elementID, type, validationID, errorMessageID, errorType)
{
	if(errorType == 'success')
	{
		var tempquestion = validationID + "-question";
		var tempwrong = validationID + "-wrong";
		var tempcorrect = validationID + "-correct";
		var tempShow = validationID + "-show";
		document.getElementById(tempquestion).style.display = 'none';		
		document.getElementById(tempwrong).style.display = 'none';		
		document.getElementById(tempcorrect).style.display = 'block';		
		document.getElementById(tempShow).style.display = 'none';
	}
	else if(errorType == 'failure')
	{
		var tempquestion = validationID + "-question";
		var tempwrong = validationID + "-wrong";
		var tempcorrect = validationID + "-correct";
		var tempShow = validationID + "-show";
		document.getElementById(tempquestion).style.display = 'none';		
		document.getElementById(tempwrong).style.display = 'block';		
		document.getElementById(tempcorrect).style.display = 'none';		
		document.getElementById(tempShow).style.display = 'block';
		if(type == "email")
			document.getElementById(errorMessageID).innerHTML = "Invalid emailID";
		if(type == "numeric")
			document.getElementById(errorMessageID).innerHTML = "Invalid numeric input";
		if(type == "text" || type == "strictText" || type == "unreqstricttext")
			document.getElementById(errorMessageID).innerHTML = "Invalid text input";
		if(type == "phone" || type == "unreqphone")
			document.getElementById(errorMessageID).innerHTML = "Invalid phone number input";
	}
	else if(errorType == 'warning')
	{
		var tempquestion = validationID + "-question";
		var tempwrong = validationID + "-wrong";
		var tempcorrect = validationID + "-correct";
		var tempShow = validationID + "-show";
		document.getElementById(tempquestion).style.display = 'block';		
		document.getElementById(tempwrong).style.display = 'none';		
		document.getElementById(tempcorrect).style.display = 'none';		
		document.getElementById(tempShow).style.display = 'block';
		if(type == "email")
			document.getElementById(errorMessageID).innerHTML = "Required emailID empty";
		if(type == "numeric")
			document.getElementById(errorMessageID).innerHTML = "Required numeric input empty";
		if(type == "text" || type == "strictText"  || type == "unreqstricttext")
			document.getElementById(errorMessageID).innerHTML = "Required text input empty";
		if(type == "phone" || type == "unreqphone")
			document.getElementById(errorMessageID).innerHTML = "Required phone number input empty";
	}
}

function validateField(elementID, type, validationID, errorMessageID)
{
	var valid = true;
	
	escapeHTMLspecial(elementID);
	escapeMySQLspecial(elementID);
	
	var errorType = '';
	
	if(document.getElementById(elementID).value.replace(/^\s+|\s+$/g, '') != '')
	{
		if(type == "numeric")
		{
			if(!isNumeric(document.getElementById(elementID).value))
				valid = false;
		}
		else if(type == "phone" || type == "unreqphone")
		{
			if(document.getElementById(elementID).value.match(/[^0-9+ ().-]/))
				valid = false;
		}
		else if(type == "email")
		{	
			if(!isEmail(document.getElementById(elementID).value))
				valid = false;
		}
		else if(type == "text")
		{
			
		}
		else if(type == "strictText" || type == "unreqstricttext")
		{
			if(!document.getElementById(elementID).value.match(/[a-zA-Z]/))
				valid = false;
		}
		
		if(!valid)
			errorType = 'failure';
		else
			errorType = 'success';
	}
	else
	{
		if(type == "unreqstricttext" || type == "unreqphone")
		{
			errorType = "success";			
		}
		else
		{
			errorType = 'warning';
			valid = false;
		}
	}	
	
	showError(elementID, type, validationID, errorMessageID, errorType);
	
	return valid;
}

function validate_form(array)
{
	var idArray = array.split(',');
	var valid = true;
	for(var i=0; i < idArray.length; i++)
	{
		if(!document.getElementById(idArray[i]).onchange())
			valid = false;
	}	
	if(!valid)
		alert("Please correct the shown errors, the form is incomplete.");
	return valid;	
}