var images;
var inResize=false;

$.extend({
  getUrlVars: function(){
    var vars = [], hash;
    if(window.location.href.indexOf('?') == -1)
	return vars;
    var hashes = window.location.href.slice(window.location.href.indexOf('?') + 1).split('&');
    for(var i = 0; i < hashes.length; i++)
    {
      hash = hashes[i].split('=');
//      vars.push(hash[0]);
      vars[hash[0]] = hash[1];
    }
    return vars;
  },
  getUrlVar: function(name){
    return $.getUrlVars()[name];
  },
  getParams: function(not_name) {
	var uv=$.getUrlVars();
	var url='';
	for (var key in uv) {
		if(key != not_name)
			url+="&"+key+'='+uv[key];
	}
	return url;
  }
});

function paginate(npages, cpage, perpage) {
	var pa = new Array();
	if(npages < 2)
		return "&nbsp;";
	if(npages <= 9) {
		for(i=1; i <= npages; i++)
			pa.push(i);
	} else {
		if(cpage <= 5)	{
			for(i=1; i <= 6; i++)
				pa.push(i);
			pa.push('&hellip;');
			for(i=npages-1; i<=npages; i++)
				pa.push(i);
		} else if(cpage >= npages-4) {
			for(i=1; i <= 2; i++)
				pa.push(i);
			pa.push('&hellip;');
			for(i=npages-5; i<=npages; i++)
				pa.push(i);
		} else {
			for(i=1; i <= 2; i++)
				pa.push(i);
			pa.push('&hellip;');
			for(i=cpage-1; i<=cpage+1; i++)
				pa.push(i);
			pa.push('&hellip;');
			for(i=npages-1; i<=npages; i++)
				pa.push(i);
		}
	}
	var ps='<b>';
	var i;
	for(i=0; i<pa.length; i++)
	{
		if(pa[i] == cpage || pa[i] == '&hellip;')
			ps+='&nbsp;&nbsp;'+pa[i]+'';
		else
			ps+='&nbsp;&nbsp;<a href="./?p='+((pa[i]-1)*perpage)+$.getParams("p")+'">'+pa[i]+'</a>';
	}
	ps+='</b>';
	return ps;
}

function buildphotos(w, h) {
	var rows=parseInt(h/150);
	var cols=parseInt(w/150);
	var perpage=rows*cols;
	var npages=Math.ceil((images.before+perpage+images.after)/perpage);
	var page=Math.ceil((images.before+perpage)/perpage);
	var ps=paginate(npages, page, perpage);
	var s="";
	$(".pages").html(ps);
	$.each(images.items, function(i,im) {
		if(!im) return false;
		if(i >= rows*cols) return false;
		var cl="photo-mini";
		var pad=(150-im.width)/2.0;
		var pl=parseInt(pad);
		var pr=pl;
		if(pad > pl)
			pr++;
		pad=(150-im.height)/2.0;
		var pt=parseInt(pad);
		var pb=pt;
		if(pad > pt)
			pb++;
		var st="padding:"+pt+"px "+pr+"px "+pb+"px "+pl+"px;";
		s+="<div class=\"photodiv\"><a href=\""+im.media+"/\"><img src=\"/mh-photos/mini."+im.media+".jpg\" class=\""+cl+"\" height=\""+im.height+"\" width=\""+im.width+"\" title=\""+im.title+"\" alt=\""+im.media+"\" style=\""+st+"\" /></a></div>";
		return true;
	});
	return s;
};

function stopResize(e, ui, setCookie) {
			setCookie = typeof(setCookie) != 'undefined' ? setCookie : true;
			inResize=false;
/*
			$("#photobrowser").width("auto");
			$("#photobrowser").height("auto");
*/
			var w=$("#photobrowser").width();
			var h=$("#content-border").height();
//			console.log("#photobrowser=", w,h);
			//alert("#photobrowser="+ w+","+h);
			if(!images) {
				$.getJSON("./?jsoncallback=?"+$.getParams(), function(data) {
					images=data; 
					$("#photobrowser").html(buildphotos(w,h));
				});
			} else {
				$("#photobrowser").html(buildphotos(w,h));
			}
			if(!setCookie)
				return;
			var t = new Date();
			var te = new Date(t.getTime() + (365 * 24 * 60 * 60 * 1000));
			document.cookie="width="+w+"; path=/; expires="+te.toGMTString()+";";
			document.cookie="height="+h+"; path=/; expires="+te.toGMTString()+";";
			//alert(document.cookie);
}

