
/********************************************************************************
       JAVASCRIPT1.2 SHOPPING CART SOFTWARE - PROGRAMMED BY DAVID REGIER
********************************************************************************/

// POSSIBLE FLAGS: "ind", "indPubLoc", "indPrvLoc", "indInq", "indStartsAt", "pkgPubLoc", "pkgPrvLoc", "indNoComm", "merchandise"

//--------------------------------------------------------------------------------------
function startHiding( layerName ) {
	var html = ( dHTML ) ? "<DIV CLASS='off'>" : "<LAYER NAME='" + layerName + "Layer' visibility='hide'><FORM NAME='cartHidden'>";
	document.write( html );
}
//--------------------------------------------------------------------------------------

function endHiding() {
	var html = ( dHTML ) ? "</DIV>" : "</FORM></LAYER>";
	document.write( html );
}

//--------------------------------------------------------------------------------------

// Called from "add to order" link on HTML pages

function getCartPopUp( PullDownOrPrice, cartQuan, cartItem, cartDescription, flag, dueNow, minimumQuan ) {

	this.usePullDown = ( eval( "typeof PullDownOrPrice" ) == "string" ) ? true : false;

	/////////////////////////////// WITH PULLDOWN ///////////////////////////////
	if( usePullDown ) {
		this.PullDown = eval( "document.cart." + PullDownOrPrice );

		// Must be NC4 and pull down must be in a hidden layer...
		if( eval ( "typeof PullDown" ) != "object" )
			this.PullDown = eval( "document.layers[ '" + PullDownOrPrice + "Layer' ].document.cartHidden." + PullDownOrPrice );

		var longestOption = "";
		for( var i = 0; i < PullDown.length; i++ ) {
			var thisOption = PullDown[ i ].text;
			if( thisOption.length > longestOption.length ) longestOption = thisOption;
		}
	}
	////////////////////////////// WITHOUT PULLDOWN /////////////////////////////
	else {
		this.cartPrice = PullDownOrPrice;
		this.cartQuan = cartQuan;
		this.cartItem = cartItem;
		this.cartDescription = cartDescription;
		this.flag = flag;
		this.dueNow = dueNow;
		this.minimumQuan = minimumQuan;
	}

	qStr = ( usePullDown ) ? "?" + escape( PullDown[ 0 ].text + "|" + PullDown.length + "|" + longestOption ) : "";
	openWin( "cart-popup.html" + qStr, "0", "0", "0", "0", 0.60 );
	linkToPopUp();

}

//---------------------------------------------------------------------------------------

// Called from "cart-popup.html"

function addToCart( quan, item, price, description, flag, dueNow, PopUp ) {

	if( dbLoaded() ) {

		var admin = ( flag.indexOf( "Admin" ) != -1 ) ? true : false;
		if( admin ) {
			flag = flag.replaceLiteral( "Admin", "" );
			description = "ADMIN ENTRY: " + description;
		}

		quan = parseInt( quan );
		price = parseFloat( price );

		var DB = getDB();
		var rawData = DB.items.value;

		var addCommission = ( ( flag == "ind" || flag == "indPrvLoc" || flag == "indStartsAt" ) && price > 0 ) ? true : false;

		var clientHasPkg = ( rawData.indexOf( "|pkgPubLoc" ) != -1 || flag.indexOf( "pkgPrvLoc" ) == 0 ) ? true : false;

		var coordFeeMsg = ( clientHasPkg ) ? "" : "In addition, A La Carte weddings (any order that does not include a package) are subject to a $" + COORD_FEE + " \"Wedding Coordination\" fee, click \"View-Cart\" to learn more...";

		if ( addCommission ) {
			price += price * COMMISSION;
			if( PopUp /*&& live*/ ) {
				var suppObj = DB.SuppressAlert;
				if( suppObj.value == "false" ) {
					PopUp.alert( "Thanks! We have recorded this item in our shopping cart. Just a friendly reminder that a " + commPercent + " commission will be automatically added to all items (excluding packages.) " + coordFeeMsg );
					suppObj.value = "true"
				}
			}
		}

		var theRecord = "" + quan + "|" +  item + "|" + price + "|" + description + "|" + flag + "|" + dueNow;

		if( rawData == "" ) DB.items.value += theRecord;
		else DB.items.value += "_" + theRecord;

		getCart( false, false ); // sets SubTotal field in hidden frame
		if( DB.RecordCart.value == 'true' || NC6 )
			SetCookie( "pmwCartCookie", gRawData, expOneMonth, "/" );
		if( NC6 ) DB.RecordCart.value = 'true';

	}
	else notInitialized();
}

