/*********************************************************************
(c) Copyright Comet Plc 1999-2007. All rights reserved.
	Last updated: 2007/10/31 - Stewart Orr
----------------------------------------------------------------------
	Package page JavaScript - used exclusively on the package pages
*********************************************************************/

/* shortcut function to get elements by id */
function gID(i) {
	return document.getElementById(i);
}

/* rotates the drop-down options for delivery methods */
function rotateDeliveryOptions() {
	var deliveryBox = document.getElementById("package_delivery_options"); 
	var deliveryList = document.getElementById("package_delivery_options_list"); 
	var deliveryLink = document.getElementById("package_delivery_link"); 
	if (deliveryList.style.display == "" || deliveryList.style.display == "block") {
		deliveryList.style.display = "none";
		deliveryBox.className = "collapsed";
		deliveryLink.title = "Click to expand delivery options";
	} else {
		deliveryList.style.display = "block";
		deliveryBox.className = "";
		deliveryLink.title = "Click to collapse delivery options";
	}
}



/* function to prepare the page */
function preparePackagePage() {
	try {
	document.getElementById("package_delivery_link").className = "collapsible";
	document.getElementById("package_delivery_link").innerHTML = '<a href="javascript: rotateDeliveryOptions();" id="package_delivery_link">' + document.getElementById("package_delivery_link").innerHTML + '<\/a>';
	rotateDeliveryOptions();
	} catch(e) {}
}


/*********************************************************************
	Alternative product functions - Stewart Orr (2007/07/09)
*********************************************************************/
function expandAlternativeProducts() {
	var divs = document.getElementsByTagName("div");
	document.getElementById("altToggle").innerHTML = "<p><a href=\"javascript:collapseAlternativeProducts()\">Show less products</a></p>";
	document.getElementById("altToggle").className = "showlessprods";
	for (var i = 0; i < divs.length; i++) {
		if (divs[i].className == "altproducts_extra") {
			divs[i].style.display = "block";
		}	
	}
}
function collapseAlternativeProducts() {
	var divs = document.getElementsByTagName("div");
	document.getElementById("altToggle").innerHTML = "<p><a href=\"javascript:expandAlternativeProducts()\">Show more products</a></p>";
	document.getElementById("altToggle").className = "showmoreprods";
	for (var i = 0; i < divs.length; i++) {
		if (divs[i].className == "altproducts_extra") {
			divs[i].style.display = "none";
		}	
	}
}


/* expand an element */
function showMore(el) {
	if (el == null)
		return;
	var divsTitle;
	var divsConverted = 0;	
	for (var j = 0; j<el.parentNode.parentNode.childNodes.length; j++) {
		if (el.parentNode.parentNode.childNodes[j].tagName == "DIV") {
			divsConverted++;
			if (el.parentNode.parentNode.childNodes[j].nodeType == 1 && divsConverted > 1) {
				el.parentNode.parentNode.childNodes[j].style.display = "block";	
			}
		} else if (el.parentNode.parentNode.childNodes[j].tagName == "H3") {
				divsTitle = el.parentNode.parentNode.childNodes[j].firstChild.nodeValue;
		}
	}
	// now change the link
	el.parentNode.className = "see_less";
	el.innerHTML = "Show less <strong>" + divsTitle + "</strong> ";
	el.onclick = function() {
		showLess(this);
		return false;
	}
}

function showLess(el) {
	if (el == null)
		return;
	var divsTitle;
	var divsConverted = 0;
	var divs = el.parentNode.parentNode.childNodes;
	for (var j = 0; j<divs.length; j++) {
		if (divs[j].tagName == "DIV" && divs[j].className != "see_less") {
			divsConverted++;
			if (divs[j].nodeType == 1 && divsConverted > 1) {
				divs[j].style.display = "none";	
			}
		} else if (divs[j].tagName == "H3") {
				divsTitle = divs[j].firstChild.nodeValue;
		}
	}
	// now change the link
	el.parentNode.className = "see_more";
	el.innerHTML = "Show more <strong>" + divsTitle + "</strong> (" + divsConverted + ")";
	el.onclick = function() {
		showMore(this);
		return false;
	}
}


