
var menuStack = [];
var menuTemplate="";
var currentAppLoc="";
var paging_active=false;

function LTrim(str) {
  return str.replace(/\s*((\S+\s*)*)/, "$1");
}

function RTrim(str) {
  return str.replace(/((\s*\S+)*)\s*/, "$1");
}

function trim(str) {
  return LTrim(RTrim(str));
}

function qeditStart(obj) {
  var data = obj.id.split(':');
  obj.onclick=null;
  if (data[0]=="qedit") {
    updateSection('../r/qeditsetup.php?_table=' + data[1] + '&_field=' + unescape(data[2]) + unescape(data[3]) + '&_tmpl=' + data[4],obj.id);
  } else if (data[0]=="qform") {
    updateSection('../r/qeditsetup.php?_table=' + data[1] + unescape(data[2]) + '&_tmpl=' + data[3] + '&del=' + data[4], obj.id);
  }
}

function qeditStop(e,frm,type) {
  var str=getFormValues(frm);
  if (!e) {
    e=window.event;
  }
  updateSection('../r/qeditsave.php?'+ str + '&type=' + type,frm.parentNode.id);
  e.stopPropagation();
  frm.parentNode.onclick=new Function("qeditStart(this);");
}

function qeditAddRelated(obj) {
  var data = $(obj).parent().attr('id').split(':');
  $.get('../r/qeditnew.php',
	    {type:   data[0],
	     parent: data[1],
	     child:  data[2],
	     key:    data[3]},
	function (data) {
	  $(obj).before(data);
	});
}

function activateGrid(id,colModel,gridConf) {
  $('#'+id).html('<div id="'+id+'_filter" style="display: none;"></div><table id="'+id+'_grid" class="scroll" cellpadding="0" cellspacing="0"></table><div id="'+id+'_pager" class="scroll" style="text-align:center;"></div>');

  $('#'+id+'_grid').jqGrid({
	  scroll: false,
	  url:'../r/list.php?accessCode='+id,
	  datatype: "json",
	  colModel: colModel,
	  rowNum:   gridConf.rows,
	  imgpath: '../css/jqGrid/basic/images',
	  pager: jQuery('#'+id+'_pager'),
	  sortname: gridConf.sortname,
	  viewrecords: true,
	  sortorder: gridConf.sortorder,
	  jsonReader: {
	      repeatitems : false,
	      id: gridConf.keyid
	  },
	  loadComplete: redirectLinks,
	  forceFit: true,
	  width: 700,
	  height: '100%'
      });

  $('#'+id+'_filter').height(25).hide().filterGrid(id+"_grid",{gridModel:true,gridToolbar:true});

  var nav=$('#'+id+'_grid').navGrid('#'+id+'_pager',
      {edit:false,add:false,del:false,search:false,refresh:true}
  );

  if (gridConf.search === true) {
    nav.navButtonAdd('#'+id+'_pager',
	{ caption:"Search",
	  title:"Toggle Search",
	  buttonimg:'../css/jqGrid/basic/images/find.gif',
	  onClickButton:function(){
	      if(jQuery('#'+id+'_filter').css("display")=="none") {
		  jQuery('#'+id+'_filter').css("display","");
	      } else {
		  jQuery('#'+id+'_filter').css("display","none");
	      }
	  }
	});
  }

  if (gridConf.addLink) {
    nav.navButtonAdd('#'+id+'_pager',
	{
	    caption:"Add",
	    title:"Add record",
	    buttonimg:'../css/jqGrid/basic/images/row_add.gif',
	    onClickButton:function() {
		getLink(gridConf.addLink);
	    }
	});
  }
}


function addRecord(btn) {
  getLink(btn.addlink);
}

function updateFilter(evt) {
  if (evt.keyCode==13 ||
      evt.which==13) {
    this.gridLink;
    for (value in this.gridLink.dataModel.filterData) {
      this.gridLink.dataModel.baseParams[value]=document.getElementById(value).value;
    }
    this.gridLink.dataModel.loadPage(this.gridLink.view.cursor,redirectLinks);
  }
}

