$(document).ready(function(){
	
	$("a.cut").click(function(){$(this).siblings(".hidden").removeClass("hidden");$(this).remove();return false;});
	$("div.select").children("ul").addClass("hidden");
	$("div.select").click(function(){$(this).children("ul").toggleClass("hidden");}).
					hover(function(){}, function(){$(this).children("ul").addClass("hidden");});
	$("select#ringSize").change(function(){update_finger_size()});update_finger_size();
	$("div.dPurchase").find("img").click(function(){purchase(this);});
	$(".print").click(function(){window.print();return false;});
	
	if($.fn.picker)
	{
//		start_polling(); //made it more difficult to use site
		start_picker();
		update_images();
	}

	$('.glossary_term_wide').cluetip({attribute: 'id', arrows: true, sticky: true, dropShadowSteps: 6, closePosition: 'title', leftOffset: 13, topOffset: -36, width: 350, cluezIndex: 101, closeText: "<img src='/images/X-box4.gif' alt='close' />", mouseOutClose: true});
 	$('.glossary_term').cluetip({attribute: 'id', arrows: true, sticky: true, dropShadowSteps: 6, closePosition: 'title', leftOffset: 13, topOffset: -36, width: 200, cluezIndex: 101, closeText: "<img src='/images/X-box4.gif' alt='close' />", mouseOutClose: true});
	$('.twirl_popup').cluetip({attribute: 'id', sticky: true, dropShadowSteps: 6, closePosition: 'title', width: 388, cluezIndex: 101, closeText: "<img src='/images/X-box4.gif' alt='close' />", onShow: function(){show_animation($.fn.ProductDetails.rel.animation);}});
 		
});

function show_animation(filename)
{
	var so = new SWFObject("/rotating_media/"+filename, "mymovie", "340", "293", "6", "#ffffff");
	so.useExpressInstall('/swfobject1-5/expressinstall.swf');
	so.write("flash-div");
	$("#cluetip-outer").addClass("cluetip-whitebg");
}

function purchase(o)
{
	var cmd = $(o).attr("alt");
	var button = $(o).attr("src");
	$(o).attr("src", "/images/ajax-loader.gif");
	var err = $("div.dPurchase").find("span.error");
	
	var script = purchase_script(cmd);
	var parms = { stock_id: $.fn.ProductDetails.state.product,
				  quantity: $.fn.ProductDetails.state.quantity || 1,
				  setting_id: current_setting() || $.fn.ProductDetails.state.setting,
				  carat_size: current_carat() || $.fn.ProductDetails.state.carat,
				  finger_size: $.fn.ProductDetails.state.finger_size || 0,
				  diamond_id: 0,
				  set_in: 0,
				  sort_order: 0};
	if($.fn.ProductDetails.rel.dia_cart_id)
		parms.dia_cart_id = $.fn.ProductDetails.rel.dia_cart_id;
	if($.fn.ProductDetails.rel.ring_cart_id)
		parms.ring_cart_id = $.fn.ProductDetails.rel.ring_cart_id;
		
	err.html("");
	
	if($.fn.ProductDetails.reqd.finger_size && parms.finger_size == 0)
	{
		err.html("Please Select ring size.");
		$(o).attr("src", button);
	}
	else if(script == "")
	{
		purchase_redirect(cmd, parms.ring_cart_id, parms.stock_id.replace(/D/,""));
	}
	else
	{
		$.post(script, parms, function(data){
			//alert(data);
			purchase_redirect(cmd, data);
		});
	}
}
function purchase_script(cmd)
{
	var script = "";
	switch(cmd)
	{
		case "button-buy-loose":
		case "button-buy-unset":
		case "button-add-diamond":
		case "button-add-to-ring":
		case "button-buy":
			script = "/cart/add_item.php";
			break;
		case "button-set-in-ring":
		case "button-select-ring":
			script = "/cart/add_merge.php";
			break;
		case "button-find-similar":
			script = "";
			break;
		//modify-order buttons
		case "button-add-loose-to-order":
		case "button-add-unset-to-order":
		case "button-add-diamond-order":
		case "button-add-to-ring-order":
		case "button-add-to-order":
			script = "/admin/orders_new/add_item.php";
			break;
		case "button-set-in-ring-order":
		case "button-select-ring-order":
			script = "/admin/orders_new/add_merge.php"
	}
	return script;
}
function purchase_redirect(cmd, cartid, similar)
{	
	var loc = "/shopping-cart/";
	switch(cmd)
	{
	//engagement
	case "button-buy-unset":
		loc = "/shopping-cart/";
		break;
	case "button-add-diamond":
		loc = "/search-for-diamonds/"+cartid;
	//	loc = "/buy-your-diamond/"+cartid;
		break;
	case "button-select-ring":
	case "button-buy"://rings - jewelry
		loc = "/shopping-cart/";
		break;	
	
	//diamonds	
	case "button-set-in-ring":
	case "button-buy-loose":
		loc = "/shopping-cart/";
		break;	
	case "button-add-to-ring":
		loc = "/find-a-ring/"+cartid;
		break;
	case "button-find-similar":
		if(cartid)
		{
//			loc = "/buy-your-diamond/"+cartid+"?similar_to="+similar;
			loc = "/search-for-diamonds/"+cartid+"?similar_to="+similar;
		}
		else
		{
//			loc = "/buy-your-diamond/?similar_to="+similar;
			loc = "/search-for-diamonds/?similar_to="+similar;
		}
		break;	
	
	//modify-order buttons
	case "button-set-in-ring-order":
	case "button-select-ring-order":
	case "button-add-loose-to-order":
	case "button-add-unset-to-order":
	case "button-add-to-order":
		loc = "/admin/orders_new/details.php?oid="+
			$.fn.ProductDetails.rel.session_oid;
		break;
	case "button-add-diamond-order":
		loc = "/buy-your-diamond/"+cartid;
		break;
	case "button-add-to-ring-order":
		loc = "/find-a-ring/"+cartid;
		break;
	}
	window.location = "http://www.danforthdiamond.com"+loc;	
}

