function establishPgId()
{
	var contentClass = $('body').attr("class");
	var rg = new RegExp("pg\\d+");
	var res = rg.exec(contentClass);
	contentClass = res;
	return res;
}		
function cookieValue()
{
	if (getCookieValue('PrintCart') == false)
	{
	} 
	else 
	{
		printCartValue = getCookieValue('PrintCart');				
		return printCartValue;
	}
}	
function updateCookie(printCartValue)
{
	var myCookieName = 'PrintCart';
	var myCookiePeriod = 'months';
	var myCookieOffset = '1';
	writePersistentCookie (myCookieName, printCartValue, myCookiePeriod, myCookieOffset);
}	
function initCart()
{
	contentClass = establishPgId();
	cookieValue();	
}	
function reloadCart()
{
	contentClass = establishPgId();
	$('#printbasket').remove();
	cookieValue();	
	printCartDisplay();
}	

function loadPreview()
{
	$('p#fallback').remove();
	document.location
	$('#printCartCheckout').load('printCartContents.html',null,function (data){
		OutputCookieArray();
		previewClicks();
	});
}
function reloadPreview()
{
	$('#printCartCheckout').load('printCartContents.html',null,function (data){
		OutputCookieArray(); 
		previewClicks();
	});	
}
function previewClicks()
{
	$('#pagesSelected a').click(function()
	{		
		//$('tr#'+contentClass).animate({ backgroundColor: "#fbc7c7" }, "fast").animate({ opacity: "hide" }, "slow");
		clickElement = this.id;
		elementPgId =  clickElement.substring(0,4)
		elementAction = clickElement.substring(4,6)
		// if remove remove by page id
		if (elementAction == 'rm') return removeOtherPages(elementPgId);
		if (elementAction == 'up' || elementAction == 'dn') return reOrderBasket(elementPgId,elementAction);
	});
}
function printCartDisplay () 
	{		
		// printBasket
		printBasket=document.createElement('div');
		printBasket.id='printBasket';		
		// pbHeader
		pbHeader=document.createElement('h2');
		pbHeaderText=document.createTextNode('Print Basket');
		pbHeader.appendChild(pbHeaderText);
		printBasket.appendChild(pbHeader);		
		// pbPageStatus
		pbPageStatusHolder=document.createElement('div');
		pbPageStatusHolder.id='pageInfo';
		printBasket.appendChild(pbPageStatusHolder);		
		pbPageStatusHeader=document.createElement('h3');
		pbPageStatusHeaderText=document.createTextNode('This Page');
		pbPageStatusHolder.appendChild(pbPageStatusHeader);
		pbPageStatusHeader.appendChild(pbPageStatusHeaderText);		
		// pbCartStatus
		pbCartStatusHolder=document.createElement('div');
		pbCartStatusHolder.id='cartStatus';
		printBasket.appendChild(pbCartStatusHolder);		
		pbCartStatusHeader=document.createElement('h3');
		pbCartStatusHeaderText=document.createTextNode('Cart');
		pbCartStatusHolder.appendChild(pbCartStatusHeader);
		pbCartStatusHeader.appendChild(pbCartStatusHeaderText);	
		// pbCartStatus
		pbYourCartHeader=document.createElement('h3');
		pbYourCartHeaderText=document.createTextNode('Your Cart');	
		pbCartContentsList=document.createElement('ul');
		pbCartContentsItem=document.createElement('li');
		pbCartContentsItemLink=document.createElement('a');
		pbCartContentsItemText=document.createTextNode('Page Test');
		pbCartContentsLinkText=document.createTextNode('| Remove');		
		printCarEmpty=document.createTextNode('Your Print Basket is empty.');		
		document.getElementById('main').appendChild(printBasket);
		displayPageStatus();
		displayCartStatus();		
		$('#printbasket #addPageToCart').click(function()
		{		
			return addToCart();
		});
		
		$('#printBasket #removePageFromCart').click(function()
		{	
			return removeFromCart();
		});
		
		$('#printBasket #cartStatus a').click(function()
		{		
			var listId = this.id;
			return removeOtherPages(listId);
		});
	}	
	function isInCart(){
		var value =  cookieValue();
		return (value != null && value.indexOf(establishPgId())>-1)
	}
	function isInLinkCart(){
		var value =  getCookieValue('LinkCart');
		return (value != false && value.indexOf(establishPgId())>-1);
	}
	function displayPageStatus()
	{
		// statusON
		pbPageStatusYes=document.createElement('div');
		pbPageStatusYes.id='pageInCartYes';
		pbPageStatusYesText=document.createTextNode('You have added ' + establishPgId() );
		pbPageStatusYesLink=document.createElement('a');
		pbPageStatusYesLink.id='removePageFromCart';
		pbPageStatusYesLinkText=document.createTextNode(' | Remove');	
		pbPageStatusYes.appendChild(pbPageStatusYesText);
		pbPageStatusYes.appendChild(pbPageStatusYesLink);
		pbPageStatusYesLink.appendChild(pbPageStatusYesLinkText);		
		// statusOFF
		pbPageStatusNo=document.createElement('div');
		pbPageStatusNo.id='pageInCartNo';
		pbPageStatusNoText=document.createTextNode('Add to Cart ' + establishPgId());
		pbPageStatusNoLink=document.createElement('a');
		pbPageStatusNoLink.id='addPageToCart';
		pbPageStatusNoLinkText=document.createTextNode('| Add');	
		pbPageStatusNo.appendChild(pbPageStatusNoText);
		pbPageStatusNo.appendChild(pbPageStatusNoLink);
		pbPageStatusNoLink.appendChild(pbPageStatusNoLinkText);		
		if (printCartValue.indexOf(contentClass)==-1)
		{
			document.getElementById('pageInfo').appendChild(pbPageStatusNo);
		}else{
			document.getElementById('pageInfo').appendChild(pbPageStatusYes);
		}	
	}	
