/* Copyright (c) 2006, CyberGite.com. All rights reserved. */


var MainClass = function() {

	// EXTERNAL LINKS IMAGE
	this.externalLinksImage = "resources/v2.0/images/external.png";

};


MainClass.prototype = {


	// INIT
	init: function() {

		this.setMinHeight();
		this.imageSplash();
		this.externalLinks();
		
		if (document.all) {
			this.fixImageSplashIE();
		}
		
		this.prepareThumbs();
		var priceForm = document.getElementById('product-price-form');
		if (priceForm) this.updateProductPrice(priceForm);

		var spans = document.getElementsByTagName('SPAN');
		for (var scnt = 0; scnt < spans.length; scnt++) {
			var mySpan = spans[scnt];
			if (mySpan.className != 'Protection') continue;
			var myData = spans[scnt].firstChild.firstChild.data.trim().rot13().reverse().split(' ');
			while (mySpan.hasChildNodes()) {
				mySpan.removeChild(mySpan.firstChild);
			}
			var to = myData[1] + '@' + myData[2] + '.' + myData[0];
			var link = document.createElement('A');
			link.href = "mailto:" + to;
			link.appendChild(document.createTextNode(to));
			mySpan.appendChild(link);
		}

	},


	// SET MIN-HEIGHT
	setMinHeight: function() {

		var navigation = document.getElementById('page-navigation');
		var sidebar = document.getElementById('side-bar');
		var content = document.getElementById('content');
		var minHeight = navigation.clientHeight;
		if (sidebar && sidebar.clientHeight > minHeight) {
			minHeight = sidebar.clientHeight;
		}
		content.style.minHeight = minHeight + "px";

	},


	// TOGGLE COLLAPSING
	toggleCollapsing: function() {

		var navigation = document.getElementById('page-navigation');
		var className = " " + navigation.className + " ";
		className = className.replace(/Expanded/, " tmp ");
		className = className.replace(/Collapsing/, " Expanded ");
		className = className.replace(/tmp/, " Collapsing ");
		navigation.className = className.trim();
		this.setMinHeight();

	},


	// HIDE SIDE BAR
	hideSideBar: function() {

		document.body.className += " HideSideBar";
		this.setMinHeight();

	},


	// IMAGE SPLASH
	imageSplash: function() {

		var mySpans = document.getElementsByTagName("SPAN");
		for (var i = 0, n = mySpans.length; i < n; i++) {
			if (mySpans[i].className && mySpans[i].className.indexOf("ImageSplash ") == 0) {
				var myAnchor = mySpans[i].firstChild;
				var mySplash = myAnchor.nextSibling;
				myAnchor.onclick = function() {
					var myAnchor = this;
					var mySplash = myAnchor.nextSibling;
					if (mySplash.firstChild.tagName != "IMG") {
						var myParams = myAnchor.rel.split("¤");
						var myImg = document.createElement("img");
						myImg.src = myAnchor.href;
						myImg.width = myParams[0];
						myImg.height = myParams[1];
						mySplash.insertBefore(myImg, mySplash.firstChild);
					}
					mySplash.className = (mySplash.className == "Open")? "Closed" : "Open";
					return false;
				};
				mySplash.onclick = function() {
					this.className = "Closed";
				};
			}
		}

	},
	

	// EXTERNAL LINKS
	externalLinks: function() {

		var host = document.location.host;
		var myAnchors = document.getElementsByTagName("A");
		for (var i = 0, n = myAnchors.length; i < n; i++) {
			var urlhref = myAnchors[i].href;
			var urlexternal = (!urlhref.indexOf("http://") && urlhref.indexOf("http://" + document.location.host));
			if (urlhref && urlexternal) {
				myAnchors[i].className = "External " + myAnchors[i].className;
				myAnchors[i].target = "_blank";
				var currclass = " " + myAnchors[i].className + " ";
				if (currclass.indexOf(" NoExternalImage ") < 0) {
					var myImg = document.createElement("img");
					myImg.src = this.externalLinksImage;
					myImg.className = "External";
					myAnchors[i].appendChild(document.createTextNode(" "));
					myAnchors[i].appendChild(myImg);
				}
			}
		}

	},
	

	// FIX IE STACKING CONTEXT
	fixImageSplashIE: function() {

		var mySpans = document.getElementsByTagName("SPAN");
		for (var i = 0, n = mySpans.length; i < n; i++) {
			var className = " " + mySpans[i].className + " ";
			if (className.indexOf("ImageSplash") >= 0) {
				mySpans[i].style.zIndex = n - i + 10;
			}
		}

	},


	// PREPARE THUMBS
	prepareThumbs: function() {

		var myParagraphs = document.getElementsByTagName('P');
		for (var i = 0; i < myParagraphs.length; i++) {
			if (myParagraphs[i].className == 'SlideThumbs') {
				var links = myParagraphs[i].getElementsByTagName('A');
				for (var k = 0; k < links.length; k++) {
					links[k].onclick = function() {
						myMainClass.openSlide(this.href.split("#")[1]);
						this.focus();
						return false;
					};
					links[k].onfocus = function() {
						myMainClass.openSlide(this.href.split("#")[1]);
					};
				}
			}
		}
		var myDivs = document.getElementsByTagName('DIV');
		for (var i = 0; i < myDivs.length; i++) {
			if (myDivs[i].className == 'Slides') {
				var links = myDivs[i].getElementsByTagName('A');
				links[0].onclick = function() {
					myMainClass.navSlide(this.parentNode, -1);
					return false;
				};
				links[1].onclick = function() {
					myMainClass.navSlide(this.parentNode, +1);
					return false;
				};
				links[2].onclick = function() {
					myMainClass.closeSlide(this.parentNode);
					return false;
				};
				for (var k = 3; k < links.length; k++) {
					links[k].onclick = function() {
						myMainClass.closeSlide(this.parentNode.parentNode.parentNode);
						return false;
					};
				}
			}
		}

	},


	// OPEN SLIDE
	openSlide: function(sId) {

		var idNode = document.getElementById(sId);
		idNode.parentNode.className = "Slides SlidesOpen";

		var myImg = idNode.getElementsByTagName("IMG")[0];
		var myParams = myImg.parentNode.rel.split("¤");
		myImg.width = myParams[0];
		myImg.height = myParams[1];
		myImg.src = myImg.src.replace("/thumb-", "/image-");
		
		var folks = idNode.parentNode.childNodes;
		for (var f = 0; f < folks.length; f++) {
			if (folks[f].className && folks[f].className == "Current") folks[f].className = "";
		}
		idNode.className = "Current";
		
		return false;

	},


	// NAVIGATE SLIDE
	navSlide: function(slide, incr) {
		
		var folks = slide.childNodes;
		for (var f = 0; f < folks.length; f++) {
			if (folks[f].className && folks[f].className == "Current" && folks[f + incr].id) {
				this.openSlide(folks[f + incr].id);
				break;
			}
		}
		
	},


	// CLOSE SLIDE
	closeSlide: function(slide) {
		
		var folks = slide.childNodes;
		slide.className = "Slides";
	
	},


	// UPDATE PRODUCT PRICE
	updateProductPrice: function(srcform) {
		var currency = srcform.elements['currency'].value;
		var elements = srcform.elements;
		var labels = srcform.getElementsByTagName('LABEL');
		var myElement = srcform.elements['product'];
		var myName = myElement.name; 
		var splitval = myElement.value.split("@");
		var price = parseFloat(splitval[1]);
		var suppl = 0;
		var ref = splitval[0] + ' (' + splitval[1] + ' ' + currency + ')' + '\n';

		for (var ecnt = 0; ecnt < elements.length; ecnt++) {
			myElement = elements[ecnt];
			myName = myElement.name; 
			if (!myName || myName.indexOf('option-') != 0) continue;
			if (myElement.type == 'checkbox' && ! myElement.checked) continue;
			splitval = myElement.value.split("@");
			suppl = parseFloat(splitval[1]);
			if (suppl)	price += suppl;
			ref += "• " + srcform.elements['label-' + myName].value;
			if (myElement.options) {
				ref += ': ' + myElement.options[myElement.selectedIndex].firstChild.nodeValue;
			} else if (splitval[1]) {
				ref += ' (' + splitval[1] + ' ' + currency + ')';
			}
			ref += '\n';
		}
		price = Math.round(1000 * price);
		price /= 1000; 
		var pricenode = document.getElementById('product-total-price');
		if (pricenode) {
			pricenode.replaceChild(document.createTextNode(price), pricenode.firstChild);
		}
		var refnode = srcform.elements['product-ref'];
		if (refnode) {
			refnode.value = "";
			refnode.value = ref;
		}
	}


};


// Trim String
String.prototype.trim = function() {
	var a = this.replace(/^\s+/, '');
	return a.replace(/\s+$/, '');
};


// Reverse String
String.prototype.reverse = function() { 
	return this.split('').reverse().join('');
};


// Rot13
String.prototype.rot13 = function(){
		return this.replace(/[a-zA-Z]/g, function(c){
				return String.fromCharCode((c <= "Z" ? 90 : 122) >= (c = c.charCodeAt(0) + 13) ? c : c - 26);
		});
};


// enlarged thumbs

document.write("\n<style type='text/css'>");
document.write("\n	div.Slides, div.Slides div { display: none; }");
document.write("\n</style>");


// class instance
var myMainClass = new MainClass();



