/*
 * Helpers
 */
var Helper = {}
Helper.fitGrid = function(arr) {
	$.each(arr, function(i, el) {
		el_height = $(el).parent().height() + 10
		$(el).each(function() {
			$(this).height(el_height)
		})
	})
}
Helper.modulo = function() {
	$("#grid ul").children().each(function(i, el) {
		t = i % 2 == 1 ? "yo" : "no";
	})
}
Helper.grid = function(nth, arr) {
	$.each(arr, function(i, el) {
		$(el+":nth-child("+nth+")").addClass("last")
	})
}


/*
 * Utils
 */
var Utils = {}
Utils.ajaxLoader = function(tar, options) {
	if($(".ajax_loader", tar).is(":visible")) {
		return false; // only one loader can be dispayed!
	} else {
		tar.append("<div class='ajax_loader'><img src='"+Panamoe.base_path+"/img/loading.gif' /></div>")
		return $(".ajax_loader", tar)
	}
}


/*
 * Ajax Functions
 */
var Ajax = {}
Ajax.afterFilter = function() {
	Helper.grid("5n", new Array("#grid li"))
	Cufon.replace('h2', { fontFamily: 'ArcherBold' })
	Cufon.replace('.ajax_paginate a', { fontFamily: 'ArcherBold' })
	Cufon.replace('.btn_orange span', { fontFamily: 'ArcherBold' })
	Framebox.domReady()	
}


/*
 * Ajaxed Layout
 */
var Layout = { tar:"#layout", type:"grid", container:".layout_container" }
Layout.domReady = function(arr) {
	$.each(arr, function(i, el) {
		$(el).bind("click", function() {
			Layout.request($(this))
			return false
		})
	})
}
Layout.request = function(obj) {
	page = Panamoe.current_page
	req = obj.attr("href")
	Layout.type = req;
	tar = $(Layout.tar)
	tar.height(tar.height())
	$(Layout.container, tar).fadeOut("fast", function() { 
		var loader = Utils.ajaxLoader(tar)
		$.scrollTo($("body"), 500)
		$.ajax({
			url	: page,
			data	: "request=ajax&layout="+req,
			success	: function(data) {
				tar.html(data).children(Layout.container).hide()
			},
			complete : function() {
				Ajax.afterFilter()
				tar.animate({height:tar.children(Layout.container).height()}, "fast",
				function() {
					$(Layout.container, tar).fadeIn("fast")
				})
			}
		})
	})
}
Layout.footerPosition = function() {
	h = window.innerHeight - $("#main").offset().top
	$("#main").height(h)
}

		
/*
 * Ajax Paginate
 */
var Paginate = {obj:".ajax_paginate a", tar:"#layout", container:".layout_container"}
Paginate.domReady = function() {
	$(Paginate.obj).live("click", function() {
		var req = $(this).attr("href")
		var tar = $(Paginate.tar)
		tar.height(tar.height())
		$(Paginate.container, tar).fadeOut("fast", function() { 
			var loader = Utils.ajaxLoader(tar)
			$.scrollTo($("body"), 500)
			$.ajax({
				url	: req,
				data	: "request=ajax&layout="+Layout.type,
				success : function(data) {
					$(Paginate.tar).html(data)
				},
				complete : function() {
					Ajax.afterFilter()
					$(Paginate.tar).animate({height:$(Paginate.tar).children(Paginate.container).height()}, "fast")
				}
			})
		})
		return false
	})
}


/*
 * Tooltip
 */
var Tiper = { obj:new Array(".tip"), xoff:10, yoff:10, tar:".tiper" }
Tiper.domReady = function() {
	$.each(Tiper.obj, function(i, el) {
		Tiper.tip($(el))
	})
}
Tiper.tip = function(el) {
	var xOffset = Tiper.xoff
	var yOffset = Tiper.yoff
	var current_target
	el.hover(function(e) {
		var t = (e.pageY + yOffset)
		var l = (e.pageX + xOffset)
		if($(this).attr("title")) {
			$("body").append("<em id='TiperObj' class='tiper'>"+$(this).attr("title")+"</em>")
			current_target = $("#TiperObj")
		} else {
			alert(current_target)
			current_target = $(this).next(Tiper.tar)
		}
		current_target
			.css({"top":t+"px", "left":l+"px"})
			.fadeIn()
	}, function() {
		current_target.fadeOut()
	}).mousemove(function(e) {
		t = e.pageY + yOffset
		l = e.pageX + xOffset
		current_target.css({"top":t+"px", "left":l+"px"})
	})
}


/*
 * Facebox
 */
var Facebox = {}
Facebox.domReady = function() {
	Facebox.easyShow({ obj:new Array(".facebox"), src:"rel" })
}
Facebox.easyShow = function(options) {
	$.each(options.obj, function(i, el) {
		$(el).live("click", function() {
			img_src = $(this).attr("rel")
			cl_img = Panamoe.base_path+"/js/jquery/facebox/closelabel.gif";
			$.facebox({ image:img_src })
			return false
		})
	})
}