//---------------------------------------------------------------------------------------

function notInitialized() {
	alert("Sorry, our shopping cart program has not finished loading.\n\nPlease wait a few seconds, then try again...");
}
//--------------------------------------------------------------------------------------

function mouseOverSub() {
	return ( dbLoaded() ) ? "Your running subtotal is: $" + getSub() : "";
}

function showSub() {
	if( dbLoaded() ) {
		if( dHTML )
			parent.document.title = "$" + getSub() + " Running Subtotal -  " + CI.CompName + " at " +  CI.PhoneTollFree;
	}
	else setTimeout( "showSub()", 500 );
}
//---------------------------------------------------------------------------------------

var gRawData = '';
var gPayableNow = 0;
var gShowCartLinks = true;

function getCart( html, normLayout ) {

	var printFriendly = !normLayout;

	gPayableNow = 0;
	var coordBalance = 0;
	var data = ( html ) ?"<TABLE ALIGN='center' BORDER=0 CELLPADDING=5 CELLSPACING=3 WIDTH=725>" : "";
	var noMerchandise = false;
	var footer = "";
	var extendedInfo = "";
	var DB = getDB();
	var rawData = DB.items.value;
	gRawData = rawData;
	var cartHasItems = ( rawData != "" ) ? true : false;
	var runningSubStr = "0";

	if( cartHasItems ) {

		var merchOnly = true;
		var pkgIncluded = ( rawData.indexOf( "|pkgPrvLoc" ) >= 0 || rawData.indexOf( "|pkgPubLoc" ) >= 0 ) ? true : false;

		var recordArray = rawData.split("_");

		var nRecords = recordArray.length;

		var nCol = ( normLayout ) ? 6 : 5;
		var nLocations = 0;

		if( html ) {

			data += "<TR ALIGN=center BGCOLOR='#f0f0f0'><TD COLSPAN='" + nCol + "'><FONT SIZE=3 COLOR=#333333 FACE='Arial, Helvetica'><B>Your Shopping Cart</B></FONT></TD></TR>";
			if( html ) {
				data += "<TR ALIGN=center BGCOLOR='#f0f0f0'>";
				if( normLayout ) data += "<TD>&nbsp;</TD>";
			}

				data += "<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Quantity</B></FONT></TD>" +
				"<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Item</B></FONT></TD>" +
				"<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Cost Ea</B></FONT></TD>" +
				"<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Line Total</B></FONT></TD>" +
				"<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Description</B></FONT></TD>" +
			"</TR>";
		}

		var nFields = recordArray[0].split("|").length - 1; //  w/o flag

		var lineTotal = 0;
		var runningTotal = 0;
		var dueNowTot = 0;
		var row = 0;
		var noPkg = false;
		var classVal = ( gShowCartLinks ) ? 'on' : 'off';

		///////////////////////////////// BUILD TR's /////////////////////////////////
		while( row < nRecords ) {

			if( html ) {
				data += "<TR ALIGN=center BGCOLOR='#f0f0f0'>";
				if( normLayout ) data += "<TD>" + getRemoveLink( row ) + "</TD>";
			}

			var flag = recordArray[ row ].split("|")[ nFields - 1 ];

			var dueNowThis = parseFloat( recordArray[ row ].split("|")[ nFields ] );

			var quan = 0;

			///////////////////////////////// BUILD TD's /////////////////////////////////
			for ( var k = 0; k < nFields - 1; k++ ) {

				switch( k ) {

					case 0: ////////////////////////// QUANTITY TD //////////////////////////

						quan = parseInt( recordArray[ row ].split("|")[ k ] );
						if( html ) {
							var tdContents = ( normLayout ) ? getQuanLink( row, quan ) : "<FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>" + quan + "</FONT>";
							data += "<TD>" + tdContents + "</TD>";
						}
						else data += quan;
						break;

					case 1: //////////////////////////// ITEM TD ////////////////////////////
						var item = recordArray[ row ].split("|")[ k ];
						if( html ) data += "<TD><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>" + item + "</FONT></TD>";
						else data += " " + item;
						break;

					case 2: /////////////////// COST EA & LINE TOTAL TD's ///////////////////

						lineTotal = recordArray[ row ].split("|")[0] * recordArray[ row ].split("|")[2];
						runningTotal += lineTotal;
						if( html ) {
							// Cost ea:
							data += "<TD NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>$" + formatMoney( recordArray[ row ].split("|")[2] ) + "</FONT></TD>";
							// Line Total:
							data += "<TD NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>$" + formatMoney( lineTotal ) + "</FONT></TD>";
						}
						else {
							data += " @ $" + formatMoney( recordArray[ row ].split("|")[2] ) + " ea.";
							data += " for $" + formatMoney( lineTotal );
						}
						break;

					case 3: ///////////////////// DESCRIPTION TD /////////////////////

						var description = recordArray[ row ].split('|')[ k ];

						// IF ANY OF ALL POSSIBLE FLAG VALUES...
						if( flag == "ind" || flag == "indPubLoc" || flag == "indPrvLoc" || flag == "indInq" || flag == "indStartsAt" || flag == "pkgPubLoc" || flag == "pkgPrvLoc" || flag == "indNoComm" || flag == "merchandise" ) {

							// MERCHANDISE
							if( flag == "merchandise" ) {
								dueNowThis = quan * dueNowThis;
								dueNowTot += dueNowThis;
							}
							else merchOnly = false;

							coordBalance += lineTotal;
							// location deposit is full amount of actual fee due site provider...

							var itemType = "- Individual Item -";

							/// ITEM WITH PRIVATE LOCATION
							if( flag == "indPrvLoc" || flag == "pkgPrvLoc" ) {
								nLocations++;
								//if( nLocations > 1 ) alert( nLocations );
								// Full amount after backing out commission is due as site deposit
								if( dueNowThis > 0 ) {
									dueNowThis = quan * dueNowThis;
									dueNowTot += dueNowThis;
									description += " Includes $" + formatMoney( dueNowThis ) + " deposit + tax required by site provider to hold location.";
								}
								if( flag == "pkgPrvLoc" ) itemType = "- Package with Private Location -";
								else itemType = "- Individual Private Location -";
							}

							else if( flag == "indInq" ) description += " " + PRICE_INQUIRY;
							else if( flag == "indStartsAt" ) description += " " + PRICE_STARTS_AT + " Price starts at $" + formatMoney( recordArray[ row ].split("|")[ 2 ] ) + ".";
							else if( flag == "indNoComm" ) description += " " + NO_COMM;

							if( flag == "pkgPubLoc" ) itemType = "- Package with Public Location-";
							else if( flag == "indPubLoc" ) itemType = "- Individual Public Location-";
							else if( flag == "merchandise" ) itemType = "- Merchandise -";

							for( var i = 0; i < description.length; i++ ) {
								var hasVisibleChar = ( description.charAt( i ) != " " ) ? true : false;
								if( hasVisibleChar ) break;
							}

							if( html ) {
								var brk = ( hasVisibleChar ) ? "<BR>" : "";
								data += "<TD WIDTH=35%><DIV STYLE='font-size:8pt; color:rgb( 51,51,51 ); font-family:Arial, Helvetica; font-weight: normal;'>" + description + brk + itemType + "</DIV></TD>";
							}
							else {
								var brk = ( hasVisibleChar ) ? "\n" : "";
								data += "\n" + description + brk + itemType;
							}
							if( flag != "merchandise" ) noMerchandise = true;
						}
						else { // ERROR
							if( html )
								data += "<TD WIDTH=35%><FONT SIZE=2 COLOR=red FACE='Arial, Helvetica'>" + description + "<BR>- Item \"" + flag + "\" not identified -<BR>Please report problem to Webmaster</FONT></TD>";
							else
								data += "\n" + description + "\n- ITEM \"" + flag + "\"  NOT FLAGGED -";
							alert( "ERROR: Flag \"" + flag + "\" is invalid - please report problem to site owner" );
						}

						break; // END DESCRIPTION CELL

					default:
						alert( "SWITCH/CASE ERROR: Case " + k + " caught by default handler in \"function getTable( html )\" " );

				}

			} // eo for loop
			if( html ) data += "</TR>";
			else data += "\n\n";
			row++;
		} // eo while loop

		//////////////////////////////// COORDINATION FEE ////////////////////////////////

		if( !pkgIncluded ) {

			runningTotal += COORD_FEE;
			if( html ) {

				data += "<TR BGCOLOR='#f0f0f0'>" +

					"<TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right>";

						if( normLayout )
							data += "<A HREF='javascript:openWin(\"help.html#coord_fee\", \"0\", \"0\", \"0\", \"0\", 0.60 );' onMouseOver=\"activateCartMsg( 25 );self.status=dText[ 25 ]; return true\" onMouseOut=\"deActivateCartMsg();self.status='';return true\" TITLE='" + dText[ 25 ] + "'><SPAN CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true\"><SPAN CLASS='eightPt'>Learn More</SPAN></SPAN></A>&nbsp; &nbsp; ";

							data += "<FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Wedding Coordination Fee: </B></FONT>" +
					"</TD>" +

					"<TD ALIGN=center NOWRAP>" +
						"<FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>$" + formatMoney( COORD_FEE ) +
					"</B></FONT></TD>" +
				"</TR>";
			}
			else
				data += "\nON-SITE WEDDING DIRECTOR: $" + formatMoney( COORD_FEE ) + "\n";
		}

		//////////////////////////////// RUNNING TOTAL ////////////////////////////////

		runningSubStr = formatMoney( runningTotal );
		if( html ) {
			data += "<TR BGCOLOR='#f0f0f0'><TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Your Running Total:</B></FONT></TD><TD ALIGN=center NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>$" + runningSubStr + "</B></FONT></TD></TR>";
		}
		else
			data += "\nSUB-TOTAL: $" + formatMoney( runningTotal ) + "\n";

		//////////////////////////////////// TAX ////////////////////////////////////
		var fTax = formatMoney( runningTotal * TAX_RATE );
		if( html ) {

			data += "<TR BGCOLOR='#f0f0f0'><TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right>"

			if( normLayout )
				data += "<A HREF='javascript:openWin(\"help.html#tax\", \"0\", \"0\", \"0\", \"0\", 0.60 );' onMouseOver=\"activateCartMsg( 32 );self.status=dText[ 32 ]; return true\" onMouseOut=\"deActivateCartMsg();self.status='';return true\" TITLE='" + dText[ 32 ] + "'><SPAN CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true\"><SPAN CLASS='eightPt'>Learn More</SPAN></SPAN></A>&nbsp; &nbsp; ";

			data += "<FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>" + taxRatePercent + " Hawaii State Tax: </B></FONT></TD><TD ALIGN=center NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>$" + fTax + "</B></FONT></TD></TR>";
		}
		else
			data += "HAWAII TAX: $" + fTax + "\n";

		////////////////////////////////// GRAND TOTAL //////////////////////////////////
		var gTotalWithTax = runningTotal + ( runningTotal * TAX_RATE );

		if( html ) data += "<TR BGCOLOR='#f0f0f0'><TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right>";

		var fGrandTotal = formatMoney( gTotalWithTax );
		if( html )
			data += "<FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>Grand Total: </B></FONT></TD><TD ALIGN=center NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'><B>$" + fGrandTotal + "</B></FONT></TD></TR>";
		else {
			data += "GRAND TOTAL: $" + fGrandTotal;
			data += "\n";
			gPayableNow = gTotalWithTax;
		}

		// If we got only service items
		if( noMerchandise ) {

			var dueNowGrandTot = dueNowTot += dueNowTot * TAX_RATE + DEPOSIT;
			if( dueNowGrandTot > gTotalWithTax ) dueNowGrandTot = gTotalWithTax;

			var outstandingBal = gTotalWithTax - dueNowGrandTot;
			if( outstandingBal < 0 ) outstandingBal = 0;

			///////////////////////////// OUTSTANDING BALANCE /////////////////////////////

			if( html ) {

				data += "<TR BGCOLOR='#f0f0f0'><TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>" + OUTSTANDING_DUE + ": </FONT></TD><TD ALIGN=center NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>$" + formatMoney( outstandingBal ) + "</FONT></TD></TR>";

				data += "<TR BGCOLOR='#f0f0f0'><TD COLSPAN='" + ( nCol - 1 ) + "' ALIGN=right><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>If this is a final order your deposit payable is: </FONT></TD><TD ALIGN=center NOWRAP><FONT SIZE=2 COLOR=#333333 FACE='Arial, Helvetica'>$" + formatMoney( dueNowGrandTot ) + "</FONT></TD></TR>";
			}
			else {
				data += "\nDEFERRED PAYABLE: $" + formatMoney( outstandingBal ) + " (a)";
				data += "\nDEPOSIT PAYABLE: $" + formatMoney( dueNowGrandTot );
				data += "\n\n(a) " + OUTSTANDING_DUE;
				gPayableNow = dueNowGrandTot;
			}
		}

	}
	else {
		if( html ) {
			data += "<TR ALIGN=center BGCOLOR='#f0f0f0'><TD CLASS='norm'>Your Shopping Cart is Empty</TD></TR>";
			if( DB.RecordCart.value == "true" )
				DeleteCookie( "pmwCartCookie", "/");
		}
		else data += "Your shopping cart is empty. You may add items to your cart and submit your order for a complimentary estimate. No payment is required and you are under no obligation to use our services.\n\nUtilizing our shopping cart helps us understand the type of wedding you are interested in and allows us to more efficiently respond to your needs!";
	}
	DB.SubTotal.value = runningSubStr;
	if( html ) data += "</TABLE>";

	showSub();
	var outPut = data + extendedInfo + footer;
//if(NC) java.lang.System.err.println( "outPut: " + outPut + "" );
// alert( merchOnly );
	return outPut;

}
//---------------------------------------------------------------------------------------

