/* For Left Trim */
function Ltrim(Str)
{
 for (i = 0; i < (Str.length); i++)
   { if (Str.charAt(i) != ' ')
         return Str.substring(i)
     else
         Str.substring(i)
    }
 return ""
}
/* For Right Trim */
function Rtrim(Str)
{
 for (i = Str.length-1; i >= 0; i--)
  {  if (Str.charAt(i) != ' ')
         return Str.substring(0,i+1)
     else
         Str.substring(0,i)
  }
   return ""
}
// For Checking Null
function CheckNull(strchecknull)
{ 
 if(Rtrim(Ltrim(strchecknull)) == "")
	 return false;
 else 
	return true;
}
//name validation 
function validate_name(name)
{
for (var i = 0; i < name.length; i++) 
{
	var ch = name.substring(i, i + 1);
	if (((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) && ch != ' ') 
	{
	return false;
  	}
}
	return true;
}
//Check Phone Number
function CheckPhoneNumber(value)
{
if(value.match( /^[0-9 -]*$/)==null)
{
return false;
}
else
{
return true;
}
}
//Check Complete Phone Number
function CheckContactNumber(contact)
{
	for (var i = 0; i < contact.length; i++) 
	{
		var num = contact.substring(i, i + 1);
		if (!((num >= '0' && num <= '9') || (num =='+') || (num =='-')))
		{
		return false;
  		}
	}
return true;
}
/* This function validate email */
function emailCheck (emailStr)
{
	var checkTLD=1;
	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;
	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 invalidChars = '\/\'\\ $#%=,~`&*+";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++)
	{
   	if (emailStr.indexOf(invalidChars.charAt(i),0) > -1)
		{
     	return false;
   		}
	}
	var user=matchArray[1];
	var domain=matchArray[2];
	for (i=0; i<user.length; i++)
	{
		if (user.charCodeAt(i)>127)
		{
		 return false;
		}
	}
	for (i=0; i<domain.length; i++)
	{
		if (domain.charCodeAt(i)>127)
		{
		 return false;
		}
	}
	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;
			}
		}
		return true;
	}
	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++)
	{
		if (domArr[i].search(atomPat)==-1)
		{
		 return false;
		}
	}
	if (checkTLD && domArr[domArr.length-1].length!=2 && 
	domArr[domArr.length-1].search(knownDomsPat)==-1)
	{
	 return false;
	}
	if (len<2)
	{
	 return false;
	}
	return true;
}
//website
function WebCheck (webStr)
{
	if(webStr.indexOf('.') == -1)
	{
   	return false;
	}
	var invalidChars = '\/\'\\ $@#%=,~`&*+";:?!()[]\{\}^|';
	for (i=0; i<invalidChars.length; i++)
	{
   	if (webStr.indexOf(invalidChars.charAt(i),0) > -1)
   	{
    return false;
   	}
	}
	if (webStr.indexOf('..',0) != -1)
	{
   	return false;
   	}
  	var periodsPos = webStr.indexOf('.',0);
	if (periodsPos == 0)
	{
   	return false;
	}
	Period_Position = webStr.lastIndexOf(".")
	WebInd_length = webStr.length
	if (Period_Position == WebInd_length -1)
	{
   	return false;
	}
	var  Period_Position_1 = Period_Position + 1
	for (var i = Period_Position_1; i < WebInd_length; i++) 
	{
	var ch = webStr.substring(i, i + 1);
	if ((ch < "a" || "z" < ch) && (ch < "A" || "Z" < ch)) 
	{
	return false;
  	}
	}
}
function loginName(loginIdStr)
{
	for (var i = 0; i < loginIdStr.length; i++) 
	{
		var ch = loginIdStr.substring(i, i + 1);
		if (!((ch >= 'a' && ch <= 'z') || (ch >= 'A' && ch <= 'Z') || (ch >= '0' && ch <= '9') || (ch =='.') || (ch =='_')))
		{
		return false;
  		}
	}
	return true;
}

