

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{
			string: navigator.userAgent,
			subString: "Chrome",
			identity: "Chrome"
		},
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari",
			versionSearch: "Version"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			   string: navigator.userAgent,
			   subString: "iPhone",
			   identity: "iPhone/iPod"
	    },
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();




//=====================================================================||
//               NOP Design JavaScript Shopping Cart                   ||
//                                                                     ||
// For more information on SmartSystems, or how NOPDesign can help you ||
// Please visit us on the WWW at http://www.nopdesign.com              ||
//                                                                     ||
// Javascript portions of this shopping cart software are available as ||
// freeware from NOP Design.  You must keep this comment unchanged in  ||
// your code.  For more information contact FreeCart@NopDesign.com.    ||
//                                                                     ||
// JavaScript Shop Module, V.4.4.0                                     ||
//=====================================================================||

//---------------------------------------------------------------------||
//                       Global Options                                ||
//                      ----------------                               ||
// Shopping Cart Options, you can modify these options to change the   ||
// the way the cart functions.                                         ||
//                                                                     ||
// Language Packs                                                      ||
// ==============                                                      ||
// You may include any language pack before nopcart.js in your HTML    ||
// pages to change the language.  Simply include a language pack with  ||
// a script src BEFORE the <SCRIPT SRC="nopcart.js">... line.          ||
//  For example: <SCRIPT SRC="language-en.js"></SCRIPT>                ||
//                                                                     ||
// Options For Everyone:                                               ||
// =====================                                               ||
// * MinimumOrder: number, the minium dollar amount that must be       ||
//   purchased before a user is allowed to checkout.  Set to 0.00      ||
//   to disable.                                                       ||
// * MinimumOrderPrompt: string, Message to prompt users with when     ||
//   they have not met the minimum order amount.                       ||
//                                                                     ||
// Options For Programmers:                                            ||
// ========================                                            ||
// * OutputItem<..>: string, the name of the pair value passed at      ||
//   checkouttime.  Change these only if you are connecting to a CGI   ||
//   script and need other field names, or are using a secure service  ||
//   that requires specific field names.                               ||
// * AppendItemNumToOutput: true/false, if set to true, the number of  ||
//   each ordered item will be appended to the output string.  For     ||
//   example if OutputItemId is 'ID_' and this is set to true, the     ||
//   output field name will be 'ID_1', 'ID_2' ... for each item.       ||
// * HiddenFieldsToCheckout: true/false, if set to true, hidden fields ||
//   for the cart items will be passed TO the checkout page, from the  ||
//   ManageCart page.  This is set to true for CGI/PHP/Script based    ||
//   checkout pages, but should be left false if you are using an      ||
//   HTML/Javascript Checkout Page. Hidden fields will ALWAYS be       ||
//   passed FROM the checkout page to the Checkout CGI/PHP/ASP/Script  ||
//---------------------------------------------------------------------||

//Options for Everyone:
MinimumOrder          = 0.00;
MinimumOrderPrompt    = 'Your order is below our minimum order, please order more before checking out.';

OutputItemStandard    = 'STANDARD_';
OutputItemNights      = 'NIGHTS_';
OutputItemAdults      = 'ADULTS_';
OutputItemName        = 'NAME_';
OutputItemHelper      = 'HELPER_';
OutputItemChildren    = 'CHILDREN_';
OutputItemCDay        = 'CDAY_';
OutputItemCMonth      = 'CMONTH_';
OutputItemCYear       = 'CYEAR_';



//=====================================================================||
//---------------------------------------------------------------------||
//    YOU DO NOT NEED TO MAKE ANY MODIFICATIONS BELOW THIS LINE        ||
//---------------------------------------------------------------------||
//=====================================================================||


//---------------------------------------------------------------------||
//                      Language Strings                               ||
//                     ------------------                              ||
// These strings will not be used unless you have not included a       ||
// language pack already.  You should NOT modify these, but instead    ||
// modify the strings in language-**.js where ** is the language pack  ||
// you are using.                                                      ||
//---------------------------------------------------------------------||
   strSorry  = "I'm Sorry, your wishlist is full, please proceed to checkout.";
   strAdded  = " added to your wishlist.";
   strRemove = "Click 'Ok' to remove this product from your wishlist.";
   strILabel = "Standard";
   strDLabel = "Name";
   strQLabel = "Nights";
   strALabel = "Adults";
   strCLabel = "Children";
   strRLabel = "Remove From Wishlist";
   strRButton= "Remove";
   strTOT    = "TOTAL";
   strErrQty = "Invalid Quantity.";
   strNewQty = 'Please enter new quantity:';
   bLanguageDefined = true;


//---------------------------------------------------------------------||
// FUNCTION:    CKquantity                                             ||
// PARAMETERS:  Quantity to                                            ||
// RETURNS:     Quantity as a number, and possible alert               ||
// PURPOSE:     Make sure quantity is represented as a number          ||
//---------------------------------------------------------------------||
function CKquantity(checkString) {
   var strNewQuantity = "";

   for ( i = 0; i < checkString.length; i++ ) {
      ch = checkString.substring(i, i+1);
      if ( (ch >= "0" && ch <= "9") || (ch == '.') )
         strNewQuantity += ch;
   }

   if ( strNewQuantity.length < 1 )
      strNewQuantity = "1";

   return(strNewQuantity);
}