function start_picker()
{
	$("#carat_slider").slider({handle: '.handle', 
								startValue: $.fn.picker.carat_pct, 
								steps: ($.fn.picker.carats.length - 1),
								change: function(e, ui) { $.fn.picker.carat_pct = ui.value; update_images(ui); }
		});
	$("#setting_slider").slider({handle: '.handle', 
								startValue: $.fn.picker.setting_pct, 
								steps: ($.fn.picker.settings.length-1),
								change: function(e, ui) { $.fn.picker.setting_pct = ui.value; update_images(ui); }
		});
		
}


function current_carat()
{
	if($.fn.picker)
		return ($.fn.picker.carats[pct_to_idx($.fn.picker.carat_pct, $.fn.picker.carats.length)] / 100.00) || 0;
	else
		return ($.fn.ProductDetails.state.carat / 100.00) || 0;
}
function current_setting()
{
	if($.fn.picker)
		return $.fn.picker.settings[pct_to_idx($.fn.picker.setting_pct, $.fn.picker.settings.length)] || 0;
	else
		return $.fn.ProductDetails.state.setting || 0;
}

function update_finger_size()
{
	var val = $("select#ringSize").val();
	if(val != "Select a Size")
	{
		$.fn.ProductDetails.state.finger_size = $("select#ringSize").val();
		$.get("/products/pdc.php", {cmd: "set_fs", 
									finger_size: $.fn.ProductDetails.state.finger_size}, 
									function(data){if(data == "success") if(window.console)console.log("Updated FS");});
	}
	else
		$.fn.ProductDetails.state.finger_size = 0;
}

function update_images( ui)
{
	var carat = pct_to_idx($.fn.picker.carat_pct, $.fn.picker.carats.length); //$("#carat_slider").sliderValue();
	var setting = pct_to_idx($.fn.picker.setting_pct, $.fn.picker.settings.length); //$("#setting_slider").sliderValue();
			
	$.get("/products/pdc.php", { cmd: "images",
								 product: $.fn.ProductDetails.state.product,
								 category: $.fn.ProductDetails.state.category,
								 carat_size: $.fn.picker.carats[carat],
								 setting: $.fn.picker.settings[setting]
								}, function(data){
		var images = eval("("+data+")");
		var dImages = "";
		var i = 0;
		for(i = 0; i < images.length; i++)
		{
			dImages += "<img alt=' ' src='/product_images/"+images[i]+".jpg' />";
			//dImages += "<img alt='"+images[i]+"' src='/product_images/"+images[i]+".jpg' />";
		}
		
		$("div.dImages").html(dImages);
		
		//push history
		//push_state(build_state_fragment());
	});
}

function push_state(fragment)
{
	window.location.hash = fragment;
}
function build_state_fragment()
{
	var carat = pct_to_idx($.fn.picker.carat_pct, $.fn.picker.carats.length); 
	var setting = pct_to_idx($.fn.picker.setting_pct, $.fn.picker.settings.length); 
	$.fn.ProductDetails.fragment = $.fn.picker.carats[carat]+"|"+$.fn.picker.settings[setting];
	return $.fn.ProductDetails.fragment;
}
function load_state_fragment()
{
	var fragment = window.location.hash.replace(/#/, "");
	if(fragment != $.fn.ProductDetails.fragment)
	{
		var tokens = fragment.split("|");
		if(tokens[0] && tokens[0] != "")
		{
			$.fn.picker.carat_pct = val_to_pct(tokens[0], $.fn.picker.carats);
			var carat =  val_to_idx(tokens[0], $.fn.picker.carats);
			if(window.console) console.log("carat "+$.fn.picker.carat_pct);
			
			//$("#carat_slider").sliderMoveTo($.fn.picker.carat_pct);
			$("#carat_slider").sliderMoveTo(carat);
			
		}
		if(tokens[1] && tokens[1] != "")
		{
			$.fn.picker.setting_pct = val_to_pct(tokens[1], $.fn.picker.settings);	
			var setting = val_to_idx(tokens[1], $.fn.picker.settings);	
			if(window.console) console.log("setting "+$.fn.picker.setting_pct);
			
			//$("#setting_slider").sliderMoveTo($.fn.picker.setting_pct);
			$("#setting_slider").sliderMoveTo(setting);
		}
	}
}
function start_polling()
{	
	window.setInterval("poll_fragment()", 1000);
}
function poll_fragment()
{
	
	if(window.location.hash && $.fn.ProductDetails.fragment != window.location.hash.replace(/#/, ""))
	{
		load_state_fragment();
		update_images();
	}

	return true;
}

function pct_to_idx(pct, len)
{
	return Math.round((len-1) * (pct)/100 );	
}
function idx_to_pct(idx, len)
{
	var t;
	if(len > 1)
		len --;
	t = 100 * (idx) / (len);
	return t;
}
function val_to_pct(val, arr)
{
	var idx = 0;
	var i = 0;
	for(i = 0; i < arr.length; i++)
	{
		if(arr[i] == val)
		{
			idx = i;
		}
	}
	return idx_to_pct(idx, arr.length);
}
function val_to_idx(val, arr)
{
	var idx = 0;
	var i = 0;
	for(i = 0; i < arr.length; i++)
	{
		if(arr[i] == val)
		{
			idx = i;
		}
	}
	return idx;
}

