//Trim Left and Right Space form a string
function trim(sString)  { 
  sTrimmedString = ""; 
  if (sString != "") {  
    var iStart = 0; 
	var iEnd = sString.length - 1; 
	var sWhitespace = " \t\f\n\r"; 
			  
	while (sWhitespace.indexOf(sString.charAt(iStart)) != -1) { 
	  iStart++; 
	  if (iStart > iEnd) 
	    break; 
	} 
	
	// If the string not just whitespace 
	if (iStart <= iEnd) { 
	  while (sWhitespace.indexOf(sString.charAt(iEnd)) != -1) 
	    iEnd--; 
      sTrimmedString = sString.substring(iStart,++iEnd); 
	} 
  } 
  return sTrimmedString; 
}
/**
* Function for checking the email
**/
function isEmail(emailStr)
{
	var emailPat=/^(.+)@(.+)$/
	var specialChars="\\(\\)<>@,;:\\\\\\\"\\.\\[\\]"
	var validChars="\[^\\s" + specialChars + "\]"
	var quotedUser="(\"[^\"]*\")"
	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/
	var atom=validChars + '+'
	var word="(" + atom + "|" + quotedUser + ")"
	var userPat=new RegExp("^" + word + "(\\." + word + ")*$")
	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$")
	var matchArray=emailStr.match(emailPat)

	if (matchArray==null)
		return false
	
	var user=matchArray[1]
	var domain=matchArray[2]

	if (user.match(userPat)==null)
			return false
				
	var IPArray=domain.match(ipDomainPat)

	if (IPArray!=null) 
	{
		for (var i=1;i<=4;i++)
		{
			if (IPArray[i]>255) 
							return false
		}		
	}
	var domainArray=domain.match(domainPat)
	if (domainArray==null)
		return false
	
	var atomPat=new RegExp(atom,"g")
	var domArr=domain.match(atomPat)
	var len=domArr.length
		
	if (domArr[domArr.length-1].length<2 || domArr[domArr.length-1].length>3) 
			return false

	if (len<2)
		return false

	return true
}
/**
* Function for the cheking the intiger value
**/
function isInteger(s)
{   
	
	   if(!isNaN(s))
	  {
	  	return true;
	  }
	  else
	  {
	  	return false;
	  }
	  /*
	  var i;
    for (i = 0; i < s.length; i++)
    {   
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;*/
}

/**
* Function to check Text Length
**/
function checkTextLength(obj,restrictLength,truncFlag)
{
	if(obj.value.length>restrictLength){
		if(truncFlag) obj.disabled = true;
		alert("Text should not be more than " + restrictLength + " characters");
		if(truncFlag) obj.disabled = false;
		obj.focus();
		if(truncFlag) obj.value = obj.value.substring(0,restrictLength);
		return false;
	}else{
		return true;
	}
}
/**
* For Show/Hide Login/Register/Forgot Password popup
**/
function popupShowHide(divName,toggle)
{	
		/*if(divName=='login')
		{			
			document.getElementById('errLogin').className='';
			document.getElementById('errLogin').innerHTML='';
			document.getElementById('txtEmail').value='';
			document.getElementById('txtPassword').value='';*/
			document.getElementById('Ifrm').style.display='none';
			document.getElementById('DvMain').style.display='none';
			document.getElementById('DvMsgBx').style.display='none';
			document.getElementById('DvMsgBx').style.display='none';			
		/*}
		else if(divName=='Signup')
		{			
			document.getElementById('errSignup').className='';
			document.getElementById('errSignup').innerHTML='';
			document.getElementById('MainDv').style.display='none';
			document.getElementById('DvSign').style.display='none';			
		}
		else if(divName=='Forgot')
		{			
			document.getElementById('errForgot').className='';
			document.getElementById('errForgot').innerHTML='';
			document.getElementById('MainDv').style.display='none';
			document.getElementById('Forget').style.display='none';		
		}*/

}



