
// *** Accessibility ******************************

function resize(value){
	createCookie('508',value,'30');
	setsize();
}

function setsize(){
	document.getElementById('container').style.fontSize = readCookie('508');
}

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;
}

// *** Tab Switcher *******************************

function tabActivate(id,n){
	// Switch off old tabs
	for(i=0;i<=n;i++){
		try{
			document.getElementById('tabcontent'+i).style.display='none';
		} catch (err){}
		try{
			document.getElementById('tablink'+i).className='none';
		} catch (err){}
	}
	// Switch new tab on and active link
	try{
		document.getElementById('tabcontent'+id).style.display='block';
	} catch (err){}
	try{
		document.getElementById('tablink'+id).className='active';	
	} catch (err){}
}
function tabActive(obj,hover){
	if(obj.className!='active') {
		if(hover){
			obj.className = 'hover';
		} else {
			obj.className = '';
		}
	}
}

// *** Div Switcher *******************************

function divActivate(id,n,prefix){
	var i = 0;
	for(i=0;i<=n;i++){
		if(i!=id){
			try{
				document.getElementById(prefix+'content'+i).style.display='none';
			} catch (err){}
			try{
				document.getElementById(prefix+'link'+i).className = '';
			} catch (err){}
		}
	}
	
	try {
		if(document.getElementById(prefix+'content'+id).style.display!='block'){
			document.getElementById(prefix+'content'+id).style.display = 'block';
			document.getElementById(prefix+'link'+id).className = 'active';
		}
	} catch (err){}
}

var viewed_offset = 0;
function scrollViewedProducts(inc,n){
	var x = Math.abs(inc);
	viewed_offset = Math.max(0,Math.min(viewed_offset+inc,n-x));
	
	for(i=0;i<n;i++){
		if(i>=viewed_offset && i<(viewed_offset+x)){
			try {
				document.getElementById('viewed_product_'+i).style.display = 'block';
			} catch (err){}
		} else {
			try {
				document.getElementById('viewed_product_'+i).style.display = 'none';
			} catch (err){}
		}
	}
	if(viewed_offset==0){
		try {
			document.getElementById('viewed_product_prev').style.display = 'none';
		} catch (err){}
	} else {
		try {
			document.getElementById('viewed_product_prev').style.display = 'block';
		} catch (err){}
	}
	if((viewed_offset+x)==n) {
		try {
			document.getElementById('viewed_product_next').style.display = 'none';
		} catch (err){}
	} else {
		try {
			document.getElementById('viewed_product_next').style.display = 'block';
		} catch (err){}
	}
	// NEED TO HIDE NEXT OR PREV BUTTONS
}
function trackSale(paymentMethod){
	pageTracker._trackTrans();
	pageTracker._trackPageview('/pay/'+paymentMethod);
	return true;
}

function validateEnewsletter(){
  if( !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(document.getElementById('email_address').value))) {
    alert( 'Please enter a valid e-mail address.');
    return false;
  } else {
    return true;
  }
}


function validateBasketNewsletter(){
  if( !(/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,4})+$/.test(document.getElementById('basket_email_address').value))) {
    alert( 'Please enter a valid e-mail address.');
    return false;
  } else {
    return true;
  }
}

function change_quantity(way, row_num, stock_level) {
	
	var stockLevel = parseInt(stock_level);
	var el =document.getElementById('prod_quantity' + row_num.toString() );
	
	if (el) {
		var number = parseInt(el.value);

		if (way == "inc" && number < stockLevel) {
			number++;
		} else if (way == "dec" && number > 0) {
			--number;
		}
		
		document.getElementById('prod_quantity' + row_num.toString()).value = number;
	}
	else
		alert ('Failed to alter product quantity');
}


function change_basket_quantity(way, el, stockLevel) {

	var stockLevel = parseInt(stockLevel);
	var x =document.getElementById(el).childNodes;
	
	for(var i = 0; i < x.length; i++)
	{
		if (x.item(i).id == 'quantity')
			break;
	}
	if (i < x.length) {
		var number = parseInt(x.item(i).value);

			if (way == "inc" && number < stockLevel) {
				number++;
			} else if (way == "dec" && number > 0) {
				--number;
			}
			
			x.item(i).value = number;
		document.getElementById(el).submit();
	}
}

