/***************************************************************************************

	WebAccess Common javascript functions

	VERSION: 3.1

	(plr 5/2005) allow blank zip code for non-US/CA addresses
	(plr 6/2005) prompt user to select a date when a date range has been selected
	(plr 6/2005) added dynamic sizing for image viewer
	(plr 12/2005) added inbound order validation
	(plr 01/2006) added phone nbr xxx-xxx-xxxx validation
	(plr 05/2007) added distribution list validation for inactive members
	(plr 08/2007) added credit card validation 

****************************************************************************************/

/* 
DateAdjust is used with dates.php <SELECT> handling 
*/

var MonthDays = [30, 27, 30, 29, 30, 29, 30, 30, 29, 30, 29, 30];

function DateAdjust(Month, Day, Year, DateWasChanged) 
{
	if (Year.options[Year.selectedIndex].value % 4 == 0)
		MonthDays[1] = 28;
	else
		MonthDays[1] = 27;

	if (Day.selectedIndex > MonthDays[Month.selectedIndex])
		Day.selectedIndex = MonthDays[Month.selectedIndex];

	DateWasChanged.value = "Y";
}

function trim(inputString) 
{
   var retValue = inputString;
   var ch = retValue.substring(0, 1);
   while (ch == " ") { // Check for spaces at the beginning of the string
      retValue = retValue.substring(1, retValue.length);
      ch = retValue.substring(0, 1);
   }
   ch = retValue.substring(retValue.length-1, retValue.length);
   while (ch == " ") { // Check for spaces at the end of the string
      retValue = retValue.substring(0, retValue.length-1);
      ch = retValue.substring(retValue.length-1, retValue.length);
   }
   while (retValue.indexOf("  ") != -1) { // Note that there are two spaces in the string - look for multiple spaces within the string
      retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length); // Again, there are two spaces in each of the strings
   }
   return retValue; // Return the trimmed string back to the user
}

function isEmailAddr(email)
{
	var result = false;
	var theStr = new String(email);
	var index = theStr.indexOf("@");
	if (index > 0)
	{
		var pindex = theStr.indexOf(".",index);

		if ((pindex > index+1) && (theStr.length > pindex+1))
			result = true;
	}
	return result;
}

function validRequired(formField,fieldLabel)
{
	var result = true;
	var str = formField.value;

	str = trim(str);
	
	if (str == "")
	{
		alert('Please enter a value for the "' + fieldLabel +'" field.');
		formField.focus();
		result = false;
	}
	
	return result;
}

function allDigits(str)
{
	return inValidCharSet(str,"0123456789");
}

function inValidCharSet(str,charset)
{
	var result = true;

	for (var i=0;i<str.length;i++)
		if (charset.indexOf(str.substr(i,1))<0)
		{
			result = false;
			break;
		}
	
	return result;
}

function validEmail(formField,fieldLabel,required)
{
	var result = true;
	
	if (required && !validRequired(formField,fieldLabel))
		result = false;


	if (result && ((formField.value.length < 3) || !isEmailAddr(formField.value)) )
	{
		alert("Please enter a complete email address in the form: yourname@yourdomain.com");
		formField.focus();
		result = false;
	}
   
  return result;

}

