/*
 * Copyright 2008 Kamarell, Kullervo Produktion (http://www.kamarell.com/). All rights reserved.
 */
var ajax_fetch_userdata_current={};var ajax_userdata_cache={};function ajax_fetch_userdata(h,g,e,f){var a=h;var c=g;var d=e;var b=f;if(!b){b={}}if(!b.urlParam){b.urlParam={}}get_user_cv(a,function(n){if(n==false){return}var j={userdata_fetch:true,owner:a};for(var m in b.urlParam){j[m]=b.urlParam[m]}var p={};var o=$.makeArray(d).sort();for(var m in o){p[o[m]]=n[o[m]]}j.cv=encode_kvlist(p);var q=b;q.urlParam=j;var k=new Ajax(q);k.setUrlBase(c);var l=k.getUrl("GET");if(isDef(ajax_userdata_cache[l])){if(isFunction(b.onDone)){b.onDone(ajax_userdata_cache[l]);return}}k.setOnDone(function(i){ajax_userdata_cache[l]=i;if(isFunction(b.onDone)){b.onDone(i)}});if(ajax_fetch_userdata_current[l]&&ajax_fetch_userdata_current[l].finished==false){setTimeout(function(){ajax_fetch_userdata(h,g,e,f)},100);return}b.urlParam=j;delete ajax_fetch_userdata_current[l];ajax_fetch_userdata_current[l]=k;ajax_fetch_userdata_current[l].get();return})}function Ajax(o){var o=o||{};this.finished=false;var that=this;var options={blockMsg:false,blockElement:false,onDone:null,onError:null,urlParam:{whoami:whoami},postParam:{}};$.extend(true,options,o);var XMLHttp=null;var unbindKeys;this.setUrlBase=function(ub){options.urlBase=ub;return this};this.addUrlParam=function(p){$.extend(options.urlParam,p);return this};this.addPostParam=function(p){$.extend(options.postParam,p);return this};this.setBlockMsg=function(msg){options.blockMsg=msg};this.setBlockElement=function(e){options.blockElement=e};this.setOnDone=function(o){options.onDone=o;return this};this.setOnError=function(o){options.onError=o;return this};this.get=function(){request("GET")};this.post=function(){request("POST")};this.abort=function(){options.onError=null;options.onDone=null;if(XMLHttp){XMLHttp.abort()}setFinished()};this.getUrl=function(requestMethod){if(!def_ajax_url[options.urlBase]){error("Invalid ajax url-base ["+options.urlBase+"]");return false}var ver="v"+ajaxrVersionMajor+"."+(def_ajax_url[options.urlBase]["version"]?def_ajax_url[options.urlBase]["version"]:0);var url=options.urlBase+"_"+ver+".json";if(!isDef(def_ajax_url[options.urlBase]["modifying"])||def_ajax_url[options.urlBase]["modifying"]){if(requestMethod=="GET"){options.urlParam.csrf_check=csrf_check}}for(var i in options.urlParam){if(url.indexOf("?")==-1){url+="?"}else{url+="&"}url+=urlencode(i)+"="+urlencode(options.urlParam[i])}return url};function request(requestMethod){var message=false;if(options.blockMsg){switch(options.blockMsg){case"LOADING":message="Laddar...";break;case"SAVING":message="Sparar...";break;case"WAIT":case"WAITING":message="Vänta...";break;default:message=options.blockMsg}}var blocked=false;if(options.blockElement){$(options.blockElement).block({message:'<img src="'+esc(url_create("www-ps","/img/busy.gif"))+'" width="20" height="20">'+esc(message),fadeOut:0,overlayCSS:{backgroundColor:"transparent"}});blocked=true}else{if(options.blockMsg){$.blockUI({message:'<img src="'+esc(url_create("www-ps","/img/busy.gif"))+'" width="20" height="20">'+esc(message),fadeOut:0,overlayCSS:{backgroundColor:"transparent"}});blocked=true}}if(blocked){unbindKeys=add_keyEventHandler(function(event){if(event.keyCode==27){that.abort()}return false})}var url=that.getUrl(requestMethod);if(url===false){error("getUrl failed");return false}if(!isDef(def_ajax_url[options.urlBase]["modifying"])||def_ajax_url[options.urlBase]["modifying"]){if(requestMethod=="POST"){options.postParam.csrf_check=csrf_check}}XMLHttp=createXMLHttp();var postString=null;XMLHttp.open(requestMethod,url,true);if(requestMethod=="POST"){XMLHttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");var postParamEmpty=true;for(var i in options.postParam){postParamEmpty=false;break}if(postParamEmpty){options.postParam.cause_Im_a_post_dummy="yes I am"}for(var i in options.postParam){if(postString){postString+="&"}else{postString=""}postString+=encodeURIComponent(i)+"="+encodeURIComponent((typeof options.postParam[i]=="object"?JSON.stringify(options.postParam[i]):options.postParam[i]))}}var response=false;XMLHttp.onreadystatechange=XMLHttpOnreadystatechange;XMLHttp.send(postString);return true}function XMLHttpOnreadystatechange(){try{XMLHttp.status}catch(e){return false}if(XMLHttp.readyState&&XMLHttp.readyState==4){if(XMLHttp.status&&XMLHttp.status==200){try{try{response=eval("("+XMLHttp.responseText+")")}catch(e){error("Invalid JSON",null,e+"\n"+XMLHttp.responseText);return false}if(response.error){error(response.error.msg,response.error.code);return false}if(response.update){if(response.update.user_cv){for(var user in response.update.user_cv){user=parseInt(user);if(!user_cv[user]||user_cv[user].updated<response.update.user_cv[user].updated){user_cv[user]=response.update.user_cv[user]}else{}}}}}catch(e){error(null,null,e);return false}if(options.onDone){if(isFunction(options.onDone)){options.onDone(response.data)}else{var obj=null;if(typeof options.onDone=="object"){obj=options.onDone}else{obj=document.getElementById(options.onDone)}obj.innerHTML=response;obj.style.display="block"}}setFinished()}else{if(XMLHttp.status!==0){error("Server returned status code ["+XMLHttp.status+" "+XMLHttp.statusText+"]",null,options.urlBase)}return false}}}function setFinished(){if(unbindKeys){unbindKeys()}if(options.blockElement){$(options.blockElement).unblock()}else{if(options.blockMsg){$.unblockUI()}}that.finished=true}function error(errMsg,errCode,techDescr){var suppressErrorMessage=false;if(options.onError){suppressErrorMessage=!!options.onError(errCode,errMsg)}var errSubject="AJAX-fel";if(errCode){errSubject+=". Felkod: "+errCode}if(errMsg){var errBody=errMsg}else{var errBody="Okänt fel."}if(techDescr&&(dev||admin)){errBody+="\nTech: "+techDescr+"."}if(suppressErrorMessage){logit(errSubject+" "+errBody)}else{if(Popup){var p=new Popup({title:"AJAX error",body:esc(errBody),buttons:{"Stäng":function(){p.close()}}})}else{alert(errSubject+" "+errBody)}}setFinished()}function createXMLHttp(){var o=null;if(window.XMLHttpRequest){o=new XMLHttpRequest()}else{if(window.ActiveXObject){try{o=new ActiveXObject("Msxml2.XMLHTTP")}catch(e){try{o=new ActiveXObject("Microsoft.XMLHTTP")}catch(e){}}}}if(!o){error("Could not initiate AJAX object");return false}return o}};

bstrap.loaded("ajax");

