// *************************************************************************
// Edit your LinkShareID
strLinkShareID='IJRrmigiSVc'
// Edit your email address (this will appear on the buyer.html page)
strSiteEmail='magazines@allthewebsites.org'
// *************************************************************************

// User Customizable Settings 
// You can change these to make prompts appear in a different language.
strSorry  = "I'm Sorry, your cart is full, please proceed to checkout.";
strAdded  = " was added to your shopping cart.";
strRemove = "Click 'Ok' to remove this product from your shopping cart.";
strILabel = "Item";
strSLabel = "Subtotal";
strDLabel = "Name";
strQLabel = "Qty.";
strPLabel = "Price";
strALabel = "Action";
strRLabel = "Remove From Cart";
strRButton= "Remove";
strSUB    = "Subtotal: ";
strTAX    = "Tax: ";
strTOT    = "Total: ";
strErrQty = "Invalid Quantity.";
strNewQty = 'Please enter new quantity:';
MinimumOrder          = 0.50;
MinimumOrderPrompt    = 'Your order is below our minimum order, please order more before checking out.';

// JavaScript Shopping Cart
//                                       
// JavaScript Cart V.1.0.0 


// This file requires variable defined in netmag_template_customization_1_0_0.js
// which must be inclueded in the HTML page before this file.

MonetarySymbol        = '$';
DisplayTaxRow         = false;
TaxRate               = 0.0;
TaxByRegion           = false;
TaxPrompt             = 'For tax purposes, please select if you are an New York resident before continuing';
TaxablePrompt         = 'New York Residents';
NonTaxablePrompt      = 'Other States';


// FUNCTION:    AddToCart                                           
// PARAMETERS:  SKU,Qty,Descr,Price, path to thumbnail image                                      
// RETURNS:     Cookie to user's browser, with prompt               
// PURPOSE:     Adds a product to the user's shopping cart          

function AddToCart(SKU,Qty,Descr,Price,ImgPath) {
	
   var iNumberOrdered = 0;
   var bAlreadyInCart = false;
   var notice = "";
   iNumberOrdered = GetCookie("NumberOrdered");

   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

   //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);
      

      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, database.length );

      if ( fields[0] == SKU &&
           fields[2] == Price  &&
           fields[3] == Descr   &&
           fields[5] == ImgPath
         ) {
         bAlreadyInCart = true;
         dbUpdatedOrder = SKU    + "|" +
                          (parseInt(Qty)+parseInt(fields[1]))  + "|" +
                          Price     + "|" +
                          Descr      + "|" +
                          "0"  + "|" +
                          ImgPath;
         strNewOrder = "Order." + i;
         DeleteCookie(strNewOrder, "/");
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         notice = Qty + " x " + Descr + strAdded;
         break;
      }
   }


   if ( !bAlreadyInCart ) {
      iNumberOrdered++;

      if ( iNumberOrdered > 12 )
         alert( strSorry );
      else {
         dbUpdatedOrder = SKU    + "|" + 
                          Qty  + "|" +
                          Price     + "|" +
                          Descr      + "|" +
                          "0"  + "|" +
                          ImgPath;

         strNewOrder = "Order." + iNumberOrdered;
         SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
         SetCookie("NumberOrdered", iNumberOrdered, null, "/");
         notice = Qty + " x " + Descr + strAdded;
      }
   }


      alert(notice)
}

// ************************ COOKIE FUNCTIONS *************************************

// 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";
   }
}

// ***************************** END COOKIE FUNCTIONS **********************

// FUNCTION:    DisplayCart
// PARAMETERS:  Null 
// RETURNS:     Product Table Written to Document  
// PURPOSE:     Draws current cart