function IsDate(DateToCheck,FormatAs){
	if(DateToCheck==""){return true;}
		if(!FormatAs){FormatAs="dd/mm/yyyy";}
		var m_strDate = FormatDate(DateToCheck,FormatAs);
		if(m_strDate==""){
		return false;
	}
	var m_arrDate = m_strDate.split("/");
	var m_DAY = m_arrDate[0];
	var m_MONTH = m_arrDate[1];
	var m_YEAR = m_arrDate[2];
	if(m_YEAR.length > 4){return false;}
	m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
	var testDate=new Date(m_strDate);	
	if(testDate.getMonth()+1==m_MONTH){
		return true;
	} 
	else{
		return false;
	}
}//end function IsDate
function FormatDate(DateToFormat,FormatAs){
	if(DateToFormat==""){return"";}
	if(!FormatAs){FormatAs="dd/mm/yyyy";}

	var strReturnDate;
	FormatAs = FormatAs.toLowerCase();
	DateToFormat = DateToFormat.toLowerCase();
	var arrDate
	var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
	var strMONTH;
	var Separator;

	while(DateToFormat.indexOf("st")>-1){
		DateToFormat = DateToFormat.replace("st","");
	}

	while(DateToFormat.indexOf("nd")>-1){
		DateToFormat = DateToFormat.replace("nd","");
	}

	while(DateToFormat.indexOf("rd")>-1){
		DateToFormat = DateToFormat.replace("rd","");
	}

	while(DateToFormat.indexOf("th")>-1){
		DateToFormat = DateToFormat.replace("th","");
	}

	if(DateToFormat.indexOf(".")>-1){
		Separator = ".";
	}

	if(DateToFormat.indexOf("-")>-1){
		Separator = "-";
	}

	if(DateToFormat.indexOf("/")>-1){
		Separator = "/";
	}

	if(DateToFormat.indexOf(" ")>-1){
		Separator = " ";
	}

	arrDate = DateToFormat.split(Separator);
	DateToFormat = "";
	for(var iSD = 0;iSD < arrDate.length;iSD++){
		if(arrDate[iSD]!=""){
		DateToFormat += arrDate[iSD] + Separator;
		}
	}
	DateToFormat = DateToFormat.substring(0,DateToFormat.length-1);
	arrDate = DateToFormat.split(Separator);

	if(arrDate.length < 3){
		return "";
	}

	var DAY = arrDate[0];
	var MONTH = arrDate[1];
	var YEAR = arrDate[2];

	if(parseFloat(arrDate[1]) > 12){
		DAY = arrDate[1];
		MONTH = arrDate[0];
	}

	if(parseFloat(DAY) && DAY.toString().length==4){
		YEAR = arrDate[0];
		DAY = arrDate[2];
		MONTH = arrDate[1];
	}

	for(var iSD = 0;iSD < arrMonths.length;iSD++){
		var ShortMonth = arrMonths[iSD].substring(0,3).toLowerCase();
		var MonthPosition = DateToFormat.indexOf(ShortMonth);
		if(MonthPosition > -1){
			MONTH = iSD + 1;
			if(MonthPosition == 0){
				DAY = arrDate[1];
				YEAR = arrDate[2];
			}
			break;
		}
	}

	var strTemp = YEAR.toString();
	if(strTemp.length==2){
		if(parseFloat(YEAR)>40){
			YEAR = "19" + YEAR;
		}
		else{
			YEAR = "20" + YEAR;
		}
	}

	if(parseInt(MONTH)< 10 && MONTH.toString().length < 2){
		MONTH = "0" + MONTH;
	}
	if(parseInt(DAY)< 10 && DAY.toString().length < 2){
		DAY = "0" + DAY;
	}
	switch (FormatAs){
		case "dd/mm/yyyy":
			return DAY + "/" + MONTH + "/" + YEAR;
		case "mm/dd/yyyy":
			return MONTH + "/" + DAY + "/" + YEAR;
		case "dd/mmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1].substring(0,3) + " " + YEAR;
		case "mmm/dd/yyyy":
			return arrMonths[MONTH -1].substring(0,3) + " " + DAY + " " + YEAR;
		case "dd/mmmm/yyyy":
			return DAY + " " + arrMonths[MONTH -1] + " " + YEAR;	
		case "mmmm/dd/yyyy":
			return arrMonths[MONTH -1] + " " + DAY + " " + YEAR;
	}
	return DAY + "/" + strMONTH + "/" + YEAR;;
}
        function aa_getDocHeight() {
            var b = document.body, e = document.documentElement;
            var esh = 0, eoh = 0, bsh = 0, boh = 0;
            if (e) {
                esh = e.scrollHeight;
                eoh = e.offsetHeight;
            }
            if (b) {
                bsh = b.scrollHeight;
                boh = b.offsetHeight;
            }
            if (boh <= 0) boh = Math.max(esh, eoh, bsh, boh);
            return Math.max(esh, eoh, bsh, boh);
        }
        function aa_getDocWidth() {
            var b = document.body, e = document.documentElement;
            var esw = 0, eow = 0, bsw = 0, bow = 0;
            if (e) {
                esw = e.scrollWidth;
                eow = e.offsetWidth;
            }
            if (b) {
                bsw = b.scrollWidth;
                bow = b.offsetWidth;
            }
            return Math.max(esw, eow, bsw, bow);
        }
	    function aa_setDivHeight()	{
		    var eventArg = aa_setDivHeight.arguments;
		    for(i=0; i<eventArg.length; i++)
		    {
			    if(isNaN(window.document.getElementById(eventArg[i])))	{
			    window.document.getElementById(eventArg[i]).style.height = window.document.getElementById(eventArg[i]).offsetHeight + 'px'; }
		    }
	    }
	    function aa_setDivWidth()	{
		    var eventArg = aa_setDivWidth.arguments;
		    for(i=0; i<eventArg.length; i++)
		    {
			    if(isNaN(window.document.getElementById(eventArg[i])))	{
			    window.document.getElementById(eventArg[i]).style.width = window.document.getElementById(eventArg[i]).offsetWidth + 'px'; }
		    }
	    }        
        function aa_progressDisableLayer() {
            window.document.getElementById("apDivProgressDisableLayer").style.height = aa_getDocHeight() + "px";
            window.document.getElementById("apDivProgressDisableLayer").style.width = aa_getDocWidth() + "px";
            var clientWindowInnerWidth = window.document.body.clientWidth;
            var clientWindowInnerHeight = window.document.body.clientHeight;
            LayerLeftPosition =  Math.floor((clientWindowInnerWidth -  window.document.getElementById("apDivProgressBar").offsetWidth) / 2);
            LayerTopPosition =  Math.floor((clientWindowInnerHeight -  window.document.getElementById("apDivProgressBar").offsetHeight) / 2);
            window.document.getElementById("apDivProgressBar").style.left = (LayerLeftPosition - 20) + "px";
            window.document.getElementById("apDivProgressBar").style.top = 200 + "px";	
        }

        function aa_validateEmail(email) {
	        //var reg  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	        //var reg = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	        //var reg=/^([a-zA-Z0-9_.-])+@([a-zA-Z0-9_.-])+\.([a-zA-Z])+([a-zA-Z])+/;
	        //var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
	        //var reg = /^[a-zA-Z0-9_]+@[a-zA-Z0-9-]+.[a-zA-Z0-9-.]+$/;
	        //var reg = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;
	        var reg = /^(([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}))+([;,](([a-zA-Z0-9_\-\.]+)@([a-zA-Z0-9_\-\.]+)\.([a-zA-Z]{2,5}))+)*$/;
	        var address, eventArg = aa_validateEmail.arguments;
	        for(i=0; i<eventArg.length; i++)
	        {
		        if(isNaN(window.document.getElementById(eventArg[i])))	{
		        address = window.document.getElementById(eventArg[i]).value;
			        if(reg.test(address) == false) {
			          //alert('Invalid Email Address');
			          return false;
			        }
			        else	{
				        var domain = address.substring(address.indexOf('@',0) + 1, address.length);
				        var domArr=domain.split(".");
				        if(domArr.length > 3) {
					        //alert('invalid domain and subdomain name');
					        return false;
				        }
				        else	{
					        return true;
				        }
			        }
		        }
		        else	{
			        return false;
			        break;
		        }
	        }
        }


