//1.Function to trim the leading and trailing white spaces
function trim(strText) { 
    // this will get rid of leading spaces 
    while (strText.substring(0,1) == ' ') 
        strText = strText.substring(1, strText.length);

    // this will get rid of trailing spaces 
    while (strText.substring(strText.length-1,strText.length) == ' ')
        strText = strText.substring(0, strText.length-1);

   return strText;
} 

function TrimText(srcString)
{
	var source
	var startIndex 
	var endIndex
	var strLength
	var i
	source = srcString;			
	strLength = source.length;
	for(i=0;i<=(strLength-1);i++)
	{
		if (source.substr(i,1) != " ")
		{
			startIndex = i;
			break;
		}
	}
	for(i=(strLength-1);i>=0;i--)
	{
		if (source.substr(i,1) != " ")
		{
			endIndex = i;
			break;
		}
	}
	var result;
	
		result = source.substring(startIndex,endIndex+1);
	
	
	return result;

}	


//2.Function to get the no of days in a month
function days_in_month (year, month) {
		 return 32 - new Date(year, month, 32).getDate();	 
		}


//3.Function to compare two dates.
// Pass two dates as input 
//Returns 1 if first date is less, 2 if second date is less and 0 if both dates are the same

function CompareDates(dt1, dt2) 
{
         
	var diff1 = Date.parse(dt1); 
	var diff2 = Date.parse(dt2);
	var returnValue=3;
	if(diff1 == diff2)
	{
		returnValue = 0;
	}	
	else if(diff1 < diff2)
	{
		returnValue = 1;
	}	
	else if(diff1 > diff2)
	{
		returnValue = 2;
	}	
	return returnValue;	
}
//4. Functions for showing mouseover images
function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v3.0
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}


//5.Function to show the customers list for selected mro thru xml http 
function getCustomers()
{ 
		  var strReturn="";
		  var strReturnLength="";
		  var strReturnFinal="";

			   if(document.mainForm.mro.options.selectedIndex == 0)
			   {   	   
				strReturn = getAll();
				wordcount(strReturn);
				strReturnLength=strReturn.length-1;
				strReturnFinal= strReturn.substring(0,strReturnLength);
				getXML(strReturnFinal);		
			   }
		 else
				 {
				var finalStrNew="";
				var finalStrNew1="";
				var finalStrNew2="";

				//build the mro ids to be passed in the IN condition
				for (var Current=0;Current < document.mainForm("mro").options.length;Current++) 
				{	
					if (document.mainForm("mro").options[Current].selected) 
					{
						var mroNew=document.mainForm("mro").options[Current].value + " ,";
						finalStrNew+=mroNew;
						
					}
				}

				wordcount(finalStrNew);
				finalStrNew1=finalStrNew.length-1;
				finalStrNew2= finalStrNew.substring(0,finalStrNew1);
				getXML(finalStrNew2);
				 }
}

//6.function to pass a string to the xml and get values back
function getXML(str)
{
var strVar=str;

//build the xml
var queryXML= "MRO_CUSTOMER.MROORGANIZATIONID in ("+ strVar+")";
var sendXML= "/zcSite/MROPortal/custom/Copy__of__getCustomerForSelect.xml?condition__1=" + queryXML;
		var xmlHttp = XmlHttp.create();
	    
	    xmlHttp.open ("GET",sendXML,false);
	    xmlHttp.send (null);
	
	    var doc = xmlHttp.responseXML;
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		
		xmlDoc.load(sendXML);
		var nodes=xmlDoc.getElementsByTagName("customer").length;
		var length = document.mainForm.customer.length;
		var strForCustomer="";

				for(var i=0; i<nodes;i++)
				{
				strForCustomer+='<option value='+xmlDoc.getElementsByTagName("customer1").item(i).text+'>'+xmlDoc.documentElement.childNodes.item(i).text+'<\/option>';
				}
				customer.innerHTML='<select class="Select-DropDown" name="customer" id="customer" multiple size="4" style="width:120px"><option selected value="All">All<\/option>'+strForCustomer+'<\/select>';
				
}

//7.function to get mro ids if 'ALL' is selected
function getAll()
{
    var strAll ="";
	for (var k=0;k < document.mainForm.mro.length;k++)
	{
	 if((document.mainForm.mro.options[k].text != "All") && (document.mainForm.mro.options[k].value != ""))
	  {
	   strAll +=  document.mainForm.mro.options[k].value + "," ;
	  } 
	}
	return strAll
}