$(document).ready(function(){
	var v_num=$("#basket-rel").children().size();
	$(".tobasket").live('click', function() {
		var src=$(this).parent().find('img').first();
		$.getJSON("/warenkorb/?basketcallback=?", { add: src.attr("src") }, function(data) {
			//alert(data);
		});
//		$('.basketcase').css("visibility", "visible");
		var srcof=src.offset();
		var el=src.clone();
		el.css("position", "absolute");
		el.css("z-index", "3");
		el.css("top", srcof.top+parseInt(src.css("padding-top"))+"px");
		el.css("left", srcof.left+parseInt(src.css("padding-left"))+"px");
		el.css("display", "block");
		el.css("padding", 0);
		el.appendTo($('.wrapper').first());
		var aspect = el.width()/el.height();
		var h=60;
		var w=aspect*60;
		if(aspect > 1.0) {
			w=20;
			h=20/aspect;
		}
		var targetof = $('#menuitem-240').position();
		var target = $('#menuitem-240');
//		alert(targetof.top + "," + targetof.left);
		el.animate( { left:targetof.left+target.width()/2+"px", top:targetof.top+"px", height: h, width: w, "padding-left": "0px", "padding-top": "0px" }, 400);
		//el.animate( { left:targetof.left+1+(v_num*3)+"px", top:targetof.top+(v_num*3)+"px", height: h, width: w, "padding-left": "0px", "padding-top": "0px" }, 600);
		el.hide("fast");
		v_num+=1;
	});
	if($("#photobrowser").length == 0)
		return;

	$("#content-border").height($(window).height()*2);
	setTimeout(function() {
		stopResize(null, null, false);
	}, 100);



/*
	$("#content-border").resizable({ 
		handles: "se",
		minWidth: 630,
		minHeight: 452,
		start: function(e, ui) {
				inResize=true;
				var h=$("#content-border").height();
				$("#content-border").height(h);
				$("#photobrowser").width("auto");
				$("#photobrowser").height("auto");
				$("#photobrowser").html("<div align=\"center\" style=\"margin-top:3em;\">laden ...<br>loading ...</div>");
		},
		stop: function(e, ui) { stopResize(e, ui, true); }
	});
*/

/*
	$(".photodiv").live('mouseenter mouseleave', function(event){
		if(event.type == 'mouseenter') {
			$(this).append('<span class="hoverbasket tobasket"><img src="/mh-images/basket.png" alt="buy" title="In den Warenkorb legen."/></span>');
		} else {
			$(this).find(".hoverbasket").remove();
		}
	});
*/
});

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

window.onresize = function() {
	if($("#photobrowser").length == 0)
		return;
	if(inResize)
		return;
	var cbw=$("#content-border").width();
	var cbo=$("#content-border").offset().left;
	var pbw=$("#photobrowser").outerWidth(false);
	var pbo=$("#photobrowser").offset().left;
	var bw=$("body").width();
	//console.log("cbw+cbo=", cbw+cbo);
//	$("#content-border").width(cbw);
//	if((cbw+cbo)-bw > 0 && bw > 500) {
		var h=$("#content-border").height();
		$("#content-border").height($(window).height()*2);
		$("#photobrowser").html("");
//		$("#content-border").width(bw-(cbo+36));
		stopResize(null, null, false);
/*
	} else if(bw > cbw+cbo) {
		var w=readCookie('width');
		var h=readCookie('height');
		//console.log(pbw, w);
		if(pbw <= w) {
			var h=$("#content-border").height();
		//	$("#content-border").height(h);
		$("#content-border").height($(window).height()*2);
			console.log($(window).height());
			$("#photobrowser").html("");
//			$("#content-border").width("auto");
//			$("#photobrowser").width(Math.min(bw-(pbo+36), w));
			var wt=$("#content-border").width();
//			$("#content-border").width(wt);
			//$("#content-border").width(Math.min(bw-(cbo+36), w)+10);
			stopResize(null, null, false);
		}
	}
*/
}