function getFormValues(fobj) {
  var str = "";
  var files=new Array();
  for(var i = 0;i < fobj.elements.length;i++) {
    switch(fobj.elements[i].type) {
    case "text":
    case "hidden":
    case "password":
    case "textarea":
      if (fobj.elements[i].name!="") {
	str += fobj.elements[i].name + "=";
	var tmce=tinyMCE.get(fobj.elements[i].id);
	if (tmce) {
	  str += encodeURIComponent(tmce.getContent()) + "&";
	  tinyMCE.execCommand("mceRemoveControl",false,fobj.elements[i].id);
	} else {
	  str += encodeURIComponent(fobj.elements[i].value) + "&";
	}
      }
      break;
      //case "submit":
      //if (fobj.elements[i].name!="" && fobj.elements[i].XHRSubmitMarkerTS==1) {
      //	str += fobj.elements[i].name +
      //"=" + escape(fobj.elements[i].value) + "&";
      //}
      // break;
    case "checkbox":
      if (fobj.elements[i].name!="") {
	if (fobj.elements[i].checked===true) {
	  str += fobj.elements[i].name +
	    "=" +
	    escape(fobj.elements[i].value) + "&";
	} else {
	  str += fobj.elements[i].name +
	    "=--&";
	}
      }
      break;
    case "select-one":
    case "select":
      if (fobj.elements[i].name!="" && fobj.elements[i].selectedIndex>=0) {
	str += fobj.elements[i].name +
	  "=" + fobj.elements[i].options[fobj.elements[i].selectedIndex].value + "&";
      }
      break;
    case "select-multiple":
      for(var j=0; j<fobj.elements[i].length;j++) {
	if (fobj.elements[i].options[j].selected===true) {
	  str+=fobj.elements[i].name + '[' + fobj.elements[i].options[j].value + ']=1&';
	}
      }
      break;
    }

  }
  str = str.substring(0,(str.length - 1));
  return str;
}


function markSubmitDone(frm,buttonStr) {
  document.forms[frm].buttonClickedStr=buttonStr;
  //elements[elem].XHRSubmitMarkerTS=1;
}

function killMain() {
  var current=document.getElementById('main');
  emptyNode(current);
  // Remove all class="ygrid-column-sizer" until it's fixed in the source.
}

function emptyNode(el) {
  el.innerHTML="";
}

function removeTag(id) {
  var old = document.getElementById(id);
  if (old) {
    document.removeChild(old);
  }
}

function post_form(i) {
  var frm = document.getElementById('main').getElementsByTagName('form')[i];
  var str=getFormValues(frm);
  if (frm.buttonClickedStr!==undefined) {
    str += frm.buttonClickedStr;
  }
  getHtml(frm.remotePage,str,0);
}


function backMenu() {
  menuStack.pop();
  var menu=menuStack.pop();
  updateMenu(menu,-1);
}

function buildSimpleMenu(menu,dir) {
  var menulist="";
  for (var item=0;item<menu.menu.length;item++) {
    if (menu.menu[item]!=undefined && menu.menu[item].link!=undefined) {
      menulist=menulist + '<li class="menuitem" id="' + menu.menu[item].link + '"><a href="javascript:getMenu(\'' + menu.menu[item].link + '\');">' + menu.menu[item].name + "</a></li>";
    }
  }
  if (menulist!="") {
    if (menuStack.length>0) {
      menulist=menulist + '<li class="menuitem" id="back"><a href="javascript:backMenu();">Back</a></li>';
    }
    if (menu.id!='main') {
      menulist=menulist + '<li class="menuitem" id="top"><a href="javascript:getMenu(\'../r/menu.php?level=main\')">Top</a></li>';
    }
    var menutag = document.getElementById('menu');
    var title="";
    if (menu.title!=="") {
      title="<b>" + menu.title + "</b><br>";
    }
    //menutag.innerHTML=title + "<ul>" + menulist + "</ul>";
    menuHtml=title + "<ul>" + menulist + "</ul>";
    menutag.style.visibility="visible";
    if (trim(menutag.innerHTML)=="") {
      menutag.innerHTML="Loading...";
    }
    changeMenu(menutag,menuHtml,dir);

    if (!(menuStack.length>1 &&
	  menuStack[menuStack.length-1].id==menu.id)) {
      menuStack.push(menu);
    }
  }
}

