// JavaScript Document
function MM_findObj(n, d) { //v4.01
  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);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_validateForm() { //v4.0
  var i,p,q,nm,test,num,min,max,errors='',args=MM_validateForm.arguments;
  for (i=0; i<(args.length-2); i+=3) { test=args[i+2]; val=MM_findObj(args[i]);
    if (val) { nm=val.id; if ((val=val.value)!="") {
      if (test.indexOf('isEmail')!=-1) { p=val.indexOf('@');
        if (p<1 || p==(val.length-1)) errors+='- '+nm+' must contain an e-mail address.\n';
      } else if (test!='R') { num = parseFloat(val);
        if (isNaN(val)) errors+='- '+nm+' must contain a number.\n';
        if (test.indexOf('inRange') != -1) { p=test.indexOf(':');
          min=test.substring(8,p); max=test.substring(p+1);
          if (num<min || max<num) errors+='- '+nm+' must contain a number between '+min+' and '+max+'.\n';
    } } } else if (test.charAt(0) == 'R') errors += '- '+nm+' is required.\n'; }
  } if (errors) alert('The following error(s) occurred:\n'+errors);
  document.MM_returnValue = (errors == '');
}

var base64		= {
 charmap		: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",
 encode			: function(str) {
  var ret		= "";
  var c, i, acc		= 0;
  var div		= 1;
  for(i=0,c=0;i<str.length;i++,c++) {
   acc			= acc*256 + str.charCodeAt(i);
   div			= div*4;
   ret			= ret + base64.charmap.charAt(parseInt(acc/div));
   acc			= acc % div;
   if(div==64) ret	= ret + base64.charmap.charAt(parseInt(acc)), acc = 0, div = 1,c++;
   if(c>=75) c=-1, ret	= ret + "\n";
  } if(i%3) {
   ret			= ret + base64.charmap.charAt(parseInt(acc*((i%3==1)?16:4)));
   ret			= ret + ((i%3)==1?"==":"=");
  } return ret;
 },
 decode			: function(str) {
  var ret		= "";
  var i, acc		= 0;
  var div		= 1;
  for(i=0;i<str.length;i++) {
   if(str.charAt(i)=="=" || str.charAt(i)=='\n') break;
   acc			= acc*64 + base64.charmap.indexOf(str.charAt(i));
   div			= (div==1?64:div/4);
   if(div!=64) {
    ret			= ret + String.fromCharCode(parseInt(acc/div));
    acc			= acc % div;
   }
  } return ret;
 }
}

function showDiv(ID)
{
	// If there is no div, don't throw a JavaScript error
	if(!document.getElementById(ID)){ return false; }
	
	// Evaluate the current visibility status of the display box.
	if(document.getElementById(ID).style.display == 'none')
	{
		// The display box is not visible, so we want to display the box
		document.getElementById(ID).style.display='block';
	}
	else
	{
		// The display box is visible, so we want to hide the display box
		document.getElementById(ID).style.display='none';
	}
}

function jsYear()
{
	today = new Date();
	year = today.getFullYear();
	
	return year;
}

function aboveGroundPoolPackageSelector(displayPackage, hidePackages, formName, product, productValue, productName, priceID, price, ID)
{
	// If there is no div, don't throw a JavaScript error
	if(!document.getElementById(displayPackage)){ return false; }
	
	// Display this package
	document.getElementById(displayPackage).style.display='block';

	// Find all of the packages to hide
	closePackage = hidePackages.split(" ");
	totalPackages = (closePackage.length-1);	
	i = 0;
	
	while(i <= totalPackages)
	{
		// The display box is visible, so we want to hide the display box	
		document.getElementById(closePackage[i]).style.display='none';
		i++;
	}
	
	document.getElementById(productName).value = productValue;
	document.getElementById(priceID).value = price;
	
	// Change Monthly Finance Amount
	poolMonthlyFinancePayment(product, price, ID);
}

function aboveGroundPoolPackages(premium, luxury, is20Mil)
{
	
	packages = document.write('');
	
	if(is20Mil == true){ mil = '20'; is_applicable = ''; }
	else               { mil = '25'; is_applicable = ' (if applicable)';  }
	
	if(luxury != 1){ ladder = "<li>Ladder"; }	
	else           { ladder = '<li><strike class="red">Ladder</strike>'; }	
	standardPackage	='<ul><strong>Standard Pool Package</strong><li>' + mil + ' Mil Liner' + is_applicable + '<li>Widemouth Skimmer<li>Water Pump <li>Sand filter<li>Maintenance kit' + ladder + '<li>Telepole</ul>';
	premiumPackage = '';
	luxuryPackage = '';			
	
	if(premium == 1)
	{
		premiumPackage = '<ul><strong>Premium Pool Package</strong><li>Automatic Pool Cleaner<li>Pool Light<li>Solar Cover<li>Winter Cover<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Standard Package</ul>';	
	}
	
	if(luxury == 1)
	{
		luxuryPackage = '<ul><strong>Luxury Pool Package</strong><li>Round Steps <span class="red tw">(Requires a Deck)</span><li>Floating Fountain<li>Automatic Chlorinator<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Standard Package<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Premium Package</ul>';	
	}
	
	packages = document.write('<table border="0" cellspacing="0" cellpadding="2"><tr valign="top"><td>' + standardPackage + '</td><td>' + premiumPackage + '</td><td>' + luxuryPackage + '</td></tr></table>');
	
	return packages;
}


