var body_el, head_el;
var connectInterval = false;

document.observe('dom:loaded', commonLoad);
Event.observe(window, 'load', windowLoad);

Prototype.Browser.IE6 = Prototype.Browser.IE && parseFloat(navigator.appVersion.split("MSIE")[1]) >= 6 && parseFloat(navigator.appVersion.split("MSIE")[1]) < 7;
var cookies = new CookieJar({
	expires: 3600,
	path : '/'
});

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.0
  var p,i,x;
  if(!d) d=document;
  if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && document.getElementById) x=document.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
  if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

function commonLoad()
{
	body_el = $$('body').first();
	head_el = $$('head').first();
	//script_url = $('prototype').src.replace(/prototype(.*)\.js.*$/, '');
	//base_url = script_url.replace(/^(.+\/)([^/]+\/)$/, '$1');
}

function windowLoad()
{
	changeElements();
	relPopup();
	if($('dSWhiteBottom')) { // add drop shadow to category page
		$('dSWhiteBottom').innerHTML = '<img src="' + base_url + 'assets/drop-shadow-bottom.png" alt="" />';
	}
	//correctPNG();

	basketOverlayStart();

	if($('connect_bench'))
	{
		Event.observe('connect_bench', 'mouseover', connectShow);
		Event.observe('connect_bench', 'mouseout', connectHide);
		Event.observe('connect_link', 'mouseover', connectShow);
		Event.observe('connect_link', 'mouseout', connectHide);
	}
}

function changeElements() { // replace necessary submit elements with nicer versions since we can
	if($('country_update')) {
		$('country_update').hide(); // onchange event will take care of form submission
	  }
	if($('search_submit')) {
		$('search_submit').innerHTML='<a href="javascript:document.forms[\'search\'].submit();">GO</a>';
	}
}

function relPopup() { // standards compliant popups
	// use rel="popup" instead of target attribute on anchor links
	if (!document.getElementsByTagName) return;
	var anchors = document.getElementsByTagName("a");
	for (var i=0; i<anchors.length; i++) {
		var anchor = anchors[i];
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "popup") anchor.target = "_blank";
	}
}

//function correctPNG() {
//	var arVersion = navigator.appVersion.split("MSIE");
//	var version = parseFloat(arVersion[1]);
//	if ((version >= 5.5) && (document.body.filters) && (version < 7))
//	{
//		for(var i=0; i<document.images.length; i++)
//		{
//			var img = document.images[i];
//			var imgName = img.src.toUpperCase();
//			if (imgName.substring(imgName.length-3, imgName.length) == "PNG")
//			{
//				var imgID = (img.id) ? "id='" + img.id + "' " : "";
//				var imgClass = (img.className) ? "class='" + img.className + "' " : "";
//				var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' ";
//				var imgStyle = "display:inline-block;" + img.style.cssText;
//				if (img.align == "left") imgStyle = "float:left;" + imgStyle;
//				if (img.align == "right") imgStyle = "float:right;" + imgStyle;
//				if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle;
//				var strNewHTML = "<img src=\"/assets/spacer.gif\" " + imgID + imgClass + imgTitle
//				+ " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
//				+ "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
//				+ "(src=\'" + img.src + "\', sizingMethod='scale');\" />";
//				img.outerHTML = strNewHTML;
//				i = i-1;
//			}
//		}
//	}
//}