/*
 * Framebox
 */
var Framebox = {
	obj:new Array(".has_framebox"),
	offset:2,
	extensions:""
}
Framebox.domReady = function() {
	var options = {
		sensitivity:3,
		interval:100,
		over:Framebox.mouse_over,
		out:Framebox.mouse_out,
		timeout:20
	};
	$.each(Framebox.obj, function(i, el) {
		$(el).hoverIntent(options)
	})
}
Framebox.extend = function(obj) {
	Framebox.extensions = ""
	$.each(obj, function(i, fn) {
		Framebox.extensions += fn();
	})
}
Framebox.image_actions = function() {
	rel = Framebox.target.attr("rel")
	html = "<ul class='image_actions'><li><a class='icon magnefier facebox' rel='"+rel+"' href='#'>test</a></li><ul>"
	return html;
}
Framebox.mouse_over = function() {
	Framebox.target = $(this)
	Framebox.extend(new Array(Framebox.image_actions))
	var top = $(this).offset().top - Framebox.offset
	var left = $(this).offset().left - Framebox.offset
	Framebox.parent = $(this).parent()
	Framebox.parent.append("<div class='framebox'>"+$(this).outerHTML()+"</div>")
	$(".framebox", Framebox.parent).css({"top":top+"px", "left":left+"px"})
	.prepend(Framebox.extensions)
	.hover(function() {
	}, function() {
		$(this).remove()
	})
}
Framebox.mouse_out = function() {}

/*
 * Effects
 */
var Fx = {}
Fx.domReady = function() {
	Fx.scroll_top(new Array(".scroll_top"))
}
Fx.scroll_top = function(arr) {
	$.each(arr, function(i, el) {
		$(el).bind("click", function() {
			$.scrollTo($("body"), 500)
			return false;
		})
	})
}


/*
 * Dropdown Navigation
 */
var DropdownNavigation = {}
DropdownNavigation.domReady = function(arr) {
	var config = {
		sensitivity:	3,
		interval:	100,
		over:		DropdownNavigation.slide_down,
		timeout:	50,
		out:		DropdownNavigation.slide_up
	}
	$.each(arr, function(i, el) {
		$("ul"+el+" li").hoverIntent(config)
		$("ul"+el+" li:has(ul.sub-menu)").find("a:first").append("<span>>></span>").addClass("has_childs")
		$("ul"+el+" li ul li:last-child").addClass("last")
		Cufon.replace('#main_navigation li a', { fontFamily: 'ArcherBold' })
	})
}
DropdownNavigation.slide_down = function() {
	$(this).addClass("hover")
	var ul = $("ul:first",this)
	if($(this).is("li.right")) {
		w = ul.width()
		lw = $("a", this).width() +2
		ul.css("margin-left","-"+(w-lw)+"px").slideDown("fast")
	} else {
		ul.slideDown("fast")
	}
}
DropdownNavigation.slide_up = function() {
	$(this).removeClass("hover")
	$("ul:first",this).slideUp("fast")
}


/*
 * On Dcument Ready
 */
$(document).ready(function() {
	Helper.fitGrid(new Array("#footer_columns ul li.col"))
	Helper.grid("5n", new Array("#grid li"))	
	Layout.domReady(new Array(".change_layout"))
	
	DropdownNavigation.domReady(new Array(".dropdown"))
	//Tiper.domReady()
	Facebox.domReady()
	Paginate.domReady()
	Fx.domReady()
	Framebox.domReady()
	
	//$("#slider .layout_container").easySlider()
	
	Cufon.replace('.archer_bold', { fontFamily: 'ArcherBold', hover:true })
	Cufon.replace('h1', { fontFamily: 'ArcherBold' })
	Cufon.replace('h2', { fontFamily: 'ArcherBold' })
	Cufon.replace('h3', { fontFamily: 'ArcherBold' })
	Cufon.replace('h4', { fontFamily: 'ArcherBold' })
	Cufon.replace('h5', { fontFamily: 'ArcherBold' })
	Cufon.replace('h6', { fontFamily: 'ArcherBold' })
	Cufon.replace('.paginate a', { fontFamily: 'ArcherBold' })
	Cufon.replace('.ajax_paginate a', { fontFamily: 'ArcherBold' })
	Cufon.replace('.btn_orange span', { fontFamily: 'ArcherBold' })
	Cufon.replace('.submit_orange', { fontFamily: 'ArcherBold' })
	//Cufon.replace('#main_navigation li a', { fontFamily: 'ArcherBold' })
})

$.fn.outerHTML = function() {
	return $('<div>').append( this.eq(0).clone() ).html();
};
