jQuery.fn.log = function (msg) {try{console.log("%s: %o", msg, this);} catch(e){}	return this;}
log = function (msg, obj) { try{ console.log("%s: %o", msg, obj);} catch(e){}}
cur_lang = "de";
prepath = "";
last_buy_path = "";
$(document).ready(function(){

	$("#en").click(function(){
		alert(document.location);
		return false;
	});

	$(".popup .close").click(function(){$(this).parent().parent().parent().hide(); $("#shadow").hide();});
	$(".popup .submit").click(function(){$(this).parent().parent().parent().find("form").submit();});


	$(document).keypress(function(e){if(e.keyCode==27) {$(".popup, .info-popup").hide(); $(".shadow, .iframe, #shadow").remove(); $(".jqiclose, .comment_close, .forgot_close, .cheaper_close").click();}});
	$(".close").click(function(){ $(".popup, .info-popup").hide(); $(".shadow, .iframe").remove(); $(".jqiclose, .comment_close, .forgot_close, .cheaper_close").click();});


	$("input.pair").change(check_pair);

	$(".switch img").click(switchit);
	$("#manuId").change(get_models_list);
	$("#modId").change(get_cartypes_list);
	$("#carId").change(function(){

		if($(this).val()!="") {


			$("#popup_update .ttl").html("Daten werden gesendet.");
			$("#popup_update .txt").html("Bitte warten...");
			show_popup("popup_update");

			$("#top-select").attr("action", "/catalog/parts/").submit();
		}
	});

	$(".basket_show").click(show_basket_popup);
	$(".basket_btn").click(basket_add)
	$(".del_btn").click(basket_del)
	$(".actualize").click(actualize)
	$(".icon-info").click(kba_show);
	$("#kba-info").mouseout(kba_hide).click(kba_hide);

	$("#weiter").click(function(){if(pageTracker) pageTracker._trackPageview('/basket/back2shop'); history.back();});
	$(".photo .img").click(show_large);


	$(".dec, .inc").click(change_quantity);

	$("#Login-top").defaultvalue("E-Mail");
	$("#Password-top_fake").defaultvalue("Kennwort").focus(function(){$("#Password-top_fake, #Password-top").toggle();$("#Password-top").focus();});
	$("#Password-top").blur(function(){if($("#Password-top").val()!="") return; $("#Password-top_fake, #Password-top").toggle(); $("#Password-top_fake").val("Kennwort")});
	$("#btn-exit").click(do_logout);


	$(".LeftInput input, .RightInput input").keypress(check_numbers);
	$(".LeftInput input").keyup(check_kba1);
	$(".RightInput input").keyup(check_kba2);


	$(".forgot").click(function(){show_popup("popup_forgot"); return false;});


	$("#btn-login-top").click(function(){$("#login_top").submit();});

	//------------forgot form


	var options = {
		beforeSubmit:  function()	{ return $("#forgot_form").valid(); },
		success:  remind_ok,
		error:      function(XMLHttpRequest, textStatus, errorThrown) { alert("Error processing the request")},
		url: '/register/?mode=json_do_remind',
		type:      "post",
		dataType:  "json"
	};


	$("#forgot_form").ajaxForm(options).validate({
		errorPlacement: function(error, element) {

		},

		rules: {
			Email : {required: true,	email: true}
		}
	});


	//------------search form




	$("#search_form").validate({
		errorPlacement: function(error, element) {},
		rules: {articleNo : {required: true}}
	});

	//-------- TOP  login form
	var options = {
		beforeSubmit:  function()	{


			if (!$("#login_top").valid()) return false;

			$("#popup_update .ttl").html("Anmeldung.");
			$("#popup_update .txt").html("Bitte warten...");

			show_popup("popup_update");
			return true;

		},
		success:  top_login_ok,
		error:      function(XMLHttpRequest, textStatus, errorThrown) { alert("Error processing the request")},
		url: '/register/?mode=json_do_login',
		type:      "post",
		dataType:  "json"
	};


	$("#login_top").ajaxForm(options).validate({
		errorPlacement: function(error, element) {

		},

		rules: {
			Email : {required: true,	email: true},
			Password: {required: true}
		}
	});



});


function check_pair()
{
	var val = parseInt($(this).val());
	if(val/2!=Math.floor(val/2)) $(this).val(val+1);
}