function DisplayCart() {
   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 strUpdateAction ="";//
   var strSubscribeLink = "";
   var strFullImagePath = ""; 
   var SKUcollection    = "";

   iNumberOrdered = GetCookie("NumberOrdered");
   if ( iNumberOrdered == null )
      iNumberOrdered = 0;

	  strOutput = "<div id=\"basketh\">" +
                  "<TABLE bgcolor=\"CCCCCC\" width=\"100%\" border=0 cellspacing=2 cellpadding=0><tr>" +
                  "<td width=150><b>"+strILabel+"</b></td>" +
                  "<td width=200><b>"+strDLabel+"</b></td>" +
                  "<td width=100><b>"+strPLabel+"</b></td>" +
				  //"<td width=100>"+strQLabel+"</td>" +
				  //"<td width=100>"+strSLabel+"</td>" +
				  "<td width=100><b>"+strALabel+"</b></td></tr></table>" +
					"</div>";

   if ( iNumberOrdered == 0 ) {
      strOutput += "<div id=\"basket\"><p class=\"p1\"><span>Your cart is empty</span></p></div>";
   }
	
	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);

		fields = new Array;
		fields[0] = database.substring( 0, Token0 );					// SKU
		fields[1] = database.substring( Token0+1, Token1 );				// Quantity
		fields[2] = database.substring( Token1+1, Token2 );				// Price
		fields[3] = database.substring( Token2+1, Token3 );				// Product	
		fields[4] = database.substring( Token3+1, Token4 );				// Shipping Cost
		fields[5] = database.substring( Token4+1, database.length );	//Thumbnail Image

		fTotal     += (parseInt(fields[1]) * parseFloat(fields[2]) );
		fShipping  += (parseInt(fields[1]) * parseFloat(fields[4]) );
		fTax        = (fTotal * TaxRate);
		strTotal    = moneyFormat(fTotal);
		strTax      = moneyFormat(fTax);
		strShipping = moneyFormat(fShipping);
		indx=i-1;
		
		strSubscribeLink = "http://www.magazine-agent.com/director?page=59&aid=69052792&umc=" + fields[0];
		strFullImagePath = "http://covers.magazine-agent.com/images/image.aspx?w=110&i=" + fields[0];
		
		if ( iNumberOrdered == 1 ) {
		strUpdateAction="javascript:ChangeQuantity("+i+", document.cartform.qty.value);"
		} else {
		strUpdateAction="javascript:ChangeQuantity("+i+", document.cartform.qty["+indx+"].value);"
		}
		
		// Start to write out the item
		strOutput += "<div id=\"basketlist\">"
		strOutput += "<TABLE width=\"100%\" border=0 cellspacing=2 cellpadding=0><tr>"
		// image
			//strOutput += "<li>"  + fields[5] + "</li>";
		//strOutput += "<li><img src=\"" + fields[5]+ "\"  /></li>"
		//image disabled
		//strOutput += "<td width=150><img src=\"" + fields[5] +"\" alt=\"magazine\" /></td>"
		strOutput += "<td width=150><a href=\"" + strSubscribeLink + "\" title=\"" +  fields[3] + "\" class=\"ext\" > <img src=\"" + strFullImagePath +"\" alt=\"magazine\" /></a></td>";
		//strOutput += "<td width=150>&nbsp;</td>"
		// product name
		strOutput += "<td width=200 valign=top>"  + fields[3] + "</td>";
		// Unit Price
		strOutput += "<td width=100 valign=top>"+ MonetarySymbol + moneyFormat(fields[2]) + "</td>";
		//Quantity
		//strOutput += "<td width=100 valign=top><span><input type=\"text\" name=\"qty\" size=\"2\" maxlength=\"3\"  value=\"" + fields[1] + "\" class=\"input1\" /></span></td>";
		// Line Total
		//strOutput += "<td width=100 valign=top>"+MonetarySymbol + moneyFormat((parseInt(fields[1]) * parseFloat(fields[2]) ))+"</td>";
		// Action
		strOutput += "<td width=100 valign=top>";
		//strOutput += "<a href=\""+strUpdateAction+"\"> <img src=\"images/button_update.gif\" width=\"57\" height=\"16\" alt=\"Update\" /></a><br /><br />";
		//strOutput += "<a href=\"" + strSubscribeLink + "\" target=_blank onClick=pageTracker._trackEvent('Magazines','Subscribe',fields[3]);  > <img src=\"images/button_subscribe.gif\" alt=\"subscribe to magazine\" /></a> <br/> ";
		//strOutput += "<a href=\"" + strSubscribeLink + "\" target=_blank onClick=\"_gaq.push(['_trackEvent', 'Magazines','Subscribe', '" + fields[3] + "' ]);\" > <img src=\"images/button_subscribe.gif\" alt=\"subscribe to this magazine\" /></a> <br/> ";
		strOutput += "<a href=\"" + strSubscribeLink + "\" target=_blank title=\"" +  fields[3] + "\" class=\"ext\" > <img src=\"images/button_subscribe.gif\" alt=\"subscribe to this magazine\" /></a> <br/> ";
		
		
		//strOutput += "<a href=\"javascript:RemoveFromCart("+i+");\"> <img src=\"images/button_remove.gif\" width=\"57\" height=\"16\" alt=\"Remove\" /></a>";
		strOutput += "</td></tr></table>";
		
		SKUcollection += fields[0] +"~"; 
		
		strOutput += "<br></div>";
   }
   // end of line items
   strOutput += "<div id=\"total_box\"><div id=\"total\">";

   //Subtotal
   strOutput += "<table width=\"100%\" align=right><tr>"
   //strOutput += "<td align=right><strong>""</strong></td>"
   strOutput += "<td align=right><strong>"+strSUB+ "  " + MonetarySymbol + strTotal + "</strong></td>";
   strOutput += "</tr></table>";
   
   //don't do tax and shipping as this will be done by netmagazines
   g_TotalCost = (fTotal + fShipping + fTax);
  
	// end totals block, but not the div as there is still the checkout button to add
	//Check out button
	//strOutput += "<span><a href=\"javascript:CheckOut("+g_TotalCost+")\"> <img src=\"images/button_checkout.gif\" alt=\"Proceed to Checkout\" /></a></span>";
	//strOutput += "<input type=\"text\" id=\"mag" + i +"\" value=\"" + SKUcollection + "\"  >";
		
	strOutput += "</div></div>"
	
	//write out the data to the page
	document.write(strOutput);
