		$(document).ready(function(){
				AjaxAction({'action':'DocumentReady'}, this);
		});

		$.ajaxSetup({
			type: 'POST',
			url: 'http://www.gadden.com/php',
			timeout: 30000
		});
		
		var actionQueryAjaxManager = $.manageAjax.create('actionQuery', {
			queue: 'true'
		});
		var autocompleteQueryAjaxManager = $.manageAjax.create('autocompleteQuery', {
			queue: 'false',
			abortOld: 'true'
		});
		
		function AjaxAutocomplete(args, cb){
			if(args.php == undefined)
				args.php = page_alias;
			
			var tab = "";
			
			if($('input.filter').length != 0){
				if ($('input.filter').parents('div[id=udt]').length != 0){
					tab = $('input.filter').parents('div[id=udt]').attr('name');
				}
			}
			
			if(args.php == 'frontend' && tab != ''){
				args.tab = tab;
			}else{
				args.tab = page_tab;
			}
			autocompleteQueryAjaxManager.add({
				data:args,
				dataType:'json',
				success: cb
			});
		}
		
		function AjaxAction(args, _this){
			if(args.php == undefined)
				args.php = page_alias;
			
			//alert(args.php)
			var tab = "";
			if($(_this).length != 0){
				if ($(_this).parents('div[id=udt]').length != 0){
					tab = $(_this).parents('div[id=udt]').attr('name');
				}
			}
			
			if(args.php == 'frontend' && tab != ''){
				args.tab = tab;
			}else{
				args.tab = page_tab;
			}

			actionQueryAjaxManager.add({
				data:args,
				error: function(jqXHR, textStatus, errorThrown){
					if(jqXHR.status != 0){
						UtilsErrorDialog("Ett fel har inträffat.<br>" + jqXHR.status + ": " + errorThrown);
					}
					},
				success: function(data, textStatus, jqXHR){
					if(data.indexOf("<br />") == 0){
						UtilsErrorDialog("Ett fel har inträffat.<br>" + data.replace('"', '/"'));	
					}else{
						AjaxEvalResponse(data);
					}
					eval(args.onSuccess);
					HintRefresh()
				}
			});
		}
		
		function AjaxFormSubmit(e, args){
			var _this = e;
			if(args.php == undefined)
				args.php = page_alias;
			
			//alert(args.php)
			var tab = "";
			if($(_this).length != 0){
				if ($(_this).parents('div[id=udt]').length != 0){
					tab = $(_this).parents('div[id=udt]').attr('name');
				}
			}
			
			if(args.php == 'frontend' && tab != ''){
				args.tab = tab;
			}else{
				args.tab = page_tab;
			}
			
			var options = {url: 'http://www.gadden.com/php',
						type: 'post',
						timeout: 300000,
						dataType: "text/html",
						data: args,
						error: function(jqXHR, textStatus, errorThrown){
							if(jqXHR.status != 0){
								UtilsErrorDialog("Ett fel har inträffat.<br>" + jqXHR.status + ": " + errorThrown);
							}
						},
						success: function(data, textStatus, jqXHR){
							if(data.indexOf("<br />") == 0 || data.indexOf("<br>") == 0){
								UtilsErrorDialog("Ett fel har inträffat.<br>" + data.replace('"', '/"'));	
							}
							try{
								//eval(data);
								AjaxEvalResponse(UTF8.decode(unescape(data)));
								//alert(UtilsUtf8Decode(unescape(data)));
							}catch(error){
								UtilsErrorDialog("Ett fel har inträffat.<br><br>Javascrpt error: " + error.name + "<br>" + error.message + "<br><br><code>" + UtilsHtmlEncode(UTF8.decode(unescape(data))) + "</code>");
							}
							eval(args.onSuccess);
							HintRefresh()
						
						}};
			e.ajaxSubmit(options)
		}
		
		function AjaxEvalResponse(html){
			var pattern = /<script[^>]*>([\s\S]*?)<\/script>/gm;
			var arrMatch = html.match(pattern);
			var code = new Array();
			var i = 0;
			var j = 0;
			
			for (s in arrMatch){
				//Extract all <script> to be executed last.
				if(isNaN(arrMatch[s]) && !isNaN(s)){
					html = html.replace(arrMatch[s], "");
					code[i] = arrMatch[s].replace(/<(\/)?script[^>]*>/g,"");
				}
				i++;
			}
			for (i=0; i<code.length; i++){
				//Do not execute same script more than once.
				for (j=0; j<code.length; j++){
					if(code[i] == code[j] && i != j && code[j] != ""){
						code[j] = "";
					}
				}
			}
			
			for (i=0; i<code.length; i++){
				//Execute script inside <script> tags
				if(code[i] != undefined && code[i] != ""){
					try{
						eval(code[i]);
					}catch(error){
						UtilsErrorDialog("Ett fel har inträffat.<br><br>Javascrpt error: " + error.name + "<br>" + error.message + "<br><br><code>" + UtilsHtmlEncode(code[i]) + "</code>");
					}
				}
			}

		}
		
		if (!Array.prototype.indexOf) //Fix for array.indexOf()
			{
			  Array.prototype.indexOf = function(searchElement /*, fromIndex */)
			  {
				"use strict";
			
				if (this === void 0 || this === null)
				  throw new TypeError();
			
				var t = Object(this);
				var len = t.length >>> 0;
				if (len === 0)
				  return -1;
			
				var n = 0;
				if (arguments.length > 0)
				{
				  n = Number(arguments[1]);
				  if (n !== n) // shortcut for verifying if it's NaN
					n = 0;
				  else if (n !== 0 && n !== (1 / 0) && n !== -(1 / 0))
					n = (n > 0 || -1) * Math.floor(Math.abs(n));
				}
			
				if (n >= len)
				  return -1;
			
				var k = n >= 0
					  ? n
					  : Math.max(len - Math.abs(n), 0);
			
				for (; k < len; k++)
				{
				  if (k in t && t[k] === searchElement)
					return k;
				}
				return -1;
			  };
			}
