﻿var GrafiskHus = new Object();
GrafiskHus.JavaScript = new Object();

GrafiskHus.JavaScript.GenericAjaxPoster = function(pageId)
{
	   this.CallbackHandler = null;
	var values = new Array();
	var callBackArgs = new Array();
	   
	this.RegisterValue = function(name, val)
	{
		var val = new GrafiskHus.JavaScript.GenericAjaxPoster.PostValue(name, val);
		values.push(val);
	}

	this.RegisterArgument = function(arg)
	{
		callBackArgs.push(arg);
	}

	this.Post = function(poster, recId, listId)
	{
		var rnd = Math.random(10).toString().replace(".","");
		var url = location.protocol + "//" + location.host;

			if(isNaN(pageId))
			  url += "/" + pageId;
			else
		  url += "/page" + pageId + ".aspx?";

			url += "&action=post&layoutid=1&rndkey=" + rnd;
    
		if(recId != null && listId != null) url += "&listid=" + listId + "&recid=" + recId;

		var params = "";

		for(var i = 0; i < values.length; i++)
		{
			   var val = values[i].Value;
			   if(isNaN(val.replace(",",".")))
				val = encodeURIComponent(val);

		   if(params != "") params += "&";
			params += values[i].Name + "=" + val;
		}

		var storage = tsAjax.createInstance(rnd);
		storage.method = "post";
		storage.postData = params + "&previouscontent=";
		storage.Poster = poster;
		storage.CallbackArguments = callBackArgs;
		if(this.CallbackHandler != null) storage.callbackHandler = this.CallbackHandler;

		if(this.CallbackHandler != null) tsAjax.innerHTML(url,"tsAjax",rnd,null,null,this.GenericCallbackHandler);
		else return tsAjax.innerHTML(url,null,rnd,null,null,null);
	}

	this.GenericCallbackHandler = function()
	{
		if (this.ajaxObj!=null) {
			if (this.ajaxObj.readyState==4) {
				var RT = this.ajaxObj.responseText;
				var poster = this.Poster;

				this.callbackHandler.call(poster, RT, this.CallbackArguments);
											
				if (this.statusElement!=null) {this.statusElement.innerHTML = this.statusText_Done;}
				if (this.resultElement!=null) {this.resultElement.innerHTML = RT}
			} else {
			
		}			
		} else {
			var RT = this.IF.innerHTML;
			if (this.statusElement!=null) {this.statusElement.innerHTML = this.statusText_Done;}
			if (this.resultElement!=null) {this.resultElement.innerHTML = RT}
		}
	}
}
GrafiskHus.JavaScript.GenericAjaxPoster.PostValue = function(name, val)
{
  this.Name = name;
  this.Value = val;
}
GrafiskHus.JavaScript.GenericAjaxLoader = function(page)
{
	this.CallbackHandler = null;

	this.Load = function(sender)
	{
		var rnd = Math.random(10).toString().replace(".","");

		var url = location.protocol + "//" + location.host + "/";
			url += page;

		if(page.indexOf("?") == -1) url += "?";
		else url += "&";
		url += "rndkey=" + rnd;

		var loader = tsAjax.createInstance(rnd);
		loader.method = "get";
		loader.Sender = sender;

		if(this.CallbackHandler != null) loader.callbackHandler = this.CallbackHandler;

		if(this.CallbackHandler != null) tsAjax.innerHTML(url,"tsAjax",rnd,null,null,this.GenericCallbackHandler);
		else return tsAjax.innerHTML(url,null,rnd,null,null,null);
	}

	this.GenericCallbackHandler = function()
	{
		if (this.ajaxObj!=null) {
			if (this.ajaxObj.readyState==4) {
				var RT = this.ajaxObj.responseText;
				   RT = RT.replace(/listformkey/gi, 'keyfield' + Math.random(10));

				this.callbackHandler.call(this.Sender,RT);
											
				if (this.statusElement!=null) {this.statusElement.innerHTML = this.statusText_Done;}
				if (this.resultElement!=null) {this.resultElement.innerHTML = RT}
			} else {
			
		}			
		} else {
			var RT = this.IF.innerHTML;
			if (this.statusElement!=null) {this.statusElement.innerHTML = this.statusText_Done;}
			if (this.resultElement!=null) {this.resultElement.innerHTML = RT}
		}
	}
}
GrafiskHus.JavaScript.TangoraPoster = function(pageId, containerId, id, edit)
{
  this.Container = null;
  var _containerId = containerId;
  var _poster = null;

  this.OnPostSuccess = null;
  this.OnInit = null;
  this.className = "";

  this.Init = function()
  {
    this.Container = document.getElementById(containerId);

    if(!this.Container)
    {
	this.Container = document.createElement("div");
	this.Container.id = _containerId;
	this.Container.className = this.className += " hidden layer";
	$("body").append(this.Container);    
    }

    this.Container.innerHTML = "Henter indhold. Vent venligst...";
    var url = "";

    if(isNaN(pageId))
	url = pageId;
    else
	url = "/page" + pageId + ".aspx";

    if(edit == true)
	url += "?recid=" + id;
    else if(id != null)
	url += "?cid=" + id;

    var loader = new GrafiskHus.JavaScript.GenericAjaxLoader(url);
    loader.CallbackHandler = this.InitDone;
    loader.Load(this);
  }

  this.InitDone = function(html)
  {
    var div = document.createElement("div");
    div.innerHTML = html;
    div.id = Math.random(10);
    this.Container.innerHTML = "";
    this.Container.appendChild(div);
    
    if(html.indexOf("form")==-1)
    {
	var arr = new Array();
	$.each($("#" + containerId + " input"), function(){
	  arr[this.id] = this.value;
	});
	this.OnPostSuccess(arr);
    }
    else
	if(this.OnInit != null) this.OnInit.call(div);

    var submit = $("input:submit", this.Container)[0];
    if(!submit) return;
    submit.poster = this;
    submit.onclick = this.SubmitClickHandler;
  }

  this.SubmitClickHandler = function()
  {
    var tp = new GrafiskHus.JavaScript.GenericAjaxPoster(pageId);
    tp.CallbackHandler = this.poster.InitDone;

    $.each($("#" + containerId + " input"), function(){
	if(this.type == "text" || this.type == "hidden")
	  tp.RegisterValue(this.name, this.value);
    });
    $.each($("#" + containerId + " textarea"), function(){
	  tp.RegisterValue(this.name, this.value);
    });
    $.each($("#" + containerId + " select"), function(){
	     var opts = this.options;
	     if(opts.length > 0)
	    tp.RegisterValue(this.name, opts[this.selectedIndex].value);
    });

    if(!edit)
	tp.Post(this.poster);
    else
	tp.Post(this.poster, id, -300006);

    return false;
  }
}
GrafiskHus.JavaScript.MarkLinks = new function()
{
  this.Write = function(container)
  {
    if(!container) return;

    var str = container.innerHTML;
    str = str.replace(/(http:\/\/\S+)/g, "<a href='$1'>$1</a>");
    str = str.replace(/(www\S+)/g, "<a href='http://$1'>$1</a>");

    if(str.indexOf("@")>-1)
    {
	var strArr = str.split("@");
	   var lIndex0 = strArr[0].lastIndexOf(" ");
	   var lIndex1 = strArr[1].lastIndexOf(" ");

	   if(lIndex1 == -1) lIndex1 = strArr[1].length;
	var email = strArr[0].substring(lIndex0);
	email += "@" + strArr[1].substring(0, lIndex1);
	
	str = str.replace(email, "<a href='mailto:" + email + "'>" + email + "</a>");
    }

    container.innerHTML = str;
  }
}
function goToPrint(el)
{
  var val = el.options[el.selectedIndex].value;
  if(val != "") document.location=val;
}
GrafiskHus.JavaScript.DefaultTexter = new function()
{
  this.Set = function(elmId, text)
  {
    var elm = document.getElementById(elmId);
    if(!elm) return;
    elm.defaultText = text;
    if(elm.value == "") elm.value = text;
    elm.onfocus = this.OnFocusHandler;
    elm.onblur = this.OnBlurHandler;
    elm.form.onsubmit = this.OnSubmitHandler;

    var btn = elm.form.getElementsByTagName("input");
    btn = btn[btn.length-1];
    if(btn.type == "button" && btn.style.display != "none")
    {
	btn.style.display = "none";
	var newBtn = document.createElement("input");
	newBtn.type = "submit";
	newBtn.value = btn.value;
	btn.parentNode.insertBefore(newBtn, btn);
    }
  }
  this.OnFocusHandler = function(e)
  {
    if(this.value == this.defaultText) this.value = "";
  }
  this.OnBlurHandler = function(e)
  {
    if(this.value == "") this.value = this.defaultText;
  }
  this.OnSubmitHandler = function(e)
  {
    var elms = this.getElementsByTagName("input");

    for(var i = 0; i < elms.length; i++)
    {
	if(elms[i].value == elms[i].defaultText) elms[i].value = "";
    }
  }
}
