var hasDom = document.getElementById ? true : false;
var hasDom2 = document.importNode ? true : false;
var isIE = window.ActiveXObject ? true : false;


function toggleFieldSet (fsId, status) {
	var fieldSet = document.getElementById(fsId);
	status = Boolean(status);

	var dCN = 'disabled';
	var regMatch = new RegExp(' ?' + dCN + ' ?');

	if (status === true) {
		// we are enabling the fieldset
		var matchingClass;
		if (matchingClass = fieldSet.className.match(regMatch)) {
			fieldSet.className = fieldSet.className.replace(matchingClass, '');
			var dStatus = false;
		} else {
			// we're not really disabled
			return;
		}
	} else {
		// we are disabling the fieldset
		if (fieldSet.className.match(regMatch)) {
			// we're already disabled
			return;
		} else {
			if (fieldSet.className.length > 0) fieldSet.className += ' ' + dCN;
			else fieldSet.className = dCN;
			var dStatus = true;
		}
	}

	// if we got through here, we can enable / disable all form elements
	var elemCollection = new Array(fieldSet.getElementsByTagName('input'), fieldSet.getElementsByTagName('select'), fieldSet.getElementsByTagName('textarea'));
	for (var i=0; i<elemCollection.length; i++) {
		for (var j=0; j<elemCollection[i].length; j++) {
			elemCollection[i][j].disabled = dStatus;
		}
	}
}

function checkDescriptions(objId) {
	if (hasDom) {
		var container = document.getElementById(objId);
		var itemCount = container.getElementsByTagName('li').length;
		var descriptionCount = 0;
		var paras = container.getElementsByTagName('p');
		for (var i=0, j=paras.length; i<j; i++) {
			if (paras[i].className == 'description') descriptionCount++;
		}
		if (descriptionCount < itemCount/2) container.className = 'nodescription';

	}
}


RegExp.escape = function(text) {
	if (!arguments.callee.sRE) {
		var specials = [
			'/', '.', '*', '+', '?', '|',
			'(', ')', '[', ']', '{', '}', '\\'
		];
		arguments.callee.sRE = new RegExp(
			'(\\' + specials.join('|\\') + ')', 'g'
		);
	}
	return text.replace(arguments.callee.sRE, '\\$1');
}
var uriRE = new RegExp('^(?:' + RegExp.escape(window.location.href.replace(window.location.hash, '')) + ')?#(.+)$');

function registerFocus(objId) {
	var theLinks = document.getElementById(objId).getElementsByTagName('a');
	for (var i=0; i<theLinks.length; i++) {
		theLinks[i].onclick = function() {
			var linkHref;
			if (linkHref = this.getAttribute('href').match(uriRE)) {
				document.getElementById(linkHref[1]).scrollIntoView();
				document.getElementById(linkHref[1]).focus();
				return false;
			}
		}
	}
}

var toggled = null;
function registerToggle(objId) { 
	var theLinks = document.getElementById(objId).getElementsByTagName('area');
	if(document.location.hash == ""){
		for (var i=0; i<theLinks.length; i++) {
			var linkHref;
			theLinks[i].onclick = function() {
				if (linkHref = this.getAttribute('href').match(uriRE)) {
					if (toggled) toggled.style.display = 'none';
					toggled = document.getElementById(linkHref[1]);
					toggled.style.display = 'block';
					toggled.scrollIntoView();
					return false;
				}
			}
		}
	}
	if(document.location.hash != ""){
		var hashh= document.location.hash.substring(1);
		
		document.getElementById(hashh).style.display = 'block';
		document.getElementById(hashh).scrollIntoView();
		for (var i=0; i<theLinks.length; i++) {
			var linkHref;
			theLinks[i].onclick = function() {
			document.getElementById(hashh).style.display = 'none';
				if (linkHref = this.getAttribute('href').match(uriRE)) {
					if (toggled) toggled.style.display = 'none';
					toggled = document.getElementById(linkHref[1]);
					toggled.style.display = 'block';
					toggled.scrollIntoView();
					return false;
				}
			}
		}		

		//alert(document.getElementById('alba').id);
		//toggled=document.getElementById(hashh);
		
		//toggled.style.display = 'block';
		//toggled.scrollIntoView();
		//return false;
	}
}



function registerXMLHTTP(formId, doDisable) {
	var _myXMLHTTP = new _xH();

	if (_myXMLHTTP) {
		var theForm = document.getElementById(formId);
		//theForm.doDisableing = doDisable === undefined ? true : Boolean(doDisable);
		theForm.doDisableing = false;
		theForm._xH = _myXMLHTTP;
		theForm.onsubmit = registerXMLHTTP2;
	}
}