function validateDateFormat(dateValue, format) {
	// Default is the American format
	if (typeof format != "string") { format = "MM/DD/YYYY"; }

	// Create a literal regular expression based on format
	var reLiteral = format.replace(/([$^.*+?=!:|\/\\\(\)\[\]\{\}])/g, "\\$1");

	// Convert all the tokens to RE elements
	reLiteral = reLiteral.replace( "YYYY", "([0-9]{2,4})" );
	reLiteral = reLiteral.replace( "MM", "([0]?[1-9]|[1][0-2])" );
	reLiteral = reLiteral.replace( "M", "([1-9]|10|11|12)" );
	reLiteral = reLiteral.replace( "DDD", "(00[1-9]|0[1-9][0-9]|[12][0-9][0-9]|3[0-5][0-9]|36[0-6])" );
	//reLiteral = reLiteral.replace( "DD", "(0[1-9]|[12][0-9]|30|31)" );
	reLiteral = reLiteral.replace( "DD", "([0]?[1-9]|[1-2][0-9]|30|31)" );
	reLiteral = reLiteral.replace( "D", "([1-9]|[12][0-9]|30|31)" );
	reLiteral = reLiteral.replace( "ww", "(0[1-9]|[1-4][0-9]|5[0-3])" );
	reLiteral = reLiteral.replace( "d", "([1-7])" );

	// Anchor pattern to begining and end of string
	reLiteral = "^" + reLiteral + "$";

	// Dynamic RE that parses the original format given
	var re = new RegExp(reLiteral);
	
	// Test if date is in a valid format
	if (!re.test(dateValue))  return false;

	// Parse date to get elements and check if date is valid
	// Assume valid values for date elements not given.
	var year = 0, month = 1, date = 1, dayofyear = 1, week = 1, day = 1;

	// Capture tokens
	var tokens = format.match( /(YYYY|MM|M|DDD|DD|D|ww|d)/g );

	// Capture date values
	var values = re.exec(dateValue);

	// Match up tokens with date values
	for (var i = 0; i < tokens.length; i++) {
		switch (tokens[i]) {
		case "YYYY":
			year = Number(values[i+1]); break;
		case "M":
		case "MM":
			month = Number(values[i+1]); break;
		case "D":
		case "DD":
			date = Number(values[i+1]); break;
		case "DDD":
			dayofyear = Number(values[i+1]); break;
		case "ww":
			week = Number(values[i+1]); break;
		case "d":
			day = Number(values[i+1]); break;
		}
	}

	// Leap years are divisible by 4, but not by 100, unless by 400
	var leapyear = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));

	// 31st of a month with 30 days
	if (date == 31 && (month == 4 || month == 6 || month == 9 || month == 11)) return false; 

	// February 30th or 31st
	if (date >= 30 && month == 2) return false; 

	// February 29th outside a leap year
	if (date == 29 && month == 2 && !leapyear) return false; 
	if (dayofyear == 366 && !leapyear)  return false;

	return true;
}

//To Showhide Forecast Description.
function showhideDesc(id)
{
  if(document.getElementById('desc_'+id).style.display=='none')
    document.getElementById('desc_'+id).style.display='block'
  else
    document.getElementById('desc_'+id).style.display='none'
}

function isAlphaNumeric(valueToTest)
{
    var myRegxp = /^[\w ]+$/;
    if(myRegxp.test(valueToTest) == 1)
    {
     return true;
    }
    else
    {
      return false;
    }
}

function isAllowedForDesc(desc)
{
	
	 var myRegxp = /^[\w\.\!\,\'\"\_ ]+$/;
    if(myRegxp.test(desc) == 1)
    {
     return true;
    }
    else
    {
      return false;
    }
	
	
}

function isLinkName(valueToTest)
{
    var myRegxp = /^[\w\d\. ]+$/;
    if(myRegxp.test(valueToTest) == 1)
    {
     return true;
    }
    else
    {
      return false;
    }
}




//* Validate Date Field script- mm/dd/yyyy format

function checkdate(input)
{
		//var validformat=/^\d{2}\/\d{2}\/\d{4}$/ //Basic check for format validity
		var validformat=/^\d{2}\-\d{2}\-\d{4}$/ //Basic check for format validity
		var returnval=false
		if (!validformat.test(input))
		return false;
		//alert("Invalid Date Format. Please correct and submit again.")
		else
		{ //Detailed check for valid date ranges
		var monthfield=input.split("-")[0]
		var dayfield=input.split("-")[1]
		var yearfield=input.split("-")[2]
		var dayobj = new Date(yearfield, monthfield-1, dayfield)
		if ((dayobj.getMonth()+1!=monthfield)||(dayobj.getDate()!=dayfield)||(dayobj.getFullYear()!=yearfield))
		return false;
		//alert("Invalid Day, Month, or Year range detected. Please correct and submit again.")
		else
		return true;
		}
		//if (returnval==false) input.select()
		//return returnval
}