//---------------------------------------------------------------------||
// FUNCTION:    AddToCart                                              ||
// PARAMETERS:  Form Object                                            ||
// RETURNS:     Cookie to user's browser, with prompt                  ||
// PURPOSE:     Adds a product to the user's shopping cart             ||
//---------------------------------------------------------------------||
function AddToCart(thisForm) {
   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   iNumberOrdered = GetCookie("NumberOrdered");

   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   if ( thisForm.STANDARD == null )
      strSTANDARD    = "";
   else
      strSTANDARD    = thisForm.STANDARD.value;

   if ( thisForm.NIGHTS == null )
      strNIGHTS  = "1";
   else
      strNIGHTS  = thisForm.NIGHTS.value;

   if ( thisForm.P_AD == null )
      strP_AD     = "2";
   else
      strP_AD     = thisForm.P_AD.value;

   if ( thisForm.NAME == null )
      strNAME      = "";
   else
      strNAME      = thisForm.NAME.value;

   if ( thisForm.HELPER == null )
      strHELPER      = "";
   else
      strHELPER      = thisForm.HELPER.value;

   if ( thisForm.P_CH == null )
      strP_CH  = "0";
   else
      strP_CH  = thisForm.P_CH.value;

   if ( thisForm.CLIENT == null )
      strCLIENT  = "0";
   else
      strCLIENT  = thisForm.CLIENT.value;

   if ( thisForm.PHONE == null )
      strPHONE  = "0";
   else
      strPHONE  = thisForm.PHONE.value;

   if ( thisForm.EMAIL == null )
      strEMAIL  = "0";
   else
      strEMAIL  = thisForm.EMAIL.value;

   if ( thisForm.CDATE == null )
      strCDATE  = "0";
   else
      strCDATE  = thisForm.CDATE.value;

   if ( thisForm.CMONTH == null )
      strCMONTH  = "0";
   else
      strCMONTH  = thisForm.CMONTH.value;

   if ( thisForm.CYEAR == null )
      strCYEAR  = "0";
   else
      strCYEAR  = thisForm.CYEAR.value;

   if ( thisForm.ADDITIONALINFO == null ) {
      strADDTLINFO = "";
   } else {
      strADDTLINFO = thisForm.ADDITIONALINFO[thisForm.ADDITIONALINFO.selectedIndex].value;
   }
   if ( thisForm.ADDITIONALINFO2 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO2[thisForm.ADDITIONALINFO2.selectedIndex].value;
   }
   if ( thisForm.ADDITIONALINFO3 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO3[thisForm.ADDITIONALINFO3.selectedIndex].value;
   }
   if ( thisForm.ADDITIONALINFO4 != null ) {
      strADDTLINFO += "; " + thisForm.ADDITIONALINFO4[thisForm.ADDITIONALINFO4.selectedIndex].value;
   }

   //Is this product already in the cart?  If so, increment quantity instead of adding another.
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      if ( fields[0] == strSTANDARD &&
           fields[3] == strNAME   &&
           fields[12] == strADDTLINFO
         ) {
         bAlreadyInCart = true;
         dbUpdatedOrder = strSTANDARD    + "|" +
                          (parseInt(strNIGHTS)+parseInt(fields[1]))  + "|" +
                          strP_AD     + "|" +
                          strNAME      + "|" +
                          strHELPER  + "|" +
                          strP_CH  + "|" +
                          strCLIENT  + "|" +
                          strPHONE  + "|" +
                          strEMAIL  + "|" +
                          strCDATE  + "|" +
                          strCMONTH  + "|" +
                          strCYEAR  + "|" +
                          strADDTLINFO;
         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         break;
      }
   }


   if ( !bAlreadyInCart ) {
      iNumberOrdered++;

      if ( iNumberOrdered > 12 )
         alert( strSorry );
      else {
         dbUpdatedOrder = strSTANDARD    + "|" + 
                          strNIGHTS    + "|" +
                          strP_AD     + "|" +
                          strNAME      + "|" +
                          strHELPER  + "|" +
                          strP_CH  + "|" +
                          strCLIENT  + "|" +
                          strPHONE  + "|" +
                          strEMAIL  + "|" +
                          strCDATE  + "|" +
                          strCMONTH  + "|" +
                          strCYEAR  + "|" +
                          strADDTLINFO;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
      }
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    getCookieVal                                           ||
// PARAMETERS:  offset                                                 ||
// RETURNS:     URL unescaped Cookie Value                             ||
// PURPOSE:     Get a specific value from a cookie                     ||
//---------------------------------------------------------------------||
function getCookieVal (offset) {
   var endstr = document.cookie.indexOf (";", offset);

   if ( endstr == -1 )
      endstr = document.cookie.length;
   return(unescape(document.cookie.substring(offset, endstr)));
}


//---------------------------------------------------------------------||
// FUNCTION:    FixCookieDate                                          ||
// PARAMETERS:  date                                                   ||
// RETURNS:     date                                                   ||
// PURPOSE:     Fixes cookie date, stores back in date                 ||
//---------------------------------------------------------------------||
function FixCookieDate (date) {
   var base = new Date(0);
   var skew = base.getTime();

   date.setTime (date.getTime() - skew);
}


//---------------------------------------------------------------------||
// FUNCTION:    GetCookie                                              ||
// PARAMETERS:  Name                                                   ||
// RETURNS:     Value in Cookie                                        ||
// PURPOSE:     Retrieves cookie from users browser                    ||
//---------------------------------------------------------------------||
function GetCookie (name) {
   var arg = name + "=";
   var alen = arg.length;
   var clen = document.cookie.length;
   var i = 0;

   while ( i < clen ) {
      var j = i + alen;
      if ( document.cookie.substring(i, j) == arg ) return(getCookieVal (j));
      i = document.cookie.indexOf(" ", i) + 1;
      if ( i == 0 ) break;
   }

   return(null);
}


//---------------------------------------------------------------------||
// FUNCTION:    SetCookie                                              ||
// PARAMETERS:  name, value, expiration date, path, domain, security   ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Stores a cookie in the users browser                   ||
//---------------------------------------------------------------------||
function SetCookie (name,value,expires,path,domain,secure) {
   document.cookie = name + "=" + escape (value) +
                     ((expires) ? "; expires=" + expires.toGMTString() : "") +
                     ((path) ? "; path=" + path : "") +
                     ((domain) ? "; domain=" + domain : "") +
                     ((secure) ? "; secure" : "");
}


//---------------------------------------------------------------------||
// FUNCTION:    DeleteCookie                                           ||
// PARAMETERS:  Cookie name, path, domain                              ||
// RETURNS:     null                                                   ||
// PURPOSE:     Removes a cookie from users browser.                   ||
//---------------------------------------------------------------------||
function DeleteCookie (name,path,domain) {
   if ( GetCookie(name) ) {
      document.cookie = name + "=" +
                        ((path) ? "; path=" + path : "") +
                        ((domain) ? "; domain=" + domain : "") +
                        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    RemoveFromCart                                         ||
// PARAMETERS:  Order Number to Remove                                 ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Removes an item from a users shopping cart             ||
//---------------------------------------------------------------------||
function RemoveFromCart(RemOrder) {
      NumberOrdered = GetCookie("NumberOrdered");
      for ( i=RemOrder; i < NumberOrdered; i++ ) {
         NewOrder1 = "Order." + (i+1);
         NewOrder2 = "Order." + (i);
         database = GetCookie(NewOrder1);
         SetCookie (NewOrder2, database, null, "/");
      }
      NewOrder = "Order." + NumberOrdered;
      SetCookie ("NumberOrdered", NumberOrdered-1, null, "/");
      DeleteCookie(NewOrder, "/");
      location.href=location.href;
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeYear                                             ||
// PARAMETERS:  Order Number to Change Year                            ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes year  of an item in the shopping cart          ||
//---------------------------------------------------------------------||
function ChangeYear(OrderItem,NewYear) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10] + "|" +
                       NewYear + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeMonth                                            ||
// PARAMETERS:  Order Number to Change Month                           ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes month of an item in the shopping cart          ||
//---------------------------------------------------------------------||
function ChangeMonth(OrderItem,NewMonth) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       NewMonth + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeDate                                             ||
// PARAMETERS:  Order Number to Change Date                            ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes Date  of an item in the shopping cart          ||
//---------------------------------------------------------------------||
function ChangeDate(OrderItem,NewDate) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       NewDate + "|" +
                       fields[10] + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}

//---------------------------------------------------------------------||
// FUNCTION:    ChangeChildren                                         ||
// PARAMETERS:  Order Number to Change Children                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes Children of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeChildren(OrderItem,NewChildren) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       NewChildren + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10] + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeAdults                                           ||
// PARAMETERS:  Order Number to Change Adults                          ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes Adults   of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeAdults(OrderItem,NewAdults) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       fields[1] + "|" +
                       NewAdults + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10] + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeStandard                                         ||
// PARAMETERS:  Order Number to Change Standard                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes Standard of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeStandard(OrderItem,NewStandard) {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = NewStandard + "|" +
                       fields[1] + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10] + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
}