function validNum(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)
	{
		if (!allDigits(formField.value))
		{
			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validNumNonZero(formField,fieldLabel,required)
{
	var result = true;

	if (!validNum(formField,fieldLabel,true))
		result = false;

	if (result)
	{
		if (formField.value < 1)
		{
			alert('Please enter a number that is greater than 0 for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		} 
	}	

	return result;
}


function validInt(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)
	{
		var num = parseInt(formField.value,10);
		if (isNaN(num))
		{
			alert('Please enter a number for the "' + fieldLabel +'" field.');
			formField.focus();		
			result = false;
		}
	} 
	
	return result;
}


function validDate(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)
	{
		var elems = formField.value.split("/");
		
		result = (elems.length == 3); // should be three components
		
		if (result)
		{
			var month = parseInt(elems[0],10);
			var day = parseInt(elems[1],10);
			var year = parseInt(elems[2],10);
			result = allDigits(elems[0]) && (month > 0) && (month < 13) &&
					 allDigits(elems[1]) && (day > 0) && (day < 32) &&
					 allDigits(elems[2]) && ((elems[2].length == 2) || (elems[2].length == 4));
		}
	
		if (!result)
		{
			alert('Please enter a date in mm/dd/yyyy format for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}

function validPhone(formField,fieldLabel,required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)
	{
		var phn = formField.value;
		
		var area_code = phn.substr(0,3);
		var dash1 = phn.substr(3,1);
		var exchange = phn.substr(4,3);
		var dash2 = phn.substr(7,1);
		var line = phn.substr(8,4);
		var trailing = phn.substr(12,1);
		
		result = allDigits(area_code) && allDigits(exchange) && allDigits(line) && dash1 == "-" && dash2 == "-" && line.length == 4 && (trailing.length == 0 || trailing == " ");
	}	

	if (!result)
	{
		var paren1 = phn.substr(0,1);
		var area_code = phn.substr(1,3);
		var paren2 = phn.substr(4,1);
		var blank = phn.substr(5,1);
		var exchange = phn.substr(6,3);
		var dash = phn.substr(9,1);
		var line = phn.substr(10,4);
		var trailing = phn.substr(14,1);
		
		result = allDigits(area_code) && allDigits(exchange) && allDigits(line) && paren1 == "(" && paren2 == ")" && blank == " " && dash == "-" && line.length == 4 && (trailing.length == 0 || trailing == " ");
	}	

	if (!result)
	{
		alert('The format of the "' + fieldLabel + '" field must be XXX-XXX-XXXX or (XXX) XXX-XXXX.');
		formField.focus();		
	} 
	
	return result;
}

function validMoney(formField, fieldLabel, required)
{
	var result = true;

	if (required && !validRequired(formField,fieldLabel))
		result = false;

	if (result)
	{
		var elems = formField.value.split(".");
		
		result = (elems.length == 2); // should be three components
		
		if (result)
		{
			var dollars = parseInt(elems[0],10);
			var cents = parseInt(elems[1],10);
			
			result = allDigits(dollars) && allDigits(cents);
		}
	
		if (!result)
		{
			alert('Please enter a value in the format 999.99 for the "' + fieldLabel +'" field.');
			formField.focus();		
		}
	} 
	
	return result;
}


function validateAddressInfo(f)
{
	if (f.AddressID.value == "-1")
	{
		alert("Please select an entry from the 'Addresses' box.");
		return false;
	}

	if (f.StateCountry.value == "-1,-1")
	{
		alert("Please select an entry from 'State (Country)'.");
		return false;
	}

	if (!validRequired(f.AddressLine1, "Address Line 1"))
		return false;

	if (!validRequired(f.City, "City"))
		return false;

	var theStr = new String(f.StateCountry.value);

	if (theStr.indexOf(",US") > 0 || theStr.indexOf(",CA") > 0)
		if (!validRequired(f.PostalCode, "Zip/Postal Zode"))
			return false;

	var Phn = f.PhoneNbr.value;

	if (Phn.length > 0) 
	{
		if (!validPhone(f.PhoneNbr, "Phone Number", true))
			return false;
	}

	return (true);
}


function validateInboundAddress(f)
{
	if (f.FROM_StateCountry.value == "-1,-1")
	{
		alert("Please select an entry from 'State (Country)'.");
		return false;
	}

	if (!validRequired(f.FROM_Name, "Name"))
		return false;

	if (!validRequired(f.FROM_Addr1, "Address Line 1"))
		return false;

	if (!validRequired(f.FROM_City, "City"))
		return false;

	var theStr = new String(f.FROM_StateCountry.value);

	if (theStr.indexOf(",US") > 0 || theStr.indexOf(",CA") > 0)
		if (!validRequired(f.FROM_PostalCode, "Zip/Postal Zode"))
			return false;

	if (f.TO_StateCountry.value == "-1,-1")
	{
		alert("Please select an entry from 'State (Country)'.");
		return false;
	}

	if (!validRequired(f.TO_Name, "Name"))
		return false;

	if (!validRequired(f.TO_Addr1, "Address Line 1"))
		return false;

	if (!validRequired(f.TO_City, "City"))
		return false;

	var theStr = new String(f.TO_StateCountry.value);

	if (theStr.indexOf(",US") > 0 || theStr.indexOf(",CA") > 0)
		if (!validRequired(f.TO_PostalCode, "Zip/Postal Zode"))
			return false;

	return (true);
}


function validateShipToInfo(f)
{

	if (f.ShipToType[0].checked)
	{
		if (!validRequired(f.ShipToName, "Name"))
			return false;

		if (!validRequired(f.AddressLine1, "Address Line 1"))
			return false;

		if (!validRequired(f.City, "City"))
			return false;

		var theStr = new String(f.StateCountry.value);

		if (theStr == "-1,-1")
		{
			alert("Please select an entry from 'State (Country)'.");
			return false;
		}

		if (theStr.indexOf(",US") > 0 || theStr.indexOf(",CA") > 0)
			if (!validRequired(f.PostalCode, "Zip/Postal Code"))
				return false;
	}

	if (f.ShipToType[1] && f.ShipToType[1].checked)
	{
		if (f.ShipToDistrListID.value == "-1")
		{
			alert("Distribution List contains one or more inactive members.\r\nPlease remove these members before using this list.")
			return false;
		}

		if (f.ShipToDistrListID.value == "0")
		{
			alert("Distribution List contains no members.\r\nPlease add members before using this list.")
			return false;
		}
	}

	if (f.ShipToType[2] && f.ShipToType[2].checked)
	{
		if (!validRequired(f.ShipToAccountNbr, "Customer Account Nbr"))
			return false;
	}

	return (true);
}


function validateLinksMaintForm(f)
{
	if (!validRequired(f.LinkTitle, "Title"))
		return false;

	if (!validRequired(f.LinkURL, "Link URL"))
		return false;

	var DateBegin = 
		f.YearBegin.options[f.YearBegin.selectedIndex].value +
		f.MonthBegin.options[f.MonthBegin.selectedIndex].value +
		f.DayBegin.options[f.DayBegin.selectedIndex].value;

	var DateEnd = 
		f.YearEnd.options[f.YearEnd.selectedIndex].value +
		f.MonthEnd.options[f.MonthEnd.selectedIndex].value +
		f.DayEnd.options[f.DayEnd.selectedIndex].value;

	if (DateBegin >= DateEnd)
	{
		alert("End Date Due must be greater than Begin Date.");
		return false;
	}
}

function validateKitCreateForm(f)
{
	if (!validRequired(f.NewKitSKU, "Kit SKU"))
		return false;

	if (!validRequired(f.Description, "Kit Description"))
		return false;

	if (f.KitSKU.value == "0" && f.TemplateSKU.value == "0") 
	{
		alert("Please select either a Kit or Template for creating the new Kit.")
		return false;
	}

	return true;
}


function validateMarqueeMaintForm(f)
{
	if (!validRequired(f.SequenceNbr,"SeqNo"))
		return false;

	if (!validRequired(f.Description,"Description"))
		return false;

	if (!validRequired(f.HtmlText,"Html Text"))
		return false;

	var Str = f.HtmlText.value;

	if (Str.indexOf('"') >= 0 || Str.indexOf("'") >= 0)
	{
		alert("Single and double quotes are not allowed in the HtmlText.")
		return false;
	}

	var DateBegin = 
		f.YearBegin.options[f.YearBegin.selectedIndex].value +
		f.MonthBegin.options[f.MonthBegin.selectedIndex].value +
		f.DayBegin.options[f.DayBegin.selectedIndex].value;

	var DateEnd = 
		f.YearEnd.options[f.YearEnd.selectedIndex].value +
		f.MonthEnd.options[f.MonthEnd.selectedIndex].value +
		f.DayEnd.options[f.DayEnd.selectedIndex].value;

	if (DateBegin >= DateEnd)
	{
		alert("End Date Due must be greater than Begin Date.");
		return false;
	}
	return true;
}


function validateOrderInfo(f, CutoffDate)
{
	var CY = CutoffDate.substring(0, 4);
	var CM = CutoffDate.substring(4, 6);
	var CD = CutoffDate.substring(6, 8);

	var RM = f.MonthDateRequired.options[f.MonthDateRequired.selectedIndex].value;
	var RD = f.DayDateRequired.options[f.DayDateRequired.selectedIndex].value;
	var RY = f.YearDateRequired.options[f.YearDateRequired.selectedIndex].value;

	if (RY == CY && ((RD < CD && RM == CM) || (RM < CM)))
	{
		alert("Date Required cannot be earlier than " + CM + "/" + CD + "/" + CY + ".");
		return false;
	}

	if (f.PoRefNbrReqd.value == "Y")
	{
		if (!validRequired(f.PoRefNbr, "PO Ref Number"))
			return false;
	}

	if (f.EmailFlag.checked == true)
	{
		if (!validRequired(f.EmailAddress, "E-Mail Address"))
			return false;
	}

	if (f.PhoneNbrReqd.value == "Y")
	{
		if (!validRequired(f.PhoneNbr, "Phone Number"))
			return false;
	}

	var Phn = f.PhoneNbr.value;

	if (Phn.length > 0) 
	{
		if (!validPhone(f.PhoneNbr, "Phone Number", true))
			return false;
	}

	if (f.UserField1Reqd.value == "Y")
	{
		if (!validRequired(f.UserField1, trim(f.UserField1Label.value)))
			return false;
	}

	if (f.UserField2Reqd.value == "Y")
	{
		if (!validRequired(f.UserField2, trim(f.UserField2Label.value)))
			return false;
	}

	if (f.UserField3Reqd.value == "Y")
	{
		if (!validRequired(f.UserField3, trim(f.UserField3Label.value)))
			return false;
	}

	if (f.UserField4Reqd.value == "Y")
	{
		if (!validRequired(f.UserField4, trim(f.UserField4Label.value)))
			return false;
	}

	return true;
}


function validateOrderNotes(f)
{
	if (f.SeqNbr.value == "0")
		if (!validRequired(f.NoteText, "Note Text"))
			return false;

	return true;
}


function validateCreditCardInfo(f)
{
	if (!validRequired(f.CCName, "Name on Card"))
		return false;

	if (!validRequired(f.CCAddress1, "Address Line 1"))
		return false;

	if (!validRequired(f.CCCity, "City"))
		return false;

	var theStr = new String(f.CCStateCountry.value);

	if (theStr == "-1,-1")
	{
		alert("Please select an entry from 'State (Country)'.");
		return false;
	}

	if (theStr.indexOf(",US") > 0 || theStr.indexOf(",CA") > 0)
		if (!validRequired(f.CCPostalCode, "Zip/Postal Code"))
			return false;

	if (!validRequired(f.CCNbr, "Card Number"))
		return false;

	var CCNbr = f.CCNbr.value;

	if (CCNbr.length < 16) 
	{
		alert("Credit Card Number must be at least 16 characters.");
		return false;
	}

	if (!validRequired(f.CCSecCode, "Security Code"))
		return false;

	return (true);
}


function validateUserInfo(f, AddFlag)
{
	var Adding = AddFlag.substring(0, 1);

	if (Adding == "Y")
		if (!validRequired(f.LoginID, "Login ID"))
			return false;

	if (!validRequired(f.LastName, "Last Name"))
		return false;

	if (!validRequired(f.EmailAddress, "E-Mail Address"))
		return false;

	var Phn = f.PhoneNbr.value;

	if (Phn.length > 0) 
	{
		if (!validPhone(f.PhoneNbr, "Phone Number", true))
			return false;
	}

	return true;
}


function validateInboundInfo(f, YYYYMMDD)
{
	var DateDue = 
		f.YearDateDue.options[f.YearDateDue.selectedIndex].value +
		f.MonthDateDue.options[f.MonthDateDue.selectedIndex].value +
		f.DayDateDue.options[f.DayDateDue.selectedIndex].value;

	if (DateDue <= YYYYMMDD)
	{
		alert("Date Due must be greater than today.");
		return false;
	}

	if (f.PoRefNbrReqd.value == "Y")
	{
		if (!validRequired(f.PoRefNbr, "PO Ref Number"))
			return false;
	}

	if (f.EmailFlag.checked == true)
	{
		if (!validRequired(f.EmailAddress, "E-Mail Address"))
			return false;
	}

	return true;
}


function validateOrderLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.SoldToField.value != "0")
		if (!validRequired(f.SoldToValue, "SoldTo Information Search Value"))
			return false;

	if (f.ShipToField.value != "0")
		if (!validRequired(f.ShipToValue, "ShipTo Information Search Value"))
			return false;

	if (f.OrderField.value != "0")
		if (!validRequired(f.OrderValue, "Order Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	if (f.CarrierField.value != "0")
		if (!validRequired(f.CarrierValue, "Carrier Search Value"))
			return false;

	return true;
}

function validatePOLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.POField.value != "0")
		if (!validRequired(f.POValue, "Purchase Order Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	return true;
}

function validateSkuLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	return true;
}

function validateCustomerLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.CustomerField.value != "0")
		if (!validRequired(f.CustomerValue, "Customer Information Search Value"))
			return false;

	return true;
}

function validateBillingLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.CustomerField.value != "0")
		if (!validRequired(f.CustomerValue, "Customer Information Search Value"))
			return false;

	if (f.BillingField.value != "0")
		if (!validRequired(f.BillingValue, "Billing Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	return true;
}

function validateInvoiceAbsLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.CustomerField.value != "0")
		if (!validRequired(f.CustomerValue, "Customer Information Search Value"))
			return false;

	if (f.InvoiceField.value != "0")
		if (!validRequired(f.InvoiceValue, "Invoice Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	return true;
}

function validateInvoiceLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.ClientField.value != "0")
		if (!validRequired(f.ClientValue, "Client Information Search Value"))
			return false;

	if (f.CustomerField.value != "0")
		if (!validRequired(f.CustomerValue, "Customer Information Search Value"))
			return false;

	if (f.InvoiceField.value != "0")
		if (!validRequired(f.InvoiceValue, "Invoice Information Search Value"))
			return false;

	if (f.ItemField.value != "0")
		if (!validRequired(f.ItemValue, "Item Information Search Value"))
			return false;

	return true;
}

function validateMuLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	if (f.MuField.value != "0")
		if (!validRequired(f.MuValue, "Moveable Unit Information Search Value"))
			return false;

	return true;
}

function validateProductivityLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	return true;
}

function validateDeliveryLookupForm(f)
{
	if (f.DateField.value == "0" && f.DateWasChanged.value == "Y")
	{
			alert('Please select a date for this date range.');
			f.DateField.focus();
			return false;
	}

	return true;
}

var submitted = 0;

function LockButton (form,element) 
{
	if ( ! submitted ) 
	{ 
		form.elements[element].disabled=true;
		submitted = 1;
		form.submit;
	} else
		alert("Form already submitted, please be patient"); 
}

var timerID = 0;
var Seconds = 0;
var tStart  = null;

function TimerStart() 
{
   if(timerID) {
      clearTimeout(timerID);
      clockID  = 0;
   }

   if(!tStart)
      tStart   = new Date();

   var   tDate = new Date();
   var   tDiff = tDate.getTime() - tStart.getTime();

   tDate.setTime(tDiff);

	if (Seconds > 0)
   	window.status = "Processing time: " + Seconds + " seconds ...";

	Seconds++;
   
   timerID = setTimeout("TimerStart()", 1000);
}


function TimerStop()
{
   if(timerID) {
      clearTimeout(timerID);
      timerID  = 0;
   }

   tStart = null;
   window.status = "";
}

