Event.observe(window, 'load', function(e) { refreshCheckout('refreshCheckout'); });
Event.observe(window, 'load', function(e) { refreshProducts(); });

//---------------------------------------------------------------//
window.onload = function()
{
	window.onscroll = repositionElements;
	window.onresize = repositionElements;
}

//---------------------------------------------------------------//	
function refreshProducts()
{
	/* Move back to the top of the page. */
	setScroll(0,0);
	
	new Ajax.Updater('products',
	  'inc/ajax/common.php', 
	  { method: 'post',
	  	parameters: { mode: 'refreshProducts',
	  				  storeid: document.getElementById('storeid').value,
	  				  tagid: document.getElementById('tagid').value,
	  				  category: document.getElementById('category').value,
	  				  department: document.getElementById('department').value,
	  				  size: document.getElementById('size').value,
	  				  color: document.getElementById('color').value },
	  	onSuccess: function (transport) {
	  		if (transport.responseText == ' ') {
	  			alert('There are no products that meet your filtered results. Please choose a new combination.');
	  			setFilter(document.getElementById('currAttribute').value, '', document.getElementById(document.getElementById('currAttribute').value))
	  		}
	  		repositionElements();
	  	}
    });
}

//---------------------------------------------------------------//	
function refreshCheckout()
{
	new Ajax.Updater('checkout',
	  'inc/ajax/common.php', 
	  { method: 'post',
	  	parameters: { mode: 'refreshCheckout' },
	  	onSuccess: function (transport) {
	  		if (transport.responseText == ' ') {
	  			document.getElementById('checkout').style.display='none';
	  		} else {
	  			document.getElementById('checkout').style.display='block';
	  		}
	  	}
    });
}

//---------------------------------------------------------------//	
function loadMoreProducts()
{
	new Ajax.Updater('products',
	  'inc/ajax/common.php', 
	  { method: 'post',
	  	parameters: { mode: 'refreshProducts',
	  				  storeid: document.getElementById('storeid').value,
	  				  tagid: document.getElementById('tagid').value,
	  				  category: document.getElementById('category').value,
	  				  department: document.getElementById('department').value,
	  				  size: document.getElementById('size').value,
	  				  color: document.getElementById('color').value },
	    insertion: Insertion.Bottom
    });
}

//---------------------------------------------------------------//	
function setFilter(attribute, value, obj) {
	
	document.getElementById('currAttribute').value = attribute;
	
	if (attribute == 'storeid') {
		
		// reset all other attributes
		if (document.getElementById('category').value) {
			document.getElementById(eval("'" + document.getElementById('category').value + "'")).style.backgroundColor = '';
			document.getElementById('category').value = '';
		}
		if (document.getElementById('department').value) {
			document.getElementById(eval("'" + document.getElementById('department').value + "'")).style.backgroundColor = '';
			document.getElementById('department').value = '';
		}
		if (document.getElementById('size').value) {
			document.getElementById(eval("'" + document.getElementById('size').value + "'")).style.backgroundColor = '';
			document.getElementById('size').value = '';
		}
		if (document.getElementById('color').value) {
			document.getElementById(eval("'" + document.getElementById('color').value + "'")).style.borderColor = eval("document.getElementById('" + document.getElementById('color').value + "').style.backgroundColor");
			document.getElementById('color').value = '';
		}
		
		document.getElementById(attribute).value = value;
			
	} else {
		
		// reset store attribute
		document.getElementById('storeid').value = '';	
		
		if (attribute == 'color') {
			var elm = eval("document.getElementById('" + document.getElementById(attribute).value + "')");
			if (elm) {
				elm.style.borderColor = eval("document.getElementById('" + document.getElementById(attribute).value + "').style.backgroundColor");
			}
			if (document.getElementById(attribute).value == value) {
				document.getElementById(attribute).value = '';
			} else {
				document.getElementById(attribute).value = value;
				obj.style.borderColor = '#45ad2a';
			}
		} else {
			if (document.getElementById(eval("'" + document.getElementById(attribute).value + "'"))) {
				document.getElementById(eval("'" + document.getElementById(attribute).value + "'")).style.backgroundColor = '';
			}
			if (document.getElementById(attribute).value == value) {
				document.getElementById(attribute).value = '';
			} else {
				document.getElementById(attribute).value = value;
				obj.style.backgroundColor = '#45ad2a';
			}	
		}
	}
	refreshProducts();
}

