// JavaScript Document

var hppagerSettingsHolder = Array();
$.fn.hppager = function(settings) {
	if($(this).length){
		var defaults = {
			slideTime:500,
			autoSlideTime:0,
			manualSlideStopTime:8000,
			elementType:'li',
			target:$(this),
			eindex:0,
			onChange:function(){},
			onInit:function(){},
			fadeButttons:true,
			slideTimer:false,
			id:0,
			btnPrev:$("#nobuttontogobackfornow"),
			btnNext:$("#nobuttontogoforthfornow")
		};
		var settingsa  = $.extend(defaults, settings);
		hppagerInit(settingsa);
	}
};
$.fn.hppagerGo = function(page) {
	if($(this).length){
		hppagerGoto(page,hppagerSettingsHolder[$(this).attr("hppagerid")],false);
	}
};
function hppagerInit(settings){
	var holder = settings.target;
	var biggerHeight=0;
	var totalwidth=0;
	var id = $(".hppager").length;
	var holderCase = "<div id='hppager_"+id+"_case'><div id='hppager_"+id+"' class='hppager'></div></div>";
	holder.attr("hppagerid",id);
	settings.id= id;
	holder.children(settings.elementType).css("float","left").css("margin","0 0 0 0");
	holder.children(settings.elementType).each(function(){
		totalwidth += parseInt($(this).width())+parseInt($(this).css("paddingRight"))+parseInt($(this).css("paddingLeft"))+parseInt($(this).css("marginRight"))+parseInt($(this).css("marginLeft"))+10;
		if(parseInt($(this).height()) > biggerHeight)biggerHeight=parseInt($(this).height());
	});
	holder.append(holderCase);
	holderCase = $("#hppager_"+id);
	holderCase.append(holder.children(settings.elementType));
	
	$("#hppager_"+id+"_case").css("width",parseInt(holder.width())+"px").css("overflow","hidden").css("height",biggerHeight+"px");
	holderCase.css("width",totalwidth+"px").css("margin","0 0 0 0");
	
	if(settings.btnNext.length){
		settings.btnNext.click(function(){hppagerChange(1,settings,false);}); 
		if(settings.fadeButttons){
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").next(settings.elementType).length) settings.btnNext.fadeTo(500,0.3);
			else settings.btnNext.fadeTo(500,1);
		}
	}
	if(settings.btnPrev.length){
		settings.btnPrev.click(function(){hppagerChange(-1,settings,false);});
		if(settings.fadeButttons){
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").prev(settings.elementType).length) settings.btnPrev.fadeTo(500,0.3);
			else settings.btnPrev.fadeTo(500,1);
		}
	}
	if(settings.autoSlideTime) settings.slideTimer = setTimeout(function(){hppagerAutoSlideControl(settings);},settings.autoSlideTime);
	settings.onInit(id);
	hppagerSettingsHolder[settings.id] = settings;
}
function hppagerAutoSlideControl(settings){
	clearTimeout(settings.slideTimer);
	var holderCase = $("#hppager_"+settings.id);	
	if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").next(settings.elementType).length) hppagerGoto(0,settings,true);
	else hppagerChange(1,settings,true);
}
function hppagerChange(dir,settings,auto){
	clearTimeout(settings.slideTimer);
	var holderCase = $("#hppager_"+settings.id);
	var el = holderCase.children(settings.elementType+":eq("+settings.eindex+")");
	var newel = holderCase.children(settings.elementType+":eq("+(settings.eindex+(dir) )+")");
	if(newel.length){
		var oldpage = settings.eindex;
		settings.eindex = newel.index();
		var casePos = newel.index()*(parseInt(newel.width())+parseInt(newel.css("paddingRight"))+parseInt(newel.css("paddingLeft"))+parseInt(newel.css("marginRight"))+parseInt(newel.css("marginLeft")));
		holderCase.stop().animate({marginLeft:"-"+casePos+"px"},settings.slideTime);
		settings.onChange(oldpage,settings.eindex);
		
		if(settings.fadeButttons){
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").next(settings.elementType).length) settings.btnNext.fadeTo(500,0.3);
			else settings.btnNext.fadeTo(500,1);
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").prev(settings.elementType).length) settings.btnPrev.fadeTo(500,0.3);
			else settings.btnPrev.fadeTo(500,1);
		}
	}
	hppagerSettingsHolder[settings.id] = settings;
	if(settings.autoSlideTime && !auto) settings.slideTimer = setTimeout(function(){hppagerAutoSlideControl(settings);},settings.manualSlideStopTime);
	else if(settings.autoSlideTime) settings.slideTimer = setTimeout(function(){hppagerAutoSlideControl(settings);},settings.autoSlideTime);
}
function hppagerGoto(ind,settings,auto){
	clearTimeout(settings.slideTimer);
	ind = parseInt(ind);
	var holderCase = $("#hppager_"+settings.id);
	var el = holderCase.children(settings.elementType+":eq("+settings.eindex+")");
	var newel = holderCase.children(settings.elementType+":eq("+ind+")");
	
	if(newel.length){
		var oldpage = settings.eindex;
		settings.eindex = newel.index();
		var casePos = newel.index()*(parseInt(newel.width())+parseInt(newel.css("paddingRight"))+parseInt(newel.css("paddingLeft"))+parseInt(newel.css("marginRight"))+parseInt(newel.css("marginLeft")));
		holderCase.stop().animate({marginLeft:"-"+casePos+"px"},settings.slideTime);
		settings.onChange(oldpage,settings.eindex);
		
		if(settings.fadeButttons){
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").next(settings.elementType).length) settings.btnNext.fadeTo(500,0.3);
			else settings.btnNext.fadeTo(500,1);
			if(!holderCase.children(settings.elementType+":eq("+settings.eindex+")").prev(settings.elementType).length) settings.btnPrev.fadeTo(500,0.3);
			else settings.btnPrev.fadeTo(500,1);
		}
	}
	hppagerSettingsHolder[settings.id] = settings;
	
	if(settings.autoSlideTime && !auto) settings.slideTimer = setTimeout(function(){hppagerAutoSlideControl(settings);},settings.manualSlideStopTime);
	else if(settings.autoSlideTime) settings.slideTimer = setTimeout(function(){hppagerAutoSlideControl(settings);},settings.autoSlideTime);
}
