function alltrim(str)
{
  var i,j;
  var i = 0;
  var j=str.length-1;
  var str = str.split("");
  while(i < str.length)
  {
    if(str[i]==" ")
    {
      str[i] = ""
    }
    else
    {
      break;
    }
    i++;
  }
  while(j > 0)
  {
    if(str[j]== " ")
    {
      str[j]=""
    }
    else
    {
      break;
    }
    j--;
  }
  return str.join("");
}

function checkDob(d,m,y)
{
	var x = 0;
	var res = checkInt(y);
	if (res == false)
	{
		return "Year Invalid";
	}
	if (y < 1976 || y > 1994)
	{
		return "Year out of range (1976-1994)";
	}

	res = checkInt(m);
	if (res == false)
	{
		return "Month Invalid";
	}
	if (m < 1 || m > 12)
	{
		return "Month Out of Range (1-12)";
	}

	res = checkInt(d);
	if (res == false)
	{
		return "Day Invalid";
	}
	if (m==1 || m==3 || m ==5 || m == 7 || m == 8 || m == 10 || m == 12 )
	{
		x = 31;
	}
	else if (m==2)
	{
		if ((y%4)==0)
		{
			x = 29;
		}
		else
		{
			x = 28;
		}
	}
	else
	{
		x = 30;
	}

	if (d < 1 || d > x)
	{
		return "Date out of range (1 - " + x +")";
	}
	return "OK";
}
function checkEmail(val)
{
	//alert(val.length);
	if (val.length == 0) return true;

	var re = new RegExp("^[a-zA-Z_][a-zA-Z0-9_\.]*@[a-zA-Z0-9_]+[\.][a-zA-Z0-9_]+$");
	if (val.match(re)) 
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

function checkName(val)
{
	var result = checkEmpty(val,2);
	if (result == false)
	{
		return false;
	}
	var re = new RegExp("^[a-zA-Z][a-zA-Z\. ]+$");
	if (val.match(re)) 
	{
		return true;
	} 
	else 
	{
		return false;
	}
}


function checkRange(val, min, max)
{
	if (checkInt (val))
	 {
		var v = parseInt(val);
		if (v >= min && v <= max) return true;
	 }
	return false;
}

function checkInt(val)
{
	//alert("inside check int");
	var re = new RegExp("^[0-9]+$");
	if (val.match(re)) 
	{
		return true;
	} 
	else 
	{
		return false;
	}
}

function checkEmpty(val, minLen)
{
	var x = alltrim(val);
	resultHere = true;
	//alert("X and Its length and minLen:--"+x+"--"+x.length + "--" + minLen);
	if (x.length < minLen)
	 {
		resultHere = false;
	 }
	 //alert(resultHere);
	return resultHere;
}

function checkSelection(obj)
{
	var y = obj[obj.selectedIndex].text;
	y = y.substr(0,2);
	if (y == "--")
	{
		
		return false;
	}
	return true;
}

function errorMessage(obj, msg)
{
	alert("Error: " + msg);
	obj.focus();
}

function validate()
{
	var formOk=false;
	var x,y,z, res, result;
	var elem,nexelem;
	
	

	// Candidate Name
	elem = document.getElementById("cname");
	x = alltrim(elem.value);
	result = checkName(x);
	if ( result == false)
	{
		errorMessage(elem, "Name too Small or invalid characters in name");
		return;
	}

	// Candidate Father Name
	elem = document.getElementById("fname");
	x = alltrim(elem.value);
	result = checkName(x);
	if ( result == false)
	{
		errorMessage(elem, "Father Name too Small or Invalid characters in Name");
		return;
	}

	// Check DOB
	var e1 = document.getElementById("dobday");
	var e2 = document.getElementById("dobmonth");
	var e3 = document.getElementById("dobyear");
	x = alltrim(e1.value);
	y = alltrim(e2.value);
	z = alltrim(e3.value);
	res = checkDob(x,y,z);
	if (res != "OK")
	{
		alert (res);
		y = res.substr(0,2);
		//alert("Y=."+y+".");
		if (y == "Ye")
		{
			e3.focus();
		}
		else if (y == "Mo")
		{
			e2.focus();
		}
		else 
		{
			e1.focus();
		}
		return;
	}

	// Sex 
	elem = document.getElementById("sex");
	res = checkSelection(elem);
	if (res == false)
	 {
		errorMessage(elem, "Select Gender");
		return;
	 }
	//Qualifying Exam
	elem = document.getElementById("q_exam");
	res = checkSelection(elem);
	if (res == false)
	 {
		errorMessage(elem, "Select Qualifying Examination");
		return;
	 }
	
	
	//Qualifying exam branch
	if(elem[elem.selectedIndex].text=="Diploma(FDH)")
	{
		nexelem = document.getElementById("bq_exam_poly");
		 
	}
	else
	{
		nexelem = document.getElementById("bq_exam_bsc");
		
		
		
	}
	
	res = checkSelection(nexelem);
	
	if (res == false)
	 {
		errorMessage(elem, "Select Qualifying Examination branch");
		return;
	 }

	// Qualifying Exam Appearence Year
	elem = document.getElementById("q_appyear");
	x = alltrim(elem.value);
	result = checkRange(x,1999,2010);
	if ( result == false)
	{
		errorMessage(elem, "Qualfying Examination Year invalid or out of range (1999 to 2010)");
		return;
	}
	// Qualifying Exam HTNO
	elem = document.getElementById("q_htno");
	x = alltrim(elem.value);
	//alert("Inter HTNO: --"+x+"--");
	result = checkEmpty(x, 5);
	//alert(result);
	if ( result == false)
	{
		errorMessage(elem, "Qualifying Exam HTNO too small");
		return;
	}

	// category 
	elem = document.getElementById("category");
	res = checkSelection(elem);
	if (res == false)
	 {
		errorMessage(elem, "Select Category");
		return;
	 }

	
	//localarea
	elem = document.getElementById("localarea");
	res = checkSelection(elem);
	if (res == false)
	 {
		errorMessage(elem, "Select Your Local Area");
		return;
	 }

	// Center1 Code 
	var center = document.getElementById("center");
	res = checkSelection(center);
	if (res == false)
	 {
		errorMessage(center, "Select Examination Centre");
		return;
	 }

	// Email
	elem = document.getElementById("email");
	x = alltrim(elem.value);
	//alert("email:"+x+":");
	result = checkEmail(x);
	if ( result == false)
	{
		errorMessage(elem, "E-Mail ID not proper");
		return;
	}

	


    //identification marks
	elem = document.getElementById("idmark1");
	x = alltrim(elem.value);
	//alert("Inter HTNO: --"+x+"--");
	result = checkEmpty(x, 5);
	//alert(result);
	if ( result == false)
	{
		errorMessage(elem, "Enter Identification marks");
		return;
	}

   	    //income
	elem = document.getElementById("income");
	x = alltrim(elem.value);
	//alert("Inter HTNO: --"+x+"--");
	result = checkEmpty(x, 5);
	//alert(result);
	if ( result == false)
	{
		errorMessage(elem, "Enter Parent/Guardian Income");
		return;
	}

   //occupation
   elem = document.getElementById("f_occupation");
	x = alltrim(elem.value);
	//alert("Inter HTNO: --"+x+"--");
	result = checkEmpty(x, 5);
	//alert(result);
	if ( result == false)
	{
		errorMessage(elem, "Enter Parent/Guardian Occupation");
		return;
	}

	//address 
	elem = document.getElementById("add1");
	res = checkEmpty(elem.value,1);
	if (res == false)
	 {
		errorMessage(elem, "Fill Flat/Door/Block No.");
		return;
	 }
	elem = document.getElementById("add2");
	res = checkEmpty(elem.value,1);
	if (res == false)
	 {
		errorMessage(elem, "Fill Name of Premises/Building/Village");
		return;
	 }
	elem = document.getElementById("add3");
	res = checkEmpty(elem.value,1);
	if (res == false)
	 {
		errorMessage(elem, "Fill Road/Street/Line/Post office");
		return;
	 }
	elem = document.getElementById("add4");
	res = checkEmpty(elem.value,1);
	if (res == false)
	 {
		errorMessage(elem, "Fill Area/Locality/Taluka/Mondal");
		return;
	 }
	elem = document.getElementById("add5");
	res = checkEmpty(elem.value,1);
	if (res == false)
	 {
		errorMessage(elem, "Fill Town/City/District :");
		return;
	 }
	elem = document.getElementById("pin");
	res = checkEmpty(elem.value,3);
	if (res == false)
	 {
		errorMessage(elem, "Fill Pin Code :");
		return;
	 }

	
	
	// Everything Ok, Submit the form.
	var submitButton = document.getElementById("submitButton");
	//submitButton.innerHTML = "<b>Form Submitted... Please Wait while it is processed</b>";


	document.appForm.submit();
}
function change_branch()
{
	var elem;
	//Qualifying Exam
	elem = document.getElementById("q_exam");
	res = checkSelection(elem);
	if (res == false)
	 {
		errorMessage(elem, "Select Qualifying Examination");
		return;
	 }
	
	var exam_poly,exam_bsc,nexelem;
	exam_poly = document.getElementById("b_exam_poly");
	exam_bsc = document.getElementById("b_exam_bsc");
	
	//Qualifying exam branch
	if(elem[elem.selectedIndex].text=="Diploma(FDH)")
	{
		if(exam_poly.style.visibility == "hidden")
		 exam_poly.style.visibility = "visible";
 		
		if(exam_bsc.style.visibility == "visible")
		 exam_bsc.style.visibility = "hidden";		 
	}
	else
	{
		if(exam_bsc.style.visibility == "hidden")
		 exam_bsc.style.visibility = "visible";
 		
		if(exam_poly.style.visibility == "visible")
		 exam_poly.style.visibility = "hidden";		
	}
}
function checkddnumber(val)
{
	var x = alltrim(val);
	resultHere = true;
	//alert("X and Its length and minLen:--"+x+"--"+x.length + "--" + minLen);
	if (x.length < 6 || x.length > 12)
	 {
		resultHere = false;
	 }
	 //alert(resultHere);
	return resultHere;
}

function validateDDDetails()
{
	//dd number validation
	var elem = document.getElementById("ddnumber");
	var val = elem.value;
	var res = checkddnumber(val);
	if(res == false)
	{
		errorMessage(elem,"DD Number Should be 6 to 12 digits");
		return;
	}
	else
	{
		res = checkInt(val);
		if(res == false)
		{
			errorMessage(elem,"Enter Only Numbers");
			return;
		}
	}
	
	//Date validation
	elem = document.getElementById("ddday");
	var day = document.getElementById("ddday").value;
	var month = document.getElementById("ddmonth").value;
	var year = document.getElementById("ddyear").value;
	var status = checkDDDate(day,month,year);
	if(status != "OK")
	{
		errorMessage(elem,status);
		return;
		
	}
	//bank name validation
	elem = document.getElementById("bankname");
	val = elem.value;
	res = checkName(val);
	if(res == false)
	{
		errorMessage(elem,"Minimum Length 4 characters and Enter Only Alphabets");
		return;
	}
		
	//bank branch validation
	elem = document.getElementById("branchname");
	val = elem.value;
	res = checkEmpty(val,2);
	if(res == false)
	{
		errorMessage(elem,"Enter Valid Branch Name");
		return;
	}
	
	var appformdiv = document.getElementById("applform");
	var ddformdiv = document.getElementById("ddform");
	if(appformdiv.style.visibility=='hidden')
	{
		appformdiv.style.visibility='visible';
		ddformdiv.style.visibility='hidden';
	}
}
/*
function checkDDDate(d,m,y)
{

var d1 = new Date();
var curr_date = d1.getDate();
var curr_month = d1.getMonth();
var curr_year = d1.getFullYear();

	var res = checkInt(y);
	var x = 0;
	if (res == false)
	{
		return "Year Invalid";
	}
	
	if (y != curr_year)
	{
		return "Enter Valid Year";
	}

	res = checkInt(m);
	if (res == false)
	{
		return "Month Invalid";
	}
	if (m < 1 || m > 12)
	{
		return "Month Out of Range (1-12)";
	}

	if (m < 2 || m > curr_month + 1)
	{
		return "Please Enter Valid Month";
	}

	res = checkInt(d);

	if (res == false)
	{
		return "Day Invalid";
	}
	if (m==1 || m==3 || m ==5 || m == 7 || m == 8 || m == 10 || m == 12 )
	{
		x = 31;
	}
	else if (m==2)
	{
		if ((y % 4) == 0)
		{
			x = 29;
		}
		else
		{
			x = 28;
		}
	}
	else
	{
		x = 30;
	}

	if (d < 1 || d > x)
	{
		return "Date out of range (1 - " + x +")";
	}
	if(d<1 || d > curr_date )
	    return "Enter Valid Date";
		
	return "OK";
}*/