//8.Function to get customer ids if 'ALL' is selected
function getAllCustomer()
{
    var strAllcustomers ="";
	for (var k=0;k < document.mainForm.customer.length;k++)
	{
	 if((document.mainForm.customer.options[k].text != "All") && (document.mainForm.customer.options[k].value != ""))
	  {
	   strAllcustomers +=  document.mainForm.customer.options[k].value + "," ;
	  } 
	}
	return strAllcustomers
}

//9.Function to get Level3 ids if 'ALL' is selected
function getAllLevel3()
{
    var strAllLevel3 ="";
	for (var k=0;k < document.mainForm.level3.length;k++)
	{
	 if((document.mainForm.level3.options[k].text != "All") && (document.mainForm.level3.options[k].value != ""))
	  {
	   strAllLevel3 +=  document.mainForm.level3.options[k].value + "," ;
	  } 
	}
	return strAllLevel3
}

//9. Function to get the number of days in a month
function days_in_month (year, month) {
		 return 32 - new Date(year, month, 32).getDate();	 
		}


//10. Functions to get date period lesser than 1 year
function timeDifference(stYear,endYear) {
    var difference = endYear.getTime() - stYear.getTime(); 
    var daysDifference = Math.floor(difference/1000/60/60/24);   
    var hoursDifference = Math.floor(difference/1000/60/60);   
    var minutesDifference = Math.floor(difference/1000/60);    
    var secondsDifference = Math.floor(difference/1000);
    return(daysDifference)     
}
 

function showLastOfMonth(ldate){   
	alert("D1 "+ ldate)
   ldate.setMonth(ldate.getMonth() + 1 );
   ldate.setDate(1);
   ldate.setDate( ldate.getDate() - 1);
   alert("D2  " +ldate)
   //return(ldate)   
}
 
function showNextYear(ldate){   	   
  var yr = ldate.getFullYear()
  ldate.setFullYear(yr)
  ldate.setFullYear(ldate.getYear() + 1)  
  return(ldate)   
}
 
 function fnCalulateYear()
 {
var stMonth = document.mainForm("fmonth").value
 
 var stYear = document.mainForm("fyear").value
 var endMonth = document.mainForm("tmonth").value
 var endYear = document.mainForm("tyear").value
 var fmnth;
	fmnth=stMonth;
	switch (stMonth)
	{  
	case "January" :
	fmnth=01;    
	break; 
	case "February" :
	fmnth=02;    
	break; 
	case "March" :
	fmnth=03;    
	break; 
	case "April" :
	fmnth=04;    
	break; 
	case "May" :
	fmnth=05;    
	break; 
	case "June" :
	fmnth=06;    
	break; 
	case "July" :
	fmnth=07;    
	break; 
	case "August" :
	fmnth=08;    
	break; 
	case "September" :  
	fmnth=09;  
	break;   
	case "October" :
	fmnth=10;    
	break; 
	case "November" :
	fmnth=11;    
	break; 
	case "December" :
	fmnth=12;    
	break; 
	}
	//alert(fmnth);
var tmnth;
	tmnth=endMonth;
	switch (endMonth)
	{  
	case "January" :
	tmnth=01;    
	break; 
	case "February" :
	tmnth=02;    
	break; 
	case "March" :
	tmnth=03;    
	break; 
	case "April" :
	tmnth=04;    
	break; 
	case "May" :
	tmnth=05;    
	break; 
	case "June" :
	tmnth=06;    
	break; 
	case "July" :
	tmnth=07;    
	break; 
	case "August" :
	tmnth=08;    
	break; 
	case "September" :  
	tmnth=09;  
	break;   
	case "October" :
	tmnth=10;    
	break; 
	case "November" :
	tmnth=11;    
	break; 
	case "December" :
	tmnth=12;    
	break; 
	}
//alert(tmnth);
 var diffOneYear
 var returnValue=3;
 
 var date1 = new Date(stYear,fmnth,1) 
 //alert(date1);
 var ddTime = date1.getTime();
 // Calculate Next Year
 var retNextYear = 	showNextYear(date1)
 var ddTime1 = retNextYear.getTime(); 
 var diffOneYear = ddTime1 - ddTime;

  

var stringDate;
	stringDate=endMonth;
	switch (endMonth)
	{  
	case "January" :
	stringDate=0;    
	break; 
	case "February" :
	stringDate=1;    
	break; 
	case "March" :
	stringDate=2;    
	break; 
	case "April" :
	stringDate=3;    
	break; 
	case "May" :
	stringDate=4;    
	break; 
	case "June" :
	stringDate=5;    
	break; 
	case "July" :
	stringDate=6;    
	break; 
	case "August" :
	stringDate=7;    
	break; 
	case "September" :  
	stringDate=8;  
	break;   
	case "October" :
	stringDate=9;    
	break; 
	case "November" :
	stringDate=10;    
	break; 
	case "December" :
	stringDate=11;    
	break; 
	}
	var getDays=days_in_month (endYear, stringDate);

var date2 = new Date(endYear,tmnth,getDays)
//alert(date2)
var diffSelected = date2.getTime() - ddTime

if(diffSelected > diffOneYear)
{
	returnValue= 1;
	//alert("Greater")
}
else
{
	returnValue= 0;
	//alert("Lesser")
}
 return returnValue
 
  } 

