$(function(){
	var VIEW_MERCHANT=0;
	var VIEW_MEMBER=1;

	var curcat=getHash("cat")?getHash("cat"):0;
	var curtype=getHash("type")?getHash("type"):VIEW_MERCHANT;
	var curpage=getHash("page")?getHash("page"):1;
	var curMsg=getHash("id");
	
	var tw=new Array(290, 100, 100);

	$("#lnkOffer").addClass("act");

	$("ul.submenu li.menuitem", $("#lnkCat").parent()).click(function(){
		curcat=parseInt($("span", this).text());
		showList(curtype, 1, curcat);
	});
	$("#lnkMerch, #lnkMem").click(function(){
		if ($(this).is("#lnkMerch")) curtype=VIEW_MERCHANT;
		else curtype=VIEW_MEMBER;
		showList(curtype, 1, curcat);
	});
	$("#lnkCat, #lnkNew").parent().unbind("click").click(function(){
		$("#lnkCat, #lnkNew").parent().removeClass("act");
		$(this).addClass("act");
	});
	$("#lnkNew").click(function(){
		if (!$(this).parent().hasClass("act")) {
			$.get("lib/offer/offerEditTemplate", function(html){
				var $orig;
				$("#frmOffer").remove();				
				if ($("#lnkMerch").parent().hasClass("act")) $orig=$("#lnkMerch").parent();
				else if ($("#lnkMem").parent().hasClass("act")) $orig=$("#lnkMem").parent();
				$orig.removeClass("act").addClass("orig");
				$orig=null;
				
				$("#data").append($(html).css("top", $("#data").position().top));
				$("#frmOffer").bind("submit", function(){
					$("#lnkMem").click();
				}).bind("close", function(){
					$("#lnkNew").parent().removeClass("act");
					$("#mainhead > ul.menu > li.menuitem.orig").addClass("act").removeClass("orig");
				});
			}, "html");
		}
	});
	
	$(".offer .img .page a.lnkPic").live("click", function(){
		var $this=$(this);
		var href=$this.attr("href");
		var $img=$this.parents(".img");		
		var w, h;		
		
		$("a.act", $this.parent()).removeClass("act");
		$this.addClass("act");
		$("img", $img).css("display", "none").css("height", "").css("width", "")
		.attr("src", href).attr("alt", href);
		$("a[rel='external']", $img).attr("href", href);
		$img=$this=null;

		return false;
	});

	$("body").click(function(evt){
		var $t=$(evt.target);
		if (!($t.is("#lnkCat") || $t.is("div.jqi *") || $t.is(".jqifade"))) {
			$("#lnkCat").parent().removeClass("act");
		}
		$t=null;
	});
	
	$(curtype==VIEW_MERCHANT?"#lnkMerch":"#lnkMem").parent().addClass("act");
	$("ul.submenu li.menuitem:eq("+curcat+")", $("#lnkCat").parent()).addClass("act");
	showList(curtype, curpage, curcat);

	function showList(type, page, cat, key, order){
		setHash({type:type, page:page, cat:cat});
		if (key==null) key=3;
		if (order==null)
			if (key==3) order=1;
			else order==0;
		
		var data={type:type,page:page,cat:cat,key:key,order:order};
		
		$.get("lib/offer/getOfferList", data, function(d){
			var $list=$("#main #data table.list");
			var $err=$("#main #data div.err");
			
			closeOffer();
			$("#frmOffer").css("display", "none");
			$("#data").css("display", "block");
			$("#mainhead .page").empty();

			if (d.count==0){
				$list.remove();
				if ($err.length==0)
					$err=$("<div class='err'>No record found. 沒有任何紀錄.</div>").prependTo("#data");
			}
			else{
				$err.remove();
				if ($list.length==0){
					$list=$("<table class='list'><thead><tr><th class='sortable'>Discount 優惠</th><th class='sortable'></th><th class='sortable def'>Time 時間</th><th class='sortable'>Say 評論</th></tr></thead><tbody></tbody></table>").prependTo("#data");
					$sortable=$("th.sortable", $list)
					.append("<span>&nbsp;</span>")					
					.hover(function(){$(this).addClass("hov");}, 
						function(){$(this).removeClass("hov");})
					.click(function(){
						var $span=$("span", this);
						closeOffer();
						if ($span.hasClass("dsc")) $span.removeClass("dsc").addClass("asc");
						else{
							if (!$span.hasClass("asc"))
								$("#data th span").removeClass("asc").removeClass("dsc");
							$span.removeClass("asc").addClass("dsc");
						}
						showList(curtype, 1, curcat, $("#data table.list thead th").index(this)+1, $span.hasClass("dsc")?1:0);
					});
					$("th.sortable.def span", $list).addClass("dsc");
					$.each(tw, function(i,o){$("th:eq("+i+")", $list).css("width", this+"px");});
				}

				makePageLink($("#mainhead .page"), d.count, page, "#type="+curtype+"&page=[pagenum]&cat="+curcat);
				$("#mainhead .page a").click(function(){
					var page=parseInt($(this).attr("href").match(/page=[1-9][0-9]*/g).toString().substr(5));
					var type=parseInt($(this).attr("href").match(/type=[0-1]*/g).toString().substr(5));					
					var cat=parseInt($(this).attr("href").match(/cat=[0-9]*/g).toString().substr(4));
					closeOffer();
					showList(type, page, cat);
					return false;
				});
				if ($("th:eq(1)", $list).contents().length==1) $("th:eq(1)", $list).prepend(type==VIEW_MERCHANT?"Merchant 商戶":"Member 會員");
				else $("th:eq(1)", $list).contents().eq(0).text(type==VIEW_MERCHANT?"Merchant 商戶":"Member 會員");
				
				var $tbody=$("tbody", $list);
				$tbody.empty();
				$.each(d.list, function(){
					var newrow = $("<tr></tr>");
					newrow.append("<td>"+this.merchant.escapeHTML()+":"+this.title.escapeHTML()+"</td>").append("<td>"+((type==VIEW_MERCHANT)?this.name:this.user_id)+"</td>").append("<td>"+this.post_time+"</td>").append("<td>"+this.replies+"</td>")
					.data("id", this.msg_id)
					.click(function(){
						$("#data table.list tbody tr.act").removeClass("act");
						$(this).addClass("act");
						openOffer($(this).data("id"));
					})
					.appendTo($tbody);
					newrow=null;
				});
				$("tr:odd", $tbody).addClass("alt");
			}
			$err=$list=$tbody=null;
		}, "json");
	}
	
	function makePageLink($el, tp, cp, link){
		$el.empty();
		if (tp > 1) {
			var start = Math.floor((cp - 1) / 10) * 10 + 1;
			var end = ((start + 9) > tp) ? tp : start + 9;
			
			var $first = $("<a href='" + link.replace("[pagenum]", 1) + "' class='first' title='First Page 第一頁'>&lt;&lt;</a>");
			var $last = $("<a href='" + link.replace("[pagenum]", tp) + "' class='last' title='Last Page 最後一頁'>&gt;&gt;</a>");
			var $prev = $("<a href='" + link.replace("[pagenum]", (cp - 10) <= 0 ? 1 : cp - 10) + "' class='prev' title='Previous 10 Pages 上十頁'>&lt;</a>");
			var $next = $("<a href='" + link.replace("[pagenum]", (cp + 10) > tp ? tp : cp + 10) + "' class='next' title='Next 10 Pages 下十頁'>&gt;</a>");
			
			$el.append($first).append($prev);
			for (var i = start; i <= end; i++) {
				if (i == cp) 
					$("<a>" + i + "</a>").css("color", "#ffffff").appendTo($el);
				else 
					$("<a href='" + link.replace("[pagenum]", i) + "' title='Page" + i + " 第" + i + "頁'>" + i + "</a>").appendTo($el);
			}
			$el.append($next).append($last);
			$start = $last = $prev = $next = null;
		}
	}
	
	function closeOffer(){
		$("#offDetail").remove();
	}
	function openOffer(msgid){
		$.get("lib/offer/offerViewTemplate", {id:msgid}, function(html){
			$("#offDetail").remove();
			$("#data").append($(html).css("top", $("#data").position().top));
		}, "html");
	}
})