function displayCartStatus()
	{
		if (printCartValue == ' ')
		{
			document.getElementById('cartStatus').appendChild(printCarEmpty);
		}else{
			document.getElementById('cartStatus').appendChild(pbCartContentsList);
			var tempArray = printCartValue.split(',')
			for (i=0;i<tempArray.length;i++)
			{
				pbCartContentsItem[i]=document.createElement('li');				
				pbCartContentsLinkText=document.createTextNode(tempArray[i]);				
				pbCartContentsRemoveLink=document.createElement('a');
				pbCartContentsRemoveLinkText=document.createTextNode('| Remove');
				pbCartContentsRemoveLink.id=tempArray[i];
				pbCartContentsItem[i].appendChild(pbCartContentsLinkText);						
				pbCartContentsItem[i].appendChild(pbCartContentsRemoveLink);
				pbCartContentsRemoveLink.appendChild(pbCartContentsRemoveLinkText);				
				pbCartContentsList.appendChild(pbCartContentsItem[i]);				
			}
		}	
	}	
function removeFromCart(previewTag)
{
	var tempArray = printCartValue.split(',')
	var newArray = ' ';			
	for (i=0;i<tempArray.length;i++)
	{
		if ( tempArray[i] == contentClass)
		{
		}
		else
		{
			if (newArray == ' ')
			{
				newArray = tempArray[i];
			}
			else
			{
				newArray += ','+tempArray[i];	
			}
		}
	}
	printCartValue = newArray;
	updateCookie(printCartValue);
	reloadCart();
	loadPreview(); 
}	

function addToCart()
{
	if (printCartValue == ' ')
	{
		printCartValue = contentClass;				
	} 
	else
	{
		printCartValue += ','+contentClass;		
	}
	updateCookie(printCartValue);
//	reloadCart();
	//loadPreview(); 
}	
function removeOtherPages(pageId)
	{
		//remove page by comparison with class
		var tempArray = printCartValue.split(',')
		//alert(tempArray.length);
		var newArray = ' ';	
		//alert('pageId inside: '+pageId)
		
		for (i=0;i<tempArray.length;i++)
		{
			if (tempArray[i] == pageId)
			{
				//alert ('match: '+classValue+tempArray[i]);
			}
			else
			{
				if (newArray == ' ')
				{
					//alert('Single addition')
					newArray = tempArray[i];
				}
				else
				{
					//alert('Advanced addition')
					newArray += ','+tempArray[i];	
				}
			}
		}
		printCartValue = newArray;
		updateCookie(printCartValue);
		reloadCart();
		//loadPreview(); 
	}
