/* trim functions for string*/
String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}
String.prototype.ltrim = function() {
	return this.replace(/^\s+/,"");
}
String.prototype.rtrim = function() {
	return this.replace(/\s+$/,"");
}
String.prototype.toUpperCaseSubstr = function(start, length){
	return this.substr(0, start) + this.substr(start, length).toUpperCase() + this.substr(start+length);
}
String.prototype.toLowerCaseSubstr = function(start, length){
	return this.substr(0, start) + this.substr(start, length).toLowerCase() + this.substr(start+length);
}

HUSKELAPPEN = {};

HUSKELAPPEN.parseUri = function  (str) {
	var	o   = HUSKELAPPEN.parseUri.options,
	m   = o.parser[o.strictMode ? "strict" : "loose"].exec(str),
	uri = {},
	i   = 14;

	while (i--) uri[o.key[i]] = m[i] || "";

	uri[o.q.name] = {};
	uri[o.key[12]].replace(o.q.parser, function ($0, $1, $2) {
		if ($1) uri[o.q.name][$1] = $2;
	});

	return uri;
};

HUSKELAPPEN.parseUri.options = {
	strictMode: false,
	key: ["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],
	q:   {
		name:   "queryKey",
		parser: /(?:^|&)([^&=]*)=?([^&]*)/g
	},
	parser: {
		strict: /^(?:([^:\/?#]+):)?(?:\/\/((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?))?((((?:[^?#\/]*\/)*)([^?#]*))(?:\?([^#]*))?(?:#(.*))?)/,
		loose:  /^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@]*)(?::([^:@]*))?)?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/
	}
};

HUSKELAPPEN.url = HUSKELAPPEN.parseUri( document.location );


HUSKELAPPEN.openDialog = function(dialog, element){
	$(dialog).dialog("open");
	var el = $(":text:first", dialog).not(".no-focus").focus();
	if($(dialog).hasClass("editRow")){
		var denni = $(this);
		var rowid = $(element.currentTarget).closest('tr').attr("id").split("-")[1];
		if( rowid ){
			var url = $("input[name=baseurl]", dialog).val() + "/"+rowid;
			$("form",dialog).attr("action", url);
			var data = $.ajax({
				url: "http://admin"+url+".json",
				success:function( data ){
					for( var d in data){
						$("input[name="+d+"]" ,dialog).val(data[d]);
					}
				}
			});
			
		}
	}
		
	return true;
};


$(document).ready(function()
{
	$("textarea.body").each(function(){
		$(this).keyup(function(){
			var message = $(this).attr("value");
			var wordCount = message.replace(/\n/g,"").replace(/\s+/g," ").trim().split( " " ).length;
			if( message.trim().length==0){
				wordCount = 0;
			}
			var submitButton = $(this).closest("form").find("input:submit");
			if(wordCount > 25){
				$(this).next("p").html("Teksten er for lang. Maks 25 ord");
				$(this).next("p").addClass("error");
				$(submitButton).attr('disabled', true);
				return;
			}
			$(submitButton).removeAttr('disabled');
			$(this).next("p").removeClass("error");
			$(this).next("p").html(wordCount + "/25 ord");
		});
		$(this).keydown(function(){
			if( event.keyCode ==13 ){
				return false;
			}
		});
		
		
		$(this).keyup();
	
	});
	
	
	$("#returningUser").click(function(){
		$("#loginsubmit").val("Logg inn");
	});
	$("#newUser").click(function(){
		$("#loginsubmit").val("Registrer");
	});
	
	$(".rel-clicker").click(function(){
		window.location.href = $(this).attr('rel');
	});
	//enable olkDialog
	$("div.dialog").each(function() {
		  
		//Keep any defined width 
		var dialogWidth = "550px";
		if($(this).css("width")){
			dialogWidth = $(this).css("width");
		}
		$(this).dialog({
			autoOpen: false, 
			resizable: false, 
			width: dialogWidth
		});
	});
	  
	$(".popup").click(function(el) {
		var url = HUSKELAPPEN.parseUri( this.href );
		if( url.anchor && $("#"+url.anchor).hasClass("dialog")){
			//return false to prevent scrollbars from moving
			return ! HUSKELAPPEN.openDialog($("#"+url.anchor), el);
		}
	});
	 
	$("div.advertismentIndex div.advertisment").mouseover(function(){
		$(this).addClass("selected");
	});
	$("div.advertismentIndex div.advertisment").mouseout(function(){
		$(this).removeClass("selected");
	});
	$("div.advertismentIndex div.advertisment").click( function(){
		if( !$(this).hasClass("sold")){
			location.href = $(this).find("a").first().attr("href");
		}
	});

	$("a.more").mouseover(function(){
		window.location = $(this).attr("href");
		$(this).after("<span class='more'>Henter annonser..</span>");
		$(this).css("display", "none");
		$("body").html("cursor", "wait");
		$(this).click(function(){
			return false;
		});
		$(this).attr("href")="#";
		$(event).preventDefault();
	});
	
	if( $().colorbox !== undefined){ 
		$("div.gallery a").colorbox();
	}
	
	if( $().validate !== undefined){
		$("form.validate").validate();	
	}
	$("form input.focus").first().focus();	

	$("#newUser").click(function(e){
		$("#password").attr("disabled","disabled");
	});
	$("#returningUser").click(function(e){
		$("#password").removeAttr("disabled");
	});


	if($('#categorys').is('select')){
		var select = $('#categorys');
		var category = $("optgroup", select);
		var categorySelect = $("<select class='cat required' id='category' name='categoryid'></select>");
		$(categorySelect).change(function(){
			$('#subcategory').empty();
			var id = $(this).val();
			var optionList = $('#'+id +' option').clone();
			$('#subcategory').append( optionList );
		});
		var subcategorySelect = "<select class='subcat required' id='subcategory' name='category'><option value='0'> <== Velg kategori ==></option></select>";
		for( var i=0; i < category.length; i++){
			var option = $("<option value='"+$(category[i]).attr('id')+"'>"+$(category[i]).attr('label')+"</option>"); 
			$(categorySelect).append(option);
		}
        
		$(select).after(subcategorySelect);
		$(select).after("<br>");
		$(select).after(categorySelect);
		$(categorySelect).val( $('#categorys :selected').closest("optgroup").attr("id") );
        
		$(categorySelect).trigger("change");
        
		$(select).attr('disabled','disabled');
		$(select).css('display','none');
        
	}
	//Denne må ligge sist. Åpner etterspurt anker
	if( HUSKELAPPEN.url.anchor && $("#"+HUSKELAPPEN.url.anchor).hasClass("dialog")){
		HUSKELAPPEN.openDialog($("#"+HUSKELAPPEN.url.anchor));
	}
	$("#rightBannerIndex div.cycle").cycle();
});

