// JavaScript Document, really!

function in_array(needle, haystack, argStrict) {
    // http://kevin.vanzonneveld.net thank you!
    var found = false, key, strict = !!argStrict;
 
    for (key in haystack) {
        if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) {
            found = true;
            break;
        }
    }
 
    return found;
}

Array.prototype.remove = function (subject) {
	var r = new Array();
	for(var i = 0, n = this.length; i < n; i++)
	{
		if(!(this[i]==subject) && this[i] != "")
		{
			r[r.length] = this[i];
		}
	}
	return r;
}

var ColorSet = new Array();
var color_prefix = "color_";
var hint_id = "color_hint";
var color_field = "color_data";
var hint_obj;
function ToggleColor(color)
{
	if (in_array(color, ColorSet, false) == true) // found
	{
		ColorSet = ColorSet.remove(color);
		$("#" + color_prefix + color + " > div").removeClass("color_selector");
	}
	else
	{
		ColorSet.push(color);
		$("#" + color_prefix + color + " > div").addClass("color_selector");
	}
	
	//alert(ColorSet.join(",") + " and size is: " + ColorSet.length);
	document.forms[0].elements[color_field].value = ColorSet.join(",");
	//console.log(document.forms[0].elements[color_field].value);
}

function Show(id)
{
	$("#" + id).show();
}

function Hide(id)
{
	$("#" + id).hide();
}

function Toggle(id)
{
	$("#" + id).toggle();
}

function ShowColorHint(txt, color_id)
{
	if (hint_obj == null) hint_obj = $("#" + hint_id);
	hint_obj.text(txt);
	
	if (in_array(color_id, ColorSet, false) == false)
		$("#" + color_prefix + color_id + " > div").addClass("color_selector");
}

function HideColorHint(color_id)
{
	hint_obj.html("&nbsp;");
	if (in_array(color_id, ColorSet, false) == false)
		$("#" + color_prefix + color_id + " > div").removeClass("color_selector");
}

function SynchronizeColors()
{
	var val = document.forms[0].elements[color_field].value;
	colors = val.split(",");
	for (var i = 0, s = colors.length; i < s; i++)
	if (colors[i] != "")
		ToggleColor(colors[i]);
}

function ClearForm()
{
	document.forms[0].reset();
	document.forms[0].elements["price"].selectedIndex = 0;
	$(".color_holder > div").removeClass("color_selector");
	return false;
}

var win = new Array();
function showGallery(url, href)
{
	//if (win != null) win.focus();
	
	var href_parts = href.split("/")
	var img_id = href_parts[href_parts.length-1].split("_")[0];
	url += "&img=" + img_id;
	
	var wleft = (screen.width - 1000) / 2;
	var wtop = (screen.height - 700) / 2;
	
	win[win.length-1] =	window.open(url, "win", "width=1000,height=700,left="+wleft+",top="+wtop + ",scrollbars=yes");
	win[win.length-1].focus();
	
	return false;
}

function OpenMatchingService(url)
{
	var width = 760;
	var height = 630;
	
	var wleft = (screen.width - width) / 2;
	var wtop = (screen.height - height) / 2;
	var win_service;
	
	win_service = window.open(url, "win", "width="+width+",height="+height+",left="+wleft+",top="+wtop + ",scrollbars=yes");
	win_service.focus();
	
	return false;
}

// onload
$(function() { if (location.href.indexOf("filter") > 0) SynchronizeColors(); });

var add_products = new Array();


var basket = {
	server_address: null,
	api: "/res/api/index.php",
	basket_id: "basket",
	notification_get: "?add=item",
	
	init: function()
	{
		basket.api_url = basket.server_address + basket.api;
	},
	
	openwindow: function()
	{
		// open window
		var loc = location.href.split("?")[0];
		var url = loc + basket.notification_get;
		var wleft = (screen.width - 550) / 2;
		var wtop = (screen.height - 290) / 2;
		var win = window.open(url, win, "width=550,height=290,left="+wleft+",top="+wtop+",noresize=yes");
	},
	
	add_item: function()
	{		
		var form = document.forms[0];
		var item_id = form.elements["product"].value;
		
		var quantity = 1;
		
		if (form.elements["single_buy_q"] != null)
		{
			items = form.elements["single_buy_q"];
			for (var i = 0; i < items.length; i++)
				if (items[i].checked == true)
					quantity = items[i].value;
		}
		
		var query = {
			action: "add_item",
			item: item_id,
			single_buy_q: quantity,
			additional: add_products.join(",")
		}
		
		$.post(basket.api_url, query, basket.addItem_callback, "json");
		
		basket.openwindow();
		
		return false;
	},
	
	addItem_callback: function(data, success)
	{
		if (success == "success")
			if (data != "")
				basket.addItem_render(eval(data));
	},
	
	addItem_render: function(data)
	{
		if (data != null)
		{
			var html = "";
			if (data.product_count == 0)
				html += "<p><em>Пока пусто.</em>";
			else
				html += '<p class="basket"><strong>'+data.product_count+'&nbsp;тов.<br>'+data.order_total+'&nbsp;руб.</strong><br><a href="' + basket.server_address + '/order/">Купить!</a></p>';
			$("#" + basket.basket_id).html(html);
		}
	},
	devnull: "web 2.0!"
};

function update_single_buy(amount)
{
	var item_price = $("#item_price").attr("value");
	$("#position_price").html(item_price*amount);
}

var addp_id_tpl = "add_product_price_";
function update_total(addp_id, checked_status)
{
	var item_price = $("#item_price").attr("value");
	var item_quantity = $(".single_buy_q:checked").val();
	if (item_quantity == null) item_quantity = 1;
	
	var sum = item_price*item_quantity;
	
	if (addp_id != null)
		if (checked_status == false) add_products = add_products.remove(addp_id);
		else add_products[add_products.length] = addp_id;
	
	for (var i = 0, n = add_products.length; i < n; i++)
	{
		sum += parseInt($("#" + addp_id_tpl + add_products[i]).val());
	}
	
	
	$("#position_price").html(sum);
}


var binding_tooltip = "binding_info";
function ShowBinding(image, title)
{
	$("#" + binding_tooltip + " span").html(title);
	$("#" + binding_tooltip + " img").attr("src", image);
	$("#" + binding_tooltip ).removeClass("hidden");
}

function HideBinding()
{
	$("#" + binding_tooltip ).addClass("hidden");
}