function remind_ok(data)
{
	$("#popup_forgot ,#shadow").hide();
}

function top_login_ok(data)
{

	if(data["error"]) {

		$("#popup_update .ttl").html("Fehler!");
		$("#popup_update .txt").html(data["error"]);

		return;
	}

	data = data["profile"];

	$("#customer_name").html(data["rVorname"] + " " + data["rName"]);
	fill_info(data);
	$("#login-frm, #profile-info").toggle();
	document.location = "/profile/";

}



function do_logout()
{
	$.ajax({
		type: "GET",
		url: '/register/?mode=json_do_logout',
		dataType: 'json',
		success: function(){$("#login-frm, #profile-info").toggle();}
	});


}


function check_kba1(e){



	if((e.which==13 || e.which>32) && $(this).val().length==4){$(".RightInput input").focus();}
}
function check_kba2(e){



	if((e.which==13 || e.which>32)  && $(this).val().length==3 && $(".popup:visible").length==0){


		$("#popup_update .ttl").html("Schlusselnummer (KBA-Nr.) wird uberpruft");
		$("#popup_update .txt").html("Bitte warten...");
		show_popup("popup_update");
		if(pageTracker) pageTracker._trackPageview('/select/check_kba');


		$.ajax({
			type: "POST",
			url: '/vehicle/?mode=json_check_kba',
			dataType: 'json',
			data: "kba1="+$(".LeftInput input").val()+"&kba2="+$(".RightInput input").val(),
			timeout: 1000*180,
			error: function (){

				$("#popup_update .ttl").html("Fehler!");
				$("#popup_update .txt").html("Es wurde kein Fahrzeug mit eingegebener KBA-Nummer gefunden.<br>Bitte geben Sie gultige KBA-Nummer ein.");
				if(pageTracker) pageTracker._trackPageview('/select/invalidkba');
				setTimeout (function(){hide_popup("popup_update", true);}, 2000);

			},
			success: function (data) {

				if(data.length==1)
				{
					var car = data[0];

					if(pageTracker) pageTracker._trackPageview('/select/kba');
					document.location = "/catalog/parts/?manuId="+car["manuId"]+"&modId="+car["modId"]+"&carId="+car["carId"];
				}
				else
				$("#kba-select").attr("action", "/vehicle/").submit();


			}

		});

	}
}

function check_numbers(e)
{
	return true;

	if(e.which<20 || (e.which>=48 && e.which<=57)){}
	else
	return false;

}



function fill_info(data)
{

	for(d in data)
	{
		$("."+d+"_info").html(data[d]);
		$(".popup *[name='"+d+"']").val(data[d]);

		//log(d, data[d]);

		if((d=="PaymentCost" || d=="pfand")) {if(parseFloat(data[d])==0) $("."+d+"_info").parent().parent().hide();  else $("."+d+"_info").parent().parent().show();}
		if(d=="pfand") { if(parseFloat(data[d])==0) $("#pfand_comment").hide();  else $("#pfand_comment").show();}
		if(d=="delivery") { if(parseFloat(data[d])!=0) $("."+d+"_info").html(""+ data[d] + " &euro;"); else $("."+d+"_info").html(Lang.get("Free shipment"));};

		if(d=="rLand")
		{
			if(data[d]!="Deutschland")
			{

			}
			else
			{
				$(".pay :hidden").show();
			}
		}

		if(d=="sum" )
		{
			if(parseFloat(data[d])>=250) {

				$(".delivery .line").hide();
				$(".delivery .for-free, .for-free-cell").show();
				$(".DeliveryCost_info").parent().parent().hide();
			}
			else
			{
				$(".delivery .line").show();
				$(".delivery .for-free, .for-free-cell").hide();
				$(".DeliveryCost_info").parent().parent().show();

			}
		}


	}

}

function show_popup(name)
{

	//if(name=="popup_update") return;

	$(".popup, #shadow").hide();

	x = Math.floor($(window).width()/2)+70;
	y = Math.floor($(window).height()/2);

	y += $(window).scrollTop();

	if($("#shadow").length==0) $("#body").append('<div id="shadow"></div>');


	$("#"+name).css("left", x).css("top", y).show();
	w = $("#"+name).width();
	h = $("#"+name).height();


	$("#shadow").width(w).height(h).css("left", x+10).css("top", y+10).show();
}


