window.thrown_backend_exceptions={};function SK_ComponentHandler(a){var b;for(b in a){this[b]=a[b]}this.children=[];this.forms=[]}SK_ComponentHandler.prototype={DOMConstruct:function(a,b){this.cmp_class=a;this.auto_id=b;this.container_node=jQuery("#"+b).get(0)},$:function(a,b){a=a.replace("#","#"+this.auto_id+"-");b=b||this.container_node;return jQuery(a,b)},$block:function(a){var b=this.$(a);if(!b.length){throw"block element not found"}if(!b.get(0).sk_block_handler){throw"element has no block handler"}return b.get(0).sk_block_handler},ajax:function(options){var handler=this;var _opt={url:URL_RESPONDER,type:"POST",data:{apply_func:options.apply_func,params:encodeURIComponent(JSON.stringify(options.params)),COM_node:encodeURIComponent(JSON.stringify(this.getAjaxCOMNode(options.full_COM)))},dataType:"json",success:function(response){if(response.errors){$(response.errors).each(function(){handler.error(this)})}if(response.exec){response.exec.call(handler)}if(options.success){options.success(response.data)}},error:function(xhr){if(options.error){options.error(xhr)}else{var json_e=xhr.getResponseHeader("SK-Exception");if(json_e){if(window.thrown_backend_exceptions[json_e]){return}eval("var e = "+json_e);e.toString=function(){return e.message+"\ntrace: "+e.trace_str+"\nfile: "+e.file+" in line: "+e.line};window.thrown_backend_exceptions[json_e]=e;if(e.class_name=="SK_HttpRequestException"&&e.code==1){SK_SignIn().bind("close",function(){window.location.reload()})}else{alert("An uncaught exception thrown:\n"+e.toString())}}else{if(typeof console!="undefined"&&console!==null){console.error("http request error")}}}}};if(options.complete){_opt.complete=options.complete}return $.ajax(_opt)},ajaxCall:function(c,b,a){a=a||{};a.apply_func=c;a.params=b;return this.ajax(a)},reload:function(b,a){b=b||{};a=a||{};a.full_COM=true;return this.ajaxCall("reload",b,a)},getAjaxCOMNode:function(d){var c={cmp_class:this.cmp_class,auto_id:this.auto_id,forms:[]};if(this.parent){c.parent={cmp_class:this.parent.cmp_class,auto_id:this.parent.auto_id}}var a,f,b;if(d){c.children=[];for(a=0,f;f=this.children[a];a++){if(this.auto_id==="httpdoc"&&!$("#"+f.auto_id,this.container_node).length){continue}c.children.push(f.getAjaxCOMNode(true,false))}}for(a=0,b;b=this.forms[a];a++){c.forms[a]={form_class:b.form_class,auto_id:b.auto_id}}return c},error:function(a){SK_drawError(a)},message:function(a){SK_drawMessage(a)},debug:function(b){if(console){console.debug(b)}else{alert(JSON.stringify(b))}}};