// 11. Function to check Email Validation


function fnIsValidEmailAddress(sEmail)
	{
		var source
		var space = 0;
		var strLength
		var i
		var count = 0 
		var count1 = 0 
		var result="false";
		source = sEmail
		strLength = source.length;
		if(strLength!=0)
		{
		
		//checks if the emailadrress contains the @ character only once and checks its position	  
		for(i=0;i<=(strLength-1);i++)
		{
			if (source.substr(i,1) == "@")
			{
				count = count + 1 ;
			}
			if (source.substr(i,1) == ".")
			{
				count1 = count1 + 1 ;
			}	
			if (source.substr(i,1) == " ")
			{
				space = space + 1 ;
			}	
		}
		if (space > 0)
		{ 
			
			return false;
		}
		
		if (count < 1)
		{ 
			
			return false;
		}
		if (count1 < 1)
		{ 
			
			return false;
		} 
							   
		if (count > 1)
		{ 
			
			return false;
		}
							 				 
		if ((source.substr(0,1) == "@") || (source.substr(strLength-1,1) == "@")) 
		{ 
			
			return false;
		}
		if ((source.substr(0,1) == ".") || (source.substr(strLength-1,1) == "."))     
		{ 
			 
			return false;
		}
							  
		for(i=0;i<=(strLength-1);i++)
		{
			if (source.substr(i,1) == "@")
			   {
				if (source.substr(i+1,1) == ".") 	
			      { 
					
			         return false; 
				  }
				}
			if (source.substr(i,1) == ".")
			   {
				if (source.substr(i+1,1) == "@") 	
			      { 
					
			        return false; 
				  }		
				}
			if (source.substr(i,1) == ".")
			   {
				if (source.substr(i+1,1) == ".") 	
			      { 
					
			        return false; 
				  }			  				  
			   }				    
		}}return true;  
	}