function ImageViewer(Url, Height, Width)
{
	msgWindow=window.open("","","resizable=yes,dialog=yes,width=" + Width + ",height=" + Height + ",left=50,top=50");

	msgWindow.document.write("<HTML>");
	msgWindow.document.write("<HEAD>");
	msgWindow.document.write("<TITLE>Image View</TITLE>");
	msgWindow.document.write("</HEAD>");
	msgWindow.document.write("<BODY BGCOLOR=black LEFTMARGIN=1 RIGHTMARGIN=1 TOPMARGIN=1 BOTTOMMARGIN=1 ONCLICK=window.close()>");
	msgWindow.document.write("<TABLE WIDTH=100% HEIGHT=100% CELLPADDING=0 CELLSPACING=0>");
	msgWindow.document.write("<TR><TD ALIGN=center VALIGN=middle>");
	msgWindow.document.write("<IMG SRC=" + Url + " TITLE='CLICK TO CLOSE'>");
	msgWindow.document.write("</TD></TR>");
	msgWindow.document.write("</TABLE>");
	msgWindow.document.write("<SCRIPT LANGUAGE=JavaScript>");
	msgWindow.document.write("window.setTimeout('window.close();',60000,'JavaScript');");
	msgWindow.document.write("</SCRIPT>");
	msgWindow.document.write("</BODY>");
	msgWindow.document.write("</HTML>");
	msgWindow.document.close();
}


