/*
	JavaScript Shopping Cart Library for Tantor Media Inc.
	Created October 2009
	Copyright 2009, Tantor Media Inc.
	Cart functions used when customer is not logged in.
*/

var horizontal_offset = "9px";
var vertical_offset   = "0";
var ie  			  = document.all;
var ns6 			  = document.getElementById&&!document.all;
var ajaxResErr			= "<title>Tantor Audio Audiobooks : Error";		// IIS Error page returned in AJAX response.
loadFile("/Scripts/modalwindow.js", "js");		// Load modalwin.js.


function addToCart(intProductId)	{
	var divCartText = document.getElementById("divCartText");
	var spanCartItems = document.getElementById("spanCartItems");
	var spanCartLastItem = document.getElementById("spanCartLastItem");
	var spanCartLastTitle = document.getElementById("spanCartLastTitle");
	var xmlhttp		= XMLDOMObject();
	var intNoCache = Math.floor(Math.random()*1000000001);

	xmlhttp.open("GET","/scripts/carthelper.asp?CMD=ADDTOCART&ProductId=" + intProductId + "&Empty=" + intNoCache,true);
	xmlhttp.send(null);

	xmlhttp.onreadystatechange=function() {
		if(xmlhttp.readyState==4)
		{
			var ajaxRes = xmlhttp.responseText;
			if (ajaxRes == "NoAdd")
			{
				alert("You do not have permission to Add items.\nPlease contact the owner of this Cart to \nchange your Share permissions.");	
			}
			else if (ajaxRes.indexOf(ajaxResErr) > -1)
			{
				document.body.innerHTML = ajaxRes;
			}
			else
			{
				var arrItemAdded = xmlhttp.responseText.split("|");
				var strBookTitle = arrItemAdded[0] + "";
				var blnItemExists = arrItemAdded[1] + "";
				var blnMktFormat = arrItemAdded[2] + "";
				var strBookTitleSlice = "";
				// Strip Book Title to 13 characters plus "...", if needed.
				if (strBookTitle.length > 13)	{
					strBookTitleSlice = strBookTitle.slice(0,13) + "...";
				}
				else {
					strBookTitleSlice = strBookTitle;
				}
				if(blnMktFormat != "true" && blnMktFormat != true){
					divCartText.className = "cartHeaderTextDivAdded";
					spanCartLastItem.innerHTML = "Last item added:";
					spanCartLastTitle.innerHTML = strBookTitleSlice;
					updateCartCount();
				}
				showWindow("/scripts/carthelper.asp?CMD=ADDSHOWWIN&Item=" + strBookTitle + "&ItemExists=" + blnItemExists + "&TantorDownload=" + blnMktFormat + "&Empty=" + intNoCache, "nosess");
			}
		}
	}
}



function getPageHeight() {
	var pageHeight = 0;
	if (document.body && document.body.scrollHeight) {
		pageHeight = document.body.scrollHeight;
	}
	else if( document.body.offsetWidth ) {
		pageHeight = document.body.offsetHeight;
	}
	return pageHeight;
}



function getPageWidth() {
	var pageWidth = 0;
	if (document.body && document.body.scrollWidth) {
		var pageWidth = document.body.scrollWidth;
	}
	else if (document.body.offsetWidth) {
		var pageWidth = document.body.offsetWidth;
	}
	return pageWidth;
}



function iecompattest(){
	return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body;
}



function loadFile(fileName, fileType){
	// Load necessary files for this .js library.
	if (fileType == "js")
	{
		var fileObj = document.createElement("script");
		fileObj.setAttribute("type","text/javascript");
		fileObj.setAttribute("src", fileName);
	}
	document.getElementsByTagName("head")[0].appendChild(fileObj);
}



function scrollHoriz() {
	var horizScrollAmt = 0;

	if(typeof(window.pageYOffset) == 'number') {
		//Netscape compliant
		horizScrollAmt = window.pageXOffset;
	} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		//DOM compliant
		horizScrollAmt = document.body.scrollLeft;
	} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		horizScrollAmt = document.documentElement.scrollLeft;
	}
	return horizScrollAmt;
}



function scrollVert() {
	var vertScrollAmt = 0;

	if(typeof(window.pageYOffset) == 'number') {
		//Netscape compliant
		vertScrollAmt = window.pageYOffset;
	} else if(document.body && (document.body.scrollLeft || document.body.scrollTop)) {
		//DOM compliant
		vertScrollAmt = document.body.scrollTop;
	} else if(document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop)) {
		//IE6 standards compliant mode
		vertScrollAmt = document.documentElement.scrollTop;
	}
	return vertScrollAmt;
}



