// ---------------- popin block element

$.popinBlockElement = function(Tekst, Element, timeout, color) {
	if ( Element != '' )
	{
		$(Element).block(
		{
			message: '<h1 style="font-size: 25px; color: #'+color+';">'+Tekst+'</h1>',
			css: { 
				border: 'none', 
				padding: '15px', 
				backgroundColor: '#000', 
				'-webkit-border-radius': '10px', 
				'-moz-border-radius': '10px', 
				opacity: .5, 
				color: '#fff'
			},
			timeout: timeout
		});
	} else {
		$.blockUI(
		{
			message: '<h1 style="font-size: 25px; color: #'+color+';">'+Tekst+'</h1>',
			css: { 
				border: 'none', 
				padding: '15px', 
				backgroundColor: '#000', 
				'-webkit-border-radius': '10px', 
				'-moz-border-radius': '10px', 
				opacity: .5, 
				color: '#fff' 
			},
			timeout: timeout
		});
	}
};

// ---------------- AJAX form functions

$.tplAendreCallback = function(IndholdsSelector, indhold, URL, FormSelector, Action)
{
	$(IndholdsSelector).html(indhold);
	//$(indhold).appendTo(IndholdsSelector); // giver problemmer med f.eks % hvis de ikke er i <> fordi den tror den skal finde elementet
	$.jsonOnSubmit(URL, FormSelector, Action); // gav recursive problemmer ved gem indhold
	if ( typeof(tinyMCE) != "undefined" ) {
		$(IndholdsSelector).find('textarea[id^="content_"]').each(function() {
			tinyMCE.execCommand('mceAddControl', false, $(this).attr("id"));
		});
	}
};

$.CallAJAX = function(URL, Data, Action)
{
	$.ajax({
		url: URL,
		cache: false,
		dataType: 'text',
		type: 'POST',
		contentType: "application/x-www-form-urlencoded;charset=ISO-8859-1",
		data: 'jsonAktion='+Action+'&'+Data,
		error: $.HandleError,
		success: $.HandleSuccess
	});
};

$.HandleError = function(data,m){
	$.popinBlockElement("Handlingen fejlede", '', 6000, 'ff0000');
};
	
$.HandleSuccess = function(data,m)
{

	var tag_start, tag_end, indhold_end, data1_tag, data1_indhold;
	var fejl = false;
	var object1 = {
					IndholdsSelector:		null,
					Indhold:				null,
					CallOuterURL:			null,
					CallInnerURL:			null,
					replaceWith:			null,
					popupBeskedSelector:	'',
					popupBeskedOk:			null,
					popupBeskedFejl:		null,
					Action:					null
			};

	while ( 0 < data.length && !fejl )
	{
		tag_start = data.indexOf("{%&?**a|108sj||////:");
		tag_end = data.indexOf(",");
		indhold_end = data.indexOf(":%&?**a|108sj||////}");
        
		if ( 0 == tag_start && 0 < tag_end && 0 < indhold_end )
        {
			data1_tag = data.substring(20, tag_end);
			data1_indhold = data.substring(tag_end+1, indhold_end);
			if ( data1_tag == "IndholdsSelector" )
				object1.IndholdsSelector = data1_indhold;
			else if ( data1_tag == "Indhold" )
				object1.Indhold = data1_indhold;
			else if ( data1_tag == "CallOuterURL" )
				object1.CallOuterURL = data1_indhold;
			else if ( data1_tag == "CallInnerURL" )
				object1.CallInnerURL = data1_indhold;
			else if ( data1_tag == "replaceWith" )
				object1.replaceWith = data1_indhold;
			else if ( data1_tag == "popupBeskedSelector" )
				object1.popupBeskedSelector = data1_indhold;
			else if ( data1_tag == "popupBeskedOk" )
				object1.popupBeskedOk = data1_indhold;
			else if ( data1_tag == "popupBeskedFejl" )
				object1.popupBeskedFejl = data1_indhold;
			else if ( data1_tag == "Action" )
				object1.Action = data1_indhold;
			else if ( data1_tag == "FormName" )
				object1.FormName = data1_indhold;
			else if ( data1_tag == "RequestURL" )
				object1.RequestURL = data1_indhold;
			else
				fejl = true;
			data = data.substring(indhold_end+20);
		} else
			fejl = true;
	}
	if ( !fejl )
	{
		if ( object1.FormName!=null  )
			$("form[name=" + object1.FormName + "]").unblock();
		if ( object1.CallOuterURL!=null )
			window.location.replace(object1.CallOuterURL);
		else if ( object1.CallInnerURL!=null && object1.Action!=null )
			$.CallAJAX(object1.CallInnerURL, '', object1.Action);
		else if ( object1.IndholdsSelector!=null && object1.Indhold!=null && object1.RequestURL!=null && object1.FormName!=null && object1.Action!=null )
			$.tplAendreCallback(object1.IndholdsSelector, object1.Indhold, object1.RequestURL, object1.FormName, object1.Action);
		else if ( object1.IndholdsSelector!=null && object1.replaceWith!=null )
			$(object1.IndholdsSelector).replaceWith(object1.replaceWith);
		
		if ( object1.popupBeskedOk!=null || object1.popupBeskedFejl!=null )
		{
			if ( object1.popupBeskedOk!=null )
				$.popinBlockElement(object1.popupBeskedOk, object1.popupBeskedSelector, 4000, '00cc00');
			if ( object1.popupBeskedFejl!=null )
				$.popinBlockElement(object1.popupBeskedFejl, object1.popupBeskedSelector, 6000, 'ff0000');
		}
	}
	if ( fejl )
		$.popinBlockElement("Der er desvære sket en fejl. Prøv venligst igen.", '', 9000, 'ff0000');
}