function popupWindow(Url, Width, Height, Top, Left)
{
	var w = document.getElementById("Popup");

	if (w)
		w.close();

	w = window.open(Url, "Popup", "Scrollbars=1,Width=" + Width + ",Height=" + Height + ",Top=" + Top + ",Left=" + Left);

	w.focus();
}

function DisplayDiv(DivID, ImageName, ImageFile, ImageFileAlt)
{
	var arr;
	var img;
	var Ordernode = 'msExpand';
	
	if (DivID =='MUSKU')  // when the Order node is clicked to expand all.
	{
		var arrs = document.getElementsByTagName('DIV');	
		var imgs = document.getElementsByTagName('IMG');
		//var trs = document.getElementsByTagName('TR');				
		var i;

		if (document[Ordernode].src.indexOf(ImageFile)>-1) // Contraction status
		{
			for (i=0; i < imgs.length; i++)
			{
				imgName = imgs[i].name;	
				if (imgName.indexOf(Ordernode)>-1)
				{	
					ImageSwap(imgName, ImageFileAlt); 				
				}
			}
		}
		else
		{
			for (i=0; i < imgs.length; i++)
			{
				imgName = imgs[i].name;	

				if (imgName.indexOf(Ordernode)>-1)				
				{
					ImageSwap(imgName, ImageFile); 									
				}
			}
		}
		var link = document[Ordernode].src;
		if (link.indexOf(ImageFile)>-1) // Expanded status		
		{
			for(i=0;i<arrs.length;i++)
			{
				//hide divs
				divid= arrs[i].id;
				if (divid.indexOf('MUSKU')>-1 || divid.indexOf('LINEHEADER')>-1)
					arrs[i].style.display =  'none'; 
			}		
			/*
			for(i=0;i<trs.length;i++)
			{
				//hide divs
				trid= trs[i].id;
				if (trid.indexOf('LINEHEADER')>-1)
					trs[i].style.display =  'none'; 
			}*/								
		}
		else
		{
			for(i=0;i<arrs.length;i++)
			{
				//display divs
				divid=arrs[i].id;		

				if (divid.indexOf('MUSKU')>-1 || divid.indexOf('LINEHEADER')>-1)
					arrs[i].style.display = 'block'; 
			}
			/*					
			for(i=0;i<trs.length;i++)
			{
				//hide divs
				trid= trs[i].id;
				if (trid.indexOf('LINEHEADER')>-1)
					trs[i].style.display =  'block'; 
			}*/											
		}	
	}
	else
	{
		if (document[ImageName].src.indexOf(ImageFile)>0)
			ImageSwap(ImageName, ImageFileAlt); 
		else
			ImageSwap(ImageName, ImageFile); 	

		if (DivID != '')
		{
			arr = document.getElementById(DivID);	
			if ( arr!= null ) 
			{ 
				if (DivID.indexOf('MUSKU')>-1)
				{		
					arr.style.display = (arr.style.display == 'none')? 'block':'none'; 
				}
			}

			var hdrid = 'LINEHEADER' + DivID.substr(5, DivID.length-5);

			arr = document.getElementById(hdrid);	

			if ( arr!= null ) 
			{ 
				if (hdrid.indexOf('LINEHEADER')>-1)
					arr.style.display = (arr.style.display == 'none')? 'block':'none'; 
			}			
		}	
	}
	if (NotAllExpanded(ImageFile, Ordernode))
		ImageSwap(Ordernode, ImageFile); 			
	else
		ImageSwap(Ordernode, ImageFileAlt); 						
}
function NotAllExpanded(plusImage, ordernode)
{
	var i;
		
	imgs = document.getElementsByTagName('IMG');

	for (i=0; i < imgs.length; i++)
	{
		imgName = imgs[i].name;	
		if (imgName.indexOf(ordernode)>-1)
		{
			if (imgName!=ordernode && document[imgName].src.indexOf(plusImage)>-1)
				return true;
		}
	}
	return false;
}
function ImageSwap(imgName, imgFile)
{
    document[imgName].src = imgFile;
}