function buildTemplateMenu(menu,dir) {
  var menulist="";

  var linklistTemplate = /\$\{linklist\|([^}]+)\}/m.exec(menuTemplate);

  for (var item=0;item<menu.menu.length;item++) {
    if (menu.menu[item]!=undefined && menu.menu[item].link!=undefined) {
      menulist=menulist + linklistTemplate[1].replace('%link%','<a href="javascript:getMenu(\'' + menu.menu[item].link + '\');">' + menu.menu[item].name + "</a>");
    }
  }
  if (menulist!="") {
    if (menuStack.length>0) {
      menulist=menulist + linklistTemplate[1].replace('%link%','<a href="javascript:backMenu();">Back</a>');
      menulist=menulist + linklistTemplate[1].replace('%link%','<a href="javascript:getMenu(\'../r/menu.php?level=main\')">Top</a>');
    }
    var menutag = document.getElementById('menu');
    var title="";
    if (menu.title!=="") {
      title=menu.title;
    }
    var fullText=menuTemplate.replace('%title%',title);
    fullText=fullText.replace(linklistTemplate[0],menulist);

    menutag.style.visibility="visible";

    //menutag.innerHTML=fullText;
    changeMenu(menutag,fullText,dir);

    if (!(menuStack.length>1 &&
	  menuStack[menuStack.length-1].id==menu.id)) {
      menuStack.push(menu);
    }
  }
}

function updateMenu(menu,direction) {

  if (menuTemplate) {
    buildTemplateMenu(menu,direction);
  } else {
    buildSimpleMenu(menu,direction);
  }
  if (menu.pagedata!='') {
    showMainPage("../r/page.php?page=" + menu.id,menu.pagedata);
  } else if(menu.page &&
	    menu.page!=="") {
    getHtml("../r/page.php?page=" + menu.id,"");
  }
}

function changeMenu(nod,html,direction) {
    if (!paging_active) {
	paging_active=true;
	nod = (typeof nod=="string") ? $(nod)[0] : nod;
	var w=nod.offsetWidth;
	var newleft=0; // after animation done
	var startleft=0; // starting point of anim
	// set startpoint for new content
	// and new left of wrapper
	if (direction==-1) {  // back to start
	    startleft="-"+w+"px"; // startleft=startpoint of the new content
	    newleft=w+"px"; // endpoint of container
	    containw=w*2; // double width for container
	}
	else if (direction==1) {
	    startleft=w+"px";
	    newleft="-"+w+"px";
	    containw=w*2;
	}
	else if (direction==0) {
	    startleft="0px";
	    containw=w;
	}
	if (!$(nod).children("#js_content")[0]) {
	    $(nod).wrapInner('<div id="js_content"><div class="js_one"></div></div>');
	}
	var jObj=$("#js_content").append('<div class="js_two">'+html+'<div>');
	$("#js_content").css("position","absolute");
	$("#js_content").css("width",containw+"px");
	$("#js_content .js_one").add("#js_content .js_two").css( { position:"absolute", width:w+"px" } );
	$("#js_content .js_two").css("left",startleft);
	$("#js_content").css("left","0px");

	if (direction==0) { // fade content
	    $("#js_content .js_one").fadeOut("fast",function(){
		$("#js_content .js_one").remove();
		$("#js_content .js_two").addClass("js_one");
		$("#js_content .js_one").removeClass("js_two");
		paging_active=false;
	    });
	    $("#js_content .js_two").fadeIn("slow");
	} else if (direction==-1 || direction==1) { // animate left/right
	    $("#js_content").animate(
		{ left: newleft },
		600,
		'easeInOutQuad',
		function() {
		    $("#js_content .js_one").remove();
		    $("#js_content .js_two").addClass("js_one");
		    $("#js_content .js_one").removeClass("js_two");
		    $("#js_content").add("#js_content .js_one").css("left","0px");
		    $("#js_content").css("width",w+"px");
		    paging_active=false;
		}
	    );

	}
    }
}