//---------------------------------------------------------------------||
// FUNCTION:    ChangeQuantity                                         ||
// PARAMETERS:  Order Number to Change Quantity                        ||
// RETURNS:     Null                                                   ||
// PURPOSE:     Changes quantity of an item in the shopping cart       ||
//---------------------------------------------------------------------||
function ChangeQuantity(OrderItem,NewQuantity) {
   if ( isNaN(NewQuantity) ) {
      alert( strErrQty );
   } else {
      NewOrder = "Order." + OrderItem;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       NewQuantity + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5] + "|" +
                       fields[6] + "|" +
                       fields[7] + "|" +
                       fields[8] + "|" +
                       fields[9] + "|" +
                       fields[10] + "|" +
                       fields[11] + "|" +
                       fields[12];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
   }
}


//---------------------------------------------------------------------||
// FUNCTION:    GetFromCart                                            ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page          ||
//              **DEPRECATED FUNCTION, USE ManageCart or Checkout**    ||
//---------------------------------------------------------------------||
function GetFromCart( fShipping ) {
   ManageCart( );
}


//---------------------------------------------------------------------||
// FUNCTION:    RadioChecked                                           ||
// PARAMETERS:  Radio button to check                                  ||
// RETURNS:     True if a radio has been checked                       ||
// PURPOSE:     Form fillin validation                                 ||
//---------------------------------------------------------------------||
function RadioChecked( radiobutton ) {
   var bChecked = false;
   var rlen = radiobutton.length;
   for ( i=0; i < rlen; i++ ) {
      if ( radiobutton[i].checked )
         bChecked = true;
   }    
   return bChecked;
} 