//Function for monthNo
function getMonthNo(month)
{
var monthNo=month;
	switch (monthNo)
	{  
	case "January" :
	monthNo=0;    
	break; 
	case "February" :
	monthNo=1;    
	break; 
	case "March" :
	monthNo=2;    
	break; 
	case "April" :
	monthNo=3;    
	break; 
	case "May" :
	monthNo=4;    
	break; 
	case "June" :
	monthNo=5;    
	break; 
	case "July" :
	monthNo=6;    
	break; 
	case "August" :
	monthNo=7;    
	break; 
	case "September" :  
	monthNo=8;  
	break;   
	case "October" :
	monthNo=9;    
	break; 
	case "November" :
	monthNo=10;    
	break; 
	case "December" :
	monthNo=11;    
	break; 
	}
	return monthNo;
}
function getMonthNew(monthNo)
{
var month=monthNo;
var monthNew="";
switch (month)
	{  
	case 1 :
	monthNew="January";    
	break; 
	case 2 :
	monthNew="February";    
	break; 
	case 3 :
	monthNew="March";    
	break; 
	case 4 :
	monthNew="April";    
	break; 
	case 5 :
	monthNew="May";    
	break; 
	case 6 :
	monthNew="June";    
	break; 
	case 7 :
	monthNew="July";    
	break; 
	case 8 :
	monthNew="August";    
	break; 
	case 9 :  
	monthNew="September";  
	break;   
	case 10 :
	monthNew="October";    
	break; 
	case 11 :
	monthNew="November";    
	break; 
	case 12 :
	monthNew="December";    
	break; 
	}
return monthNew;
}
function getMonthVal(val)
{
var mnthVal=val;
var mnth="";
switch (mnthVal)
	{  
	case "January" :
	mnth=01;    
	break; 
	case "February" :
	mnth=02;    
	break; 
	case "March" :
	mnth=03;    
	break; 
	case "April" :
	mnth=04;    
	break; 
	case "May" :
	mnth=05;    
	break; 
	case "June" :
	mnth=06;    
	break; 
	case "July" :
	mnth=07;    
	break; 
	case "August" :
	mnth=08;    
	break; 
	case "September" :  
	mnth=09;  
	break;   
	case "October" :
	mnth=10;    
	break; 
	case "November" :
	mnth=11;    
	break; 
	case "December" :
	mnth=12;    
	break; 
	}
	return mnth;
}
function getMonthNoStr(monthStr)
{
var monthStrVal= monthStr;
var str2="";
switch (monthStrVal)
	{  
	case "January" :
	str2=0;    
	break; 
	case "February" :
	str2=1;    
	break; 
	case "March" :
	str2=2;    
	break; 
	case "April" :
	str2=3;    
	break; 
	case "May" :
	str2=4;    
	break; 
	case "June" :
	str2=5;    
	break; 
	case "July" :
	str2=6;    
	break; 
	case "August" :
	str2=7;    
	break; 
	case "September" :  
	str2=8;  
	break;   
	case "October" :
	str2=9;    
	break; 
	case "November" :
	str2=10;    
	break; 
	case "December" :
	str2=11;    
	break; 
	}
	return str2;
}
function wordcount(string) {
		var a = string.split(/\s+/g); // split the sentence into an array of words
		return a.length;
		}


// Display the customer list for selected mro for shipment tracking screen
function getCustomersForShipment()

{ 
		  var strReturn="";
		  var strReturnLength="";
		  var strReturnFinal="";

			   if(document.mainForm.mro.options.selectedIndex == 0)
			   {   	   
				strReturn = getAll();
				wordcount(strReturn);
				strReturnLength=strReturn.length-1;
				strReturnFinal= strReturn.substring(0,strReturnLength);
				getXMLCustomer(strReturnFinal);		
			   }
		 else
				 {
				var finalStrNew="";
				var finalStrNew1="";
				var finalStrNew2="";

				//build the mro ids to be passed in the IN condition
				for (var Current=0;Current < document.mainForm("mro").options.length;Current++) 
				{	
					if (document.mainForm("mro").options[Current].selected) 
					{
						var mroNew=document.mainForm("mro").options[Current].value + " ,";
						finalStrNew+=mroNew;
						
					}
				}

				wordcount(finalStrNew);
				finalStrNew1=finalStrNew.length-1;
				finalStrNew2= finalStrNew.substring(0,finalStrNew1);
				getXMLCustomer(finalStrNew2);
				 }
}

//6.function to pass a string to the xml and get values back
function getXMLCustomer(str)
{
var strVar=str;

//build the xml
var queryXML= "MRO_CUSTOMER.MROORGANIZATIONID in ("+ strVar+")";
var sendXML= "/zcSite/MROPortal/custom/Copy__of__getCustomerForSelect.xml?condition__1=" + queryXML;
		var xmlHttp = XmlHttp.create();
	    
	    xmlHttp.open ("GET",sendXML,false);
	    xmlHttp.send (null);
	
	    var doc = xmlHttp.responseXML;
		var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
		xmlDoc.async="false";
		
		xmlDoc.load(sendXML);
		var nodes=xmlDoc.getElementsByTagName("customer").length;
		var length = document.mainForm.customer.length;
		var strForCustomer="";

				for(var i=0; i<nodes;i++)
				{
				strForCustomer+='<option value='+xmlDoc.getElementsByTagName("customer1").item(i).text+'>'+xmlDoc.documentElement.childNodes.item(i).text+'<\/option>';
				}
				customer.innerHTML='<select class="Select-DropDown" name="customer" id="customer" style="width:245px"><option>None<\/option>'+strForCustomer+'<\/select>';
				
}