function checkQtys(thisform)
{
	var qty;

	for (x = 0; x < 15; x++) {
		qty = document.getElementById('prod_quantity' + x.toString());
		if (qty) {
			if (qty.value > 0)
				return true;
		}
	}
	alert("You must select a quantity for your desired product!");
	return false;
}


function checkInvites(thisform)
{
try
	{
	var errMsg = '';
	
	var info = document.getElementById('Information_field');

	if (info.value.length > 0) {
		var infopatt = /^\s*$/;
		var infoTest = infopatt.test(info.value);
		if (infoTest){	
			errMsg = errMsg + 'Please enter information for your invitations';
		}
	} else {
		errMsg = errMsg + 'Please enter information for your invitations';
	}
	
	if (errMsg.length > 0) {
		alert(errMsg);
		return false;
	}
	return true;
	} 
	catch(err) 
	{
	}
	
}
	document.getElementsByClassName = function(cl) {
		var retnode = [];
		var myclass = new RegExp('\\b'+cl+'\\b');
		var elem = this.getElementsByTagName('*');
		for (var i = 0; i < elem.length; i++) {
		var classes = elem[i].className;
		if (myclass.test(classes)) retnode.push(elem[i]);
		}
		return retnode;
	}; 
	
	function updateProducts(category_id,manufacturer_id,query,auto,page,limitstart){
		//alert('here'+limitstart);
		if(category_id>0 || manufacturer_id>0 || query.length>0){
		//alert('here'+manufacturer_id);
			// Need to update URI for searches
			var uri = '';
			if(category_id>0){
				uri += '/index.php?ajax&option=shop&page=shop.browse&category_id='+category_id+'&pg='+page+'&limit=50&limitstart='+limitstart;
				//alert(uri);
			} else if(manufacturer_id>0){
				uri += '/index.php?ajax&option=shop&page=shop.browse&manufacturer_id='+manufacturer_id+'&pg='+page;
			} else if(query.length>0){
				uri += '/index.php?ajax&q='+escape(query)+'&pg='+page;
			} else {
				return;
			}
			
			// Get scale, colour, subject options
			var tags = new Array();
			tags[0] = 'brand';
			tags[1] = 'scale';
			tags[2] = 'colour';
			tags[3] = 'subject';
			uri_suffix = '';
			for(var t=0; t<tags.length; t++){
				var tag = tags[t];
				var tempOptions = document.getElementsByClassName(tag+'Filter');
				for(var i=0; i < tempOptions.length; i++){
					if(tempOptions[i].checked){
						uri_suffix += '&'+tag+'[]='+escape(tempOptions[i].value);
					}
				}
			}
			uri_suffix += document.getElementById('sortby').value;
			uri_suffix += '&pg='+page;
						
			uri += uri_suffix;
			
			//alert(uri);
			if(!auto){
				location.href = '#'+uri_suffix;
			}// else if(auto) {
			//	return false;
			//}
			//alert(uri);//return;
			// IMPORTANT - Need to use the $.get due to IE issues

			var IE = /*@cc_on!@*/false;
			if(!IE){
				// All browsers part from IE
				$('#product_list').load(uri);
				document.getElementById('catOverlay').style.display = 'none';
			} else {
				// Internet Explorer
				$.get(uri, function(data) {
					// Replaces product list HTML
					document.getElementById('product_list').innerHTML = data;				
					// Get Javascript & executes
					var regs = new RegExp("<script.*?>(.*?)<[^a-z]script>","img");
					test = data.replace(/\n/g,'').replace(/\r/g,'');
					var match = regs.exec(test);
					if (match != null && match.length > 1) {
						window.execScript(match[1]);
					}
				});
			}
			return true;
		}
		
    
	}

	function applyOverlay(id) {	   
		// FadeIn
		$("#catOverlay").css("opacity", 0).show().animate({
		  opacity: 0.8
		});
	}

	 function compareArray() {
		var c = new Array();
		c['brand'] = new Array();
		c['scale'] = new Array();
		c['colour'] = new Array();
		c['subject'] = new Array();
		
		for (var j = 0; brands.length > j; j++) {
			var found=false;
			for (var i = 0; brandsFiltered.length > i; i++)
				if (brandsFiltered[i].toLowerCase()==brands[j].toLowerCase()) {
					found=true;
					break;
				}
			if (!found) {
				c['brand'].push(brands[j]);
			}
		}
		
		for (var j = 0; colours.length > j; j++) {
			var found=false;
			for (var i = 0; coloursFiltered.length > i; i++)
				if (coloursFiltered[i].toLowerCase()==colours[j].toLowerCase()) {
					found=true;
					break;
				}
			if (!found) {
				c['colour'].push(colours[j]);
			}
		}
		
		 for (var j = 0; scale.length > j; j++) {
 			 var found=false;
			for (var i = 0; scaleFiltered.length > i; i++)
				if (scaleFiltered[i].toLowerCase()==scale[j].toLowerCase()) {
					found=true;
					break;
				}
			if (!found) {
				c['scale'].push(scale[j]);
			}
		} 
		
		 for (var j = 0; subject.length > j; j++) {
			 var found=false;
			 for (var i = 0; subjectFiltered.length > i; i++)
				 if (subjectFiltered[i].toLowerCase()==subject[j].toLowerCase()) {
					 found=true;
					 break;
				 }
			 if (!found) {
				 c['subject'].push(subject[j]);
			 }
		 }


		var tags = new Array();
		tags[0] = 'brand';
		tags[1] = 'scale';
		tags[2] = 'colour';
		tags[3] = 'subject';

		
		for(var t=0; t<tags.length; t++){
			try{
				var tag = tags[t];
				var tempOptions = document.getElementsByClassName(tag+'Filter');
				for(var i=0; i < tempOptions.length; i++){
					disabled = false;
					for(var x = 0; x < c[tag].length; x++) {
						if (c[tag][x].toLowerCase() == tempOptions[i].value.toLowerCase()) {
							tempOptions[i].disabled=true;
							tempOptions[i].nextSibling.className = "disabled";
							disabled = true;
						}
					}
					if(!disabled){
						tempOptions[i].disabled=false;
						tempOptions[i].nextSibling.className = "";
					}
				}
			} catch(err) {}
		}	
	}
	
	function hasher(cid,mid,q,auto,limitstart){
			
		var hash = '';
		var url = location.href;
		if(url.match(/#[^$]/g)){
			hash = url.replace(/^.*?#&*|\[\]/g, "");
		}
		//if(hash!=''){
			var vars = [], hash;
			var hashes = hash.split('&');
 
			for(var i = 0; i < hashes.length; i++){
				hashx = hashes[i].split('=');
				len = 0;
				try{
					len = vars[hashx[0]].length;
				} catch (e){}
				if(len==0){
					vars[hashx[0]] = [];
				}
				vars[hashx[0]].push(hashx[1]);
			}
			//alert(vars['colour']);
			var colour_len = 0;
			var scale_len = 0;
			var brand_len = 0;
			var subject_len = 0;
			try{ colour_len = vars['colour'].length; } catch(e){}
			try{ scale_len = vars['scale'].length; } catch(e){}
			try{ brand_len = vars['brand'].length; } catch(e){}
			try{ subject_len = vars['subject'].length; } catch(e){}
			
			var tags = new Array();
			tags[0] = 'brand';
			tags[1] = 'scale';
			tags[2] = 'colour';
			tags[3] = 'subject';
			uri_suffix = '';
			for(var t=0; t<tags.length; t++){
				var tag = tags[t];
				var tempOptions = document.getElementsByClassName(tag+'Filter');
				for(var i=0; i < tempOptions.length; i++){
					tempOptions[i].checked = false;
					var len = 0;
					try{ len = vars[tag].length; } catch(e){}
					if(len>0){
						for(var x=0; x<len;x++){
							if(vars[tag][x].replace('%20',' ')==tempOptions[i].value){
								tempOptions[i].checked = true;
							}
						}
					}
				}
			}
		//}
		
		
		var page = 1;
		try{
			if(vars['pg'][0]>1) page = vars['pg'][0];
		} catch (e){}
		
		if(updateProducts(cid,mid,q,auto,page,limitstart)){
			applyOverlay('');
		}
	}
 
/** 
  * This code executes when this js file is read, so needs to be placed at end of html page 
  * Makes the menu work in IE6
  */
(function(){
  if (document.all&&document.getElementById) {
    var navRoot = document.getElementById("lists");
    for (var i=0; i<navRoot.childNodes.length; i++) {
      var node = navRoot.childNodes[i];
      if (node.nodeName=="LI") {
        node.onmouseover=function() {
          this.className+=" hover";
        }
        node.onmouseout=function() {
          this.className=this.className.replace(" hover", "");
        }
      }
    }
  }
})();