//---------------------------------------------------------------------||
// FUNCTION:    QueryString                                            ||
// PARAMETERS:  Key to read                                            ||
// RETURNS:     value of key                                           ||
// PURPOSE:     Read data passed in via GET mode                       ||
//---------------------------------------------------------------------||
QueryString.keys = new Array();
QueryString.values = new Array();
function QueryString(key) {
   var value = null;
   for (var i=0;i<QueryString.keys.length;i++) {
      if (QueryString.keys[i]==key) {
         value = QueryString.values[i];
         break;
      }
   }
   return value;
} 

//---------------------------------------------------------------------||
// FUNCTION:    QueryString_Parse                                      ||
// PARAMETERS:  (URL string)                                           ||
// RETURNS:     null                                                   ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//---------------------------------------------------------------------||
function QueryString_Parse() {
   var query = window.location.search.substring(1);
   var pairs = query.split("&"); for (var i=0;i<pairs.length;i++) {
      var pos = pairs[i].indexOf('=');
      if (pos >= 0) {
         var argname = pairs[i].substring(0,pos);
         var value = pairs[i].substring(pos+1);
         QueryString.keys[QueryString.keys.length] = argname;
         QueryString.values[QueryString.values.length] = value;
      }
   }
}

//---------------------------------------------------------------------||
// FUNCTION:    Total Nights                                           ||
// PARAMETERS:  nights                                                 ||
// RETURNS:     number of nights                                       ||
// PURPOSE:     Parses query string data, must be called before Q.S.   ||
//---------------------------------------------------------------------||

function TotalNights (nights) {
   var fTotalNights   = 0;   

   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;
   
   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );
	  
	  if ( fields[4] == "P" || fields[4] == "M" || fields[4] == "T" ) {
         fTotalNights += (parseInt(fields[1]));
	  }
   }
   
   return(fTotalNights);
}