function showSummaryWin(obj) {
	// Function to display book summary window.
	var bookStem;
	var objLeft = 0;
	var objTop = 0;
	var pageWidth = getPageWidth();
	var summWinLeft = 0;
	var summWinTop = 0;
	var summWinHeight = 0;
	var summWinWidth = 260;
	var vertScrollAmt = scrollVert();
	var windowBtm = ie && !window.opera ? iecompattest().scrollTop + iecompattest().clientHeight - 15 : window.pageYOffset + window.innerHeight - 18;

	// Retrieve the coordinates of the calling object.
	var objCoord = obj;
	if (objCoord.offsetParent) {  
		do {  
			objLeft += objCoord.offsetLeft;  
			objTop += objCoord.offsetTop;  
		} while (objCoord = objCoord.offsetParent);  
	}

	// Retrieve BookStem
	if (obj.src) {
		// Called from image tag.
		bookStem = obj.src.slice(obj.src.lastIndexOf("/") + 1, obj.src.lastIndexOf(".jpg"));
	}
	else if (obj.href) {
		// Called from anchor tag.
		bookStem = obj.href.slice(obj.href.lastIndexOf("Product=") + 8);
	}

	var summWin = $('#summWin'+bookStem);							// Create book summary window jQuery object.
	summWinHeight = summWin.height();								// Retrieve summary window height.

																	// Make sure Book summary window is within visible page area.
	if (objLeft < (pageWidth / 2)) {
		summWinLeft = (objLeft + obj.width) + 12;					// Calling object is left of center of browser window.
	}
	else {
		summWinLeft = (objLeft - summWinWidth) - 24;				// Calling object is to the right/center of browser window.
	}

	if ((objTop + summWinHeight) > windowBtm) {
		 summWinTop = (objTop + 100) - summWinHeight;				// Summary window is below visible content.
		 if ((summWinTop + summWinHeight) > windowBtm) {
			 summWinTop = (windowBtm - summWinHeight) - 12;			// Summary window is STILL below visible content.
		 }
		  if (summWinTop < vertScrollAmt) {
			 summWinTop = vertScrollAmt + 25;					// Summary window is above visible content.
		 }
	}
	else {
		objTop < vertScrollAmt ? summWinTop = vertScrollAmt + 13 : summWinTop = objTop;			// Check for top position of Summary window.
	}

	summWin.css({left: summWinLeft, top: summWinTop});				// Set the css left and top for summary window.
	summWin.fadeIn("fast");											// Show summary window using jQuery fadeIn() function.
	var objParent = $(obj.parentNode);
	objParent.attr({title: ""});									// Remove title attribute from calling hyperlink tag.
	// Set mouseout event for calling hyperlink tag.
	objParent.mouseout(function(){
		$("#summWin"+bookStem).fadeOut("fast");
	});

}



function showWindow(url, isSess){
	// Shows modal window with specified URL.
	var xmlhttp = XMLDOMObject();
	xmlhttp.open("GET", url, true);
	xmlhttp.send(null);

	xmlhttp.onreadystatechange = function() {
		if (xmlhttp.readyState == 4)
		{
			var ajaxRes = xmlhttp.responseText
			if (ajaxRes.indexOf(ajaxResErr) > -1)
			{
				document.body.innerHTML = ajaxRes;
			}
			else
			{
				displayModalWin(genericWin(ajaxRes, isSess), true);
			}
		}
	}

	return false;
}



function updateCartCount()	{
	var spanCartItems = document.getElementById("spanCartItems");
	var xmlhttp = XMLDOMObject();
	var intNoCache = Math.floor(Math.random()*1000000001);

	xmlhttp.open("GET","/scripts/carthelper.asp?CMD=CARTCOUNT&Empty=" + intNoCache,true);
	xmlhttp.send(null);

	xmlhttp.onreadystatechange=function() {
		if(xmlhttp.readyState==4)
		{
			var ajaxRes = xmlhttp.responseText;
			if (ajaxRes.indexOf(ajaxResErr) > -1)
			{
				document.body.innerHTML = ajaxRes;
			}
			else
			{
				spanCartItems.innerHTML = ajaxRes;
			}
		}
	}
}



function XMLDOMObject() {
	// Create XML DOM Object (AJAX).
	if (window.XMLHttpRequest)
	{
		// code for IE7+, Firefox, Chrome, Opera, Safari
		xmlhttp = new XMLHttpRequest();
	}
	else
	{
		// code for IE6, IE5
		xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  	}
	return xmlhttp;
}


// End carthelper.js
