/**
 * DynamicSelectList.js
 * Utility scripts for SBS
 */
var siteRoot = "";
//siteRoot = "file:///c:/stuff/baron/phase1";
//siteRoot = "/dev";

function changePageTitle( str )
{
	document.getElementById("PageTitle").innerHTML = str;
}

function updateSpans()
{
	var purchasertype = document.order.elements["PurchaserType"];
	var purchasertypeval = document.getElementById("PurchaserTypeVal");
	var establishmenttype = document.order.elements["EstablishmentType"];
	var establishmenttypeval = document.getElementById("EstablishmentTypeVal");
	if ( purchasertype[0].checked )
		purchasertypeval.value = "Landscape Contractor";
	else if ( purchasertype[1].checked )
		purchasertypeval.value = "Individual";
	else 
		purchasertypeval.value = "Not specified";
		
	if ( establishmenttype[0].checked )
		establishmenttypeval.value = "Business";
	else if ( establishmenttype[1].checked )
		establishmenttypeval.value = "Residence";
	else 
		establishmenttypeval.value = "Not specified";

	var name = document.getElementById("Name");
	var companyname = document.getElementById("CompanyName");
	var addr1 = document.getElementById("Address1");
	var addr2 = document.getElementById("Address2");
	var city = document.getElementById("City");
	var state = document.getElementById("State");
	var zip = document.getElementById("Zip");
	var officephone = document.getElementById("OfficePhone");
	var homephone = document.getElementById("HomePhone");
	var cellphone = document.getElementById("CellPhone");
	var email = document.getElementById("EmailAddr");
	document.getElementById("NameSpan").innerHTML  = name.value;
	document.getElementById("CompanyNameSpan").innerHTML  = companyname.value;
	document.getElementById("Address1Span").innerHTML  = addr1.value;
	document.getElementById("Address2Span").innerHTML  = addr2.value;
	document.getElementById("CitySpan").innerHTML  = city.value;
	document.getElementById("StateSpan").innerHTML  = state.value;
	document.getElementById("ZipSpan").innerHTML  = zip.value;
	document.getElementById("OfficePhoneSpan").innerHTML  = officephone.value;
	document.getElementById("HomePhoneSpan").innerHTML  = homephone.value;
	document.getElementById("CellPhoneSpan").innerHTML  = cellphone.value;
	document.getElementById("EmailSpan").innerHTML  = email.value;
	
	var deliverydate = document.getElementById("DeliveryDate");
	var alternatedeliverydate = document.getElementById("AlternateDeliveryDate");
	var requesteddeliverytime = document.getElementById("RequestedDeliveryTime");
	var businessname = document.getElementById("BusinessName");
	var businessaddr = document.getElementById("BusinessAddress");
	var businesscity = document.getElementById("BusinessCity");
	var businesszip = document.getElementById("BusinessZip");
    document.getElementById("RequestedDeliveryDateSpan").innerHTML  = deliverydate.value;
    document.getElementById("AlternateDeliveryDateSpan").innerHTML  = alternatedeliverydate.value;
    document.getElementById("RequestedDeliveryTimeSpan").innerHTML  = requesteddeliverytime.value;
    document.getElementById("BusinessNameSpan").innerHTML  = businessname.value;
    document.getElementById("BusinessAddressSpan").innerHTML  = businessaddr.value;
    document.getElementById("BusinessCitySpan").innerHTML  = businesscity.value;
    document.getElementById("BusinessZipSpan").innerHTML  = businesszip.value;

	for ( var i = 1; i<=3; i++ )
	{
		var line = "Line" + i;
		var cy = document.getElementById(line + "CY");
		var product = document.getElementById(line + "Product");
		var os = document.getElementById(line + "DS");
		document.getElementById(line + "CYSpan").innerHTML = cy.value;
		document.getElementById(line + "ProductSpan").innerHTML = product.value;
		document.getElementById(line + "DSSpan").innerHTML = os.value;
	}
	var dumpinginstr = document.getElementById("DumpingInstructions");
	var onsitename = document.getElementById("OnsiteContactName");
	var onsitecell = document.getElementById("OnsiteContactCell");
	var onsitehours = document.getElementById("OnsiteContactHours");
	var accessibility = document.order.elements["DumpingAccessibility"];
	var accessibilityval = document.getElementById("DumpingAccessibilityVal");
	var specialinstr = document.getElementById("SpecialInstructions");
	var someoneonsite = document.order.elements["SomeoneOnSite"];
	var someoneonsiteval = document.getElementById("SomeoneOnSiteVal");
	var nocontactresponseval = document.getElementById("NoContactResponseVal");
	var nocontactresponse = document.order.elements["NoContactResponse"];
	if ( someoneonsite[0].checked )
		someoneonsiteval.value = "Someone will be onsite";
	else if ( someoneonsite[1].checked )
		someoneonsiteval.value = "No one will be onsite";
	else 
		someoneonsiteval.value = "Did not specify if someone will be onsite";

	var noContactResponseHeaderStr = "If there is no one on-site, and if questions or problems arise with "
								   + "the driver's ability to dump the load as instructed above, the "
								   + "driver will immediately attempt to reach you by phone to discuss "
								   + "the problem and get clarification on an alternative dumping location. "
								   + "If the driver is unable to reach you, he/she will ";
	nocontactresponseval.value = "";
	if ( nocontactresponse[0].checked )
	{
		nocontactresponseval.value = noContactResponseHeaderStr + "use his/her own discretion in determining "
                                  + "where to dump the load.";
	}
	else if ( nocontactresponse[1].checked )
	{
		nocontactresponseval.value = noContactResponseHeaderStr + " not dump. Instead the load will "
                                  + "be returned to SBS even though the applicable "
                                  + "delivery fees will still be charged.";
	}
	var oDiv = document.getElementById("NoContactResponseDisplayDiv");
	oDiv.innerHTML = "&nbsp;<br>" + nocontactresponseval.value + "<br>&nbsp;";
	if ( someoneonsite[0].checked )
	{
		switchFields( 'NoContactResponseDisplayDiv', 'SomeoneOnsiteDisplayDiv' );
	}
	else
	{
		switchFields( 'SomeoneOnsiteDisplayDiv', 'NoContactResponseDisplayDiv' );
	}
	
	if ( accessibility[0].checked )
		accessibilityval.value = "Dump Truck";
	else if ( accessibility[1].checked )
		accessibilityval.value = "Trailer";
	else 
		accessibilityval.value = "Not specified";
	
	document.getElementById("DumpingInstructionsSpan").innerHTML = dumpinginstr.value;
	document.getElementById("OnsiteContactNameSpan").innerHTML = onsitename.value;
	document.getElementById("OnsiteContactCellSpan").innerHTML = onsitecell.value;
	document.getElementById("OnsiteContactHoursSpan").innerHTML = onsitehours.value;
	document.getElementById("DumpingAccessibilitySpan").innerHTML = accessibilityval.value;
	document.getElementById("SpecialInstructionsSpan").innerHTML = specialinstr.value;
}