function hide_popup(name, fade)
{

	if(fade)
	{
		$("#"+name+", #shadow").fadeOut("fast");
	}
	else
	{

		$("#"+name+", #shadow").hide();

	}

}


function change_quantity()
{
	if(pageTracker) pageTracker._trackPageview('/basket/'+$(this).attr("className"));
	var op = ($(this).attr("className")=="inc") ? 1 : -1;

	var inp = $(this).parent().parent().find("input");

	val = 	parseInt($(inp).val());
	if(isNaN(val)||val<1) val = 1;
	val += op;
	if(val<1) val = 1;

	$(inp).val(val).attr("op", $(this).attr("className"));
	actualize();
}


function show_large()
{
	$(".large").hide();
	var dim = $(this).position();

	$("#l"+$(this).attr("id")).css("top", dim["top"]).css("left", dim["left"]).show().click(function(){$(this).hide();});

}

function kba_show()
{
	var pos = $(this).position();
	var pos2 = $(".MainDiv").position();
	var left = pos.left+pos2.left+25;
	var top = pos.top-50;
	$("#kba-info").css("top", top).css("left", left).show();
}

function kba_hide()
{
	$("#kba-info").fadeOut("fast");
}


function actualize()
{
	var data = "";

	$("table.basket tr[id]").each(function(){
		id = this.id.substr(2);
		data+="&id["+id+"]="+$("#b_"+id).val();
		$("#b_"+id).parent().append('<img src="img/spinner.gif" class="updating">');
	})

	log(data);

	$.ajax({
		type: "POST",
		url: prepath+'basket/?mode=json_update_items',
		dataType: 'json',
		data: data,
		timeout: 1000*180,
		success: display_basket_update

	});

}

function display_basket_update(data)
{
	if(data["out_of_stock"]>0)
	{

		$("#popup_update .ttl").html(Lang.get("Error"));
		$("#popup_update .txt").html(Lang.get("Some items can not be updated because specified ammount is to high"));
		show_popup("popup_update");
		setTimeout (function(){hide_popup("popup_update", true);}, 2000);


	}


	$.each(data["items"], function(){

		$("#r_"+this["FullProductID"]+" .price").html("<b>"+this["Sum"] +" &euro;</b><br><small>("+this["Price"] + " &euro; " +Lang.get("each")+")</small>");
		$("#b_"+this["FullProductID"]).val(this["Quantity"]);


	})

	$("table.basket .updating").remove();

	$("#basket_count").html(data["basket"]["count"]);
	$("#basket_sum").html(data["basket"]["sum"]);
	$("#basket_total").html(data["basket"]["sum"]+ "&nbsp;&euro;");

	$(".sum_info").html(data["basket"]["sum"]);
	$(".mtotal .sum_info").html(data["basket"]["sum"]+" &euro;");

}

function basket_del()
{

	var id = $(this).attr("src", "img/spinner.gif").attr("id").substr(2);

	$(id).attr("class", "deleting");


	$.ajax({
		type: "POST",
		url: prepath+'basket/?mode=json_del_item',
		dataType: 'json',
		data: "id="+id,
		timeout: 1000*180,
		success: display_basket_after_del

	});

}

function display_basket_after_del(data)
{

	id = data["id"];
	$("#r_"+id+", table.basket tr.delim:last").remove();
	$("#basket_count").html(data["basket"]["count"]);
	$("#basket_sum").html(data["basket"]["sum"]);
	$("#basket_total").html(data["basket"]["sum"]+ "&nbsp;&euro;");


	$(".sum_info").html(data["basket"]["sum"]);
	$(".total .sum_info").html(data["basket"]["sum"]+" &euro;");


	if(data["basket"]["count"]=="0") {$("table.basket").append("<tr><td colspan='3'><br>"+Lang.get("Basket is empty")+"</td></tr>");}
	set_basket_size();
}


function basket_add()
{

	if($(this).attr("loading")=="yes") return;
	$(".load", this).show();
	$(this).attr("loading", "yes");
	var id = $(this).attr("id");
	var count = $("#a_"+id).val();
	if(pageTracker) pageTracker._trackPageview('/basket/add');

	$.ajax({
		type: "POST",
		url: '/basket/?mode=json_add_item',
		dataType: 'json',
		data: "id="+id+"&count="+count+"&cat="+cur_cat,
		timeout: 1000*180,
		success: display_basket
	});


}