function getLink(fullLink) {
  var linkPart = fullLink.split('?');
  killMain();
  getHtml("../r/link.php?" + linkPart[1] + '&_rlink=' + escape(document.currentRemotePage),"",0);
  return false;
}

function runScriptsInString(str) {
  var allscripts=new String();
  str.replace(/<script([^>]*?)>([\w\W]*?)<\/script>/g,
	      function(match, attributes, script){
		  allscripts = allscripts + "\n" + script;
	      });
  if (trim(allscripts)) {
    if (window.execScript) {
      window.execScript(allscripts);
    } else {
      window.setTimeout(allscripts,0);
    }
  }
}

function showMainPage(sUrl,pagedata,saveURL) {
  var main = document.getElementById('main');
  saveURL=typeof(saveURL)!='undefined' ? saveURL : 1;
  if (saveURL) {
    document.currentRemotePage=sUrl;
  }
  if (pagedata==undefined) {
    main.innerHTML='';
    return;
  }

  main.innerHTML=pagedata;

  redirectForms(sUrl);
  redirectLinks();

  runScriptsInString(pagedata);
}

function redirectForms(sUrl) {
  var main=document.getElementById('main');
  var frms=main.getElementsByTagName('form');
  for (i=0;i<frms.length;i++) {
    if (frms[i].className.indexOf('download')==-1) {
	frms[i].remotePage=sUrl;
	frms[i].onsubmit=new Function("post_form(" + i + "); return false;");
      var btns=frms[i].getElementsByTagName('input');
      for (a=0;a<btns.length;a++) {
	if (btns[a].type=="submit") {
	    btns[a].onclick=new Function("markSubmitDone("+i+",'&"+ btns[a].name +"=" + escape(btns[a].value) +"');");
	}
      }
    }
  }
}

function redirectLinks() {
  var main = document.getElementById('main');
  var lnks=main.getElementsByTagName('a');
  for (i=0; i<lnks.length;i++) {
    if (lnks[i].className.indexOf('download')==-1 &&
        lnks[i].className.indexOf('onclick')==-1 &&
	lnks[i].protocol!='javascript:') {
      lnks[i].onclick=new Function("getLink('" + lnks[i] + "'); return false;");
    }
  }
}

function spinOn() {
  $('#spinner').css('display','block');
  killMain();
}

function spinOff() {
  $('#spinner').css('display','none');
}

function getHtml(sUrl,postdata,saveURL){
  saveURL=typeof(saveURL)!='undefined' ? saveURL : 1;
  if (saveURL) {
    document.currentRemotePage=sUrl;
    document.currentPostData=postdata;
  }

  spinOn();

  var callback = function(data){
    if (data.substring(0,9)=='{ menu: [') {
      try {
	var menu=eval("(" + data + ")" );
	updateMenu(menu,1);
      } catch (e) {
	showMainPage(sUrl,data,saveURL);
	throw(e);
      }
    } else {
      showMainPage(sUrl,data,saveURL);
    }
    spinOff();
  };

  if (postdata!="") {
    $.ajax({data: postdata + "&_currentAppLoc=" + currentAppLoc,
	    success: callback,
	    type: 'POST',
	    url: sUrl,
	    contentType: 'application/x-www-form-urlencoded; charset=utf-8;'
	   });
  } else {
    $.get(sUrl + "&_currentAppLoc=" + currentAppLoc, callback);
  }
}

