/* Generic Cookie Code */
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

/* Open links in a new window.*/
/* Since 'target' is no longer a valid attribute, we use 'rel' and JavaScript to open new windows. */
function externalLinks() {
	if (!document.getElementsByTagName) return;
 	var anchors = document.getElementsByTagName("a");
 	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
   	if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external")
			anchor.target = "_blank";
 	}
}


/* Image Rollover (for the RSS feed image) */
if (document.images) {
	b_rsson = new Image(); // Active images
	b_rsson.src = "/shared/images/b_rss_over.gif";
	b_rssoff = new Image(); // Inactive images
	b_rssoff.src = "/shared/images/b_rss.gif";
}

function imgOn(imgName) {
	if (document.images) {
		document[imgName].src = eval(imgName + "on.src");
	}
}

function imgOff(imgName) {
	if (document.images) {
		document[imgName].src = eval(imgName + "off.src");
	}
}


//Create global references
var printWindow = null;
var blIsOpen = false;
var opener;
var objPrint;

function getHeader(){
	var header;
	//BC logo plus print buttons
	header = "<div id=\"header\">";
	header += "<a href=\"/\"><img id=\"logo\" src=\"/shared/images/logo_bcgov.gif\" width=\"163\" height=\"58\" alt=\"British Columbia - The Best Place on Earth\"></a>";
	header += getPrintButtons() ;
	header += "</div>";
	return header;
}

function getTopBanner() {
	if (document.getElementById("image-header")) {
		return "<div id=\"image-header\">"+document.getElementById("image-header").innerHTML+"</div>";
	}
	else {
		return "";
	}
}

function hasAncestorOfClass(node, classname)
{
	var temp = node;
	while (temp.parentNode) {
		temp = temp.parentNode;
		if (temp.className == classname)
 {
			return true;
		}
	}
	return false;
}

function getElementsOfClass(classname, node)
{
	if(!node) 
		node = document.getElementsByTagName("body")[0];
	var result = [];
	var regexp = new RegExp('\\b' + classname + '\\b');
	var elements = node.getElementsByTagName("*");
	for(var i=0,j=elements.length; i<j; i++)
	//	if((regexp.test(elements[i].className)) && (!hasAncestorOfClass(elements[i], classname)))
		if((regexp.test(elements[i].className)) )
			result.push(elements[i]);
	return result;
}

function getMainCol()
{
	var components = getElementsOfClass("iw_component");

	var pattern = new RegExp(
		'((<form [^>]*class="?iw-form-builder-toolbox"?)|(<div [^>]*class="?(main-content|overview-content|list-content)"?))');
	
	/*
	var pattern = new RegExp(
		'((<form [^>]*class="?iw-form-builder-toolbox"?)|(<div [^>]*class="?(main-content|overview-content|list-content)"?)(<button))');
	*/
	var i = 0;
	//var content = "<div id=\"content\">";
	var content = "";
	var com;
	while (components[i]) {
		com = components[i];
		var testpattern = com.innerHTML.toLowerCase();
		if (pattern.test(testpattern) || testpattern.indexOf("<button ")!= -1)
			content = content + "<div>" + com.innerHTML + "</div>";
		++i;
	
	}
	//content = content + "</div>";
	return content;
}

function getFreeFormTop(){
	if (document.getElementById("right-col")) {
		return "<div id=\"freeFormTop\">"+document.getElementById("right-col").innerHTML+"</div>";
	}
	else {
		return "";
	}
}

function getFreeFormBottom(){
	if (document.getElementById("freeFormBottom")) {
		return "<div id=\"freeFormBottom\">"+document.getElementById("freeFormBottom").innerHTML+"</div>";
	}
	else {
		return "";
	}
}


function getPrintButtons(){
	var strFooter;
	strFooter = "<div class=\"print-buttons\">" +
			"<a href=\"javascript:print(); window.self.close();\">" + 
			"<img src=\"/shared/images/b_print-close.gif\" width=\"108\" height=\"28\" " +
			" alt=\"Print and close\"></a>&nbsp;&nbsp;&nbsp;" +
			"<a href=\"javascript:window.self.close();\">" + 
			"<img src=\"/shared/images/b_cancel.gif\" width=\"108\" height=\"28\" alt=\"Cancel\"></a>" +
			"</div>";
	return strFooter;
}

function doPrint(objWindow){
	if (blPrintWindowOpen()){
		printWindow.focus();//make the preview window bubble to surface
	}else{
	objPrint = new objPrintObject();
	blIsOpen = true;
	
	opener = objWindow;
	printWindow = window.open("", "PrintVersion", 'left=100,screenX=200,top=50,screeny=100,resizable=yes,toolbar=yes,menubar=yes,width=760,height=500,modal=yes,scrollbars=yes,status=yes');
	printWindow.document.bgColor="white";
	printWindow.document.write("<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\" \"http://www.w3.org/TR/html4/strict.dtd\">\n");
	var reloadFlag=false;
	var title = document.title;
	printWindow.document.write("<html><head>\n");
	if(title == ""){
		printWindow.document.write("<title>Province of British Columbia (Printer Version)</title>\n");
	}else{
		printWindow.document.write("<title>"+title+" (Printer Version)</title>\n");
	}
	printWindow.document.write("<style type=\"text/css\" media=\"all\">\n" + 
		"@import \"/shared/css/main.css\"; \n" +
		"@import \"/shared/css/fonts.css\"; \n"+
		"@import \"/shared/css/media_gallery.css\"; \n" +
		"@import \"/shared/css/print.css\"; \n" +			// This is the name of the print style sheet for the ministry pop-up printer version windows. It must replace the previously used "print.css" entirely, since the styles conflict with each other.
		"@import \"/shared/css/visual-styles.css\"; \n" +
		"</style>\n");
		
	if (objPrint.mainCol.indexOf("IwFormBuilderToolbox") != -1) {
		reloadFlag = true;
		printWindow.document.write('<SCRIPT src="/shared/scripts/form-builder-pv.js" type="text/javascript"></SCRIPT>\n<SCRIPT src="/shared/scripts/AjaxRequest.class.js" type="text/javascript"></SCRIPT>\n');
	}
	printWindow.document.write("</head>\n");

	printWindow.document.write("<body class=\"one-column\">\n");
	printWindow.document.write("<div id=\"wrapper\"><a name=\"top\"></a>\n");
	printWindow.document.write(objPrint.header);
	//printWindow.document.write(objPrint.imageHeader);
	printWindow.document.write("<div id=\"content\">\n");
	printWindow.document.write(objPrint.freeFormTop);
	printWindow.document.write(objPrint.mainCol+objPrint.freeFormBottom+"</div><div id=\"footer\">" + objPrint.printButtons + "</div></div></body></html>");

	var browser=navigator.appName;
	if (browser=="Microsoft Internet Explorer" ){
		printWindow.location.reload(false);
	}
	printWindow.document.close();
	}
}


function objPrintObject(){
	this.header = getHeader();
	this.imageHeader = getTopBanner();
	this.mainCol = getMainCol();
	this.freeFormTop = getFreeFormTop();
	this.freeFormBottom = getFreeFormBottom();
	this.printButtons = getPrintButtons();
	this.ParentWindow = window;
}

function blPrintWindowOpen(){
	if ((printWindow != null) && (blIsOpen == true)){
		return (! printWindow.closed);
	}else{
		blIsOpen = false;
		return false;
	}
}


function closeWindow(){
	if((printWindow != null) && (blIsOpen == true)){
		printWindow.close();
		printWindow=null;
		blIsOpen = false;
		return true;
	}
	return false;
}

