/*!
 *
 * Copyright (c) 2008 UberPrints, Inc.
 *
 */

var global_priceGridWidth = 480;
var global_priceGridHeight = 335;

$(document).ready(
	initializePage
);

function initializePage() {

	$("a.itemPriceLink").click(function(event){
		
		event.preventDefault();
		this.blur();
		showPriceGrid(this.href, $(this) );
		return false;
	});

}

function showQtyUpdate(cart_index) {
	$('#div_sizes_'+cart_index).hide();
	$('#div_update_sizes_'+cart_index).show();
}

function hideQtyUpdate(cart_index) {
	$('#div_sizes_'+cart_index).show();
	$('#div_update_sizes_'+cart_index).hide();
}

function showPriceGrid(url, jqCaller) {

	var queryString = url.match(/\?(.+)/)[1];
	var params = parseQueryString( queryString );
	var pid = params["id"];

	if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
		$("body","html").css({height: "100%", width: "100%"});
		$("html").css("overflow","hidden");
		if (document.getElementById("UP_HideSelect") === null) {//iframe to hide select elements in ie6
			$("body").append("<iframe id='UP_HideSelect'></iframe><div id='pageOverlay'></div><div id='priceGridWin'></div>");
			$("#pageOverlay").click(closePriceGrid);
		}
	}else{//all others
		if(document.getElementById("overlay") === null){
			$("body").append("<div id='overlay'></div><div id='priceGridWin'></div>");
			$("#overlay").click(closePriceGrid);
		}
	}
	
	$("#priceGridWin").css({'min-height':global_priceGridHeight+"px",width:global_priceGridWidth+"px"});

	if(detectMacXFF()){
		$("#overlay").addClass("overlayMacFFBGHack");//use png overlay so hide flash
	}else{
		$("#overlay").addClass("overlayBG");//use background and opacity
	}
	
	if ( $('#price_grid_load').attr("id") ) {
		// do nothing for now
	} else {
		$("body").append("<div id='price_grid_load' align='center'><img src='/images/global/preload/load-med-bl.gif' /><br/>Loading...</div>");//add loader to the page
	}


	if (!document.getElementById('ajax_content')) {  // create only once
		$("#priceGridWin").append("<div id='priceGridHeader'><a href='#' onClick='closePriceGrid()'>x close window</a></div><div id='ajax_content' style='width:"+global_priceGridWidth+"px;'></div>");
	} else {
		$("#ajax_content").attr("innerHTML",'');
	}
	
	positionPriceGrid(jqCaller);
	$("#priceGridWin").css({display:"block"});

	showLoading();
	
	loadPriceGrid(pid,url,function() { $("#price_grid_load").hide() });
	
}

function loadPriceGrid(p_id,url,callback) {
	$("#ajax_content").load(url,callback);	
}

function showLoading() {
	var left = $("#priceGridWin").offset().left;
	var top = $("#priceGridWin").offset().top;
	var width = $("#priceGridWin").width();
	var height = $("#priceGridWin").height();
	$("#price_grid_load").css({left:parseInt(left) + parseInt(width)/2, top:parseInt(top) + parseInt(height)/2});
	$("#price_grid_load").show();
}

function closePriceGrid() {
	$("#priceGridWin").fadeOut("fast",function(){$('#priceGridWin,#overlay,#UP_HideSelect').trigger("unload").unbind().remove();});
	//$("#UP_load").hide();
	if (typeof document.body.style.maxHeight == "undefined") {//if IE 6
		$("body","html").css({height: "auto", width: "auto"});
		$("html").css("overflow","");
	}
	return false;
}

function positionPriceGrid(jqEl) {
	//alert("el: " + el);
	var left = jqEl.offset().left - global_priceGridWidth - 10;
	var top = jqEl.offset().top;

	$("#priceGridWin").css({left: parseInt(left,10) + 'px', top: parseInt(top,10) + 'px', width: global_priceGridWidth + 'px'});
	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#priceGridWin").css({marginTop: '-' + parseInt((global_priceGridHeight / 2),10) + 'px'});
	}
/*	
	$("#priceGridWin").css({marginLeft: '-' + parseInt((global_priceGridWidth / 2),10) + 'px', width: global_priceGridWidth + 'px'});
	if ( !(jQuery.browser.msie && jQuery.browser.version < 7)) { // take away IE6
		$("#priceGridWin").css({marginTop: '-' + parseInt((global_priceGridHeight / 2),10) + 'px'});
	}
*/
}

function parseQueryString ( query ) {
	if (!query) return {};
	var params = {};

	var pairs = query.split(/[;&]/);
	for ( var i = 0; i < pairs.length; i++ ) {
		var pair = pairs[i].split('=');
		if ( !pair || pair.length != 2 )
			continue;
		// unescape both key and value, replace "+" with spaces in value
		params[unescape(pair[0])] = unescape(pair[1]).replace(/\+/g, ' ');
   }
   return params;
}

function detectMacXFF() {
  var userAgent = navigator.userAgent.toLowerCase();
  if (/firefox[\/\s](\d+\.\d+)/.test(userAgent)) {
    var ffversion = new Number(RegExp.$1);
    if (ffversion < 3 && userAgent.indexOf('mac') != -1) {
      return true;
    }
  }
}