//	alert(strOutput);
	document.close();
}

// ***************** Functions used by "managecart" ************************************




// FUNCTION:    MoneyFormat             
// PARAMETERS:  Number to be formatted   
// RETURNS:     Formatted Number  
// PURPOSE:     Reformats Dollar Amount to #.## format 

function moneyFormat(input) {
   var dollars = Math.floor(input);
   var tmp = new String(input);

   for ( var decimalAt = 0; decimalAt < tmp.length; decimalAt++ ) {
      if ( tmp.charAt(decimalAt)=="." )
         break;
   }

   var cents  = "" + Math.round(input * 100);
   cents = cents.substring(cents.length-2, cents.length)
           dollars += ((tmp.charAt(decimalAt+2)=="9")&&(cents=="00"))? 1 : 0;

   if ( cents == "0" )
      cents = "00";

   return(dollars + "." + cents);
}


// FUNCTION:    RemoveFromCart
// PARAMETERS:  Order Number to Remove
// RETURNS:     Null
// PURPOSE:     Removes an item from a users shopping cart

function RemoveFromCart(RemOrder) {
   if ( confirm( strRemove ) ) {
      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:    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 +" - "+ NewQuantity );
   } 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);

      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, database.length );

      dbUpdatedOrder = fields[0] + "|" +
                       NewQuantity + "|" +
                       fields[2] + "|" +
                       fields[3] + "|" +
                       fields[4] + "|" +
                       fields[5];
      strNewOrder = "Order." + OrderItem;
      DeleteCookie(strNewOrder, "/");
      SetCookie(strNewOrder, dbUpdatedOrder, null, "/");
      location.href=location.href;      
   }
}