function MM_preloadImages() { //v3.0
	var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
	var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
	if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

var imgSwap = function(opt){
  var o = opt;
  var Rollover = function() {
	$A(o.selector).each(function(s) {
	  $$(s).each(
		function(i) {
		  var os = i.src, ni = document.createElement('img');
		  $(i).observe('mouseout', function(e){i.src = os;});
		  ni.src = o.srcFunction(i,o);
		  i.observe('mouseover', function(e){i.src = ni.src;});
		}
	  );
	});
  };
	Event.observe(window, 'load', Rollover);
}
imgSwap({
  selector : ['img.rollover'],
  srcFunction : function(i, o) {
	return i.src.replace(/(.*)\.(jpg|gif|png)$/i, "$1-on.$2");
  }
});

function MM_openBrWindow(theURL,winName,features) { //v2.0
	TheNewWin = window.open(theURL,winName,features);
	setTimeout('TheNewWin.focus();',250);
}

function disableForm(theform) {
		if (document.all || document.getElementById) {
			for (i = 0; i < theform.length; i++) {
				var tempobj = theform.elements[i];
				if (tempobj.type.toLowerCase() == "submit") {
					tempobj.disabled = true;
				}
			}
			//alert("Your form has been submitted.	Notice how the submit and reset buttons were disabled upon submission.");
			return true;
		}
		else {
			//alert("The form has been submitted.	But, since you're not using IE 4+ or NS 6, the submit button was not disabled on form submission.");
			return true;
		}
}

function refreshForm()
{
	var form_id = arguments.length >= 1 ? arguments[0] : false;
	var hidden_field = arguments.length >= 2 ? $(arguments[1]) : false;
	var hidden_field_val = arguments.length >= 3 ? arguments[2] : 'update';

	if(hidden_field != undefined && hidden_field != false)
	{
		hidden_field.value = hidden_field_val;
	}
	//Submit first form we find if we don't supply a form_id
	if(form_id == false)
	{
		$$('form').first().submit();
	}
	else
	{
		$(form_id).submit();
	}
}


function basketOverlayStart()
{
	if(typeof head_el == 'undefined')
	{
		setTimeout('basketOverlayStart()', 500);
		return;
	}

	if(!$('miniBasketDiv'))
	{
		return;
	}

	//Add basket overlay to first link in div
	Event.observe($$('#miniBasketDiv a').first(), 'click', basketOverlay);

	//Create opacity background
	var div = new Element('div');
	div.id = 'basketOverlay';
	div.hide();
	div.setOpacity(0.9);
	body_el.insert({top: div});
	Event.observe(div, 'click', basketOverlay);

	//Create container for basket content
	var div = new Element('div');
	div.id = 'basketOverlayContent';
	div.hide();
	body_el.insert({top: div});

	//If IE6 need to add function to move background when scrolling since not CSS compliant
	if(Prototype.Browser.IE6)
	{
		document.observe('mousemove', basketOverlayMove);
	}
}

//Switch the overlay on/off
function contentOverlay(e, url)
{
	if(typeof e != 'undefined')
	{
		e.stop();
	}
	var overlay = $('basketOverlay');
	var overlay_content = $('basketOverlayContent');

	//If currently hidden, show content
	if(overlay.getStyle('display') == 'none')
	{
		selectMenuHide();
		//Go get new version of the basket
		new Ajax.Updater(overlay_content, base_url + url, {
			onComplete : basketOverlayUpdate
		});
	}
	//IE6 has select menu issues, hide the select menus temporarily
	else
	{
		overlay.toggle();
		overlay_content.toggle();
		selectMenuShow();
	}
}

function basketOverlay(e)
{
	contentOverlay(e, 'shopping_bag/?ajax=yes&overlay=yes');
}

//Move the overlay in IE6
function basketOverlayMove()
{
	$('basketOverlay').setStyle({top: document.viewport.getScrollOffsets().top + 'px'});
}

function basketOverlayUpdate ()
{
	var overlay = $('basketOverlay');
	var overlay_content = $('basketOverlayContent');

	overlay.toggle();
	overlay_content.toggle();
	selectMenuHide.defer();

	if(Prototype.Browser.IE6)
		correctPNG();

	$('basketOverlayContent').select('input[type=image]').each(function(item){
		Event.observe(item, 'mouseup', basketOverlaySubmitImage);
	});
	$('basketOverlayContent').select('select').each(function(item){
		Event.observe(item, 'change', basketOverlaySubmit);
	});
	$('basketOverlayContent').select('form').each(function(item){
		Event.observe(item, 'submit', basketOverlaySubmit);
	});
}

//Create hidden act field based on image submit button clicked
function basketOverlaySubmitImage(e)
{
	var el = e.element();
	var hidden = new Element('input');
	hidden.type = 'hidden';
	hidden.name = 'act';
	hidden.value = el.name.replace(/^act_/, '');
	el.up('form').insert({bottom: hidden});
}

function basketOverlaySubmitSelect(e)
{
	e.element().up('form').submit();
}

function basketOverlaySubmit(e)
{
	var el = e.element();
	if(el.request)
	{
		var act = el.getInputs('hidden', 'act').last();
		if(act.value == 'checkout')
		{
			return;
		}
		el.request({
			parameters : {
				ajax : 'yes',
				overlay : 'yes'
			},
			onSuccess : function(response){
				miniBasket.updateBasket();
				$('basketOverlayContent').update(response.responseText);
				if(Prototype.Browser.IE6)
					correctPNG();
				$('basketOverlayContent').select('input[type=image]').each(function(item){
					Event.observe(item, 'mouseup', basketOverlaySubmitImage);
				});
				$('basketOverlayContent').select('select').each(function(item){
					Event.observe(item, 'change', basketOverlaySubmit);
				});
				$('basketOverlayContent').select('form').each(function(item){
					Event.observe(item, 'submit', basketOverlaySubmit);
				});
			}
		});
	}
	e.stop();
}

function connectShow()
{
	$('connect_bench').show();
	if(connectInterval != false)
	{
		clearInterval(connectInterval);
		connectInterval = false;
	}
	connectBenchShow = true;
}

var hideConnect = 0;
Event.observe(window, 'load', function(el) {
	$$('#connect_bench input').each(function(e) {
		Event.observe(e, 'focus', function() {
			hideConnect = 1;
		});
	});
	$$('#connect_bench input').each(function(e) {
		Event.observe(e, 'blur', function() {
			hideConnect = 0;
		});
	});
});


function connectHide()
{
		if(!hideConnect) {
			connectInterval = Element.hide.delay(1, 'connect_bench');
		}
}

function selectMenuHide()
{
	if(Prototype.Browser.IE6)
	{
		$$('select').each(function(item){
			item.setStyle({visibility: 'hidden'});
		});
	}
}

function selectMenuShow(e)
{
	if(Prototype.Browser.IE6)
	{
		$$('select').each(function(item){
			item.setStyle({visibility: 'visible'});
		});
	}
}




function debug(text)
{
	$('debug').update($('debug').innerHTML += text + "<br/>");
}

function randomString(length)
{
	var chars = 'abcdefghijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ';
	var str = '';
	for(var i = 0; i < length; i++)
	{
		str += chars.substr(Math.floor(Math.random() * chars.length), 1);
	}
	return str;
}

/*
 * Orginal: http://adomas.org/javascript-mouse-wheel/
 * prototype extension by "Frank Monnerjahn" <themonnie@gmail.com>
 */
Object.extend(Event, {
	mouseWheelUp: function(event){
		return event.wheel() > 0;
	},
	mouseWheelDown: function(event){
		return event.wheel() < 0;
	},
	wheel:function (event){
		var delta = 0;
		if (!event) event = window.event;
		if (event.wheelDelta) {
			delta = event.wheelDelta/120;
			if (window.opera) delta = -delta;
		} else if (event.detail) { delta = -event.detail/3;	}
		return Math.round(delta); //Safari Round
	}
});

// handle default values on input fields
Event.observe(window, 'load', function() {
	var default_values = new Array();
	$$("input.replace-default").each(function(s) {
		$(s).observe('focus', function() {
			if (!default_values[s.id]) {
				default_values[s.id] = s.value;
			}
			if (s.value == default_values[s.id]) {
				s.value = '';
				s.removeClassName("replace-default");
			}
			$(s).observe('blur', function() {
				if (s.value == '') {
					s.value = default_values[s.id];
					s.addClassName("replace-default");
				}
			});
		});
	});
});

// copy values from one address fieldset to another
document.observe("dom:loaded", function() {
	$$("#contentCheckout input#sameas").each( function(el) {
		Event.observe(el, 'click', function(e) {
			var form_jq = "#register";
			if (this.checked) {
				if (addressCopier.checkFilled(form_jq)) {
					addressCopier.copyValues(form_jq);
					addressCopier.deliveryContainer(form_jq).addClassName("same");
					addressCopier.disableDeliveryAddress(form_jq);
				} else {
					this.checked = false;
					addressCopier.createFlash();
				}
			} else {
				addressCopier.deliveryContainer(form_jq).removeClassName("same");
				addressCopier.enableDeliveryAddress(form_jq);
			};
		}.bindAsEventListener(el));
		if (el.checked) {
			addressCopier.deliveryContainer(form_jq).addClassName("same");
			addressCopier.disableDeliveryAddress(form_jq);
		};
		Event.observe(el, 'blur', function(e) {
			addressCopier.removeFlash();
		}.bindAsEventListener(el));
	});
});

var addressCopier = {
	checkFilled: function(jq) {
		var result;
		$$('form' + jq).each( function(el) {
			result=true;
			el.select(".billing input:not(.optional), .billing select:not(.optional)").each( function(el) {
				if ($F(el) == "") {
					result=false;
				};
			});
		});
		return result;
	},
	copyValues: function(jq){
		this.transfer(this.collectValues(jq));
	},
	collectValues: function(jq) {
		return $$("form" + jq + " .billing input, form" + jq + " .billing select");
	},
	transfer: function(originals) {
		originals.each( function(el) {
			if ($(el.readAttribute('id')+"1")) {
				$(el.readAttribute('id')+"1").value = el.getValue();
			};
		});
	},
	disableDeliveryAddress: function(jq) {
		this.deliveryContainer(jq).select("input, select").each( function(el) {
			el.disable();
		});
	},
	enableDeliveryAddress: function(jq) {
		this.deliveryContainer(jq).select("input, select").each( function(el) {
			el.enable();
		});
	},
	deliveryContainer: function(jq) {
		if ($$("form" + jq + " .delivery")) {
			return $$("form" + jq + " .delivery")[0];
		} else {
			return false;
		}
	},
	createFlash: function() {
		if (!$('flash_copy_billing')) {
			var flash = new Element('p', { 'id': 'flash_copy_billing' }).update("Please make sure billing address is complete.");
			$$('.registeredSameAs').invoke('insert', {after: flash});
		};
		new Effect.Highlight('flash_copy_billing');
	},
	removeFlash: function() {
		if ($('flash_copy_billing')) {
			$('flash_copy_billing').remove();
		};
	}
};

function checkout1Reload()
{
	window.location.reload();
}

var is_open = 0;

function categorySlideDown(e) {
	parent_el = Element.up(e);

	collapseAll();
	if(is_open) {
		applyClassName(parent_el);
		e.next().hide();
		is_open = 0;
	} else {
		applyClassName(parent_el);
		e.next().show();
		e.up('ul.parentCat').show();
		is_open = 1;
	}
}

function applyClassName(el) {
	if(is_open) {
		Element.removeClassName(el, 'active');
	} else {
		Element.addClassName(el, 'active');
	}
}

function collapseAll() {
	$$('#catNav ul.parentCat').each(function(e) {
		e.hide();
	});
	$$('#catNav ul li ul').each(function(e) {
		is_open = 0;
		e.hide();
		Element.removeClassName(Element.up(e), 'active');
	});
}

function stringToXML(str)
{
	try{
		return (new DOMParser()).parseFromString(str, "text/xml");
	}
	catch(e)
	{
		var doc = new ActiveXObject("Microsoft.XMLDOM");
		doc.async="false";
		doc.loadXML(str);
		return doc;
	}
}

Event.observe(window, 'load', function() {
	$$('#catNav>ul>li>a.subCats').each(function(el) {
		Event.observe(el, 'click', function(e) {
			categorySlideDown(el);
			setScrollerHeight();
			Event.stop(e);
		});
	});
	$$('#catNav h2').each(function(el){
		Event.observe(el, 'click', function(e) {
			var el = e.element();
			el.up('#catNav').select('.parentCat').invoke('hide');
			el.up().up().nextSiblings().first().show();
			e.stop();
		});
	});
});

function setScrollerHeight() {
	var height = $('catNav').getHeight();
	//IE6 doesn't support min-height in CSS
	if(Prototype.Browser.IE6 && height < 398)
	{
		height = 398;
	}
	if($('product_scroller'))
	{
		$('product_scroller').setStyle({height : height + 'px'});
	}
	if($('dSWhiteBottom'))
	{
		$('dSWhiteBottom').setStyle({top: (height - 11) + 'px'});
	}
}

//function correctPNG() {
//               var arVersion = navigator.appVersion.split("MSIE")
//               var version = parseFloat(arVersion[1])
//               if ((version >= 5.5) && (document.body.filters) && (version < 7))
//               {
//                              for(var i=0; i<document.images.length; i++)
//                              {
//                                             var img = document.images[i]
//                                             var imgName = img.src.toUpperCase()
//                                             if (imgName.substring(imgName.length-3, imgName.length) == ("PNG" || "png"))
//                                             {
//                                                            var imgID = (img.id) ? "id='" + img.id + "' " : ""
//                                                            var imgClass = (img.className) ? "class='" + img.className + "' " : ""
//                                                            var imgTitle = (img.title) ? "title='" + img.title + "' " : "title='" + img.alt + "' "
//                                                            var imgStyle = "display:inline-block;" + img.style.cssText
//                                                            if (img.align == "left") imgStyle = "float:left;" + imgStyle
//                                                            if (img.align == "right") imgStyle = "float:right;" + imgStyle
//                                                            if (img.parentElement.href) imgStyle = "cursor:hand;" + imgStyle
//                                                            var strNewHTML = "<span " + imgID + imgClass + imgTitle
//                                                            + " style=\"" + "width:" + img.width + "px; height:" + img.height + "px;" + imgStyle + ";"
//                                                            + "filter:progid:DXImageTransform.Microsoft.AlphaImageLoader"
//                                                            + "(src=\'" + img.src + "\', sizingMethod='scale');\"></span>"
//                                                            img.outerHTML = strNewHTML
//                                                            i = i-1
//                                             }
//                              }
//               }
//}


$j(document).ready(function(){
      $j("#press_menu").hide();
      $j("#press_dd_switch").click(function(){
                    $j("#press_menu").slideToggle("slow");
      });

      //$j("#test").pngFix();

   


});