function saveItems( checkBoxObject ) {

	if( dbLoaded() ) {

		if( checkBoxObject.checked ) {
			setData( "RecordCart", "true" )

			var expDate = expOneMonth;
			var expMonth = expDate.getMonth() + 1;
			var expDay = expDate.getDate();
			var expYear = expDate.getYear();

			var theMsg = "We will save your shopping cart until " + expMonth + "/" + expDay + "/" + expYear + ". On your next visit you must use the same computer that you are logged onto now for this feature to work.\n\nP.S. At the end of this session we suggest you print your shopping cart & retain it as a \"back-up\"";

			alert( theMsg );
		}
		else
			setData( "RecordCart", "false" )

		setCheckbox();

		if ( exceedStorage )
			alert( "Sorry - we are unable to record your items and then display them on your next visit because they exceed the storage space allotted for each client OR you have turned off \"cookies\".\n\nP.S. Press your Browser's \"Print Button\" if you need a copy for your next visit..." );
	}
	else
		notInitialized();

}

//---------------------------------------------------------------------------------------

function getRemoveLink( row ) {

	var removeLink = "<A HREF=javascript:removeRecord(" + row + ") onMouseOver=\"activateCartMsg( 30 ); self.status=dText[ 30 ]; return true;\" onMouseOut=\"deActivateCartMsg(); self.status=''; return true;\" TITLE='" + dText[ 30 ] + "'><SPAN CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true;\" TITLE='" + dText[ 30 ] + "'>Remove</SPAN></A>";
	return removeLink;
}
//---------------------------------------------------------------------------------------

