var pagers = {
	/* Cache container for pagers */
	objPagers : {},
	
	/**
	 * Initializes pages function on given element and caches current positions etc.
	 * @mehod pagers.init
	 * @param objOpts (object) Options for the initialized pager, see code snippet for params
	 * @author Daniel Djurfelter (daniel.djurfelter@atrox.se) v 1.0
	 */
	init : function(objOpts){
		// Assign default values
		var options = {
			container : null,
			back : null,
			fwd : null,
			index : null,
			items : null,
			callback : function(){},
			events : "click",
			pageLength : 0
		};
		
		if(objOpts != "undefined" || objOpts != null)
			$.extend(options, objOpts);
		
		var objectKey = $(options.container).get(0).id;
		
		if(objectKey = "undefined" || objectKey == null || objectKey == ""){
			objectKey = rndStr();
			$(options.container).get(0).id = objectKey;
		}
			
		var eltParent = $(options.back).parent();
		eltParent.addClass("pager").get(0).id = "pager_" + objectKey;
		
		pagers.objPagers[objectKey] = {
			container : options.container,
			back : options.back,
			fwd : options.fwd,
			index : options.index,
			items : options.items,
			callback : options.callback,
			pageLength : options.pageLength,
			currPage : 1
		}
		
		if(options.items.length < 1){
			$(options.fwd).addClass("inactive");
			$(options.index).html("");
		} else if(options.pageLength >= options.items.length){
			$(options.index).html("1-" + options.items.length + " av " + options.items.length);
			$(options.fwd).addClass("inactive");
		} else {
			$(options.index).html("1-" + options.pageLength + " av " + options.items.length);
		}
		
		$(options.items).hide();
		
		for(var i = 0; i < options.pageLength; i++){
			$(options.items[i]).show();
		}
		
		$(options.back).addClass("inactive");
		
		$(options.fwd).bind(options.events,function(event){
			options.callback(event);
		});
		
		$(options.back).bind(options.events,function(event){
			options.callback(event);
		})
	}
};

var tmpCache = {};

$.fn.atroxBox = function(objOpts){
	$(this).bind("click",function(event){
		event.preventDefault();
		
		var strId = rndStr();
		
		var form = $("<div/>",{className:"content form loading", id:strId});
		
		var eltBox = 	$("<div/>",{className:"box"}).append(
							form
						).append(
							$("<div/>",{className:"forumFooter"}).append($("<div/>"))
						);
		
	    var elt = $("<div/>",{className:"modal"});
	    var elt2 = $("<div/>",{className:"modalForm"}).append(eltBox);
	    
	    $(document.body).append(elt).append(elt2);

	   
	    if(objOpts && objOpts.callback)
	    	tmpCache[strId] = {
	    		callback : objOpts.callback
	    	};
	    
	    var url = $(this).get(0).href;
	    
	    if(objOpts && objOpts.url)
	    	url = objOpts.url;
	    
	    $(form).load(url, function(){
	    	$(".form.loading").removeClass("loading");
	    	var strId = $(this).get(0).id;
	    	
	    	if(tmpCache[strId] && tmpCache[strId].callback)
	    		tmpCache[strId].callback();
	    });
	    
	    $(".box").centerThis();
	    
	    $(document.body).mousedown(function(event){
			var elt = $(event.target);
			
			if(elt.parents(".form").length <= 0){
				$(".modal").remove();
				$(".modalForm").remove();
			}
		});	
	})
}

function rndStr(){
	var chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var randomstring = "";
	for (var i = 0; i < 5; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}

	return randomstring += String((new Date()).getTime()).replace(/\D/gi,'');
}

function cannotAccessFile(event){
    return false;
}

$.fn.centerThis = function() {
    var winH = $(window).height();
    var winW = $(window).width();
    $(this).css('top', (winH/2-$(this).height()/2)+$(window).scrollTop());
    $(this).css('left', winW/2-$(this).width()/2);
}



/**
 * Inbox object
 */
