////////////////my code
var errored = false;            // Global for validate function
var exClassName = new Object(); // Global for Changed classnames
var styleAdded = false;         // Global for checking sytle status
function validate(elem,type,option){	
// Main function
	var option = (option)? option : "";
	if(!styleAdded){			// Add style for Error warnings
		var style = document.createElement('style');
		var sprop  = '.error{ width:235px; height:17px; border:1px #ff0000 solid; font-size:11px; color:#000000;}';
		    sprop += '.Errortext{ color:#FF0000;font-family:"Trebuchet MS"; font-size:11px; }';
            sprop += '.DivErrortext{ border:1px solid #ccc;margin:4px; padding:5px; background:lightyellow; color:#FF0000;font-family:"Trebuchet MS"; font-size:11px; }';
		style.setAttribute("type", "text/css");
		if (style.styleSheet){   // for IE
			style.styleSheet.cssText = sprop;
		} else {
			var newStyle = document.createTextNode(sprop);
			style.appendChild(newStyle);
		}
		document.getElementsByTagName('head')[0].appendChild(style);
		styleAdded = true; //don't add again.
	}
  
  var reset=function(form) 
  {
   for(var node = 0;node < form.length; node++)
	 {
   
       form[node].value="";
       correct(form[node]);
   }
  
	}
	///////////
	//Checking for mail validation
	var checkmail = function(email){
		var splitted = email.match("^(.+)@(.+)$");
			if(splitted == null) return false;
			if(splitted[1] != null )   {
				var regexp_user=/^\"?[\w-_\.]*\"?$/;
				if(splitted[1].match(regexp_user) == null) return false;  
			}
			if(splitted[2] != null)  {
				var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
				if(splitted[2].match(regexp_domain) == null) {
					var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
					if(splitted[2].match(regexp_ip) == null) return false; 
				}
				return true; 
			}
		return false;
	}
	var warned = false;
	//////////////
	// Function to run onsubmit;
	var OnSubmit = function(form){
		errored = false;
		for(var node = 0;node < form.length; node++)
			{if((""+form[node].onblur).match("validate"))
      { 
				form[node].onblur();
       }
       }
		if(errored){
            if(!warned){
                var inputs = form.getElementsByTagName('input');
                for(var x =0; x< inputs.length; x++){
                    if(inputs[x].type == 'submit'){
                      warned=false;
                    }
                }
                warned = true;
            }
            return false;
        }	
		else
    {
    return true;
	}}
  
  
  	
	//////////////
	// Function to set error messages
	var getMsg = function(type){
		switch(type){
			case "LessThan":           return "This field's length should be less than (" + option['LessThan'] + ")"
			case "GreaterThan":        return "This field's length should be greater than (" + option['GreaterThan'] + ")"
      case "MinimumLength" :       return "This field should contain atleast "+option+ " charecters. "
      case "MaximumLength" :       return "This field should not exceed "+option+ " charecters. "
      case "validateTextArea":  return "This field is required."
      case "validateSelect":    return "Please select an option."
			case "Alphabetic":         return "Cannot contain non-alphabetic characters."
			case "RequiredAlphabetic": return "This field is required and can contain only alphabets."
      case "OnlyAlphabetic":     return "This field can contain only alphabets."
			case "Numeric":            return "Cannot contain non-numeric characters."
      case "Digits":             return "Cannot contain non-numeric characters."
      case "OnlyDigits":         return "Cannot contain non-numeric characters."
      case "ReqDate":            return "Please provide in 'dd-mm-yyyy' format."
      case "ReqTime":            return "Please provide in 'hh:ss' format."
      case "NumericValidation":  return "This field is required."
			case "RequiredNumeric":    return "This field is required and can contain only numbers."
      case "RequiredNumericPhn": return "This field is required and must containl 10 digits"
      case "RequiredTenderNumeric": return "This field is required and must contain a minimum of 6 digits."
			case "Email":              return "Enter a valid email address."
      case "EmailNotRequired":              return "Enter a valid email address."
      case "RequiredAlphaNumeric":return "This field is required and must contain atleast 6 characters without any spaces."
			case "RequiredHeight":     return "This field is required and must contain numeric charecters."
      case "RequiredMaxLength":  return "This field is required."
      case "Required":           return "This field is required."
      case "confirm":            return "Values should match each other"
      case "confirmPwd":         return "Password does not match. Confirm password and password must be same"
		  case "confirmChangePwd":   return "Password does not match. Confirm password and new password must be same"
      case "confirmActivationPwd": return "Make sure password and confirm password are same."
      case "confirmRmcMcChangePwd":return "Password does not match. Confirm password and new password must be same"
      case "validateWarningType":         return "Please select a Warning Type"
      case "validateWarningSeverity":     return "Please select a Warning Severity"
      case "validateIssuedBy":            return "Please select an Option"
      case "validateState":               return "Please select a State"
      case "validateDistrict":            return "Please select a District"
      case "validateFile":                return "Please upload a file"
      case "RequiredDate":       return "Please select a Date"  
      case "Regex":              return "This entry does not match (" + option + ")."  
      case "validateSecurityQuestion":    return "This field is required." 
      case "validateTitle":           return "This field is required."
      case "validateCycloneType":           return "This field is required."
      case "validateIntensity":           return "This field is required."
      case "validateBasin":           return "This field is required."
      case "validateBasinType":           return "This field is required."
      case "validatePastMvmt":           return "This field is required."
      case "validateCurrIntensity":           return "This field is required."
      case "validateMaxWind":           return "This field is required."
      case "validateSeaConditions":           return "This field is required."
      case "RequiredArea" :       return "This field is required and must contain less than 1000 characters."
      case "RequiredMessArea":       return "This field is required and must contain less than 400 characters."
      case "RequiredAdviArea":       return "This field is required and must contain less than 400 characters."
      case "RequiredLength":       return "This field must contain less than 400 characters."
      case "RequiredAlphaNumeric1": return "This field is required."
      case "validateSelect": return"This field is required."
      case "RadarStationName":   return "This field is required."
      case "RadarStationAbbrevation": return "This field is required."
      case "RadarDegrees":    return "Select lattitude within India's range."
      case "RadarMinutes":    return "Select lattitude within India's range."
      case "RadarLatLong":       return "This field is required."
      case "IndiaLattitude":     return "Select lattitude within India's range."
      case "IndiaLongitude":     return "Select longitude within India's range."
      case "OnSubmit":           return "Check for errors." 
      case "NumericData":        return "Please enter Numeric Data."    
      case "RequiredNumericData": return "This field is Required. Please Enter Numeric Data."
      case "Required1":           return "This field is required"
      case "LatDegree":         return "Latitude Degress should be in the range of -90 to 90."
      case "LongDegree":          return "Longitude Degress should be in the range of -180 to 180."
      case "Minutes":             return "Minutes should be in the range of 0 to 59."
      case "Seconds":             return "Seconds should be in the range of 0 to 59."
       case "RequiredNumericSansZero": return "This field is required and can contain a number greater than zero."
      case "ConfirmPassword": return "Please enter a New Password."  
      case "SeismoMagnitude1" : return "This field is required."
      case "SeismoType1" : return "This field is required."
      case "SeismoSource1" : return "This field is required."
      case "RequiredLatDegree":         return "Latitude Degress should be in the range of -90 to 90."
      case "RequiredLongDegree":          return "Longitude Degress should be in the range of -180 to 180."
      case "RequiredHydroLatDegree": return "Latitude Degress should be in the range of -90 to 90."
      case "RequiredHydroLongDegree":          return "Longitude Degress should be in the range of -180 to 180."
      case "withoutSpaces":      return "Please enter character values without any spaces."
      case "withoutSpacesNumeric": return "Please enter numeric values without any spaces."
      case "passwordCheckRmcMc": return "Please enter a New Password."
      case "HydrologyStationName": return "This filed is required and contains only alphabets."
       case "Year" : return "Please enter the year in numeric YYYY format."
         case "RequiredIndiaLatDegree": return "Latitude Degress should be in the Indian range."
      case "RequiredIndiaLongDegree":          return "Longitude Degress should be in the Indian range."
       case "RequiredLatitude":         return "Latitude Degrees should be in the range of 0 to 90."
      case "RequiredLongitude":          return "Longitude Degrees should be in the range of 0 to 180."
      case "OnReset":         
			default:                   return "Undefined Error Message"
		}
	}
	
	/////////////
	// Function to check is error printed?
	var checkForErrorDiv = function(elem){
		for(var node = 0;node < elem.parentNode.childNodes.length; node++)
			if(elem.parentNode.childNodes[node].className == "Errortext")
				return true;
		return false;
	}
  
  
	
	/////////////
	// Function to define errors and print messages
	var error = function(elem, type, message){
		correct(elem);
		if(!checkForErrorDiv(elem)){
			div = document.createElement("div");
			div.innerHTML = (message)? message : getMsg(type);
			div.className = "Errortext";
			elem.parentNode.appendChild(div);
			//elem.parentNode.insertBefore(div, elem.nextSibling);
		}
		if(elem.className != "error")
			exClassName[elem.name] = elem.className;
		if(elem.type != "checkbox" && elem.type != "radio"){
			elem.className = "error";
		}
		errored = true;
		return true;
	}
	
	/////////////
	// Function to revert Errored fields
	var correct = function(elem){
		var parent = elem.parentNode;
		for(x = 0; x < parent.childNodes.length; x++){
			var node = parent.childNodes[x];
			if(node){
				if(node.className == "Errortext")
					node.parentNode.removeChild(node);
				if(node.className == "error")
					node.className = exClassName[node.name];
			}
		}
	}
	
	///////////////
	// Check for optional validations
	if(option['LessThan']){
		if(elem.value.length >= option['LessThan']){
			error(elem,"LessThan",option['message']);
			return false;
		}else
			correct(elem);
	}
	if(option['GreaterThan']){
		if(elem.value.length <= option['GreaterThan']){
			error(elem,"GreaterThan", option['message']);
			return false;
		}else
			correct(elem);
	}
    if(option.confirm){
		if(elem.value.toLowerCase() != $(option.confirm).value.toLowerCase()){
			error(elem, "confirm", option['message']);
            error($(option.confirm), "confirm", option['message']);
			return false;
		}else{
            correct(elem);
            correct($(option.confirm));
        }
			
	}
		
	//////////////
	// Make all the validations
	switch(type){
   case "validateSelect":
      if(elem.value==""||elem.value=="Select")
      {     error(elem,type,option['message']);     }
     else
      {    correct(elem);     }
      break;
		case "Alphabetic":
			var charpos = elem.value.search(/[^a-zA-Z\s\-\_]/);
			if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			break;
		case "RequiredAlphabetic":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
			else{
				var charpos = elem.value.search(/[^a-zA-Z]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			}
			break;
      case "OnlyAlphabetic":
			//if(elem.value.length <= 0) error(elem,type,option['message']); 		
				var charpos = elem.value.search(/[^a-zA-Z\s\-\_]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);			
			break;
       case "Digits":
			var charpos = elem.value.search(/[^0-9\.]/);
     // if(elem.value.length <= 0) error(elem,'NumericValidation',option['message']); 
			if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
			break;
       case "OnlyDigits":
			var charpos = elem.value.search(/[^0-9]/);
     // if(elem.value.length <= 0) error(elem,'NumericValidation',option['message']); 
			if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
			break;
		case "Numeric":
			var charpos = elem.value.search(/[^0-9\.]/);
      if(elem.value.length <= 0) error(elem,'NumericValidation',option['message']); 
			else if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
			break;
      case "NumericData":
			var val = elem.value;
      if(isNaN(val)) error(elem,type,option['message']);
      else correct(elem);
			break;
      case "RequiredNumericData":
       var val = elem.value;
      if(elem.value.length <= 0)  error(elem,'Required1',option['message']);
      else if(isNaN(val)) error(elem,'NumericData',option['message']);
      else correct(elem);
			break;
   case "validateTextArea":  
    var option = 2000;
     if(elem.value.length <= 0) error(elem,type,option['message']);
     else if(elem.value.length>option)error(elem,'MaximumLength',option['message']);
     else correct(elem);
    break; 
    
       case "validateTextAreaForBulletin":  
  //  var option = 2000;
     if(elem.value.length <= 0) error(elem,'validateTextArea',option['message']);
     else if(elem.value.length>option)error(elem,'MaximumLength',option['message']);
     else correct(elem);
    break; 
      case "ReqDate":
			var charpos = elem.value.search(/[^0-9\-]/);
      //if(elem.value.length <= 0) error(elem,'NumericValidation',option['message']); 
			if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
			break;
       case "ReqTime":
			var charpos = elem.value.search(/[^0-9\:]/);
      //if(elem.value.length <= 0) error(elem,'NumericValidation',option['message']); 
			if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
			break;
		case "RequiredNumeric":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
      else{
				var charpos = elem.value.search(/[^0-9]/);
				if(charpos >= 0) error(elem,type,option['message']); 
        else correct(elem);break;
			}
      break;
      ////////Case for tender notice//////
      case "RequiredTenderNumeric":
			if(elem.value.length <6) error(elem,type,option['message']); 
      else{
				var charpos = elem.value.search(/[^0-9]/);
				if(charpos >= 0) error(elem,type,option['message']); 
        else correct(elem);break;
			}
      break;

			      case "RequiredNumericPhn":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
      else if(elem.value.length!=10) error(elem,type,option['message']);
      else{
				var charpos = elem.value.search(/[^0-9]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			}
			break;
		case "Email":
			if(!checkmail(elem.value)) 
      {
      error(elem,type,option['message']); 
      }
      else correct(elem);
			break;
      case "EmailNotRequired":
      if(elem.value.length<=0)
      { correct(elem);
      }
			else if(!checkmail(elem.value)) 
      {
      error(elem,type,option['message']); 
      }
      else correct(elem);
			break;
       case "ConfirmPassword":
       var p = document.getElementById('oldpwd').value;
       var q = document.getElementById('password').value;
			if(elem.value.length <= 0) error(elem,'RequiredAlphaNumeric',option['message']); 
      else if(elem.value.length < 6) error(elem,'RequiredAlphaNumeric',option['message']);
			else{
				var charpos = elem.value.indexOf(" ");
       	if(charpos >= 0) error(elem,'RequiredAlphaNumeric',option['message']); 
        else if(p==q) error(elem,type,option['message']); 
       else correct(elem);
      } 
			break;
      case "passwordCheckRmcMc":
       var p = document.getElementById('password').value;
       var q = document.getElementById('newPwd').value;
			if(elem.value.length <= 0) error(elem,'RequiredAlphaNumeric',option['message']); 
      else if(elem.value.length < 6) error(elem,'RequiredAlphaNumeric',option['message']);
			else{
				var charpos = elem.value.indexOf(" ");
       	if(charpos >= 0) error(elem,'RequiredAlphaNumeric',option['message']); 
        else if(p==q) error(elem,type,option['message']); 
       else correct(elem);
      } 
			break;
      case "RequiredAlphaNumeric":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
      else if(elem.value.length < 6) error(elem,type,option['message']);
			else{
				var charpos = elem.value.indexOf(" ");
       	if(charpos >= 0) error(elem,type,option['message']); 
      else correct(elem);
			}
			break;
       case "withoutSpaces" : 
      if(elem.value.length <= 0) error(elem,type,'This field is Required'); 
			else{
				var charpos = elem.value.search(/[^a-zA-Z0-9\-\_]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			}
			break;
      case "withoutSpacesNumeric" : 
      if(elem.value.length <= 0) error(elem,type,'This field is Required'); 
			else{
				var charpos = elem.value.search(/[^0-9\-\_]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			}
			break;
      case "RequiredAlphaNumeric1":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
			else{
				var charpos = elem.value.search(/[^a-zA-Z0-9\.\,\s\-\_]/);
       	if(charpos >= 0) error(elem,type,'Please remove any special characters entered'); 
      else correct(elem);
			}
			break;
      
      case "HydrologyStationName":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
			else{
				var charpos = elem.value.search(/[^a-zA-Z\(\)\s\.\-\_\\\/]/);
       	if(charpos >= 0) error(elem,type,option['message']); 
      else correct(elem);
			}
			break;
      
      case "RequiredHeight":
			if(elem.value.length <= 0) error(elem,type,option['message']); 
      else{
				var charpos = elem.value.search(/[^0-9\.]/);
				if(charpos >= 0) error(elem,type,option['message']); 
        else correct(elem);break;
			}
      break;
    case "confirmPwd":
   if(UserRegistrationForm.password.value!=UserRegistrationForm.confirmPwd.value) 
     {
    error(elem,type,option['message']);
    }
      else correct(elem);
 break;
 case "confirmChangePwd":
   if(document.getElementById('password').value!=document.getElementById('confirmPwd').value)
     {
    error(elem,type,option['message']);
    }
      else correct(elem);
 break; 
 case "confirmRmcMcChangePwd":
   if(document.getElementById('newPwd').value!=document.getElementById('confirmPwd').value)
     {
    error(elem,type,option['message']);
    }
      else correct(elem);
 break; 
 ///Modified on Oct 6th
  case "confirmActivationPwd":
  
   if(document.getElementById('password').value!=document.getElementById('confirmPwd').value)
     {
    
    error(elem,type,option['message']);
    }
      else correct(elem);
 break; 
 ///Modified on Oct 6th

		case "Required":
			if(elem.type == "checkbox" || elem.type == "radio" || elem.type == "DropDown"){
				var parent = elem.parentNode;
				var ok = false;
				for(x = 0; x < parent.childNodes.length; x++)
					if(parent.childNodes[x].checked == true)
						ok = true;
				if(ok) correct(elem,true); else error(elem,type,option['message']);
			}else{
				if(elem.options)	
					// Here can be edited for checking text to "Please Select one" or similar text
					// in this example it looks for blank <option> to give error
					if(elem.options[elem.selectedIndex].text.length <= 0) error(elem,type,option['message']); else correct(elem);
				else
					{
           if(elem.value.length <= 0) 
           {
             error(elem,type,option['message']);
           }
           else if(option!="" && elem.value.length<option)
          { 
            error(elem,"MinimumLength",option['message']); 
          }
          else
          { 
          correct(elem);
          }
			}
      }
			break;
      case "RequiredMaxLength":
			if(elem.type == "checkbox" || elem.type == "radio" || elem.type == "DropDown"){
				var parent = elem.parentNode;
				var ok = false;
				for(x = 0; x < parent.childNodes.length; x++)
					if(parent.childNodes[x].checked == true)
						ok = true;
				if(ok) correct(elem,true); else error(elem,type,option['message']);
			}else{
				if(elem.options)	
					// Here can be edited for checking text to "Please Select one" or similar text
					// in this example it looks for blank <option> to give error
					if(elem.options[elem.selectedIndex].text.length <= 0) error(elem,type,option['message']); else correct(elem);
				else
					{
           if(elem.value.length <= 0) 
           {
             error(elem,type,option['message']);
           }
           else if(option!="" && elem.value.length>option)
          { 
            error(elem,"MaximumLength",option['message']); 
          }
          else
          { 
          correct(elem);
          }
			}
      }
			break;
		case "Regex":
			if(elem.value.match(option['expression'])) correct(elem);
			else error(elem,type,option['message']);
			break;
      
     case "RequiredAlphaNumeric" : 
      if(elem.value.length <= 0) error(elem,type,option['message']); 
			else{
				var charpos = elem.value.search(/[^a-zA-Z0-9\-\_]/);
				if(charpos >= 0) error(elem,type,option['message']); else correct(elem);
			}
			break;
      
      case "validateSecurityQuestion":
    var securityQuestion = document.getElementById("securityQuestion").value;
    if(securityQuestion=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateTitle":
    var title = document.getElementById("title").value;
    if(title=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateCycloneType":
    var cycdropdown = document.getElementById("cycdropdown").value;
    if(cycdropdown=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateIntensity":
    var Intensity = document.getElementById("intensity").value;
    if(Intensity=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "Year":
			var charpos = elem.value.search(/[^0-9]/);
      var l = parseInt(elem.value.length);
      if(l>0&&l < 4) error(elem,type,option['message']);
			else {
      if(charpos >= 0) error(elem,type,option['message']);
      else correct(elem);
      }
			break;
     case "validateBasin":
    var basinList = document.getElementById("basinList").value;
    if(basinList=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateBasinType":
    var basintype = document.getElementById("basintype").value;
    if(basintype=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validatePastMvmt":
    var pastmvmt = document.getElementById("pastmvmt").value;
    if(pastmvmt=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateCurrIntensity":
    var currintensity = document.getElementById("currintensity").value;
    if(currintensity=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateMaxWind":
    var maxwind = document.getElementById("maxwind").value;
    if(maxwind=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateSeaConditions":
    var seacond = document.getElementById("seacond").value;
    if(seacond=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;   
     case "validateWarningType":
    var selectedType = document.getElementById("selectedType").value;
    if(selectedType=="Select")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateWarningSeverity":
    var selectedSeverity = document.getElementById("selectedSeverity").value;
    if(selectedSeverity=="Select")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateIssuedBy":
    var selectedIssuedBy = document.getElementById("selectedIssuedBy").value;
    if(selectedIssuedBy=="Select")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateState":
    var selectedState = elem.value;
    if(selectedState=="Select"||selectedState=="")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "validateDistrict":
    var selectedDistrict = elem.value;
    if(selectedDistrict==""||selectedDistrict=="Select")
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateFile":
    var file = document.getElementById("theFile");
 
    if(file.value.length==0)
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "validateSelect":
    if(elem.value==""||elem.value=="Select")
    { 
     error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "RequiredMessArea":
//    var message = document.getElementById("message").value;
 
    if(elem.value.length <= 0)
    {
      error(elem,type,option['message']); 
    }
    else if(elem.value.length>400)
    {
      error(elem,'MaximumLength',option['message']); 
    }
    else correct(elem); 
    break;
    case "RequiredSeismicArea":
//    var message = document.getElementById("message").value;
    if(elem.value.length>400)
    {
      error(elem,'MaximumLength',option['message']); 
    }
    else correct(elem); 
    break;
         case "RequiredArea":
//    var message = document.getElementById("message").value;
 
    if(elem.value.length <= 0)
    {
      error(elem,type,option['message']); 
    }
    else if(elem.value.length>option)
    {
      error(elem,'MaximumLength',option['message']); 
    }
    else correct(elem); 
    break;
     case "RequiredAdviArea":
    var message = document.getElementById("advisory").value;
 
    if(message==""||message.length>400)
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
     case "RequiredLength":
    var message = elem.value;
 
    if(message.length>400)
    {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
    case "RequiredDate":
//    var date = document.getElementById('calendar_startdate').value;
    if(elem.value.length <= 0) {
      error(elem,type,option['message']); 
    }
    else correct(elem); 
    break;
 ////Validation for RADAR ////////////////////
  
 
    case "RadarStationName":
      var stationName = document.getElementById('stationName').value;
      var charpos = elem.value.search(/[^a-zA-Z\s]/);
    if(stationName.length <= 0) {
      error(elem,type,option['message']); 
    }
    else if(charpos >= 0) error(elem,'Alphabetic',option['message']);
    else if(stationName.length<3)
    {
      var option = 3;
      error(elem,'MinimumLength',option['message']); 
    }
    else if(stationName.length>20)
    {
      var option = 20;
      error(elem,'MaximumLength',option['message']); 
    }
    else correct(elem); 
    break;
    case "RadarStationAbbrevation":
      var stn_abbrevation = document.getElementById('stn_abbrevation').value;
       var charpos = elem.value.search(/[^a-zA-Z]/);
      if(stn_abbrevation.length <= 0) {
      error(elem,type,option['message']); 
    }
    else if(charpos >= 0) error(elem,'Alphabetic',option['message']);    
    else correct(elem); 
    break;
    case "RadarLatLong":    
      var charpos = elem.value.search(/[^0-9]/);      
      if(elem.value.length<=0) error(elem,type,option['message']); 
      else if(charpos >= 0) error(elem,'Numeric',option['message']); 
      else correct(elem);
    break;
    case "RadarDegrees":
    var charpos = elem.value.search(/[^0-9]/);
    var latDeg = document.getElementById('latDegrees').value;
    var lonDeg = document.getElementById('longDegrees').value;
    if(elem.value.length<=0) error(elem,'Required',option['message']); 
    else if(charpos >= 0) error(elem,'Numeric',option['message']); 
    else if(elem.name=="latDegrees") {
     if(latDeg>35||latDeg<6)
    {
      error(elem,type,option['message']);
      return false;
    }
    else 
    correct(elem);
    }
    else if(elem.name=="longDegrees") {
     if(lonDeg>97||lonDeg<68)
    {
      error(elem,type,option['message']);
      return false;
    }
    else 
    correct(elem);
    }
   // return;
    break;
    case "RadarMinutes":
    var charpos = elem.value.search(/[^0-9]/);
    var latDeg = document.getElementById('latDegrees').value;
    var lonDeg = document.getElementById('longDegrees').value;
    var latMin = document.getElementById('latMinutes').value;
    var lonMin = document.getElementById('longMinutes').value;
    if(elem.value.length<=0) error(elem,'Required',option['message']); 
    else if(charpos >= 0) error(elem,'Numeric',option['message']);     
    else if(elem.name=="latMinutes") {    
    if(latDeg=="") error(elem,type,option['message']); 
    else if(latDeg>35||latDeg<6)
    {
      error(elem,type,option['message']);
      return false;
    }
    else if(latMin<=60){
    if((latDeg==35)&&(latMin>30))
    {        
        error(elem,type,option['message']);
    }
    else if((latDeg==6)&&(latMin<44))    
    {        
        error(elem,type,option['message']);
    }
//    else {
//      if(latMin<30&&latMin>44) {
//       error(elem,type,option['message']);
//      }
      else {
       correct(elem);
       }
       }
        else 
          error(elem,type,'Minutes must be less than 60.');
      }
      else if(elem.name=="longMinutes") {
       if(lonDeg=="") error(elem,type,'Please select lattitude degrees.');       
        else if(lonDeg>97||lonDeg<68)
        {
          error(elem,type,option['message']);
          return false;
        }
        else if(lonMin<=60){
         if((lonDeg==68)&&(lonMin<7))
        {        
            error(elem,type,option['message']);
        }
        else if((lonDeg==97)&&(lonMin>25))    
        {        
            error(elem,type,option['message']);
        }
//        else {
//          if(lonMin>25||lonMin<7) {
//           error(elem,type,option['message']);
//          }
          else {
           correct(elem);
         }
        }
        else 
          error(elem,type,'Minutes must be less than 60.');
        }
     break;
      case "RadarLongDegrees":
    var charpos = elem.value.search(/[^0-9]/);
    var latDeg = document.getElementById('latDegrees').value;
    if(elem.value.length<=0) error(elem,type,option['message']); 
    else if(charpos >= 0) error(elem,'Numeric',option['message']); 
    else if(latDeg>35||latDeg<6)
    {
      error(elem,type,option['message']);
      return false;
    }
    else 
    return true;
    break;
    case "RadarLongMinutes":
    var charpos = elem.value.search(/[^0-9]/);
    var latDeg = document.getElementById('latDegrees').value;
    var latMin = document.getElementById('latMinutes').value;
    if(elem.value.length<=0) error(elem,type,option['message']); 
    else if(charpos >= 0) error(elem,'Numeric',option['message']); 
    else if(latDeg=="") error(elem,type,'Please select lattitude degrees.'); 
    else if(latDeg>35||latDeg<6)
    {
      error(elem,type,option['message']);
      return false;
    }
    else {
      if(latMin>30||latMin<44) {
       error(elem,type,option['message']);
      }
      else {
     return true;
     }
     }
     break;
     case "RequiredIndiaLatDegree":
     if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 7.32) ||(elem.value > 35.1))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }       
    break;  
    
     case "RequiredIndiaLongDegree":
    if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
       if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 68.2) ||(elem.value > 96.04))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
    //for the validation of latitude and longitude
    case "Required1":
    if(elem.value.length <= 0)
      error(elem,type,option['message']);
    else   correct(elem);
    break;
    case "LatDegree":
      if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -90) ||(elem.value > 90))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
       
    
    break;
     case "RequiredLatDegree":
     if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -90) ||(elem.value > 90))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }   
    
    break;
     case "RequiredLongDegree":
    if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -180) ||(elem.value > 180))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
    ////////////Case for Hydrology Lat and Long Validation//////
    
    case "RequiredHydroLatDegree":
    var charpos = elem.value.search(/[^0-9\.]/);
     if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(charpos>=0) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -90) ||(elem.value > 90))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }       
    break;
    
     case "RequiredHydroLongDegree":
     var charpos = elem.value.search(/[^0-9\.]/);
    if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(charpos>=0) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -180) ||(elem.value > 180))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
    
    //////////////////////////////////
    
    case "LongDegree":
   if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < -180) ||(elem.value > 180))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
    case "Minutes":
    if(elem.value.length > 0)
        {        
      if(isInteger(elem.value)==false) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 0) ||(elem.value > 59))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
    case "Seconds":
       if(elem.value.length > 0)
        {        
      if(isInteger(elem.value)==false) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 0) ||(elem.value > 59))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
     case "RequiredNumericSansZero":
      var charpos = elem.value.search(/[^0-9]/);
			if(elem.value.length <= 0) error(elem,type,option['message']); 
      else if(charpos >= 0) error(elem,type,option['message']); 
      else if(elem.value<=0) error(elem,type,option['message']);
      else correct(elem);break;
        case "RequiredLatitude":
     if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 0) ||(elem.value > 90))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }   
    
    break;
     case "RequiredLongitude":
    if(elem.value.length<=0) error(elem,'Required1',option['message']);
      else if(elem.value.length > 0)
        {        
      if(isNaN(elem.value)) {
      error(elem,type,"Please Enter Numeric Data");
      }
     else  if((elem.value < 0) ||(elem.value > 180))
         error(elem,type,option['message']);
           else   correct(elem);
          
          }
    break;
   ////////////////////////////