function removeRecord( record ) {

	var DB = getDB();

	var rawData = DB.items.value;

	DB.items.value = '';

	var recordArray = rawData.split('_');

	var newIndex = 0;

	for( var k = 0; k < recordArray.length; k++ ) {

		if( k == record )	continue;
		newIndex++;

		if( DB.items.value == '' )
			DB.items.value += recordArray[ k ];
		else
			DB.items.value += ( "_" + recordArray[ k ] );

	}
	redrawTable( true );
}

//---------------------------------------------------------------------------------------

function getQuanLink( row, quan ) {

	var quanLink = "<A HREF=javascript:changeQuan(" + row + ") onMouseOver=\"activateCartMsg( 31 ); self.status=dText[ 31 ]; return true;\" onMouseOut=\"deActivateCartMsg(); self.status=''; return true;\" TITLE='" + dText[ 31 ] + "'><SPAN CLASS='blue' onMouseOver='linkOn(this); return true;' onMouseOut='linkOff(this); return true'>&nbsp;" + quan + "&nbsp;</SPAN></A>";
	return quanLink;

}
//---------------------------------------------------------------------------------------

function changeQuan( record ) {

	self.status='Input box accepts whole numbers only...';

	var DB = getDB();
	var Items = DB.items;

	var rawData = Items.value;

	Items.value = '';

	var recordArray = rawData.split('_');

	for( var k = 0; k < recordArray.length; k++ ) {

		if( k == record )	{

				var oldQuan = recordArray[k].split('|')[0];

				var newQuan = prompt( "I now have " + oldQuan + " of this item in my shopping cart,\nand I'd like to change the quantity to:", "" );
				self.status='';

				if ( newQuan == oldQuan ) {
					setTimeout("self.status='Action cancelled - you input the same quantity...'", 500);
					Items.value = rawData;
					return;
				}
				else if ( newQuan == null || newQuan == '' || newQuan.indexOf('.') > -1 ) {
					setTimeout("self.status='Action cancelled - no change was made...'", 500);
					Items.value = rawData;
					return;
				}
				else if ( isNaN( newQuan ) ) {
					setTimeout("self.status='Action cancelled - enter whole numbers only...'", 500);
					Items.value = rawData;
					return;
				}
				else if ( newQuan < 1 ) {
					setTimeout("self.status='Action cancelled, enter a quantity of 1 or more...'", 500);
					Items.value = rawData;
					return;
				}
				else { // user enter whole number > 1 & change is to be made
					setTimeout("self.status='Got it! Change in quantity has been recorded...'", 500);
					var arrItem = recordArray[ k ].split( '|' );
					recordArray[ k ] = newQuan + '|' + arrItem[1] + '|' + arrItem[2] + '|' + arrItem[3] + '|' + arrItem[4] + '|' + arrItem[5];
				}

		}

		if( Items.value == '' ) Items.value += recordArray[ k ];
		else Items.value += ( "_" + recordArray[ k ] );

	}
	redrawTable( true );
}