function OutputCookieArray()
{
	var tempArray = printCartValue.split(',')
	// 
	if(tempArray == ' ')
	{
		emptyBasketTr=document.createElement('tr');
		emptyBasketTd=document.createElement('td');
		emptyBasketTd.setAttribute('colspan','4');	
		emptyBasketTd.setAttribute('class','empty');	
		emptyBasketTxt=document.createTextNode('Your basket is currently empty! Add some pages.');
		emptyBasketTr.appendChild(emptyBasketTd);
		emptyBasketTd.appendChild(emptyBasketTxt);		
		document.getElementById('pagesSelected').appendChild(emptyBasketTr)
		return;
	}
	
	for (i=0;i<tempArray.length;i++)
	{
		cartOutTr=document.createElement('tr');
		cartOutTr.id=tempArray[i];
		if (i == 0) cartOutTr.setAttribute('class','top');
		if (i == tempArray.length-1) cartOutTr.setAttribute('class','bottom');
		cartOutTd1=document.createElement('td');
		cartOutTd2=document.createElement('td');
		cartOutTd3=document.createElement('td');
		cartOutTd4=document.createElement('td');
		cartOutTr.appendChild(cartOutTd1);
		cartOutTr.appendChild(cartOutTd2);
		cartOutTr.appendChild(cartOutTd3);
		cartOutTr.appendChild(cartOutTd4);
		cartOutTdTxt=document.createTextNode(tempArray[i]);
		cartOutTd1.appendChild(cartOutTdTxt);
		moveUpAnchor=document.createElement('a');
		moveUpAnchorSpan=document.createElement('span');
		moveUpAnchor.setAttribute('class','up');
		moveUpAnchor.id=tempArray[i]+'up';
		moveDownAnchor=document.createElement('a');
		moveDownAnchorSpan=document.createElement('span');
		moveDownAnchor.setAttribute('class','down');
		moveDownAnchor.id=tempArray[i]+'dn';
		printAnchor=document.createElement('a');
		printAnchor.id=tempArray[i]+'pt';
		printAnchor.setAttribute('target','blank');
		removeAnchor=document.createElement('a');
		removeAnchor.id=tempArray[i]+'rm';
		moveUpTxt=document.createTextNode('Move Up');
		moveDownTxt=document.createTextNode('Move Down');
		printTxt=document.createTextNode('Print');
		removeTxt=document.createTextNode('Remove');
		moveUpAnchor.appendChild(moveUpAnchorSpan);
		moveUpAnchorSpan.appendChild(moveUpTxt);
		moveDownAnchor.appendChild(moveDownAnchorSpan);
		moveDownAnchorSpan.appendChild(moveDownTxt);
		printAnchor.appendChild(printTxt);
		removeAnchor.appendChild(removeTxt);
		if (!i == 0) cartOutTd2.appendChild(moveUpAnchor);
		if (!(i == tempArray.length-1)) cartOutTd2.appendChild(moveDownAnchor);		
		cartOutTd3.appendChild(printAnchor);
		cartOutTd4.appendChild(removeAnchor);		
		cartOutTr.appendChild(cartOutTd4,cartOutTd3,cartOutTd2,cartOutTd1);
		document.getElementById('pagesSelected').appendChild(cartOutTr);
	}	
	document.getElementById('pagesSelected').appendChild(cartOutTr);
}
function reOrderBasket(elementPgId,elementAction){
	var tempArray = printCartValue.split(',')	
	var testDirection = elementAction; //up or dn
	var testId = elementPgId;
	var arrayBaseValue = 0;
	
	for (i=0;i<tempArray.length;i++)
	{
		if (tempArray[i] == testId)
		{
			if (testDirection == 'dn')
			{
				// i+1 to account for array 0
				if (!(tempArray.length == (i+1)))
				{
					var above = i + 1;
					var aboveValue = tempArray[above];
					var mainValue = tempArray[i];
					// re-assign
					tempArray[above] = mainValue;
					tempArray[i] = aboveValue;        
					printCartValue = tempArray;
					updateCookie(printCartValue);
					reloadCart();
					loadPreview();
					return;
				}
			return;
			}
			else 
			{
				// move down
				if (!(arrayBaseValue == i))
				{
					var below = i - 1;
					var belowValue = tempArray[below];
					var mainValue = tempArray[i];
					// re-assign
					tempArray[below] = mainValue;
					tempArray[i] = belowValue;        
					//alert('down reordered?'+tempArray);
					printCartValue = tempArray;
					updateCookie(printCartValue);
					reloadCart();
					loadPreview();
					return;
				}				
			}			
		}
		else
		{
			//alert('mis-match'+testId+tempArray[i]);	
		}
	}
}	
// Change to jQuery on load