//---------------------------------------------------------------------||
// FUNCTION:    ManageCart                                             ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page          ||
//---------------------------------------------------------------------||
function ManageCart() {
   var iNumberOrdered = 0;    //Number of products ordered
   var fTotal         = 0;    //Total cost of order
   var fShipping      = 0;    //Shipping amount
   var fTotalNights   = 0;    //Total of nights
   var iCount         = 0;    //internal counter
   var iCountStand    = 0;    //internal standard counter
   var iCountTA       = 0;    //internet travel activity counter
   var Now = new Date();
   var CurDate = Now.getDate();
   var CurMonth = Now.getMonth() + 1;
   var CurYear = Now.getYear();
   var strOutput      = "";   //String to be written to page
   var bDisplay       = true; //Whether to write string to the page (here for programmers)

   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   fTotalNights = TotalNights();

   strOutput = "<TABLE width=100%><TR>" +
                  "<TD></TD>" +
                  "<TD></TD>" +
                  "<TD></TD>" +
                  "<TD></TD></TR>";

   if ( iNumberOrdered == 0 ) {
      strOutput += "<TR><TD COLSPAN=4><CENTER><BR><B>Your wishlist is empty</B><BR><BR></CENTER></TD></TR>";
   } else {

      iCount = 0;
      iCountStand = 0;
	  iCountTA = 0;
      strOutput += "<TR>" +
                     "<TD></TD>" +
                     "<TD><B>Places you have chosen to visit</B></TD>" +
                     "<TD><B>Number of<BR>nights</B></TD>" +
                     "<TD><B>Your total<BR>number of<BR>nights on<BR>safari</B></TD></TR>";
   
      for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only lodges / places
         NewOrder = "Order." + i;
         database = "";
         database = GetCookie(NewOrder);

         Token0 = database.indexOf("|", 0);
         Token1 = database.indexOf("|", Token0+1);
         Token2 = database.indexOf("|", Token1+1);
         Token3 = database.indexOf("|", Token2+1);
         Token4 = database.indexOf("|", Token3+1);
         Token5 = database.indexOf("|", Token4+1);
         Token6 = database.indexOf("|", Token5+1);
         Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

         fields = new Array;
         fields[0] = database.substring( 0, Token0 );                 // Standard
         fields[1] = database.substring( Token0+1, Token1 );          // Nights
         fields[2] = database.substring( Token1+1, Token2 );          // Adults
         fields[3] = database.substring( Token2+1, Token3 );          // Name
         fields[4] = database.substring( Token3+1, Token4 );          // Helper
         fields[5] = database.substring( Token4+1, Token5 );          // Children
         fields[6] = database.substring( Token5+1, Token6 );
         fields[7] = database.substring( Token6+1, Token7 );
         fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

         fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
         fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

         if ( fields[4] == "P" ) {
            iCount++;
            strOutput += "<TR>";
            strOutput += "<TD ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";

            strOutput += "<TD>"  + fields[3] + "</TD>";
            strOutput += "<TD><FORM><SELECT onChange=\"ChangeQuantity("+i+", this.value);\">";
			
	     		for (j=1; j<8; j++) {
		     		if (j==fields[1]) {
			    		strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		     		} else {
			 		    strOutput += "<option value=\""+j+"\">"+j+"</option>";
		  		   	}
			     }

            strOutput += "</FORM></TD>";
		 
            if ( iCount == "1" )
               strOutput += "<TD>"  + fTotalNights + "</TD>";
            else
		       strOutput += "<TD></TD></TR>";
         }
      }

      strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";
      strOutput += "<TR>" +
                     "<TD></TD>" +
                     "<TD><B>Mobile safari destinations</B></TD>" +
                     "<TD><B>Number of<BR>nights</B></TD>" +
                     "<TD><B>Standard</B></TD></TR>";
   
      for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only mobile
	     k = 1;
         NewOrder = "Order." + i;
         database = "";
         database = GetCookie(NewOrder);

         Token0 = database.indexOf("|", 0);
         Token1 = database.indexOf("|", Token0+1);
         Token2 = database.indexOf("|", Token1+1);
         Token3 = database.indexOf("|", Token2+1);
         Token4 = database.indexOf("|", Token3+1);
         Token5 = database.indexOf("|", Token4+1);
         Token6 = database.indexOf("|", Token5+1);
         Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

         fields = new Array;
         fields[0] = database.substring( 0, Token0 );                 // Standard
         fields[1] = database.substring( Token0+1, Token1 );          // Nights
         fields[2] = database.substring( Token1+1, Token2 );          // Adults
         fields[3] = database.substring( Token2+1, Token3 );          // Name
         fields[4] = database.substring( Token3+1, Token4 );          // Helper
         fields[5] = database.substring( Token4+1, Token5 );          // Children
         fields[6] = database.substring( Token5+1, Token6 );
         fields[7] = database.substring( Token6+1, Token7 );
         fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

         fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
         fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

         if ( fields[4] == "M" ) {
			 iCountStand++;
            strOutput += "<TR>";
		    strOutput += "<TD ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";

			strOutput += "<TD>"  + fields[3] + "</TD>";

            strOutput += "<TD><FORM><SELECT onChange=\"ChangeQuantity("+i+", this.value);\">";
			
	     		for (j=1; j<8; j++) {
		     		if (j==fields[1]) {
			    		strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		     		} else {
			 		    strOutput += "<option value=\""+j+"\">"+j+"</option>";
		  		   	}
			     }

            strOutput += "</FORM></TD>";
		 
            if ( fields[0] == "-" ) ChangeStandard(i,"5+");
			
			if (iCountStand == "1") {
				
            if ( fields[0] == "5")
		    strOutput += "<TD><FORM><SELECT onChange=\"ChangeStandard("+i+", this.value);\"><OPTION VALUE=\"5+\">5+</OPTION><OPTION VALUE=\"5\" SELECTED>5</OPTION><OPTION VALUE=\"4\">4</OPTION><OPTION VALUE=\"3\">3</OPTION></SELECT></FORM></TD></TR>";
            if ( fields[0] == "5+")
		    strOutput += "<TD><FORM><SELECT onChange=\"ChangeStandard("+i+", this.value);\"><OPTION VALUE=\"5+\" SELECTED>5+</OPTION><OPTION VALUE=\"5\">5</OPTION><OPTION VALUE=\"4\">4</OPTION><OPTION VALUE=\"3\">3</OPTION></SELECT></FORM></TD></TR>";
            if ( fields[0] == "4")
		    strOutput += "<TD><FORM><SELECT onChange=\"ChangeStandard("+i+", this.value);\"><OPTION VALUE=\"5+\">5+</OPTION><OPTION VALUE=\"5\">5</OPTION><OPTION VALUE=\"4\" SELECTED>4</OPTION><OPTION VALUE=\"3\">3</OPTION></SELECT></FORM></TD></TR>";
            if ( fields[0] == "3")
		    strOutput += "<TD><FORM><SELECT onChange=\"ChangeStandard("+i+", this.value);\"><OPTION VALUE=\"5+\">5+</OPTION><OPTION VALUE=\"5\" SELECTED>5</OPTION><OPTION VALUE=\"4\">4</OPTION><OPTION VALUE=\"3\" SELECTED>3</OPTION></SELECT></FORM></TD></TR>";
			}
		 }
      }
      if (iCountStand >= "1") {
         strOutput += "<TR><TD colspan=4><P>Mobile safari standards comparison chart<BR><BR><img src=\"images/table.gif\"><BR></TD></TR>"
      }


      strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";
      strOutput += "<TR>" +
                     "<TD></TD>" +
                     "<TD><B>Travel by activity</B></TD>" +
                     "<TD><B>Number of<BR>nights</B></TD>" +
                     "<TD></TD></TR>";
   
   for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only travel activity
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
      fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

      if ( fields[4] == "T" ) {
		 iCountTA++;
         strOutput += "<TR>";
		 strOutput += "<TD ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";

         strOutput += "<TD>"  + fields[3] + "</TD>";

            strOutput += "<TD><FORM><SELECT onChange=\"ChangeQuantity("+i+", this.value);\">";
			
	     		for (j=1; j<8; j++) {
		     		if (j==fields[1]) {
			    		strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		     		} else {
			 		    strOutput += "<option value=\""+j+"\">"+j+"</option>";
		  		   	}
			     }

            strOutput += "</FORM></TD>";
		 
		 strOutput += "<TD></TD></TR>";
      }
   }

   strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";
   strOutput += "<TR>" +
                  "<TD></TD>" +
                  "<TD><B>Add-ons</B></TD>" +
                  "<TD><B>Quantity</B></TD>" +
                  "<TD></TD></TR>";

   for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only add-ons
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
      fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

      if ( fields[4] == "A" ) {
         strOutput += "<TR>";
		 strOutput += "<TD ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";

         strOutput += "<TD>"  + fields[3] + "</TD>";

         if ( fields[3] == "Astronomy") {
            strOutput += "<TD></TD>";
		 } else {
            strOutput += "<TD><FORM><INPUT TYPE=TEXT NAME=Q SIZE=2 VALUE=\"" + fields[1] + "\" onChange=\"ChangeQuantity("+i+", this.value);\"></FORM></TD>";
		 }
		 
		 if ( i == "1" )
		    strOutput += "<TD>"  + fTotalNights + "</TD>";
         else
		    strOutput += "<TD></TD>";
      }
   }

   strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";
   strOutput += "<TR>" +
                  "<TD></TD>" +
                  "<TD COLSPAN=3><A HREF=\"guides.html\"><B>If available you would like one of the following</B></A></TD>" +
                  "</TR>";

   for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only guides
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
      fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

      if ( fields[4] == "G" ) {
         strOutput += "<TR>";
		 strOutput += "<TD ALIGN=CENTER><input type=button value=\" "+strRButton+" \" onClick=\"RemoveFromCart("+i+")\" class=\"nopbutton\"></TD>";

         strOutput += "<TD>"  + fields[3] + "</TD>";

         strOutput += "<TD></TD>";
		 
         strOutput += "<TD></TD></TR>";
      }
   }
   strOutput += "<TR>" +
                  "<TD></TD>" +
                  "<TD><A HREF=\"guides.html\"><B>to guide your safari</B></A></TD>" +
                  "<TD></TD>" +
                  "<TD></TD></TR>";

   strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";  // to show only client info
   strOutput += "<TR>" +
                  "<TD></TD>" +
                  "<TD><B>Your info</B></TD>" +
                  "<TD></TD>" +
                  "<TD></TD></TR>";

   for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show only client info
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
      fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );

      if ( i == 1 ) {
         strOutput += "<TR>";
		 strOutput += "<TD></TD>";
		 strOutput += "<TD>Number of adults</TD>";

         strOutput += "<TD><FORM><INPUT TYPE=TEXT NAME=P_CH SIZE=2 VALUE=\"" + fields[2] + "\" onChange=\"ChangeAdults("+i+", this.value);\"></FORM></TD>";

         strOutput += "</TR><TR>";
		 strOutput += "<TD></TD>";
		 strOutput += "<TD><P>number of children (under 16)</TD>";

         strOutput += "<TD><FORM><INPUT TYPE=TEXT NAME=P_CH SIZE=2 VALUE=\"" + fields[5] + "\" onChange=\"ChangeChildren("+i+", this.value);\"></FORM></TD></TR>";

      }
   }

   strOutput += "<TR><TD COLSPAN=4><HR color=#CA4700></TD></TR>";  // to show dates
   strOutput += "<TR>" +
                  "<TD></TD>" +
                  "<TD><B>Your dates</B></TD>" +
                  "<TD></TD>" +
                  "<TD></TD></TR>";        

   for ( i = 1; i <= iNumberOrdered; i++ ) {           // to show dates

      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );                 // Standard
      fields[1] = database.substring( Token0+1, Token1 );          // Nights
      fields[2] = database.substring( Token1+1, Token2 );          // Adults
      fields[3] = database.substring( Token2+1, Token3 );          // Name
      fields[4] = database.substring( Token3+1, Token4 );          // Helper
      fields[5] = database.substring( Token4+1, Token5 );          // Children
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

      fTotal       += (parseInt(fields[1]) * parseFloat(fields[2]) );
      fShipping    += (parseInt(fields[1]) * parseFloat(fields[5]) );
	  
	  if ( fields[9] == "0" ) ChangeDate(i,CurDate);
	  if ( fields[10] == "0" ) ChangeMonth(i,CurMonth);
	  if ( fields[11] == "0" ) ChangeYear(i,2009);

      if ( i == 1 ) {
         strOutput += "<TR>";
		 strOutput += "<TD>from</TD>";
		 
      strOutput += "<TD colspan=3><TABLE><TR><TD WIDTH=60><FORM><SELECT onChange=\"ChangeDate("+i+", this.value);\">";
	  
	  if (fields[10]=="1"||fields[10]=="3"||fields[10]=="5"||fields[10]=="7"||fields[10]=="8"||fields[10]=="10"||fields[10]=="12") {	                                                // 31 day month
	     for (j=1; j<32; j++) {
		     if (j==fields[9]) {
			     strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		     } else {
			     strOutput += "<option value=\""+j+"\">"+j+"</option>";
		     }
	     }
	  }
	  
	  if (fields[10]=="4"||fields[10]=="6"||fields[10]=="9"||fields[10]=="11") {	// 30 day month  
	     for (j=1; j<31; j++) {
		     if (j==fields[9]) {
			     strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		     } else {
			     strOutput += "<option value=\""+j+"\">"+j+"</option>";
		     }
	     }
	  }
	  
	  if (fields[10]=="2") {
		  if (fields[11]=="2012") {                                     // 29 day month
     	     for (j=1; j<30; j++) {
	    	     if (j==fields[9]) {
		    	     strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
	    	     } else {
    			     strOutput += "<option value=\""+j+"\">"+j+"</option>";
	    	     }
	         }
	     } else {                                                       // 28 day month
    	     for (j=1; j<29; j++) {
    		     if (j==fields[9]) {
    			     strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
    		     } else {
	    		     strOutput += "<option value=\""+j+"\">"+j+"</option>";
	    	     }
    	     }
    	  }
	  }
	  
	  strOutput += "</SELECT></FORM></TD>";

      strOutput += "<TD WIDTH=140><FORM><SELECT onChange=\"ChangeMonth("+i+", this.value);\">";
	  for (j=1; j<13; j++) {                                             // display month
		  if (j==1) MonthName="January";
		  if (j==2) MonthName="February";
		  if (j==3) MonthName="March";
		  if (j==4) MonthName="April";
		  if (j==5) MonthName="May";
		  if (j==6) MonthName="June";
		  if (j==7) MonthName="July";
		  if (j==8) MonthName="August";
		  if (j==9) MonthName="September";
		  if (j==10) MonthName="October";
		  if (j==11) MonthName="November";
		  if (j==12) MonthName="December";
		  
		  if (j==fields[10]) {
			  strOutput += "<option value=\""+j+"\" SELECTED>"+MonthName+"</option>";
		  } else {
			  strOutput += "<option value=\""+j+"\">"+MonthName+"</option>";
		  }
	  }
	  strOutput += "</SELECT></FORM></TD>";
	  
      strOutput += "<TD><FORM><SELECT onChange=\"ChangeYear("+i+", this.value);\">";
	  for (j=2009; j<2014; j++) {                                     // display year
		  if (j==fields[11]) {
			  strOutput += "<option value=\""+j+"\" SELECTED>"+j+"</option>";
		  } else {
			  strOutput += "<option value=\""+j+"\">"+j+"</option>";
		  }
	  }
	  strOutput += "</SELECT></FORM></TD></TR></TABLE></TD></TR>";
	  
// Calculations for travel dates

      CalcDay = parseInt(fields[9]) + fTotalNights;
	  CalcMonth = parseInt(fields[10]);
	  CalcYear = parseInt(fields[11]);
 
	  if (fields[10]=="1"||fields[10]=="3"||fields[10]=="5"||fields[10]=="7"||fields[10]=="8"||fields[10]=="10"||fields[10]=="12") {	                                                // 31 day month
	     if (CalcDay>31) {
		    CalcDay = CalcDay - 31;
			CalcMonth++;
		 }
	  }

	  if (fields[10]=="4"||fields[10]=="6"||fields[10]=="9"||fields[10]=="11") {	// 30 day month  
		 if (CalcDay>30) {
		    CalcDay = CalcDay - 30;
			CalcMonth++;
		 }
	  }

      if (fields[10]=="2") {
	     if (fields[11]=="2012") {
	        if (CalcDay>29) {
		       CalcDay = CalcDay - 29;
			   CalcMonth++;
		    }
		 } else {
	        if (CalcDay>28) {
		       CalcDay = CalcDay - 28;
               CalcMonth++;
			}
		 }
	  }

	  if (CalcMonth>12) {
	     CalcMonth = CalcMonth - 12;
	     CalcYear++;
	  }

      if (CalcMonth==1) CalcMonthName="January";
	  if (CalcMonth==2) CalcMonthName="February";
	  if (CalcMonth==3) CalcMonthName="March";
	  if (CalcMonth==4) CalcMonthName="April";
	  if (CalcMonth==5) CalcMonthName="May";
	  if (CalcMonth==6) CalcMonthName="June";
	  if (CalcMonth==7) CalcMonthName="July";
	  if (CalcMonth==8) CalcMonthName="August";
	  if (CalcMonth==9) CalcMonthName="September";
	  if (CalcMonth==10) CalcMonthName="October";
	  if (CalcMonth==11) CalcMonthName="November";
	  if (CalcMonth==12) CalcMonthName="December";
	  
      strOutput += "<TR><TD>to</TD><TD colspan=3><TABLE><TR><TD width=60>&nbsp;&nbsp;"+CalcDay+"</TD><TD width=140>&nbsp;&nbsp;"+CalcMonthName+"</TD><TD>&nbsp;&nbsp;"+CalcYear+"</TD></TR></TABLE></TD>";

      strOutput += "</TR>";
      strOutput += "<TR><TD COLSPAN=4>";
	  strOutput += "</TD></TR>";             // to show flexibility

      }
   }

   
   
   
   
   
   
   }

   strOutput += "</TABLE>";

   document.write(strOutput);
   document.close();
}