//   case "SeismoMagnitude1":
//   var index = 3;
//   
//   
//      case "SeismoType1" : return "This field is required."
//      case "SeismoSource1" : return "This field is required."
//   
   
   
   
   
   
   
   ////////////////////////////
      
      
      
      
    case "OnSubmit" :
      //alert("i mhe");
          var retval= OnSubmit(elem);
          
          return retval;
          break;       
    case "OnReset":
       reset(elem);
          return false;
          break;
		  default:	// Default is for defining the form and setting onsubmit function
			var form = document.forms[elem]
			form.onsubmit = function(){ onSubmit(elem); return false; };
			break;
      
	}		
}
function forgot_validate(){
var userid = document.getElementById('userid').value;
var charpos = userid.search(/[^a-zA-Z0-9\.\_]/);
if(userid==""){
alert('Please enter UserId.');
document.getElementById('userid').value="";
document.getElementById('userid').focus();
return false;
}
else if((userid.length<6)||(charpos>=0)){
alert('Please Check the UserId.');
document.getElementById('userid').value="";
document.getElementById('userid').focus();
return false;
}
else{
return true;
}
}


//////////////////Validate Forecast Upload Form//////////////
function validateDescription()
{
 var comments = document.getElementById("comments").value;
  var zone = document.getElementById('zone').value;
  if((zone=="")||(zone=="Select"))
  {
    alert("Please select a region.");
    return false;
  }
  if(comments=="")
  {
    alert("Please enter the description for the region.");
    return false;
  }
  else if(comments.length>400)
  {
    alert("Description cannot exceed 400 charecters.");
    return false;
  }
  else
  return true;
}


function isInteger(val){
      if(val==null){return false;}
      if (val.length==0){return false;}
      for (var i = 0; i < val.length; i++) {
            var ch = val.charAt(i)
            
            var v = ch<"0";
            if (i == 0 && ch == "-") {
            continue;
            }            
            if (ch < "0" || ch > "9") {
                  return false;
            }
}
return true;
}
function getDistricts(frm)
{
  var stateCode = document.getElementById('awsStateCode').value;
  //alert(stateCode);
  frm.action = "AwsChartAction.do?function=getAwsDistricts&stateCode="+stateCode;
  frm.submit();
  //return true;
}