function display_basket(data)
{

	id = data["id"];
	$("#"+id).removeAttr("loading").find(".load").hide();
	
		if(data["error"])
	{

		$("#popup_update .ttl").html(Lang.get("Attention"));
		$("#popup_update .txt").html(data["error"]);
		show_popup("popup_update");
		setTimeout (function(){hide_popup("popup_update", true);}, 2000);
		return;

	}

	$("#basket_count").html(data["basket"]["count"]);
	$("#basket_sum").html(data["basket"]["sum"]);

	show_basket_popup(data);

}



function file_click()
{
	if(pageTracker) pageTracker._trackPageview('/select/category');

	id = $(this).parent().attr("id");
	var dat = id.split("_");
	loc = document.location.href.split("?");
	document.location = loc[0].replace("catalog", "products")+"?man="+dat[0]+ "&cat="+dat[1] + "&manuId="+manuId+"&modId="+modId+"&carId="+carId;
}


function tree_node_action()
{

	if($(this).attr("loaded")) return;

	var dat = this.id.split("_");



	$.ajax({
		type: "POST",
		url: '/catalog/?mode=json_get_nodes',
		dataType: 'json',
		success: populate_nodes,
		node_id : this.id,
		data: "man="+dat[0]+"&req="+dat[1]+"&cat="+cur_cat,
		timeout: 1000*180
	});


}

function populate_nodes(data)
{

	var id = data["id"];

	var nodes = data["subs"];
	var html ="";
	$.each(nodes, function(){
		var t = (this["cnt"]=="0") ? "file": "folder";
		var c = "";
		if(this["class"]) c = this["class"];
		html+="<li id='"+this["man"]+'_'+this["cat"]+"' class='"+c+"'><span class='"+ t +"'>"+this["Title"]+'</span>';
		if(t=="folder") 	html+='<ul id="sub_'+this["man"]+'_'+this["cat"]+'"><li><span class="load">Bitte warten...</span></ul>';
		html+='</li>';

	})
	$("#"+id).attr("loaded", "yes");

	var newSublist = $("#sub_"+id).empty().append(html);
	$("#"+id).parents(".cat_tree").treeview({ add: newSublist });
	$("#"+this["man"]+'_'+this["cat"]);
	$(".cat_tree .file").click(file_click);

	$(".click span").addClass("active");
	$(".click").removeClass("click").find("span.folder").click();

}



function get_cartypes_list()
{
	var val = $("#modId").val();
	if(val=="") {
		$("#carId").attr("disabled", true).addClass("disabled");
		return;
	}
	$("#carId").empty().append('<option value="">Bitte warten...</option>');;

	$.ajax({
		type: "POST",
		url: '/data/?mode=json_get_types',
		dataType: 'json',
		data: "manuId="+$("#manuId").val()+"&modId="+val,
		timeout: 1000*180,
		success: populate_cartypes
	});


}

function populate_cartypes(data)
{
	$("#carId").empty().removeAttr("disabled").removeAttr("className");

	$("#carId").append('<option value="">Type w&auml;hlen</option>');
	$.each(data, function(){
		$("#carId").append('<option value="'+this["carId"]+'">'+this["carName"]+'</option>');
	});
}



function get_models_list()
{
	var val = $("#manuId").val();
	if(val=="") {
		$("#carId").attr("disabled", true).addClass("disabled");
		$("#modId").attr("disabled", true).addClass("disabled");
		return;}

		$("#modId").empty().append('<option value="">Bitte warten...</option>');
		$("#carId").empty().append('<option value="">Type w&auml;hlen</option>').attr("disabled", true);

		$.ajax({
			type: "POST",
			url: '/data/?mode=json_get_models',
			dataType: 'json',
			data: "manuId="+val,
			timeout: 1000*180,
			success: populate_models
		});


}

function populate_models(data)
{
	$("#modId").empty().removeAttr("disabled").removeAttr("className");
	$("#modId").append('<option value="">Modell w&auml;hlen</option>');
	$.each(data, function(){
		$("#modId").append('<option value="'+this["modelId"]+'">'+this["modelname"]+'</option>');
	});
}

