// JavaScript Document
var weekDays = ['mån', 'tis', 'ons', 'tors', 'fre', 'lör', 'sön'];
var months = ['jan', 'feb', 'mar', 'apr', 'maj', 'juni', 'juli', 'aug', 'sept', 'okt', 'nov', 'dec'];

function split( val ) {
			return val.split( /,\s*/ );
		}
function extractLast( term ) {
	return split( term ).pop();
}

$("form:not(.cms_form)").live("submit", function(evt){
	evt.preventDefault();
});
$("input[regex=http]").live("change", function(evt){
	var val = $(this).val();
	if(val.indexOf("http://") == -1 && val.indexOf("https://") == -1){
		$(this).val('http://' + val)
	}
});

function UtilsErrorDialog(msg){
	$( ".ui-dialog, #dialog-modal" ).dialog( "destroy" );
	$("#dialog-modal").remove();
	$("body").append('<div id="dialog-modal" title="Felmeddelande"><p><span class="ui-icon ui-icon-alert" style="float:left; margin:0 7px 50px 0;"></span>' + msg + '</p> </div>');
	$( "#dialog-modal" ).dialog({
		modal: true
	});
}

function UtilsBrevDialog(msg, title){
	$( ".ui-dialog, #dialog-modal" ).dialog( "destroy" );
	$("#dialog-modal").remove();
	if(title == undefined){
		title = "Personligt brev";	
	}
	$("#content").append('<div id="dialog-modal" title="' + title + '" style="text-align:left;"><p>' + msg + '</p> </div>');
	$( "#dialog-modal" ).dialog({
		minHeight: 140,
		width: 400,
		modal: true,
		buttons: {
			Stäng: function() {
				$( this ).dialog( "close" );
			}
		}
	});
}

function UtilsMessageDialog(msg, title){
	$( ".ui-dialog, #dialog-modal" ).dialog( "destroy" );
	$("#dialog-modal").remove();
	if(title == undefined){
		title = "Meddelande";	
	}
	$("#content").append('<div id="dialog-modal" title="' + title + '"><p><span class="ui-icon ui-icon-info" style="float:left; margin:0 7px 50px 0;"></span>' + msg + '</p> </div>');
	$( "#dialog-modal" ).dialog({
		height: 140,
		modal: true
	});
}

function UtilsAddLoading(_this){
	var left = parseInt($(_this).offset().left) - parseInt($("#content").offset().left) + parseInt($(_this).width()) - 16/2 - parseInt($(_this).innerWidth())/2;
	var top = parseInt($(_this).offset().top) - parseInt($("#content").offset().top) + parseInt($(_this).outerHeight()) - parseInt($(_this).innerHeight()) + parseInt($(_this).innerHeight())/2 - 16/2;
   
	if($(_this).attr('type') == 'file'){
		$("<div class='loading-small' id='" + $(_this).attr('name') + $(_this).attr('id') + "'><img src='http://www.gadden.com/images/loading-small.gif' /></div>").insertBefore(_this);
		$(_this).addClass('hidden');
	}else{
		$("<div style='position:absolute; left:" + left + "px; top:" + top + "px; width:16px; height:16px;' class='loading-small' id='" + $(_this).attr('name') + $(_this).attr('id') + "'><img src='http://www.gadden.com/images/loading-small.gif' /></div>").insertBefore(_this);
	}
	//alert(_this);
	if($(_this)[0].nodeName.toLowerCase() == "button"){
		$(_this).button("option", "disabled", true)
	}
	if(($(_this)[0].nodeName.toLowerCase() == "input" && $(_this).attr('type') != 'file') ||$(_this)[0].nodeName.toLowerCase() == "textarea" ||$(_this)[0].nodeName.toLowerCase() == "select"){
		$(_this).attr("disabled", "true")
	}	
}