function requery(ctrl) {
	var id=ctrl.id.split("-")[1];
	var opt;
	//console.log("id-"+id);
	if(ctrl.className=="art1") {
		opt={ art1: $('#art1-'+id)[0].value };
		$('#art2'+id).html("");
		$('#verbreitung-'+id).html("");
		$('#umfang-'+id).html("");
		$('#preis-'+id).html("");
	}
	if(ctrl.className=="art2") {
		opt={ art1: $('#art1-'+id)[0].value, art2: $('#art2-'+id)[0].value };
		$('#verbreitung-'+id).html("");
		$('#umfang-'+id).html("");
		$('#preis-'+id).html("");
	}
	if(ctrl.className=="verbreitung") {
		opt={ art1: $('#art1-'+id)[0].value, art2: $('#art2-'+id)[0].value, verbreitung: $('#verbreitung-'+id)[0].value };
		$('#preis-'+id).html("");
	}
	if(ctrl.className=="umfang") {
		opt={ art1: $('#art1-'+id)[0].value, art2: $('#art2-'+id)[0].value, verbreitung: $('#verbreitung-'+id)[0].value, umfang:$('#umfang-'+id)[0].value };
		$('#preis-'+id).html("");
	}
	opt.id=id;
	$('#preis-'+id).html("");
	$.getJSON("/warenkorb/?honorar=?", opt, function(data) {
		var id=data.id;
		var str="<option value=\"0\"></option>";
		for(var k in data.map) {
			str+="<option value=\""+k+"\">"+data.map[k]+"</option>";
		}
		switch(data.field) {
			case "art2":
				$('#art2-'+id).html(str);
				break;
			case "verbreitung":
				$('#verbreitung-'+id).html(str);
				break;
			case "umfang":
				$('#umfang-'+id).html(str);
				break;
			case "preis":
				$('#preis-'+id).html(data.map[0],2);
				break;
		}
		calcSum();
	});
}

function copyToOthers(id) {
	$(".art1").val($('#art1-'+id).val());
	var art2=$('#art2-'+id).val();
	$(".art2").html($('#art2-'+id).html());
	$(".art2").val(art2);
	var verbreitung=$('#verbreitung-'+id).val();
	$(".verbreitung").html($('#verbreitung-'+id).html());
	$(".verbreitung").val(verbreitung);
	var umfang=$('#umfang-'+id).val();
	$(".umfang").html($('#umfang-'+id).html());
	$(".umfang").val(umfang);
	$(".umfang").each(function(index, el) { requery(el) });
	calcSum();
}

function calcSum(){
	var s=0.00;
	var cnt=0;
	var valid=true;
	$("tr.basketphoto").each(function(index, el) {
		var id=el.id.split("-")[1];
		if($('#del-'+id).val() != 1) {
			var p=parseFloat($(el).find("#preis-"+id+":first").text());
			s+=p;
			if(p<=0.0)
				valid=false;
			cnt++;
		}
	});
	if(s >= 0.0 && valid)
		$("#sum").html($.sprintf('<b>%0.2f</b>', s));
	else
		$("#sum").html($.sprintf('<b>???</b>'));
	$("#count").html(cnt);
}

function remove(id) {
	$('#preis-'+id).html("0.00");
	$.getJSON("/warenkorb/?basketcallback=?", { del: id }, function(data) {
		updateMiniBasket();
		calcSum();
	});
	$("div.ph-"+id).css("overflow", "hidden");
	$('#del-'+id).val(1);
	$("tr#ph-"+id).children().animate( { "padding-top":"0px", "padding-bottom":"0px" }, 100);
	$("div.ph-"+id).animate( { height:"0px" }, 300, function(el) {
		$(this).parent().parent().css("display","none");
	});
}

function updateMiniBasket(){
	$.getJSON("/warenkorb/?basketcallback=?", { }, function(data) {
		$("#basket-rel").empty();
		$("#basket").empty();
		var v_num=0;
		var targetof = $('#basket').position();
		$.each(data, function(i,image) {
			var img = new Image();
			img.src = "/mh-photos/mini."+image+".jpg";
			
			var el=$('<img src="'+img.src+'" />');
			var aspect = img.width/img.height;
			var h=60;
			var w=aspect*60;
			if(aspect > 1.0) {
				w=60;
				h=60/aspect;
			}
			el.css("position", "absolute");
			el.css("z-index", "3");
			el.css("top", targetof.top+(v_num*3));
			el.css("left", targetof.left+(v_num*3)+"px");
			el.css("display", "block");
			el.css("padding", 0);
			el.css("height", h);
			el.css("width", w);
			el.appendTo($('#basket'));
			v_num+=1;
		});
	if(v_num > 0)
		$('.basketcase').css("visibility", "visible");
	else
		$('.basketcase').css("visibility", "hidden");
	});
}

$(function() {
	function log( message ) {
		$( "<div/>" ).text( message ).prependTo( "#log" );
		$( "#log" ).attr( "scrollTop", 0 );
	}

	$( "input.search" ).autocomplete({
		source: "mh-includes/search.php",
		minLength: 2,
		select: function( event, ui ) {
			if(ui.item)
				setTimeout(function() { $('#quicksearch').submit() }, 10);
		}
	});
});