function updateSection(sUrl,tag) {
  $.get(sUrl + "&_currentAppLoc=" + currentAppLoc, null,
	function(content){
	  try {
	    var allscripts="";
	    content.replace(/<script([^>]*?)>([\w\W]*?)<\/script>/g,
			    function(match, attributes, script){
				allscripts = allscripts + "\n" + script;
			    });
	    document.getElementById(tag).innerHTML=content;
	    if (trim(allscripts)) {
	      if (window.execScript) {
		window.execScript(allscripts);
	      } else {
		window.setTimeout(allscripts,0);
	      }
	    }
	  } catch (e) {
	    //.... Hide error - tag doesn't have to be defined.
	  }
	});
}

function getMenu(sUrl){
  spinOn();
  var dir=1;
  if (sUrl.substring(sUrl.length,sUrl.length-4)=='main') {
    menuStack=new Array();
    dir=0;
    var menuID='main';
  } else {
    var menuID=menuStack[menuStack.length-1].id;
  }

  var request = $.get(sUrl + "&_currentAppLoc=" + currentAppLoc + "&_headMenu=" + menuID , null,
		      function(data){
			  try {
			      var menu=eval("(" + data + ")" );
			  } catch (e) {
			      document.getElementById('main').innerHTML=data;
			      throw(e);
			  }
			  updateMenu(menu,dir);
			  spinOff();
		      });
}

function firstLoad() {
  document.domain=document.domain;
  Orbited.settings.port=8000;
  Orbited.settings.hostname=document.domain;
  menuTemplate=document.getElementById("menu").innerHTML;
  getHtml("../r/setup.php?configLocation=" + currentAppLoc,"");
}

function logout() {
  updateSection("../r/logout.php?doit=fosho","");
  // Cookies track logins - we clear it to logout.
  document.cookie = 'PHPSESSID=; expires=Sat, 1 Jan 2000 01:00:00 GMT; path=/';
  document.getElementById('menu').innerHTML="";
  document.getElementById('loginfo').innerHTML="";
  getHtml("../r/setup.php?configLocation=" + currentAppLoc,"");
  // Shut down live updates
  stomp.disconnect();
  clearInterval(info_scroll_interval);
  $("div.info_scroll").each(function(i) {$(this).html('')});
}

function onEnterSearch(e) {
  if (window.event) {
    keynum=e.keyCode;
  } else if(e.which) {
    keynum=e.which;
  }
  if (keynum==13) {
    txt=document.getElementById('_mainSimpleSearch').value;
    getHtml("../r/search.php?s=" + encodeURIComponent(txt));
  }
}

function onFocusSearch(fld) {
  if (fld.value==" Search") {
    fld.value="";
  }
}