function switchit()
{
	if($(this).attr("state")=="open")
	$(this).attr("state", "close").attr("src", "img/plus.gif");
	else
	$(this).attr("state", "open").attr("src", "img/minus.gif");

	$("#"+this.id+"_small").toggle();
	$("#"+this.id+"_full").toggle();
}

function show_basket_popup(data)
{



	if(!data["items"])
	{

		var txt = '<div class="title"><img src="img/'+cur_lang+'/ttl-cart.png"></div>';
		txt += '<div class="content"><div class="loading"></div></div>';

	}
	else
	{

		var txt = get_basket_html(data);
	}

	$.prompt(txt,
	{
		submit: function(v,m){
			if(v.value == "2") {
				document.location = secure_url+"basket/?sid="+sid; return false;
			}
			else
			{
				if(last_buy_path!="") {
					document.location = simple_url + last_buy_path; return false;
				}
			}

			return true;
		},
		loaded: function(){if(!data["items"]) {

			$.ajax({
				type: "POST",
				url: prepath+'basket/?mode=json_get_basket',
				dataType: 'json',
				timeout: 1000*180,
				success: update_basket_popup
			});

		} else set_basket_size();},
		closebutton: "img/close.png",
		overlayspeed: 1,
		promptspeed: 1,
		buttons:{ "stay" : {caption: "", value: 1, img: "img/"+cur_lang+"/btn-continue-shopping.png"}, "go" : {caption: "", value: 2, img: "img/"+cur_lang+"/btn-checkout.png"}}

	});
	$(".del").click(basket_del);
	$(".actualize").click(actualize);
}

function update_basket_popup(data)
{

	last_buy_path = data["back"];
	var txt = get_basket_html(data);
	$(".jqicontainer .jqimessage").html(txt);
	$(".del").click(basket_del);
	$(".actualize").click(actualize);
	set_basket_size();
}


function set_basket_size(){
	h = $("div.jqi div.content").height();
	if(h>200) $("div.jqi div.content").height(200);
	else
	{
		if(h< 50) $("div.jqi div.content").height(50);
		else
		$("div.jqi div.content").height("");
	}

}

function get_basket_html(data){
	var txt = '<div class="title"><img src="img/'+cur_lang+'/ttl-cart.png"></div>';
	if(data["items"].length>0) txt += '<div class="head"><div class="item">'+Lang.get("Item")+'</div><div class="quantity">'+Lang.get("Quantity")+'</div><div class="price">'+Lang.get("Price")+'</div></div>';
	txt += '<div class="content">';


	if(data["items"].length==0)
	{
		txt+="<br><br><br><center>"+Lang.get("Your basket is empty")+"</center><br><br><br>";
	}
	else
	{

		txt += '<table cellpadding="0" cellspacing="4" border="0" class="basket">';

		for(i=0; i<data["items"].length; i++)
		{
			var item = data["items"][i];
			txt += '<tr id="r_'+item["FullProductID"] +'"><td class="item"><b>'+item["Name"] +'</b><br>'+Lang.get("Item #")+": "+item["Article"] +"<br></td>";
			txt += '<td valign="top" class="quantity"><div><input type="text" id="b_'+item["FullProductID"] +'" value="'+item["Quantity"] +'">&nbsp;&nbsp;';
			txt += '<img src="img/icon-del.png" align="top" class="button del" id="d_'+item["FullProductID"] +'"></div></td>';
			txt += '<td valign="top" class="price"><b>'+item["Sum"] +' &euro;</b><br><small>('+ item["Price"] + " &euro; " + Lang.get("each")+')</small></td></tr>';
			if(i<data["items"].length-1)txt +='<tr class="delim"><td colspan="3"></td></tr>';
		}

		txt += '</table>';

	}
	txt += '</div><div class="mtotal"><div class="inner"><div class="actualize">'+Lang.get("Recalculate")+'</div><div class="sum_info">'+data["basket"]["sum"]+' &euro;</div><div class="subtotal"><b>'+Lang.get("Subtotal")+':</b> </div></div></div>';
	return txt;
}

function formatCurrency(num) {
	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
	num = num.substring(0,num.length-(4*i+3))+','+
	num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + num + '.' + cents);
}