//---------------------------------------------------------------//	
function setProductOpacity(obj, opacity) 
{ 
	opacity = (opacity == 100)?99.999:opacity; 
	obj.style.filter = "alpha(opacity:"+opacity+")"; 
	obj.style.KhtmlOpacity = opacity/100; 
	obj.style.MozOpacity = opacity/100; 
	obj.style.opacity = opacity/100; 
}

//---------------------------------------------------------------//	
function setLeft(mode, tagid) {
	
	/* Move back to the top of the page. */
	setScroll(0,0);
	
	/* Show AJAX-loader while loading complete store list */
	if (mode == 'showStores' && document.getElementById('loading')) {
		document.getElementById('loading').style.display = 'block';
		document.getElementById('button').style.display = 'none';
	}
	
	if (mode == 'showContact') {
		document.getElementById('ratemymerch').hide();
	} else {
		document.getElementById('ratemymerch').show();
	}
	
	new Ajax.Updater('left',
	  'inc/ajax/common.php', 
	  { method: 'post',
	  	parameters: { mode: mode,
	  				  tagid: tagid }
	  });
}

//---------------------------------------------------------------//	
function setScroll(scrOfX, scrOfY)
{
	if( document.body ) 
	{
		document.body.scrollTop = scrOfY;
		document.body.scrollLeft = scrOfX;
	} 
	else if( document.documentElement ) 
	{
		document.documentElement.scrollTop = scrOfY;
		document.documentElement.scrollLeft = scrOfX;
	}
}

//---------------------------------------------------------------//	
function getScroll()
{
	var scrOfX = 0, scrOfY = 0, winHgt = 0;
	
	if( typeof( window.pageYOffset ) == 'number' ) 
	{
		scrOfY = window.pageYOffset;
		scrOfX = window.pageXOffset;
		winHgt = window.innerHeight;
	} 
	else if( document.body ) 
	{
		scrOfY = document.body.scrollTop;
		scrOfX = document.body.scrollLeft;
		winHgt = document.body.clientHeight;
	} 
	else if( document.documentElement ) 
	{
		scrOfY = document.documentElement.scrollTop;
		scrOfX = document.documentElement.scrollLeft;
		winHgt = document.documentElement.clientHeight;
	}
	
	return [ scrOfX, scrOfY, winHgt ];
}

//---------------------------------------------------------------//	
function repositionElements() 
{
	var scroll = getScroll();
	var dftftrpos = document.getElementById('left').offsetHeight + 193;
	var bodyhgt = document.getElementById('body').scrollHeight;
	
	if ((dftftrpos) < (scroll[1] + scroll[2] - 50)) { ftrpos = scroll[1] + scroll[2] - 50; }
	else { ftrpos = dftftrpos; }
	
	document.getElementById('footer').style.top = ftrpos;
	
	// window.status = " y:" + (scroll[1] + scroll[2]) + " h:" + bodyhgt;
	
	/* Look to see if the user has scrolled to the bottom of the page */
	// if (!document.getElementById('storeid').value)
	if ((scroll[1] + scroll[2]) >= bodyhgt) {
		/* If so, load up more products and also update the scrollArray */
		setTimeout("loadMoreProducts()", 0);
	}
}

//---------------------------------------------------------------//	
function checkform(of)
{
	// Test if DOM is available and there is an element called required
	if(!document.getElementById || !document.createTextNode) { return; }
	if(!document.getElementById('required')) { return; }

	// Define error messages and split the required fields
	var error=false;
	var errorClass='error';
	var reqfields=document.getElementById('required').value.split(',');

	// loop over required fields
	for(var i=0; i<reqfields.length; i++) {
		var f=document.getElementById(reqfields[i]);
		if(!f){continue;}
		if(f.value=='' && f.id!='email') { cf_adderr(f); error=true; }							
		if(f.id=='email' && !cf_isEmailAddr(f.value)) { cf_adderr(f); error=true; }					
	}
	
	return !error;

	function cf_adderr(o)
	{
		o.className=errorClass;
	}
	
	function cf_isEmailAddr(str) 
	{
	    return str.match(/^[\w-]+(\.[\w-]+)*@([\w-]+\.)+[a-zA-Z]{2,7}$/);
	}
}