//---------------------------------------------------------------------------------------

function redrawTable( normLayout ) {

	if( dHTML && !macIE ) {
		var CartTbl = getObject( "cartTable" );
		CartTbl.innerHTML = getCart( true, normLayout );
		setCheckbox();
	}
	else document.location.reload();
}


//------------------------------------------------------------------------------------
function formatMoney(theNumber) {

	var newNum = "" + theNumber;
	var theLength = newNum.length;
	var theDecLoc = newNum.lastIndexOf(".");

	if (theDecLoc == -1) {
		newNum = newNum + ".00";
		return newNum;
	}

	if (theDecLoc != -1) {
		var theDollars = newNum.substring(0,theDecLoc);
		var theCents = newNum.substring(theDecLoc,theLength);
		var theCents = "" + Math.round(theCents * 100);

		if ( theCents == "100" ) {
			theDollars = parseFloat(theDollars); //theDollars from string into number
			theDollars += 1;
			newNum = theDollars + ".00";
			return newNum;
		}
		else {
		var newCents = (theCents.length == 1) ? "0" + theCents: theCents;
		newNum = theDollars + "." + newCents;
		return newNum;
		}
	}
}

//----------------------------------------------------------------------------------------
function getCartCallout() {

	var html = "";

	if( dHTML ) html = "<DIV ID='CartCallout' CLASS='norm' STYLE='margin-bottom:8px;'>" + dText[ 0 ] + "</DIV>";

	else if( NC4 && exactVer >= 4.5 ) {

		for( i = 0; i <= dText.length; i++ ) {
			var vis = ( i > 0 ) ? "hide" : "show";
			html += "<LAYER NAME=myCartLayer" + i + " visibility=" + vis + "><TABLE WIDTH=100% BORDER=0 CELLPADDING=0 CELLSPACING=0><TR><TD ALIGN=center NOWRAP><FONT SIZE=2 FACE='arial,helvetica' COLOR='#333333'>" + dText[ i ] + "</FONT></TD></TR></TABLE></LAYER>";
		}
		html += '<BR><BR>';
	}
	return html;
}