//---------------------------------------------------------------------||
// FUNCTION:    ValidateCart                                           ||
// PARAMETERS:  Form to validate                                       ||
// RETURNS:     true/false                                             ||
// PURPOSE:     Validates the managecart form                          ||
//---------------------------------------------------------------------||
var g_TotalCost = 0;
function ValidateCart( theForm ) {
   if ( MinimumOrder >= 0.01 ) {
      if ( g_TotalCost < MinimumOrder ) {
         alert( MinimumOrderPrompt );
         return false;
      }
   }

   return true;
}


//---------------------------------------------------------------------||
// FUNCTION:    CheckoutCart                                           ||
// PARAMETERS:  Null                                                   ||
// RETURNS:     Product Table Written to Document                      ||
// PURPOSE:     Draws current cart product table on HTML page for      ||
//              checkout.                                              ||
//---------------------------------------------------------------------||
function CheckoutCart( ) {
   var iNumberOrdered = 0;    //Number of products ordered
   var fTotal         = 0;    //Total cost of order
   var fTax           = 0;    //Tax amount
   var fShipping      = 0;    //Shipping amount
   var strTotal       = "";   //Total cost formatted as money
   var strTax         = "";   //Total tax formatted as money
   var strShipping    = "";   //Total shipping formatted as money
   var strOutput      = "";   //String to be written to page
   var bDisplay       = true; //Whether to write string to the page (here for programmers)
   var strPP          = "";   //Payment Processor Description Field

   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;



   for ( i = 1; i <= iNumberOrdered; i++ ) {
      NewOrder = "Order." + i;
      database = "";
      database = GetCookie(NewOrder);

      Token0 = database.indexOf("|", 0);
      Token1 = database.indexOf("|", Token0+1);
      Token2 = database.indexOf("|", Token1+1);
      Token3 = database.indexOf("|", Token2+1);
      Token4 = database.indexOf("|", Token3+1);
      Token5 = database.indexOf("|", Token4+1);
      Token6 = database.indexOf("|", Token5+1);
      Token7 = database.indexOf("|", Token6+1);
      Token8 = database.indexOf("|", Token7+1);
      Token9 = database.indexOf("|", Token8+1);
      Token10 = database.indexOf("|", Token9+1);
      Token11 = database.indexOf("|", Token10+1);

      fields = new Array;
      fields[0] = database.substring( 0, Token0 );
      fields[1] = database.substring( Token0+1, Token1 );
      fields[2] = database.substring( Token1+1, Token2 );
      fields[3] = database.substring( Token2+1, Token3 );
      fields[4] = database.substring( Token3+1, Token4 );
      fields[5] = database.substring( Token4+1, Token5 );
      fields[6] = database.substring( Token5+1, Token6 );
      fields[7] = database.substring( Token6+1, Token7 );
      fields[8] = database.substring( Token7+1, Token8 );
      fields[9] = database.substring( Token8+1, Token9 );
      fields[10] = database.substring( Token9+1, Token10 );
      fields[11] = database.substring( Token10+1, Token11 );
      fields[12] = database.substring( Token11+1, database.length );

         strFooter = i;
		 
         strOutput += "<input type=hidden name=\"" + OutputItemStandard  + strFooter + "\" value=\"" + fields[0] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemNights    + strFooter + "\" value=\"" + fields[1] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemAdults    + strFooter + "\" value=\"" + fields[2] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemName      + strFooter + "\" value=\"" + fields[3] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemHelper    + strFooter + "\" value=\"" + fields[4] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemChildren  + strFooter + "\" value=\"" + fields[5] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemCDay      + strFooter + "\" value=\"" + fields[9] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemCMonth    + strFooter + "\" value=\"" + fields[10] + "\">";
         strOutput += "<input type=hidden name=\"" + OutputItemCYear     + strFooter + "\" value=\"" + fields[11] + "\">";

   }


   document.write(strOutput);
   document.close();
}
