/**
 * Version: 1.1-27.03.2009
 * printbasketV1.1.js (cleaned)
 */

//PCart = Print Cart
var PCart = PCart || {};  
var Utility = Utility || {};

Utility = {
		/*  Functions to create, read, erase cookies,  Ref : http://www.quirksmode.org/js/cookies.html */			
		createCookie:function(a,b,c){if(c){var d=new Date();d.setTime(d.getTime()+(c*24*60*60*1000));var e="; expires="+d.toGMTString();}else{var e="";}document.cookie=a+"="+b+e+"; path=/";},readCookie:function(a){var b=a+"=";var d=document.cookie.split(';');for(var i=0;i<d.length;i++){var c=d[i];while(c.charAt(0)==' '){c=c.substring(1,c.length);}if(c.indexOf(b)===0){return c.substring(b.length,c.length);}}return null;},eraseCookie:function(a){createCookie(a,"",-1);},
		afterLoad:function(a){if(window.attachEvent){window.attachEvent('onload',a);}else if(window.addEventListener){window.addEventListener('load',a,false);}else{document.addEventListener('load',a,false);}},doMessage:function(a){alert(a);},hasClass:function(a,b){return a.className.match(new RegExp('(\\s|^)'+b+'(\\s|$)'));},fork:function(a){(window.console)?console.log(a):alert(a);},makeStringFromArray:function(a){return a.join(',');},addStringToArray:function(a,b){a.splice(a.length,0,b);},deleteStringFromArray:function(a,b){b.splice(a,1)},makeArrayFromString:function(a){var b=null;if(a){a=a.trim();if(a.length>0){b=a.split(',');}}return b;},arrayHasString:function(a,b){var c=a.length;var d=-1;for(counter=0;counter<c;counter++){if(a[counter]==b){d=1;break;}}return(d==1)?counter:-1;}
};//Utility
PCart = {


		createPrintBasket:function(a){if(document.getElementById){var b=document.getElementById('printbasket');if(b!=null){var c=Utility.readCookie(a);var d;if(c!=""&&c!=null){c=c.trim();var e=Utility.makeArrayFromString(c);d=PCart.printList(e);}else{d='<h2>Your print basket is empty</h2>';}b.innerHTML=d;}else{}}},					
		addToBasket:function(a,b,c){var d=b+'*'+c;var e=Utility.readCookie(a);if(e==null||e.trim()==""){Utility.createCookie(a,d,0);PCart.msgBlurb('Page added to print basket');}else{var f=Utility.makeArrayFromString(e);if(Utility.arrayHasString(f,d)>=0){PCart.msgBlurb('This page already exists in print basket');}else{Utility.addStringToArray(f,d);var g=Utility.makeStringFromArray(f);Utility.createCookie(a,g,0);PCart.msgBlurb('Page added to print basket');}}},	
		deleteFromBasket:function(a,b,c){var d=b+'*'+c;var e=Utility.readCookie(a);if(e!=null){var f=Utility.makeArrayFromString(e);var g=Utility.arrayHasString(f,d);if(g>=0){Utility.deleteStringFromArray(g,f);var h=Utility.makeStringFromArray(f);Utility.createCookie(a,h,1);PCart.createPrintBasket(a);}else{alert(c+'is not in the basket');}}else{alert('Basket missing!');}},
		printList:function(a){var b;if(a!=null&&a.length>0){b="<h2>Your pages</h2>\n<table summary=\"List of pages selected for printing\"><tbody>";var d=a.length;var e='';for(var c=0;c<d;c++){e=a[c].split('*');var n=c+1;var f=e[0];var g=e[1];var h=f.substring(f.lastIndexOf('/')+1);b+="<tr><td class='pagetitle'>"+n+'. '+g+' ('+h+')'+"<\/td><td class='printThisPage'><a href='#' onclick=\"PCart.loadPrintPage('"+f+"')\">Print<\/a><\/td><td><a class=\"removeB\" onclick=\"PCart.deleteFromBasket('PB','"+f+"','"+g+"')\" href='#'>Remove<\/a><\/td><\/tr>";}b+="<\/tbody><\/table>";if(d>1){b+="\n<p id=\"printall\"><a href=\"#\" onclick=\"PCart.buildIframes('PB');\" class=\"printall\">Print all pages</a></p>";}}else{b="<p>Print basket is empty.</p>";}return b;},		
		addThis:function(e,u,t){var a=window.location.protocol+"//"+window.location.host+window.location.pathname;PCart.addToBasket('PB',a,document.title);return false;},		
		activateButton:function(a,b){if(document.getElementById){var e=document.getElementById(a);if(e!=null){var c=e.getElementsByTagName('a');var d=c.length;if(d>0){var f=new Array();var i=0;var j=0;for(i=0,j=0;i<d;i++){if(Utility.hasClass(c[i],b)){f[j]=c[i];j++;}}d=f.length;for(i=0;i<d;i++){f[i].onclick=PCart.addThis;return false;}}}}},	
		activateAddToPrintButton:function(a,b){if(a!="undefined"){if(document.getElementById){var c=document.getElementById(a);if(c!=null){c.onclick=PCart.addThis;}}}},
		msgBlurb:function(a){if(document.getElementById){var b=document.getElementById('msgBox');if(b!=null){b.innerHTML=a;b.className='showBox';setTimeout("PCart.hideBlurb()",3000);}}},	
		hideBlurb:function(){if(document.getElementById){var a=document.getElementById('msgBox');a.innerHTML='';a.className="hideBox";}},
		loadPrintPage:function(a){window.frames['myframe'].window.location.href=a;},						
		sendToPrint:function(){var s=window.frames['myframe'].document.body.innerHTML;if(s.length>0){alert('Page loaded for printing. Press ok to print it on the printer of your choice.');window.frames['myframe'].focus();window.frames['myframe'].print();window.frames['myframe'].blur();top.focus();}},					
		buildPageFromFrame:function(f){top.focus();var a=document.getElementById('iframes');var b=window.frames[f].document;if(b!=null){var c=b.getElementById('rightcol-content');if(c==null){c=b.getElementById('content');}if(c==null){c=b.getElementById('contentWrapper')}if(c!=null){var d=c.innerHTML;if(d.length>0){if(document.getElementById){var e=document.getElementById('pages');if(e!=null){var g=document.createElement('div');g.setAttribute('class','page');g.innerHTML=d;e.appendChild(g);}}}}}},
		printit:function(){alert("Pages loaded for printing. Press 'ok' to print them on printer of your choice.");top.focus();window.print();},

		buildIframes : function(PBC){

				PCart.pagesLoaded = 0; 

				var pgs = document.getElementById('pages');
				if(pgs.hasChildNodes()){ 
				var children = pgs.childNodes.length
					for(var i = 0;  i < children ; i++){
						var el = pgs.childNodes[0];
							pgs.removeChild(el);
					}
				}
			

				ifm = document.getElementById('iframes');
				if(ifm.hasChildNodes()){ 
					 children = ifm.childNodes.length;
					for(i = 0;  i < children ; i++){
							el = ifm.childNodes[0];
							ifm.removeChild(el);
					}
				}

				var pbcValue = Utility.readCookie(PBC);
				if (pbcValue != "" && pbcValue != null) {

							pbcValue = pbcValue.trim();
							var pbcArray = Utility.makeArrayFromString(pbcValue);

							if(pbcArray.length)	{
								var links = pbcArray.length;
								var pair='';
								var pages = new Array();	
								for(var c = 0; c < links; c++){
								  pair = pbcArray[c].split('*');
								  pages[c] = pair[0];
								}
							}//if(pbcArray)

							var count = pages.length;
							//if there are multiple pages to be printed
							if( count>0)	{

								if(document.getElementById){
									var ifcontainer = document.getElementById('iframes');
									if(ifcontainer != null){
										var j;
										var irr = '';
				
											for(i=0, j=1; i<count;i++, j++ ){
												irr = irr+"<iframe width=\"1\" height=\"1\" id=\"myframe"+j+"\" name=\"myframe"+j+"\" src=\""+pages[i]+"\" onload=\"PCart.buildPageFromFrame("+j+")\"><\/iframe>" 
											}					
										ifcontainer.innerHTML = irr;
										setTimeout("PCart.printit()",1500);	
									}
								}
							}
				}else { 
						alert('Print Basket is empty');
				}
		}
		
};//PCart
String.prototype.trim=function(){return this.replace(/^\s\s*/,'').replace(/\s\s*$/,'')};

window.onload = function(){
	PCart.activateAddToPrintButton('buttonAddToPrint');
	PCart.createPrintBasket('PB');
}