var inbox = {
	init : function(){
		$(".control").click(function(event){
		    event.preventDefault();
		    var controls = $(this).siblings(".controls");
		    if(!controls.is(":visible")){
		        $(".controls").hide();
		        $(this).siblings(".controls").show();
		    }
		});
	
		$(document.body).mousedown(function(event){
			var elt = $(event.target);
			
			if(elt.parents(".controls").length <= 0){
				$(".controls").hide();
			}
		});
	},

	
	reply : {
		init : function(){
			$("#sendMessage").colorbox({transition:"none", width:"639", height:"329", iframe: true, scrolling: false}); 
			/*$("#sendMessage").click(function(event){
			    event.preventDefault();
			    
			    var elt = $("<div/>",{className:"modal"});
			    var elt2 = $("<div/>",{className:"modalForm"});
			    var form = $("<div/>",{className:"form loading"}).appendTo(elt2);
			    
			    $(document.body).append(elt).append(elt2);
			    
			    $(form).load($(this).get(0).href + " #colorboxContent", function(){
			    	$(".form.loading").removeClass("loading");
			    	
			        $(".fileCollectionUpdateBtn").click(function(event){
			            event.preventDefault();
			            var form = $(this).parent("form");
			            
			            $.post(
			                form.get(0).action,
			                form.serialize(),
			                function(data){
			                	// TODO : Add message logic
			                    console.log(data);
			                }
			            );
			        }); 
			    });
			    
			    $(window).mousedown(function(event){
					var elt = $(event.target);
					
					if(elt.parents(".form").length <= 0){
						$(".modal").remove();
						$(".modalForm").remove();
					}
				});
			});*/
		}
	}
}

var contacts = {
	init : function(){
		var nav = $("#col2H02").children("div");
	
		var buttons = nav.children("a");
		var container = $("#onlineFriends").get(0);
		
		pagers.init({
		    container : container,
		    back : buttons.get(0),
		    fwd : buttons.get(1),
		    index : nav.children("span"),
		    items : $(container).children("ul").children("li"),
		    events : "click",
		    callback : function(event){
				contacts.browse(event);
		    },
		    pageLength : 8
		});
	},
	
	browse : function(event){
		documentList.browse(event);
	}
};

var documents = {
		init : function(){
			var nav = $("#pagingControls");
		
			var buttons = nav.children("div");
			var container = $(".paginatorContent").get(0);
			
			pagers.init({
			    container : container,
			    back : buttons.get(0),
			    fwd : buttons.get(1),
			    index : nav.children("span"),
			    items : $(container).children("ul").children("li"),
			    events : "click",
			    callback : function(event){
					documents.browse(event);
			    },
			    pageLength : 10
			});
		},
		
		browse : function(event){
			documentList.browse(event);
		}
};

var documentList = {
	init : function(){
		var nav = $("#col2H01").children("div");
	
		var buttons = nav.children("a");
		var container = $(".myDocuments").get(0);
		
		pagers.init({
		    container : container,
		    back : buttons.get(0),
		    fwd : buttons.get(1),
		    index : nav.children("span"),
		    items : $(container).children("ul").children("li"),
		    events : "click",
		    callback : function(event){
				documentList.browse(event);
		    },
		    pageLength : 4
		});
	},
	
	browse : function(event){
		var elt = $(event.target);
		
		if(elt.hasClass("inactive"))
			return;
		
		var strId = $(elt).parent().get(0).id.replace(/pager_/ig,"");
		var obj = pagers.objPagers[strId];
		
		if(elt.hasClass("prev")){
			pagers.objPagers[strId].currPage--;
		}

		if(elt.hasClass("next")){
			obj.currPage++;
		}
		
		if(obj.currPage > 1){
			$(obj.back).removeClass("inactive");
		} else {
			$(obj.back).addClass("inactive");
		}
		
		obj.items.hide();
		
		var intLast = (obj.currPage*obj.pageLength);
		var intFirst = (intLast - obj.pageLength);
		
		for(var i = intFirst; i < intLast; i++){			
			if($(obj.items[i]).length == 0)
				break;
			
			$(obj.items[i]).show();
		}
		
		if(intLast >= obj.items.length){
			$(obj.fwd).addClass("inactive");
			intLast = obj.items.length;
		} else {
			$(obj.fwd).removeClass("inactive");
		}
		
		$(obj.index).html((intFirst+1) + "-" + (intLast) + " av " + obj.items.length);
	}
};

function $L(val){
	console.log(val);
}

function rndStr(){
	var chars = "ABCDEFGHIJKLMNOPQRSTUVWXTZabcdefghiklmnopqrstuvwxyz";
	var string_length = 5;
	var randomstring = "";
	for (var i=0; i<string_length; i++) {
		var rnum = Math.floor(Math.random() * chars.length);
		randomstring += chars.substring(rnum,rnum+1);
	}

	return randomstring += String((new Date()).getTime()).replace(/\D/gi,'');
}



$.fn.autoEmpty = function(){
	$(this).each(function(){
        var thisElt = $(this).get(0);
        if(thisElt.innerHTML != "")
        	thisElt.lang = thisElt.innerHTML;
        else
        	thisElt.lang = thisElt.value;
	});
	
	$(this).bind("focus blur",function(event){
		var elt = $(this).get(0);
        
        if(event.type == "focus"){
	         if($(this).html() == elt.lang || elt.value == elt.lang){
                  elt.value = "";
                  $(this).html("");
	         }
        } else {
             if(elt.value == ""){
                  elt.value = elt.lang;
                  $(this).html(elt.lang);
             }
        }     
	})
}