function aboveGroundPoolPackages_new(poolonly, standard, premium, luxury, is20Mil)
{
	if(is20Mil == true){ mil = '20'; is_applicable = ''; }
	else               { mil = '25'; is_applicable = ' (if applicable)';  }
	
	if(luxury != 1){ ladder = "<li>Ladder"; }	
	else           { ladder = '<li><strike class="red">Ladder</strike>'; }	
	standardPackage = '';	
	premiumPackage = '';
	luxuryPackage = '';	
	
	if(poolonly == 1)
	{
		poolPackage	='<ul><strong>Pool Only Package</strong><li>Pool Liner<li>Pool Skimmer</ul>';
	}
	
	if(standard == 1)
	{
		standardPackage	='<ul><strong>Standard Pool Package</strong><li>' + mil + ' Mil Liner' + is_applicable + '<li>Widemouth Skimmer<li>1 HP Pump <li>Sand filter<li>Maintenance kit' + ladder + '<li>Telepole<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Pool Only Package</ul>';
	}
	
	if(premium == 1)
	{
		premiumPackage = '<ul><strong>Premium Pool Package</strong><li>Automatic Pool Cleaner<li>Pool Light<li>Solar Cover<li>Winter Cover<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Pool Only Package<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Standard Package</ul>';	
	}
	
	if(luxury == 1)
	{
		luxuryPackage = '<ul><strong>Luxury Pool Package</strong><li>Round Steps <span class="red tw">(Requires a Deck)</span><li>Floating Fountain<li>Automatic Chlorinator<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Pool Only Package<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Standard Package<li><img src="http://www.sunenterprises.com/images/plus.jpg" width="50" height="16" border="0" align="absmiddle"> Premium Package</ul>';	
	}
	
	packages = document.write('<table border="0" cellspacing="0" cellpadding="2"><tr valign="top"><td>' + poolPackage + '</td><td>' + standardPackage + '</td><td>' + premiumPackage + '</td><td>' + luxuryPackage + '</td></tr></table>');
	return packages;
}






function poolMonthlyFinancePayment(product, price, ID)
{
	switch(product)
	{
		case 'pool':
		case 'spa':
			multiplier = .025;
			break;	
		case 'table':
		case 'gazebo':
			multiplier = .03;
			break;
		default:
			multiplier = .03;
			break;
	}
	
	rawNumber = FormatNumber((price * multiplier),2,false,false,true);
	if(rawNumber.substr(rawNumber.length-2, 1) == '.'){ rawNumber = rawNumber + '' + '0'; }
	
	monthlyFinanceCost = 'Zero down &amp; as <br>low as <strong>$' + rawNumber + '/mo</strong>.';
	
	document.getElementById(ID).innerHTML = monthlyFinanceCost;
}

function setCheckboxById(ID, isChecked)
{
	if(isChecked == true){ isChecked = 'checked'; }
	else                 { isChecked = ''; }
	
	document.getElementById(ID).checked = isChecked;
}

function setRowBGColor(highlightRow, blurredRows)
{
	// If there is no div, don't throw a JavaScript error
	if(!document.getElementById(highlightRow)){ return false; }
	
	// Display this package
	document.getElementById(highlightRow).style.backgroundColor='#FFFEBC';

	// Find all of the packages to hide
	blurRow = blurredRows.split(" ");
	totalRows = (blurRow.length-1);	
	i = 0;
	
	while(i <= totalRows)
	{
		// The display box is visible, so we want to hide the display box	
		document.getElementById(blurRow[i]).style.backgroundColor='#FFFFFF';
		i++;
	}
}

function FormatNumber(num,decimalNum,bolLeadingZero,bolParens,bolCommas)
{ 
/**********************************************************************
	IN:
		NUM - the number to format
		decimalNum - the number of decimal places to format the number to
		bolLeadingZero - true / false - display a leading zero for
										numbers between -1 and 1
		bolParens - true / false - use parenthesis around negative numbers
		bolCommas - put commas as number separators.
 
	RETVAL:
		The formatted number!
 **********************************************************************/
	if (isNaN(parseInt(num))) return "NaN";

	var tmpNum = num;
	var iSign = num < 0 ? -1 : 1;		// Get sign of number
	
	// Adjust number so only the specified number of numbers after
	// the decimal point are shown.
	tmpNum *= Math.pow(10,decimalNum);
	tmpNum = Math.round(Math.abs(tmpNum))
	tmpNum /= Math.pow(10,decimalNum);
	tmpNum *= iSign;					// Readjust for sign
	
	
	// Create a string object to do our formatting on
	var tmpNumStr = new String(tmpNum);

	// See if we need to strip out the leading zero or not.
	if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
		if (num > 0)
			tmpNumStr = tmpNumStr.substring(1,tmpNumStr.length);
		else
			tmpNumStr = "-" + tmpNumStr.substring(2,tmpNumStr.length);
		
	// See if we need to put in the commas
	if (bolCommas && (num >= 1000 || num <= -1000)) {
		var iStart = tmpNumStr.indexOf(".");
		if (iStart < 0)
			iStart = tmpNumStr.length;

		iStart -= 3;
		while (iStart >= 1) {
			tmpNumStr = tmpNumStr.substring(0,iStart) + "," + tmpNumStr.substring(iStart,tmpNumStr.length)
			iStart -= 3;
		}		
	}

	// See if we need to use parenthesis
	if (bolParens && num < 0)
		tmpNumStr = "(" + tmpNumStr.substring(1,tmpNumStr.length) + ")";

	return tmpNumStr;		// Return our formatted string!
}
function flashingText(div, class1, class2)
{
	if(document.getElementById(div).className == class1)
	{
		document.getElementById(div).className=class2;
	}
	else
	{
		document.getElementById(div).className=class1;
	}
}