function UtilsRemoveLoading(name, id, col){
	var e;

	if (col != undefined){ // fix för live-input, de har _col som name, ej action
		e = "[name=" + col + "]"
	}else{
		e = "[name=" + name + "]"
	}
	if(id != undefined){
		e += "[id=" + id + "]";
	}
	//alert(e);
	if($(e).length == 0){ // fix för timedate
		e = "[name=" + name + "]" + "[id=" + id + name + "]"
	}
	
	
		//alert(e);				
	if($(e).length != 0 && e != undefined){
		
		if($(e).prev().hasClass("loading-small")){
			$($(e).prev()).remove();
		}
		
		if($(e).attr('type') == 'file'){
			$(e).removeClass('hidden');
		}else{
			var tag = $(e)[0].nodeName.toLowerCase();
			if(tag == "button"){
				$(e).button("option", "disabled", false);
				$(e).blur();
			}
			if(tag == "input" || tag == "textarea" || tag == "select"){
				$(e).removeAttr("disabled");
				$(e).blur();
			}
		}
		if($(e).val() == $(e).attr('hint')){
			$(e).addClass("hint");
		}
		//$(e).css("background-color", "#9de47a").delay(3000).animate({ 'background-color': "#ffffff" }, 500);;
	}	
}

function UtilsPrepareForm(_this){
	var vld = true;
	var args = new Object();
	var rtn = new Object();
	rtn.hasFiles = false;
	$('input[id*=' + $(_this).attr('id') + '], textarea[id*=' + $(_this).attr('id') + '], select[id*=' + $(_this).attr('id') + ']').each( function(i,e){
		if(!UtilsValidate(e)){
			vld = false;
		}

		if($(e).attr('type') == 'checkbox'){
			if($(e).attr('checked') != undefined){
				eval("args._" + $(e).attr('name' )+ "=1;");
			}else{
				eval("args._" + $(e).attr('name') + "=0;");
			}
		}else{
			eval("args._" + $(e).attr('name') + "='" + UtilsHtmlEncode($(e).val().replace(/'/g, '"')) + "';");
		}

		if($(e).attr('type') == 'file'){
			if($(e).attr('maxsize') != undefined){
				eval("args._" + $(e).attr('name') + "_maxsize=" + $(e).attr('maxsize') + ";");
			}
			if($(e).attr('thumb') != undefined){
				eval("args._" + $(e).attr('name') + "_thumb=" + $(e).attr('thumb') + ";");
			}
			rtn.hasFiles = true;
		}
	});
	
	rtn.args = args;
	rtn.vld = vld;
	return rtn;
}

function UtilsClearForm(_this){
	//var rtn = new Object();
	$('input[id*=' + $(_this).attr('id') + '], select[id*=' + $(_this).attr('id') + ']').each( function(i,e){
		if($(e).attr('clear') == 'true'){
			if($(e).attr('type') == 'checkbox'){
				$(e).removeAttr('checked');	
			}
			if($(e).attr('hint') != ''){
				$(e).val($(e).attr('hint'));
				$(e).addClass('hint');
			}else{
				$(e).val('');
			}
		}
	});
	
	/*rtn.args = args;
	rtn.vld = vld;
	return rtn;*/
}

function UtilsValidate(e){
	var rtn = true;
	var arrMatch;
	var val = $(e).val();
	var rgx = new Object();
	
	//Restore
	TooltipRemove(e);
	$(e).removeClass("error");
	
	if($(e).attr('regex') != undefined){
		rgx.regex = $(e).attr('regex');
		rgx.message = $(e).attr('message');
		rgx = UtilsPredefinedRegex(rgx); //Return predefined regex
		if(val == $(e).attr('hint')){
			val = "";
		}
		
		if($(e).attr('regex') == "hh:mm" && val.length == 4){ //Omvandlar 1400 till 14:00
			val = val.substr(0,2) + ":" + val.substr(2,3);
			$(e).val(val);
		}
		
		if(rgx.regex == "autocomplete"){
			 $("ul.autocomplete[id=" + $(e).attr('id') + "] li").each(function(i){
				if(val == $(this).html()){
					arrMatch = new Array();
					arrMatch[0] = val;
				}
			});
		}else{
			arrMatch = val.match(rgx.regex);
		}
	
	
		if(arrMatch == null || arrMatch[0] != val){
			rtn = false;
			TooltipCreate(e, rgx.message);
			$(e).addClass("error");
			//alert(rgx.message);
		}
		return rtn;
	}else{
		return true;	
	}
}
function UtilsPredefinedRegex(rgx){
	var rtn = new Object();
	switch(rgx.regex){
		case "email":
			rtn.regex='[^@]+@[a-zA-Z0-9\-\.]+\.[a-zA-Z]{2,5}';
			rtn.message='Ange en giltig e-post.';
			return rtn;
			break;	
		case "notempty":
			rtn.regex='[^ ]+.*';
			rtn.message='Fältet får inte vara tomt.';
			return rtn;
			break;
		case "username":
			rtn.regex='[A-Za-z0-9]+';
			rtn.message='Användarnamnet kan endast bestå av siffror och bokstäver.';
			return rtn;
			break;
		case "hh:mm":
			rtn.regex='^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$';
			rtn.message='Ange en giltig tid. Exempel 13:30.';
			return rtn;
			break;
		case "date":
			rtn.regex='[0-9]{4}-[0-9]{2}-[0-9]{2}';
			rtn.message='Ange ett giltigt datum. Exempel 2010-11-24.';
			return rtn;
			break;
		case "datetime":
			rtn.regex='[0-9]{4}-[0-9]{2}-[0-9]{2} [0-9]{2}:[0-9]{2}';
			rtn.message='Ange datum och tid. Exempel 2010-11-24 13:00.';
			return rtn;
			break;
		case "image":
			rtn.regex='.*(.jpg$|.jpeg$|.gif$|.png$)';
			rtn.message='Filen måste vara en bild av typen jpg, jpeg, gif, png.';
			return rtn;
			break;
		case "document":
			rtn.regex='.*(.pdf$|.doc$|.docx$|.xls$|.xlsx$)';
			rtn.message='Filen måste vara en ett dokument av typen pdf, doc, docx, xls, xlsx.';
			return rtn;
			break;
		case "int-empty":
			rtn.regex='[0-9]*';
			rtn.message='Ange ett heltal.';
			return rtn;
			break;
		case "int":
			rtn.regex='[0-9]+';
			rtn.message='Ange ett heltal.';
			return rtn;
			break;
		case "phone":
			rtn.regex='[0-9]+';
			rtn.message='Ange ett telefonnummer med endast siffror.';
			return rtn;
			break;
		case "http":
			rtn.regex='((http(s)?:\/\/)?([a-zA-Z0-9\-]+\.)?[a-zA-Z0-9\-]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})?(\/[^ ]*)?)*';
			rtn.message='Ange en giltig adress.';
			return rtn;
			break;
		default:
			return rgx;
	}
	
}

function global_friendlyDate(timestamp){
	var regex=/^([0-9]{2,4})-([0-1][0-9])-([0-3][0-9]) (?:([0-2][0-9]):([0-5][0-9]):([0-5][0-9]))?$/;
	var parts=timestamp.replace(regex,"$1 $2 $3 $4 $5 $6").split(' ');
	var d = new Date(parts[0],parts[1]-1,parts[2],parts[3],parts[4],parts[5]);
	var str = weekDays[d.getDay()] + " " + d.getDate() + " " + months[d.getMonth()] + " ";
	if(d.getHours() < 10)
		str += "0" + d.getHours() + ":";
	else
		str += d.getHours() + ":";
	if(d.getMinutes() < 10)
		str += "0" + d.getMinutes();
	else
	  str += d.getMinutes();
	return str.charAt(0).toUpperCase() + str.slice(1);
}

function UtilsCapitalize(str){
	return str.charAt(0).toUpperCase() + str.slice(1);
}

function UtilsHtmlEncode(s)
{
  var el = document.createElement("div");
  el.innerText = el.textContent = s;
  s = el.innerHTML;
  delete el;
  return s;
}

function UtilsHtmlDecode(input){
  var e = document.createElement('div');
  e.innerHTML = input;
  return e.childNodes[0].nodeValue;
}

UTF8 = {
	encode: function(s){
		for(var c, i = -1, l = (s = s.split("")).length, o = String.fromCharCode; ++i < l;
			s[i] = (c = s[i].charCodeAt(0)) >= 127 ? o(0xc0 | (c >>> 6)) + o(0x80 | (c & 0x3f)) : s[i]
		);
		return s.join("");
	},
	decode: function(s){
		for(var a, b, i = -1, l = (s = s.split("")).length, o = String.fromCharCode, c = "charCodeAt"; ++i < l;
			((a = s[i][c](0)) & 0x80) &&
			(s[i] = (a & 0xfc) == 0xc0 && ((b = s[i + 1][c](0)) & 0xc0) == 0x80 ?
			o(((a & 0x03) << 6) + (b & 0x3f)) : o(128), s[++i] = "")
		);
		return s.join("");
	}
};

function urlencode (str) {
    str = (str + '').toString();

    // Tilde should be allowed unescaped in future versions of PHP (as reflected below), but if you want to reflect current
    // PHP behavior, you would need to add ".replace(/~/g, '%7E');" to the following.
    return encodeURIComponent(str.replace(/\+/g, '%plus')).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').
    replace(/\)/g, '%29').replace(/\*/g, '%2A').replace(/%20/g, '+');
}

/*
function global_prepareForm(_this){
	var vld = true;
	var args = new Object();
	var rtn = new Object();
	$('input[name=' + $(_this).attr('name') + '], select[name=' + $(_this).attr('name') + ']').each( function(i,e){
		if(!global_validate(e)){
			vld = false;	
		}

		if($(e).attr('type') == 'checkbox'){
			if($(e).attr('checked') != undefined){
				eval("args._" + $(e).attr('id' )+ "=1;");
			}else{
				eval("args._" + $(e).attr('id') + "=0;");
			}
		}else{
			eval("args._" + $(e).attr('id') + "='" + $(e).val() + "';");
		}
		if($(e).attr('type') == 'file'){
			if($(e).attr('maxsize') != undefined){
				eval("args._" + $(e).attr('id' )+ "_maxsize=" + $(e).attr('maxsize') + ";");
			}
		}
	});
	
	rtn.args = args;
	rtn.vld = vld;
	return rtn;
}
function global_validate(e){
	var rtn = true;
	var arrMatch;
	var val = $(e).val();
	var rgx = new Object();
	rgx.regex = $(e).attr('regex');
	rgx.message = $(e).attr('message');
	rgx = global_predefinedRegex(rgx.regex); //Return predefined regex
	if(val == $(e).attr('hint')){
		val = "";
	}
	if(rgx.regex != undefined){
		if(rgx.regex == "autocomplete"){
			 $("ul.autocomplete[id=" + $(e).attr('id') + "] li").each(function(i){
				if(val == $(this).html()){
					arrMatch = new Array();
					arrMatch[0] = val;
				}
			});
		}else{
			arrMatch = val.match(rgx.regex);
		}
	}
	
	if(rgx.regex != undefined && (arrMatch == null || arrMatch[0] != val)){
		rtn = false;
		tooltip_create(e, rgx.message);
		//alert(rgx.message);
	}
	return rtn;
}
function global_predefinedRegex(rgx){
	var rtn = new Object();
	switch(rgx){
		case "email":
			rtn.regex='[^@]+@[a-zA-Z0-9\-]+\.[a-zA-Z]{2,5}(\.[a-zA-Z]{2,5})?';
			rtn.message='Ange en giltig e-post.';
			return rtn;
			break;	
		case "notempty":
			rtn.regex='[^ ]+.*';
			rtn.message='Fältet får inte vara tomt.';
			return rtn;
			break;
		case "username":
			rtn.regex='[A-Za-z0-9]+';
			rtn.message='Användarnamnet kan endast bestå av siffror och bokstäver.';
			return rtn;
			break;
		case "hh:mm":
			rtn.regex='^([0-1]?[0-9]|2[0-4]):([0-5][0-9])(:[0-5][0-9])?$';
			rtn.message='Ange en giltig tid. Exempel 13:30.';
			return rtn;
			break;
		case "datum":
			rtn.regex='[0-9]{4}-[0-9]{2}-[0-9]{2}';
			rtn.message='Ange ett giltigt datum. Exempel 2010-11-24.';
			return rtn;
			break;
		default:
			return rgx;
	}
	
}

function global_pageLoading(e){
	if(e){
		$("div.loading").removeClass('hidden');
	}else{
		$("div.loading").addClass('hidden');	
	}
}*/


