var SH = {
	Calendar:{
		id:null,
		months:["January", "February", "March", "April", "May", "June", "July", "August", "September", "October", "November", "December"],
		init:function(id, minDate, maxDate) {
			SH.Calendar.id = id;
			var c = $("#" + id);
			//var minDate = 1257051600, maxDate = 1259560800;
			$.ajax({
				url:baseURI + "/api/?type=json&method=comics.getComics&mindate=" + minDate + "&maxdate=" + maxDate,
				dataType:"json",
				success:function(data) {
					var nDays = Math.floor(((maxDate - minDate) / 86400) + 1);
					var d = new Date(minDate * 1000), s = null;
					var o = '<header><h1>' + SH.Calendar.months[d.getUTCMonth()] +' ' + d.getUTCFullYear() + '</h1></header><table summary="Comics in the month"><thead><tr><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></thead><tbody><tr>';
					for (var i = 0; i < d.getUTCDay(); i++) {
						o += '<td class="empty"></td>';
					}
					for (var i = minDate; i <= maxDate; i += 86400) {
						d = new Date(i * 1000), s = '<td>' + d.getDate() + '</td>';
						if (d.getUTCDay() == 0 && d.getUTCDate() != 1) {
							o += '</tr><tr>';
						}
						for (var j in data.body) {
							if (data.body[j].date == i) {
								s = '<td  style="padding:0; background:url(\'' + baseURI + '/ct.php?url=' + escape(baseURI + "/comics/" + data.body[j].img) + '\');"><a href="' + baseURI + '/comics/' + data.body[j].url + '/" style="background-position:-' + ((d.getDate() - 1) * 85) + 'px 0;">&nbsp;</a></td>';
								j = data.body.length;
							}
						}
						o += s;
					}
					c.html(o);
				},
				error:function(a,b,c) {
					alert("Error");
				}
			});
		}
	}
};

SH.Admin = {};
SH.Admin.Calendar = {
	id:null,
	current:null,
	ignore:false,
	init:function(id) {
		$(id).click(SH.Admin.Calendar.show);
		SH.Admin.Calendar.id = id;
	},
	show:function(e) {
		if (!$("#calInput").length) {
			$("#content").append('<div id="calInput"></div>');
		}
		var p = $(SH.Admin.Calendar.id).position();
		var h = $(SH.Admin.Calendar.id).outerHeight();
		var w = $(SH.Admin.Calendar.id).width();
		$("#calInput").css({"position":"absolute", "top":p.top + h, "left":p.left}).show();
		SH.Admin.Calendar.create(new Date());
	},
	create:function(date) {
		var d = new Date(date), m = d.getMonth() + 1, y = d.getFullYear();
		SH.Admin.Calendar.current = d;
		var minDate = (new Date(m + "/1/" + y)).getTime() / 1000, maxDate = (new Date((m + 1) + "/1/" + y)).getTime() / 1000;
		var nDays = Math.floor(((maxDate - minDate) / 86400) + 1);
		d = new Date(minDate * 1000), s = null;
		var o = '<header><h2><a href="javascript:void(0);" rel="prev">&lt;</a> ' + SH.Calendar.months[d.getMonth()] +' ' + d.getFullYear() + ' <a href="javascript:void(0);" rel="next">&gt;</a></h2></header><table summary="Comics in the month"><thead><tr><th>S</th><th>M</th><th>T</th><th>W</th><th>T</th><th>F</th><th>S</th></thead><tbody><tr>';
		for (var i = 0; i < d.getUTCDay(); i++) {
			o += '<td class="empty"></td>';
		}
		for (var i = minDate; i < maxDate; i += 86400) {
			d = new Date(i * 1000), s = '<td><a rel="' + (i * 1000) + '">' + d.getDate() + '</a></td>';
			if (d.getDay() == 0 && d.getDate() != 1) {
				o += '</tr><tr>';
			}
			o += s;
		}
		$("#calInput").html(o);
		$("#calInput a").click(SH.Admin.Calendar.event);
		SH.Admin.Calendar.ignore = true;
		$("body").bind("click", SH.Admin.Calendar.bodyEvent);
	},
	event:function(e) {
		if(e.target.rel) {
			var d = SH.Admin.Calendar.current, m = d.getMonth() + 1, y = d.getFullYear();
			switch(e.target.rel) {
				case "next":
					m++;
					if (m > 12) {
						m = 1;
						y++;
					}
					SH.Admin.Calendar.create(m + "/1/" + y);
					break;
				case "prev":
					m--;
					if (m < 1) {
						m = 12;
						y--;
					}
					SH.Admin.Calendar.create(m + "/1/" + y);
					break;
				default:
					d = new Date(parseInt(e.target.rel));
					$(SH.Admin.Calendar.id).attr("value", (d.getMonth() + 1) + "/" + d.getDate() + "/" + d.getFullYear());
					//$("#calInput").hide();
			}
		}
	},
	bodyEvent:function() {
		if (!SH.Admin.Calendar.ignore) {
			$("#calInput").hide();
			$("body").unbind("click", SH.Admin.Calendar.bodyEvent);
		} else {
			SH.Admin.Calendar.ignore = false;
		}
	}
};