function validateScreen1( itemCount )
{
	var numberOfItemsUsed = 0;
	var errstr = "";
	for ( var i = 1; i<=itemCount; i++ )
	{
		var line = "Line" + i;
		var cy = document.getElementById(line + "CY");
		var product = document.getElementById(line + "Product");
		var size = document.getElementById(line + "Size");
		var os = document.getElementById(line + "DS");
		if ( !isEmpty( cy, product ) )
		{
			numberOfItemsUsed++;
			if ( cy.value == "" )
				errstr += "Please specify CY quanity for Item " + i + ".\n";
			if ( product.selectedIndex == 0 )
				errstr += "Please select a product for Item " + i + ".\n";
			if ( size.value == "Select a Size" )
				errstr += "Please select a size for Item " + i + ".\n";
		}
	}

	if ( numberOfItemsUsed == 0 )
		 errstr += "Please enter at least one product for your order.\n";	 
	if ( errstr != "" )
		alert( errstr );
	else
	{
		document.order.Action.value = "forward";
		document.order.submit();
	}
}

function validateScreen2()
{
	var purchasertype = document.order.elements["PurchaserType"];
	var purchasertypeval = document.getElementById("PurchaserTypeVal");
	var establishmenttype = document.order.elements["EstablishmentType"];
	var establishmenttypeval = document.getElementById("EstablishmentTypeVal");
	var name = document.getElementById("Name");
	var companyname = document.getElementById("CompanyName");
	var addr1 = document.getElementById("Address1");
	var addr2 = document.getElementById("Address2");
	var city = document.getElementById("City");
	var state = document.getElementById("State");
	var zip = document.getElementById("Zip");
	var officephone = document.getElementById("OfficePhone");
	var homephone = document.getElementById("HomePhone");
	var cellphone = document.getElementById("CellPhone");
	var email = document.getElementById("EmailAddr");
	var deliverydate = document.getElementById("DeliveryDate");
	var alternatedeliverydate = document.getElementById("AlternateDeliveryDate");
	var requesteddeliverytime = document.getElementById("RequestedDeliveryTime");
	var businessname = document.getElementById("BusinessName");
	var businessaddr = document.getElementById("BusinessAddress");
	var businesscity = document.getElementById("BusinessCity");
	var businesszip = document.getElementById("BusinessZip");
	
	var validEmailPattern  = /([a-zA-Z0-9_\-])([a-zA-Z0-9_\-\.]*)@(\[((25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}|((([a-zA-Z0-9\-]+)\.)+))([a-zA-Z]{2,}|(25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\])/;
	var disallowedPattern = /\</g;
	var errstr = "";
	
	if ( !purchasertype[0].checked && !purchasertype[1].checked )
		errstr += "Please specify who is making this purchase (Landscape Contractor or Individual).\n";
	if ( name.value == "" )
			errstr += "Please enter your name.\n";
			
	if ( purchasertype[0].checked )
	{	// Validate for Landscape contractor
		if ( companyname.value == "" )
			errstr += "Please enter your company name.\n";
		if ( officephone.value == "" && cellphone.value == "" )
			errstr += "Please enter either your office or cell phone number.\n";

		if ( !validatePhoneNumber( officephone.value ) )
			errstr += "Please specify your office phone number in one of the following formats:  (nnn)nnn-nnnn, nnn-nnn-nnnn, or nnnnnnnnnn.\n";
	}
	else if ( purchasertype[1].checked )
	{	// Validate for Individual
		if ( addr1.value == "" 
			|| city.value == "" 
			|| state.value == ""
			|| zip.value == ""
			)
			errstr += "Please provide your complete address including street address, city, state, and zip code.\n"; 

		if ( cellphone.value == "" && homephone.value == "" )
			errstr += "Please enter either your home or cell phone number.\n";

		if ( !validatePhoneNumber( homephone.value ) )
			errstr += "Please specify your home phone number in one of the following formats:  (nnn)nnn-nnnn, nnn-nnn-nnnn, or nnnnnnnnnn.\n";
	}

	if ( !validatePhoneNumber( cellphone.value ) )
		errstr += "Please specify your cell phone number in one of the following formats:  (nnn)nnn-nnnn, nnn-nnn-nnnn, or nnnnnnnnnn.\n";

	if ( validEmailPattern.test( email.value ) != true )
		errstr += "Please enter a valid e-mail address.\n";

	if ( deliverydate.value == "" )
		errstr += "Please specify your preferred delivery date.\n";
		
	if ( requesteddeliverytime.value == "" )
		errstr += "Please specify your requested delivery time.\n";

	if ( !establishmenttype[0].checked && !establishmenttype[1].checked )
		errstr += "Please specify the type of establishment (Business or Residence).\n";
	else if ( establishmenttype[0].checked && businessname.value == "" ) // Validate for business
		errstr += "Please enter the business name.\n";
	if ( businessaddr.value == "" || businesscity.value == "" )
		errstr += "Please enter the delivery address including street address and city.\n";

// "Screen 2" validation
	var dumpinginstr = document.getElementById("DumpingInstructions");
	var onsitename = document.getElementById("OnsiteContactName");
	var onsitecell = document.getElementById("OnsiteContactCell");
	var onsitehours = document.getElementById("OnsiteContactHours");
	var accessibility = document.order.elements["DumpingAccessibility"];
	var accessibilityval = document.getElementById("DumpingAccessibilityVal");
	var specialinstr = document.getElementById("SpecialInstructions");
	var someoneonsite = document.order.elements["SomeoneOnSite"];
	var someoneonsiteval = document.getElementById("SomeoneOnSiteVal");
	var nocontactresponseval = document.getElementById("NoContactResponseVal");
	var nocontactresponse = document.order.elements["NoContactResponse"];

	var disallowedPattern = /\</g;
	//var errstr = "";

	if ( !accessibility[0].checked && !accessibility[1].checked )
		errstr += "Please specify the accessibility at the dumping location.\n";
	
	if ( dumpinginstr.value == "" )
		errstr += "Please provide instructions for dumping.\n";
	
	if ( !someoneonsite[0].checked && !someoneonsite[1].checked )
		errstr += "Please specify if someone will be on site.\n";
	else if ( someoneonsite[0].checked &&
		      (onsitename.value == "" ||
			   onsitecell.value == "" ||
			   onsitehours.value == ""
			   )
			  ) // Someone on site
		errstr += "Please specify who will be on-site, the on-site contact's cell phone number, and the hours the installation supervisor will be on-site.\n";
	else if ( someoneonsite[1].checked && !nocontactresponse[0].checked && !nocontactresponse[1].checked )
		errstr += "Please indicate what the driver should do if the order-contact cannot be reached by phone.\n";
	
	if ( errstr != "" )
		alert( errstr );
	else
	{
		document.order.Action.value = "forward";
		document.order.submit();
	}
}

function isEmpty( cy, product )
{
	if ( cy.value == "" && product.value == "" )
		return true;
	else
		return false;
}

function validatePhoneNumber( sPhoneNumberStr )
{
	var validPhonePattern1  = /^(\([0-9]{3}\)[0-9]{3}-[0-9]{4})/;
	var validPhonePattern2  = /^(\([0-9]{3}\) [0-9]{3}-[0-9]{4})/;
	var validPhonePattern3  = /^([0-9]{3}-[0-9]{3}-[0-9]{4})/;
	var validPhonePattern4  = /^([0-9]{10})/;
	if ( sPhoneNumberStr != ""
	  && !validPhonePattern1.test( sPhoneNumberStr ) 
	  && !validPhonePattern2.test( sPhoneNumberStr ) 
	  && !validPhonePattern3.test( sPhoneNumberStr )
	  && !validPhonePattern4.test( sPhoneNumberStr )
	  )
		return false;
	else
		return true;
}

function resetScreen1()
{
	for ( var i = 1; i<=3; i++ )
	{
		var line = "Line" + i;
		var cy = document.getElementById(line + "CY");
		var cat = document.getElementById(line + "Category");
		var product = document.getElementById(line + "Product");
		var os = document.getElementById(line + "DS");
		cy.value = "";
		cat.value = "";
		product.value = "";
		os.value = "";
	}

}
function resetBillingInfo()
{
	var purchasertype = document.order.elements["PurchaserType"];
	var purchasertypeval = document.getElementById("PurchaserTypeVal");
	var name = document.getElementById("Name");
	var companyname = document.getElementById("CompanyName");
	var addr1 = document.getElementById("Address1");
	var addr2 = document.getElementById("Address2");
	var city = document.getElementById("City");
	var state = document.getElementById("State");
	var zip = document.getElementById("Zip");
	var officephone = document.getElementById("OfficePhone");
	var homephone = document.getElementById("HomePhone");
	var cellphone = document.getElementById("CellPhone");
	var email = document.getElementById("EmailAddr");

	purchasertype[0].checked = false;
	purchasertype[1].checked = false;
	name.value = "";
	companyname.value = "";
	officephone.value = "";
	addr1.value = "";
	addr2.value = "";
	city.value = "";
	state.value = "";
	zip.value = "";
	homephone.value = "";
	cellphone.value = "";
	email.value = "";

	var oDivStyle = getStyleObject( "lcFields" );
	if ( oDivStyle != false )
		oDivStyle.display = 'none';

	oDivStyle = getStyleObject( "iFields" );
	if ( oDivStyle != false )
		oDivStyle.display = 'none';
}

function resetDeliveryInfo()
{
	var establishmenttype = document.order.elements["EstablishmentType"];
	var establishmenttypeval = document.getElementById("EstablishmentTypeVal");
	var deliverydate = document.getElementById("DeliveryDate");
	var alternatedeliverydate = document.getElementById("AlternateDeliveryDate");
	var requesteddeliverytime = document.getElementById("RequestedDeliveryTime");
	var businessname = document.getElementById("BusinessName");
	var businessaddr = document.getElementById("BusinessAddress");
	var businesscity = document.getElementById("BusinessCity");
	var businesszip = document.getElementById("BusinessZip");
	deliverydate.value = "";
	alternatedeliverydate.value = "";
	requesteddeliverytime.value = "";
	establishmenttype[0].checked = false;
	establishmenttype[1].checked = false;
	businessname.value = "";
	businessaddr.value = "";
	businesscity.value = "";
	businesszip.value = "";

	var oDivStyle = getStyleObject( "bizFields" );
	if ( oDivStyle != false )
		oDivStyle.display = 'none';
}
function resetScreen2()
{
	// I'm splitting this up into two functions so we can reset delivery info
	// separately when the user places a new order.
	resetBillingInfo();
	resetDeliveryInfo();

	var dumpinginstr = document.getElementById("DumpingInstructions");
	var onsitename = document.getElementById("OnsiteContactName");
	var onsitecell = document.getElementById("OnsiteContactCell");
	var onsitehours = document.getElementById("OnsiteContactHours");
	var accessibility = document.order.elements["DumpingAccessibility"];
	var accessibilityval = document.getElementById("DumpingAccessibilityVal");
	var specialinstr = document.getElementById("SpecialInstructions");
	var someoneonsite = document.order.elements["SomeoneOnSite"];
	var someoneonsiteval = document.getElementById("SomeoneOnSiteVal");
	var nocontactresponseval = document.getElementById("NoContactResponseVal");
	var nocontactresponse = document.order.elements["NoContactResponse"];

	accessibility[0].checked = false;
	accessibility[1].checked = false;
	dumpinginstr.value = "";
	someoneonsite[0].checked = false;
	someoneonsite[1].checked = false;
	onsitename.value = "";
	onsitecell.value = "";
	onsitehours.value = "";
	nocontactresponse[0].checked = false;
	nocontactresponse[1].checked = false;
	specialinstr.value = "";
	toggleNoOneAvailableInfoDiv( 'none' );
}
function cancelOrder()
{
		changePageTitle('Order Products');
        MM_showHideLayers('Buttons1','','show','Buttons2','','hide','Buttons3','','hide','Screen1','','show','Screen2','','hide','Screen3','','hide');
}
function switchFields( sSwitchFrom, sSwitchTo )
{
  var oSwitchFrom, oSwitchTo;
  oSwitchFrom = getStyleObject( sSwitchFrom );
  oSwitchTo = getStyleObject( sSwitchTo );
  if ( oSwitchFrom != false && oSwitchTo != false )
  {
	oSwitchFrom.display = "none";
    oSwitchTo.display = "block";
  }

}

function toggleNoOneAvailableInfoDiv( sDirection )
{
	var oDivStyle = getStyleObject( "noOneAvailableDiv" );
	if ( oDivStyle != false )
	{
		oDivStyle.display = sDirection;
	}
}

function getStyleObject(objectId) {
  if ( document.getElementById && document.getElementById( objectId ) ) {
    return document.getElementById( objectId ).style;
  } else if ( document.all && document.all( objectId ) ) {
    return document.all( objectId ).style;
  } else {
    return false;
  }
}


function scrollToTop( sDiv )
{
	var oDiv = document.getElementById( sDiv );
	oDiv.scrollTop = 0;
}