//--------------------------------------------------------------------------------------
var timeoutCart = 0;

function activateCartMsg( index ) {

 	clearTimeout( timeoutCart );

	if( dHTML ) {
 		var CallOut = getObject( "CartCallout" );
		CallOut.innerHTML = dText[ index ];
	}

	else if( NC4 && exactVer >= 4.5 ) {
		hideLayers();
		document.layers[ "myCartLayer" + index ].visibility = "show";
	}
}

//--------------------------------------------------------------------------------------
function deActivateCartMsg() {
	if( dHTML ) timeoutCart = setTimeout( 'getObject( "CartCallout" ).innerHTML = dText[ 0 ]', 500 );
	else if( NC4 && exactVer >= 4.5 ) timeoutCart = setTimeout( "hideLayers()", 500 );
}
//--------------------------------------------------------------------------------------
function hideLayers() {
	for( i = 0; i < document.layers.length; i++ ) {
		if( document.layers[ i ].name.indexOf( "myCartLayer" ) == 0 )
		 document.layers[ i ].visibility = "hide";
	}
}
//---------------------------------------------------------------------------------------

function getCartLinks() {

	var theLinks = '<BR>';

	theLinks += getCartCallout();

	theLinks +=  "<SPAN CLASS='horBar'>[&nbsp;&nbsp;</SPAN>";

	if( !setUpCartFromCookie ) theLinks +="<A HREF='javascript:history.back()' onMouseover='activateCartMsg( 16 ); return true;' onMouseout='deActivateCartMsg(); return true;'><SPAN CLASS='blue' onMouseOver='linkOn(this); return true;' onMouseOut='linkOff(this); return true;'>Back</SPAN></A><SPAN CLASS='horBar'>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN>";

	theLinks +="<A HREF='javascript:clearCart()' onMouseover='activateCartMsg( 28 ); return true;' onMouseout='deActivateCartMsg(); return true;'><SPAN CLASS='blue' onMouseOver='linkOn(this); return true;' onMouseOut='linkOff(this); return true'>Empty Cart</SPAN></A><SPAN CLASS='horBar'>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN>" +
	"<A HREF='checkout.html' onMouseover='activateCartMsg( 29 ); return true;' onMouseout='deActivateCartMsg(); return true;'><SPAN CLASS='blue' onMouseOver='linkOn(this); return true;' onMouseOut='linkOff(this); return true'>Checkout</SPAN></A><SPAN CLASS='horBar'>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN>";

	if( dHTML ) theLinks +="<A HREF='javascript:void( 0 );' onClick='PF.setView( this, null, false ); PF.printPage( this );' onContextMenu='PF.setView( this, null, false ); return false;' onMouseOver='linkOn(this); if( this.innerHTML == PF.dText[ 0 ] ) activateCartMsg( 43 ); else activateCartMsg( 44 ); return true;' onMouseOut='linkOff(this); deActivateCartMsg(); return true;' ID='printer_friendly_1' STYLE='color:blue;'>" + PF.dText[ 0 ] + "</A><SPAN CLASS='horBar'>&nbsp;&nbsp;|&nbsp;&nbsp;</SPAN>";

	theLinks +=	"<A HREF='javascript:openWin(\"help.html\", \"0\", \"0\", \"0\", \"0\", 0.60 );' onMouseover='activateCartMsg( 12 ); return true;' onMouseout='deActivateCartMsg(); return true;'><SPAN CLASS='blue' onMouseOver='linkOn(this); return true;' onMouseOut='linkOff(this); return true'>Help</SPAN></A> " +

	"<SPAN CLASS='horBar'>&nbsp;&nbsp;]</SPAN><BR><BR>";
	return theLinks;
}
//---------------------------------------------------------------------------------------