/*	this function gets the accessories products and minimises them 
	it uses the above functions to rotate them
*/
function prepareAccessories() {
	// get accessories groups and collapse them
	var altProducts = 0;
	var divs = document.getElementsByTagName("div");
	for (var i = 0; i < divs.length; i++) {
		// is it an accessories group div tag?
		if (divs[i].className == "accessories_group") {
			var alternativeProductsLoaded = false;
			var divsID = "";
			var divsTitle = "";
			var divsConverted = 0;

			// count the number of items that are in this container
			// ignore whitespace etc
			var itemCount = 0;
			for (var j = 0; j < divs[i].childNodes.length; j++) {
				if (divs[i].childNodes[j].nodeType == 1 && divs[i].childNodes[j].tagName == "DIV")
					itemCount++;
			}
			
			if (itemCount>1) {			
				for (var j = 0; j < divs[i].childNodes.length; j++) {
						
					if (divs[i].childNodes[j].tagName == "DIV") {
						divsConverted++;
						if (divs[i].childNodes[j].nodeType == 1 && divsConverted > 1) {
							divs[i].childNodes[j].style.display = "none";	
						}
					} else if (divs[i].childNodes[j].tagName == "H3") {
						divsTitle = divs[i].childNodes[j].firstChild.nodeValue;
						divsID = divs[i].childNodes[j].id;
					}
				}
				if (document.all) {
					// USE DOM instead of innerHTML...
					var divC = document.createElement("div");
					divC.className = "see_more";
					
					var divA = document.createElement("a");
					var divStrong = document.createElement("strong");
					
					divA.href = "#" + divsID;
					divA.onclick = function() {
						showMore(this);
						return false;
					}
					divA.id =  divsID +"_container";
					
					var divText1 = document.createTextNode("Show more ")
					var divText2 = document.createTextNode(divsTitle)
					var divText3 = document.createTextNode(" (" + divsConverted + ")")
					
					divStrong.appendChild(divText2);
					
					divA.appendChild(divText1);
					divA.appendChild(divStrong);
					divA.appendChild(divText3);
					
					divC.appendChild(divA)
					
					divs[i].appendChild(divC);
				} else {
					divs[i].innerHTML += "<div class=\"see_more\"><a href=\"#" + divsID + "\" onclick=\"showMore(this);	return false;\" id=\"" + divsID +"_container\">Show more <strong>" + divsTitle + "</strong> (" + divsConverted + ")</a></div>";
				}
			}

	
		// alternative products
		} else if (divs[i].className == "altproducts_extra") {
				divs[i].style.display = "none";
				if (!alternativeProductsLoaded) {
					divs[i].parentNode.innerHTML += "<div id=\"altToggle\" class=\"showmoreprods\"><p><a href=\"javascript:expandAlternativeProducts()\">Show more products</a></p></div>";
					alternativeProductsLoaded = true;
				}
		}
	}
	// get any "jump to" links and add some js to make
	// the category expand when you "jump"
	var jump_tos = document.getElementsByTagName("a");
	for (i = 0; i < jump_tos.length; i++) {
		if (jump_tos[i].className == "jump_to") {
			// when clicking this element, open up the others!!!
			jump_tos[i].onclick = function() {
				showMore(document.getElementById(this.href.substring(this.href.indexOf("#")+1, this.href.length)+"_container"));
			}
		}
	}
}

/* function to truncate the text in an element */
var originalText = "";
function truncateElementText(element, maxChars) {
	try {
	var text = gID(element);
	if (text.innerHTML.indexOf("<table ") == -1){
		originalText = text.innerHTML;
		if (text.innerHTML.length > maxChars) {
		var i = maxChars;
			while (text.innerHTML.charAt(i) != " " && i < text.innerHTML.length) {
				i++;
			}
			text.innerHTML = text.innerHTML.substr(0,i) + "... <a href=\"javascript: toggleElementText();\" title=\"Show full description\">more</a>";
		}
	}
	} catch(e) {}
}
function toggleElementText() {
	var text = gID("product_description").innerHTML = originalText;
}


	function pageChanged(pageName, pageStatus){ 
		if (pageName == "ReviewSubmit"){
			var p_submissionContainer = document.getElementById("BVSubmissionContainer");
			p_submissionContainer.style.display = "block";
			var curUrl = window.top.document.location.href;
			if (curUrl.indexOf("#") > 1)curUrl = curUrl.substring(0, curUrl.indexOf("#"));
			window.top.parent.document.location.href =  curUrl + "#writeReview";
		} else if (pageStatus == 'REVIEW_AUTHENTICATION_FAILURE'){
			deleteCookie("bvUserIdCookie", "//", "comet.co.uk");
			window.location.replace(window.location.href);
		}
	
	}
	
	function ratingsDisplayed(totalReviewsCount, avgRating, ratingsOnlyReviewCount, buyAgainPercentage, productID)
	{
	         var bvRevCntr = document.getElementById("BVReviewsContainer");
			if (bvRevCntr) { bvRevCntr.style.display = "block"; }
		         var bvSVPLink = document.getElementById("BVSVPLinkContainer");
			if (bvSVPLink) { bvSVPLink.style.display = "block"; }
	}
	


/* set it to adjust elements onload - uses code in jslibrary.js */
addLoadEvent(preparePackagePage);
addLoadEvent(prepareAccessories);
addLoadEvent(onLoadCallWithProductPackagePageInit);