var registerXMLHTTP2 = function() {
	this._xH.url = this.getAttribute('action');
	this._xH.method = this.getAttribute('method');
	this._xH.encoding = this.getAttribute('enctype');
	var elements = this.elements;

	for (var i=0; i<elements.length; i++) {
		if (elements[i].getAttribute('name') && (! elements[i].disabled)) {
			this._xH.setVar(elements[i].getAttribute('name'), elements[i].value);
		}
	}

	if (this.doDisableing) this._xH.targetForm = this;

	this._xH.perform();
	return false;
}


function urlEncode(str) {
	if(encodeURIComponent) {
		return encodeURIComponent(str);
	}
	if(escape) {
		return escape(str);
	}
}


function _xD(content) {
	var domDoc = null;
	if (isIE) {
		var msProgIDs = [
			'MSXML2.DOMDocument.6.0',
			'MSXML2.DOMDocument.5.0',
			'MSXML2.DOMDocument.4.0',
			'MSXML2.DOMDocument.3.0',
			'MSXML2.DOMDocument',
			'Microsoft.DOMDocument'
		];
		for (var i=0; i<msProgIDs.length; i++) {
			try {
				domDoc = new ActiveXObject(msProgIDs[i]);
				break;
			} catch (e) { }
		}
	}
	if (!domDoc) {
		return false;
	} else {
		domDoc.loadXML(content.replace(/ xmlns="[^"]+"/, '')); // "
		return domDoc;
	}
}


/* xmlhttp helper */
function _xH(url, method, encoding) {
	this._req = null;
	if (window.XMLHttpRequest) {
		this._req = new XMLHttpRequest();
	} else if (isIE) {
		var msProgIDs = [
			'MSXML2.XMLHTTP.6.0',
			'MSXML2.XMLHTTP.5.0',
			'MSXML2.XMLHTTP.4.0',
			'MSXML2.XMLHTTP.3.0',
			'MSXML2.XMLHTTP',
			'Microsoft.XMLHTTP'
		];
		for (var i=0; i<msProgIDs.length; i++) {
			try {
				this._req = new ActiveXObject(msProgIDs[i]);
				break;
			} catch (e) { }
		}
	}
	if (!this._req) {
		return false;
	} else {
		this.url = url;
		this.method = method;
		this.encoding = encoding;
	}
}
_xH.prototype =
{
	vars: [],
	headers: {
		'Accept': 'message/x-avandor-message'
	},
	resetVars: function() {
		this.vars = [];
	},
	setVar: function(name, value) {
		this.vars[name] = value;
	},
	setHeader: function(name, value) {
		this.headers[name] = value;
	},
	perform: function(handler, params) {
		this.url = this.url ? this.url : window.location;
		this.method = this.method ? this.method.toUpperCase() : 'GET';
		this.encoding = this.encoding ? this.encoding.toLowerCase() : 'application/x-www-form-urlencoded';

		var reqString = '';
		for (name in this.vars) {
			reqString += urlEncode(name) + '=' + urlEncode(this.vars[name]) + '&';
		}
		if (reqString.length > 0) reqString = reqString.substring(0, reqString.length - 1);

		if (this.method == 'POST') this.setHeader('Content-Length', reqString.length);
		this.setHeader('Content-Type', this.encoding);


		var _xmlhttp = this._req;
		_xmlhttp.open(this.method, this.method == 'POST' ? this.url : this.url + '?' + reqString, true);
		for (name in this.headers) {
			_xmlhttp.setRequestHeader(name, this.headers[name]);
		}

		var targetForm = null;
		if (this.targetForm) {
			targetForm = this.targetForm;

			var coverer = document.createElement('div');
			coverer.style.position = 'absolute';
			coverer.style.left = calculateOffsetLeft(targetForm) + 'px';
			coverer.style.top = calculateOffsetTop(targetForm) + 'px';
			coverer.style.width = calculateWidth(targetForm) + 'px';
			coverer.style.height = calculateHeight(targetForm) + 'px';

			coverer.style.backgroundColor = 'gray';


			targetForm.parentNode.appendChild(coverer);


			return;

		}

		_xmlhttp.onreadystatechange = function() {
			if(_xmlhttp.readyState == 4 && _xmlhttp.responseText) {
				var rType = _xmlhttp.getResponseHeader('Content-Type').split('; ')[0];
				if (handler) {
					if (rType == 'application/x-javascript') {
						handler(eval(_xmlhttp.responseText));
					}
					else if (rType == 'application/xml') {
						if (!hasDom2 && isIE) {
							var response = _xD(_xmlhttp.responseXML.documentElement.xml);
						}
						else {
							var response = _xmlhttp.responseXML;
						}

						var scripts = new Array();
						var scriptNode;

						while (scriptNode = response.getElementsByTagName('script')[0]) {
							var currScript = scriptNode.firstChild;
							if (currScript.nodeType == 3 || currScript.nodeType == 4) {
								scripts[scripts.length] = currScript.nodeValue;
							}
							scriptNode.parentNode.removeChild(scriptNode);
						}

						handler(response, params);
						for (var i=0; i<scripts.length; i++) eval (scripts[i]);
					}
					else {
						handler(_xmlhttp.responseText, rType);
					}
				} else if (rType == 'application/x-javascript') {
					eval(_xmlhttp.responseText);
				} else {
					throw new Error('[ Unhandled response ]:\nContent-Type was ' + rType + '\nand no handler passed');
				}

			}
		}

		_xmlhttp.send(this.method == 'POST' ? reqString : null);

		return false;
	}
}




function calculateOffsetLeft(r){
	return getOffset(r,"offsetLeft")
}

function calculateOffsetTop(r){
	return getOffset(r,"offsetTop")
}

function getOffset(r,attr){
	var kb=0;
	var p = true;
	while(r && p){
		kb+=r[attr];
		r=r.offsetParent;
		if (r.tagName.toLowerCase() == 'body' || getStyle(r, 'position') == 'relative') p = false;
	}
	return kb;
}

function calculateWidth(r){
	if(navigator&&navigator.userAgent.toLowerCase().indexOf("msie")==-1){
		// must actually substract border width here
		return r.offsetWidth -2
	}else{
		return r.offsetWidth
	}
}

function calculateHeight(r){
	if(navigator&&navigator.userAgent.toLowerCase().indexOf("msie")==-1){
		// must actually substract border width here
		return r.offsetHeight
	}else{
		return r.offsetHeight
	}
}

function getStyle(obj, styleProp) {
	if (obj.currentStyle) var propVal = obj.currentStyle[styleProp];
	else if (window.getComputedStyle) var propVal = document.defaultView.getComputedStyle(obj, null).getPropertyValue(styleProp);
	return propVal;
}

function productPop(obj) {
	if (hasDom) {
		if (!arguments.callee.pop) {
			var popObj = document.createElement('div');
			popObj.id = 'productImage';
			var popImg = document.createElement('img');
			popImg.src = obj.href;
			popImg.alt = obj.firstChild.getAttribute('alt');
			popImg.title = obj.firstChild.getAttribute('alt');
			popImg.onclick = function () {
				this.parentNode.style.display = 'none';
			}

			popObj.appendChild(popImg);

			obj.parentNode.appendChild(popObj);
			arguments.callee.pop = popObj;
		} else {
			var popObj = arguments.callee.pop;
		}

		popObj.style.display = 'block';

		return false;
	} else return true;
}


function replaceSubmit(containerId) {
	if (hasDom) {
		var formObjs = document.getElementById(containerId).getElementsByTagName('form');
		for (var i=0; i<formObjs.length; i++) {
			var theForm = formObjs[i];
			var formElems = theForm.elements;
			for (var j=0; j<formElems.length; j++) {
				if (formElems[j].type == 'submit') {
					var theSubmit = formElems[j];
					var containerObj = theSubmit.parentNode;
					var replacementObj = document.createElement('span');
					replacementObj.appendChild(document.createTextNode(theSubmit.value));
					replacementObj.className = 'submit' + (theSubmit.className ? ' ' + theSubmit.className: '');
					replacementObj.associatedForm = theForm;
					replacementObj.onclick = submitAssociate;
					containerObj.replaceChild(replacementObj, theSubmit);
				}
			}
		}
	}
}

function submitAssociate() {
	this.associatedForm.submit();
}


function showPromo(position){
	currentPromoPosition=position;
	var objname, linkname; 
	if(currentPromoPosition != 0) { 
		objname='promoV'+currentPromoPosition; 
		//linkname='promoNav'+currentPromoPosition; 
		document.getElementById(objname).style.display='none'; 
		//document.getElementById(linkname).className=''; 
		}
	objname='promoV'+position;
	linkname='promoD'+position;
	document.getElementById(objname).style.display='block';
	document.getElementById(linkname).className='promoDescriptionHover'; 
	for ( i=1; i<=maxPromoPosition; i++) {
		if (i!=position) {
			objname='promoV'+i;
			linkname='promoD'+i;
			document.getElementById(objname).style.display='none'; 
			document.getElementById(linkname).className='promoDescription'; 
		}
	}
	currentPromoPosition=position;
	
	if (typeof(wait) != 'undefined'){clearTimeout(wait);}
	wait=setTimeout('nextPromo()',5000);
}

function nextPromo(){
var	nextPosition=1;
	if(currentPromoPosition < maxPromoPosition) { 
		nextPosition=currentPromoPosition+1;
	}
//	alert("next"+nextPosition);
	showPromo(nextPosition);
}