activateDateEntry=function(id,ampm) {
  var input = $("#" + id + "_entry");
  var date_string = $("#" + id + "_shown");
  var date = null;
  var output = $("#" + id);
  var input_empty = "*Enter a date (or time) here", empty_string = "Type a date above";
  var def_str=output.val();
  var fd=/^[0-9]{4}-[0-9]{2}-[0-9]{2}( [0-9]{2}:[0-9]{2}:[0-9]{2})?$/;
  if (def_str=="0000-00-00 00:00:00" ||
      def_str=="0000-00-00" ||
      def_str=="" ||
      def_str==undefined) {
    var def_date="";
  } else if (def_str.match(fd)) {
    date=Date.parseExact(def_str,["yyyy-MM-dd HH:mm:ss","yyyy-MM-dd"]);
    var def_date=date.toString("yyyy-MM-dd");
  } else {
    date=Date.parse(def_str);
    var def_date=date.toString("yyyy-MM-dd");
    output.val(date.toString("yyyy-MM-dd HH:mm:ss"));
  }
  if (def_date) {
    if (ampm) {
      date_string.addClass("date_accept").text(date.toString("dddd, dd MMMM, yyyy h:mm:ss tt"));
      input.val(date.toString("dd MMM yyyy, h:mm:ss tt"));
    } else {
      date_string.addClass("date_accept").text(date.toString("dddd, dd MMMM, yyyy HH:mm:ss"));
      input.val(date.toString("dd MMM yyyy, HH:mm:ss"));
    }
  } else {
    input.val(input_empty);
    date_string.text(empty_string);
  }
  input.keyup(
    function (e) {
      date_string.removeClass();
      if (input.val().length > 0) {
	date = Date.parse(input.val(),def_date);
	if (date !== null) {
	  input.removeClass();
	  if (ampm) {
	    date_string.addClass("date_accept").text(date.toString("dddd, dd MMMM, yyyy h:mm:ss tt"));
	  } else {
	    date_string.addClass("date_accept").text(date.toString("dddd, dd MMMM, yyyy HH:mm:ss"));
	  }
	  output.val(date.toString("yyyy-MM-dd HH:mm:ss"));
	} else {
	  input.addClass("validate_error");
	  date_string.addClass("date_error").text("Please clarify your date...");
	}
      } else {
	date_string.text(empty_string).addClass("empty");
      }
    }
  );
  input.focus(
    function (e) {
      if (input.val() === input_empty) {
	input.val("");
      }
    }
  );
  input.blur(
    function (e) {
      if (input.val() === "") {
	input.val(input_empty).removeClass();
	output.val("0000-00-00 00:00:00");
      }
    }
  );
}

function listLoadRelated(id,config) {
    config.id = id;
    $("#" + id).load("../r/llist.php",config);
}

function listEditRelatedRow(id,rowid,del) {
    $.get("../r/llist_edit.php",{'id': id, 'row': rowid, 'delete': del}, function(data,textStatus)
	  {
	      $('#' + rowid).replaceWith(data);
	      runScriptsInString(data);
	  });
}

function listAddNewRelatedRow(id) {
    $.get("../r/llist_add.php",{id: id},function(data,textStatus)
	  {
	      $(data).appendTo(($("#" + id).find('tbody')));
	      runScriptsInString(data);
	  });
}


// TinyMCE setup.
tinyMCE.init({
    // General options
    mode : "none",
    theme : "advanced",
    plugins : "safari,pagebreak,style,layer,table,save,advhr,advimage,advlink,emotions,iespell,insertdatetime,preview,media,searchreplace,print,contextmenu,paste,directionality,fullscreen,noneditable,visualchars,nonbreaking,xhtmlxtras,template,inlinepopups",

    // Theme options
    //	    theme_advanced_buttons1 : "save,newdocument,|,bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons1 : "bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect,fontselect,fontsizeselect",
    theme_advanced_buttons2 : "cut,copy,paste,pastetext,pasteword,|,search,replace,|,bullist,numlist,|,outdent,indent,blockquote,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code,|,insertdate,inserttime,preview,|,forecolor,backcolor",
    theme_advanced_buttons3 : "tablecontrols,|,hr,removeformat,visualaid,|,sub,sup,|,charmap,emotions,iespell,media,advhr,|,print,|,ltr,rtl,|,fullscreen",
    theme_advanced_buttons4 : "insertlayer,moveforward,movebackward,absolute,|,styleprops,|,cite,abbr,acronym,del,ins,attribs,|,visualchars,nonbreaking,template,pagebreak",
    theme_advanced_toolbar_location : "top",
    theme_advanced_toolbar_align : "left",
    theme_advanced_statusbar_location : "bottom",
    theme_advanced_resizing : true,


    // Drop lists for link/image/media/template dialogs
    template_external_list_url : "lists/template_list.js",
    external_link_list_url : "lists/link_list.js",
    external_image_list_url : "lists/image_list.js",
    debug: true,
    media_external_list_url : "lists/media_list.js"
});


function infoText(html) {
  $("div.info_scroll:eq(" + current_info_insert + ")").html(html);
  current_info_insert=(current_info_insert+1)%info_scroll_count;
}