function aboutComm() {
	setTimeout("self.status = 'All individual items include a ' + ( 100 * COMMISSION ) + '% coordination fee.'", 1000);
}
//--------------------------------------------------------------------------------------

function writeCartIntro() {

	var cartIntro = "" +
		"<TABLE ALIGN=center BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=600>" +
			"<TR>" +
				"<TD CLASS='normJ'>" +
					"<B>T</B>his site offers an <A HREF='javascript:openWin( \"help.html#edit\", \"0\", \"0\", \"0\", \"0\", .60 )' TITLE='Opens up a help window about using our shopping cart' onMouseover='self.status=\"Opens up a help window about using our shopping cart\"; return true;' onMouseout='self.status=\"\";return true'><NOBR CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true\">e-commerce</NOBR></A> shopping cart. As you browse, you may add items to it in an easy, care-free manner. Click the \"Cart\" link any time to review & edit your selections. You are encouraged to submit an order, even if it is a \"work in progress\". It helps us understand the type of wedding you are interested in and allows us to more efficiently respond to your needs! Note that a <A HREF='javascript:openWin( \"help.html#coord_fee\", \"0\", \"0\", \"0\", \"0\", .60 )' TITLE='Opens up a help window about commission' onMouseover='self.status=\"Opens up a help window about commission\";return true' onMouseout='self.status=\"\";return true'><NOBR CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true\">" + ( 100 * COMMISSION ) + "% commission</NOBR></A> will be added to all A La Carte (non-package) items and a <A HREF='javascript:openWin( \"help.html#coord_fee\", \"0\", \"0\", \"0\", \"0\", .60 )' TITLE='Opens up a help window about Personal Coordination Fee' onMouseover='self.status=\"Opens up a help window about Personal Coordination Fee\"; return true;' onMouseout='self.status=\"\";return true'><NOBR CLASS='blue' onMouseOver=\"linkOn(this); return true;\" onMouseOut=\"linkOff(this); return true\">Coordination Fee</NOBR></A> of $" + COORD_FEE + " is applied to any wedding that does not contain a package.<BR><BR>" +
				"</TD>" +
			"</TR>" +
		"</TABLE>";

	if ( parent.SuppressCartIntro ) cartIntro = "";

	document.write( cartIntro );

	parent.SuppressCartIntro = true;
}

//--------------------------------------------------------------------------------------

function ownerLogIn() {

	if( dbLoaded() ) {

		var DB = getDB();
		var AdminMode = DB.AdminMode;

		if( AdminMode.value == "false" ) {

			var pw = prompt( "Admin Password:", "" );

			if ( !pw ) {
				self.status = "Action cancelled because you failed to enter a password...";
				return;
			}
			else {
				if( pw == "nasus" ) {
					AdminMode.value = "true";
					document.location.reload();
				}
				else alert( "\"" + pw + "\" is not a valid password" );
			}
		}
		else alert( "You are already logged in as \"Adminstrator\"..." );
	}
	else
		alert( "Sorry, our data-base is not fully loaded, please wait a few seconds and try again..." );
}