// FUNCTION:    CheckOut
// PARAMETERS:  Total 
// RETURNS:     null
// PURPOSE:    check cart is valid and trnasfer the basket to net magazines

function CheckOut(Total) {
var strLSURL     = ""; 
var strBTURL     = ""; 
var strItems ="";
if ( Total < MinimumOrder ) {
         alert( MinimumOrderPrompt );
         
      }else {      
      strLSURL="http://click.linksynergy.com/fs-bin/click?id="+strLinkShareID+"&subid=1&offerid=50887.1&type=10&tmpid=1321&afsrc=1&RD_PARM1="
      strBTURL= "http%3A%2F%2Fwww%2ENetMagazines%2Ecom%2Faddaffiliate%2Easp%3Fsourceid%3D"+strLinkShareID+"%3Fcatalog%3D"
      
      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);

		fields = new Array;
		fields[0] = database.substring( 0, Token0 );					// SKU
		fields[1] = database.substring( Token0+1, Token1 );				// Quantity
		fields[2] = database.substring( Token1+1, Token2 );				// Price
		fields[3] = database.substring( Token2+1, Token3 );				// Product	
		fields[4] = database.substring( Token3+1, Token4 );				// Shipping Cost
		fields[5] = database.substring( Token4+1, database.length );	//Thumbnail Image

		if ( strItems != "" )
		 strItems +="%2C";
		 
		strItems     += fields[0]+"%7C"+ fields[1];

		}
		 strBTURL+=strItems;
		 
       location.href= strLSURL+strBTURL ;
      }
}
// *******************************************************************************

// FUNCTION:    GotoLinkshareOffer
// PARAMETERS:  OfferID,SubID, Type 
// RETURNS:     null
// PURPOSE:    redirect to a URL

function GotoLinkshareOffer (OfferID, Type, SubID) {
	var URL="http://click.linksynergy.com/fs-bin/click?id="+strLinkShareID+"&offerid="+
	OfferID+"&type="+Type+"&subid="+SubID+"&afsrc=1";
	location.href=URL;
}

//Alias for GoToLinkShareOffer
function GetOffer(OfferID, Type, SubID) {
	GotoLinkshareOffer (OfferID, Type, SubID);
}

// FUNCTION:    GotoLinkshareOffer
// PARAMETERS:  link (true/false)
// RETURNS:     null
// PURPOSE:    redirect to a URL

function DisplayEmail (bLink) {
	var strOutput="";

	if (bLink){
		strOutput="<a href=\"mailto:"+strSiteEmail+"\" class=\"K\">"+strSiteEmail+"</a>";	
	}
	else {
		strOutput=strSiteEmail;
	}
	
	//write out the data to the page
	document.write(strOutput);
	document.close();
}

//Added by ATW
function DisplayAbout() {
	strOutput = "<p>Magazine Agent is a direct marketer of over 1400 magazine titles available for subscription to both personal residences and places of business. The company employs a number of different marketing strategies, both online and offline, including a highly successful affiliate program, partnership marketing, direct e-mail marketing, search engine optimization, targeted media buys and direct mail.</p>" ;
	strOutput += "<p>Over the past years, they have refined their business, taking it to new levels of customer satisfaction, convenience and value for both the consumer and business. Magazine Agent is poised as one of the leaders in online periodical sales for many years to come.</p>";
	strOutput += "<p>Your complete satisfaction is always our top priority at Magazine-Agent.com. If you find that within the first three months of placing your order that you are not 100% satisfied - for any reason - let us know and we will gladly give you a full, prompt refund. After three months, if you find that you no longer wish to receive a magazine, we will be happy to provide a pro-rated refund for any unserved issues.</p>";
	//write out the data to the page
	document.write(strOutput);
	document.close();
}