$.jsonOnSubmit = function(URL, FormSelector, Action)
{
	$("form[name="+FormSelector+"]").submit(function(e) {
		e.preventDefault();
		if ( typeof(tinyMCE) != "undefined" ) {
			$("form[name="+FormSelector+"]").find('textarea[id^="content_"]').each(function() {
				tinyMCE.execCommand('mceRemoveControl', false, $(this).attr("id"));
			});
			tinyMCE.triggerSave();
		}
		$.CallAJAX(URL, $("form[name="+FormSelector+"]").serialize(), Action);
	});
};

// ---------------- Diverse

var ErSubmitted = false; 
function formValidation(formeleement, Value)
{
	if ( ErSubmitted == false )
	{
		ErSubmitted = true;
		formeleement.action.value = Value;
		formeleement.submit();
		// Hvis det er muligt skal alle submit, button, file og reset knapper deaktiveres
		if ( document.all || document.getElementById )
		{
			for ( i=0 ; i<formeleement.length ; i++ )
			{
				var tempobj=formeleement.elements[i];
				if( tempobj.type && (tempobj.type.toLowerCase() == "file" || tempobj.type.toLowerCase() == "button" || tempobj.type.toLowerCase() == "submit" || tempobj.type.toLowerCase() == "reset") )
					tempobj.disabled = true;
			}
		}
		if ( document.all || document.getElementById )
		{
			for ( i=0 ; i < document.links.length ; i++ )
				document.links[i].href = "#";
		}
	}
}

var AntalLinieSkift = 0;

function MaxTegn(field, maxlaengde, maxAntalLinieskift)
{
<!-- Linieskift skal ikke tælles med i antal tegn. IE, firefox, win, max og linus bruger forskellide tegn (dermed også længde) for linieskift \r\n,\r eller \n -->
	var sikkerhed = 0;
	strlen = StrengLaengde(field.value);
	while ( ( strlen > maxlaengde) && (sikkerhed<1000) )
	{
		if ( strlen > (maxlaengde + 2 ) )
		{
			field.value = field.value.substring(0, field.value.length-(strlen-maxlaengde));
		} else {
			<!--  Er nødt til at gører sådan idet nogen gange skal der slettes 2 karakter, hvis den sidste karakter er \r\n-->
			<!-- AntalLinieSkift bliver sat i StrengLaengde -->
			strlen = strlen + AntalLinieSkift;
			field.value = field.value.substring(0, field.value.length-1);
			strlen1 = StrengLaengde(field.value);
			<!-- Hvis det ikke var nok kun at slette et tegn f.eks. hvis det er \r\n -->
			if ( (strlen1 + AntalLinieSkift) == strlen )
				field.value = field.value.substring(0, field.value.length-2);
		}
		strlen = StrengLaengde(field.value);
		sikkerhed = sikkerhed + 1;
	}
	sikkerhed = 0;
	while ( (maxAntalLinieskift < AntalLinieSkift) && (sikkerhed<1000) )
	{
		<!--  Er nødt til at gører sådan idet nogen gange skal der slettes 2 karakter, hvis den sidste karakter er \r\n-->
		if ( AntalLinieSkift > (maxAntalLinieskift + 2 ) )
		{
			field.value = field.value.substring(0, field.value.length-(AntalLinieSkift-maxAntalLinieskift));
		} else {
			strlen = strlen + AntalLinieSkift;
			field.value = field.value.substring(0, field.value.length-1);
			strlen1 = StrengLaengde(field.value);
			<!-- Hvis det ikke var nok kun at slette et tegn f.eks. hvis det er \r\n -->
			if ( (strlen1 + AntalLinieSkift) == strlen )
				field.value = field.value.substring(0, field.value.length-2);
		}
		strlen = StrengLaengde(field.value);
		sikkerhed = sikkerhed + 1;
	}
}

function StrengLaengde(str)
{
	AntalLinieSkift = 0;
	while ( str.indexOf("\r\n")!=-1 )
	{
		str = str.replace ( "\r\n", '' );
		AntalLinieSkift = AntalLinieSkift+1;
	}
	while ( str.indexOf('\r')!=-1 )
	{
		str = str.replace ( '\r', '' );
		AntalLinieSkift = AntalLinieSkift+1;
	}
	while ( str.indexOf('\n')!=-1 )
	{
		str = str.replace ( '\n', '' );
		AntalLinieSkift = AntalLinieSkift+1;
	}
	return str.length;
}