var stomp=null;

function initStomp(channelname) {
  stomp = new STOMPClient();
  stomp.onopen = function() {
  };
  stomp.onclose = function(c) {
    $.jGrowl("Lost Connection, Code: " + c,{life: 5000});
  };
  stomp.onerror = function(error) {
    $.jGrowl("General error: " + error, {life: 5000});
  };
  stomp.onerrorframe = function(frame) {
    $.jGrowl("Error in frame: " + frame.body,{life: 5000});
  };
  stomp.onconnectedframe = function() {
    stomp.subscribe(channelname);
  };
  stomp.onmessageframe = function(frame) {
    var info = JSON.parse(frame.body);
    if (info.type == 'banner') {
      infoText(info.text);
    } else if (info.type == 'message') {
      $.jGrowl(info.text,{life: 10000});
    }
  };
  stomp.connect("localhost", 61613);
}


var emailGUI =  {
    setSubject: function(txt) {
	document.getElementById("subject").value=txt;
    },
    setBody: function(txt){
	document.getElementById("bodytext").value=txt;
    },
    setCharset: function(charset_no){
	var obj=document.getElementById("charset_no");
	for(i=0;i<obj.length;i++) { 
	    if(obj[i].value == charset_no)
		obj.selectedIndex=i;
	}
    },
    updateTemplate: function(table, keyvalues) {
	var that=this;
	$.get("../r/template.php?_table=" + table +
	      keyvalues + 
	      '&template_email_no=' + document.sendemail.template_email_no[document.sendemail.template_email_no.selectedIndex].value +
	      '&currentAppLoc=' + currentAppLoc,
	      function(data){
		try {
		    var res=eval("(" + data + ")");
		    that.setSubject(res.subject);
		    that.setBody(res.bodytext);
		    that.setCharset(res.charset_no);
		} catch (e) {
		    $.jGrowl("Failed to load message, this can be a lot of things. If only a few template fails it can be a problem with the template. If none of them work, open the form and try again.",{header: 'ERROR!'});
		}
	    });
    }
};

function appendConnectedData(event,data,formatted) {
  var fld=$(event.target);
  var list=fld.parent().find('ol');
  var exist=$('#'+list.attr('id')+'_'+data[1]).attr('id');
  if (exist==undefined) {
    list.append('<li class="asmListItem" style="display: list-item;"><span class="asmListItemLabel">'+ data[0] +'</span><a id="'+list.attr('id')+'_'+data[1]+'" class="asmListItemRemove" href="#">remove</a><input type="hidden" name="_linkdata['+list.attr('id').substring(10)+']['+data[1]+']" value="'+data[1]+'"></li>');
    $("#"+list.attr('id')+'_' + data[1]).click(function() { $(this).parent().remove()});
  }
  fld.val("");
};

function createConnectedDataAutoComplete(id,existing) {
  var param= { extraParams: {table: id},
	       multiple: false,
	       matchContains: true};
  var fld=$("#" + id);
  fld.autocomplete("../r/connected_autocomplete.php",param);
  fld.result(appendConnectedData);
  var evt=new Object;
  evt.target=fld;
  for (key in existing) {
    appendConnectedData(evt,existing[key]);
  }
}

function screentiphide(id) {
  $.get("../r/screentip.php?t=hide&id=" + id);
  $('#screentip').hide();
  $('#screentip_hide').hide();
  $('#screentip_show').show();
  return false;
}

function screentipshow(id) {
  $.get("../r/screentip.php?t=show&id=" + id);
  $('#screentip').show();
  $('#screentip_hide').show();
  $('#screentip_show').hide();
  return false;
}

function screentipswitchactive(nr) {
  screentipswitchclear();
  $('#tip_step_' + nr).css('background-color','#9f6');
}

function screentipswitchclear() {
  $('.step_indicator').css('background-color','#ff5');	 
}
