
(function($){$.extend({apps:{__include:[],__xml:[],__controls:[],loading:function(id,noHtml){if(noHtml){$(id).empty()}
return $('<div class="ajax-loading"></div>').appendTo(id);},wait:function(container,message){var loading=$('<div/>').addClass('alt-loading').text(message);loading.appendTo(container);loading.css({top:container.height()/2-loading.height(),left:container.width()/2-loading.width()/2});return loading;},msg:function(container,data){$.apps.open('login/error',container,data);},error:function(msg){if(!$.apps.errorRef){$.apps.errorRef=0;}
$.apps.errorRef++;if($.apps.errorRef>3)
return;if(!msg)return;if(typeof msg=='string'){eval('var st ='+msg);}else{var st=msg;}
$.apps.msg('body',$.extend({load:function(){$.apps.errorRef=0;}},st));},init:function(url)
{$.theme="shared";$.apps.url=url;$.extend($.ajaxSettings,{cache:false});$('#container').bind('ajaxSend',function(e,xhr,s)
{if(s.url.indexOf('/components/')!=-1){s.url=s.url.replace(/\?_=\d+/,'');if(s.username){xhr.open(s.type,s.url,s.async,s.username,s.password);}else{xhr.open(s.type,s.url,s.async);}}});$(document).ajaxError(function(a,b,c,d){$.apps.error(b.responseText);});return true;},include:function(source,script,callback){$('#loadmsg').children('span:eq(0)').html(source);if(script){source=(source.substr(0,1)=='@')?source.substr(1):$.apps.url+source;$('head').append('<script type="text/javascript" src="'+(source)+'"></script>');}else{$('head').append('<link rel="stylesheet" href="'+source+'"/>');}
callback&&callback();},open:function(name,container,settings)
{if(!$.apps.url){throw exception('Server URL not specified. Unable to start application.');}
$.get($.apps.url+name,function(xml){$.apps.openByXml(xml,container,settings);});},openByXml:function(xml,container,conf){var container=container.jquery?container:$(container);var jXml=$(xml),childs=jXml.find('presentation>*'),count=0,callback=name=jXml.children(0).attr('name'),partOf=jXml.children(0).attr('partOf');if(partOf)name=partOf;var base=[],controls=[],settings={done:function(c){base[c.data('sync')]=c;if(loader.loaded==childs.size()){var pfn=eval('$.'+callback);var fn=function(){$.extend(fn.prototype,pfn);}
var APPEND_CONTROLS=function(){for(var i=0;i<base.length;i++)container.append(base[i]);for(var id in controls){controls[id].removeData&&controls[id].removeData('rteLoad');(controls[id]._ctrl_create&&controls[id]._ctrl_create.apply(controls[id],[controls]))}
$('#loadmsg').hide();}
var instance=new fn();if(instance.before){var prev=instance.init;instance.init=function(){APPEND_CONTROLS();if(conf&&conf.load){if(conf.load(controls))
return false;}
prev.apply(this,[container,controls,conf]);prev=null;}
instance.before();}else{APPEND_CONTROLS();if(conf&&conf.load){if(conf.load(controls))
return false;}
instance.controls=controls;instance.init&&instance.init(container,controls,conf);}
for(var id in controls)
controls[id]._post_create&&controls[id]._post_create();}},forward:function(c)
{c.data('application',name);if(!c.data('xmlNode').attr('id')){c.data('xmlNode').attr('id',Math.floor(Math.random()*1000));}
$.apps.__controls.push(c);controls[c.data('xmlNode').attr('id')]=c;}}
$('#loadmsg').children('strong:eq(0)').html(name);$('#loadmsg').show();var loader=new $.loader(container);loader._files(jXml.find('application>files').children(),function(){loader.get(childs,settings);});}}});$.extend({loader:function(container){this.pfn=container.jquery?container:$(container);this.loaded=0;}});$.extend($.loader.prototype,{get:function(children,settings){this.settings=settings||{};var self=this;this._children=children;children.each(function(sync,control){var name=control.nodeName.toLowerCase(),cache=$.apps.__xml[name];if(cache){self._proc(cache,sync,$(control));}else{$.get($.apps.url+'components/'+name+'.xml',function(xml){$.apps.__xml[name]=xml;self._proc(xml,sync,$(control));});}});if(children.size()==0&&this.pfn.data('rteLoad'))this.pfn.data('rteLoad')._rte_load(this.pfn);},cache:function(component,fn){if($.apps.__xml[component]){(fn&&fn());return;}
$.get($.apps.url+'components/'+component+'.xml',function(xml){$.apps.__xml[component]=xml;(fn&&fn());});},_rte_foward:function(c)
{var pfn=(this.pfn&&this.pfn.data('rteLoad'));(pfn&&this.pfn.data('rteLoad')._rte_foward(c));(this.settings.forward&&this.settings.forward(c));},_rte_load:function(c,d)
{this.loaded++;this._rte_foward(c);this.settings.done&&this.settings.done(c);if(this.loaded==this._children.size()){this.pfn.data('rteLoad')&&this.pfn.data('rteLoad')._rte_load(this.pfn);}},_files:function(files,callback){var refCount=0;if(files.size()==0)
callback&&callback();$.each(files,function(){$.apps.include(this.getAttribute('src'),this.nodeName=='script',function(){refCount++;if(refCount==files.size()){callback&&callback();}});})},_proc:function(xml,s,c){var jXml=$(xml),self=this;var __continue=function(){var text=jXml.find('control>content').text();var callee=$[jXml.children(0).attr('name')];if(callee&&callee._ctrl_init){text=callee._ctrl_init(text,c,self.settings);};var ctrl=$(text).addClass('ui-control');ctrl.addClass(c.attr('css')||'');$.extend(ctrl,callee);ctrl.data('sync',s).data('xmlNode',c).data('rteLoad',self);if(ctrl._ctrl_load){var loader=new $.loader(ctrl)
if(ctrl._ctrl_load.apply(ctrl,[loader,self.settings]))
{self._rte_load(ctrl);}}
if(!ctrl._ctrl_load)
self._rte_load(ctrl);}
this._files(jXml.find('files *'),__continue);}});$.extend({control:{_ctrl_load:function(load,settings)
{var node=this.data('xmlNode');this.x=node.attr('x')||0;this.y=node.attr('y')||0;this.h=node.attr('height')||0;this.w=node.attr('width')||0;if(this.x||this.y){this.css({position:'absolute',top:this.y+'px',left:this.x+'px'})}
if(this.h)this.css('height',this.h);if(this.w)this.css('width',this.w);if(node.attr('margin'))this.css('margin',node.attr('margin'));if(node.attr('padding'))
this.css('padding',node.attr('padding'));},_ctrl_create:function()
{}}});$.extend({dialog:{init:function(container,controls,settings){var self=this;if(!settings.type){settings.type='INFORMATION';}
var exception=$(''+'<table class="dialog" >'+'<tr>'+'<td class="icon"></td>'+'<td class="info_container" >'+'<span class="message"></span>'+'</td>'+'</tr>'+'</table>');exception.addClass(settings.type);exception.find('.message').html(self.nl2br(settings.message));if(settings.moreinfo){var moreinfo=$('<tr><td colspan="10" class="moreinfo_container">'+'<span class="moreinfo_button">More Info</span>'+'<span class="moreinfo"></span>'+'</td></tr>');moreinfo.find('.moreinfo').html(self.nl2br(settings.moreinfo)).hide();moreinfo.find('.moreinfo_button').click(function(){$(this).siblings('.moreinfo').toggle('fast');$(this).toggleClass('open');});exception.append(moreinfo);}
var close=$('<tr><td style="text-align: center;" colspan="2"><input type="button" value="Close window" /></td></tr>').appendTo(exception).find('input').click(function(){controls['window'].window('destroy');});controls['dialog'].append(exception);if(settings.title){var title=settings.title;}else{var title=self.capitalise(settings.type.toLowerCase());}
controls['window'].window('title',title);},capitalise:function(str)
{if(typeof str!='string')
{return str;}
var letter=str.substr(0,1);return letter.toUpperCase()+str.substr(1);},nl2br:function(str)
{return str.replace(/([^>]?)\n/g,'$1<br />\n');}}});})(jQuery);(function(){$.extend({_input:$.extend({},$.control,{_ctrl_init:function(text,c)
{var id=Math.floor(Math.random()*1000);switch(c.attr('type')){case'datepicker':case'rabbit_file':case'colorpicker':var inputtype='text';break;default:var inputtype=c.attr('type');break;}
var name=c.attr('name');if(name)
return'<input type="'+inputtype+'" id="'+id+'" name="'+name+'"/>';return'<input type="'+inputtype+'" id="'+id+'" />';},_ctrl_load:function(load,settings)
{$.control._ctrl_load.apply(this,[load,settings]);var node=this.data('xmlNode');this.val(node.attr('value'));if(node.attr('readonly'))this.attr('readonly','readonly');if(node.attr('disabled'))this.attr('disabled','disabled');if(node.attr('size'))this.attr('size',node.attr('size'));if(node.attr('maxlength')){this.attr('maxlength',node.attr('maxlength'));}
this.workspace=settings.workspace||'private';return true;},_ctrl_create:function()
{var node=this.data('xmlNode');var self=this;switch(node.attr('type')){case'radio':if(node.attr('checked'))
this[0].checked=true;break;case'submit':this.css('font-weight','bolder');break;case'datepicker':this.datepicker({yearRange:'1900:2020'});break;case'colorpicker':this.ColorPicker();break;case'rabbit_file':var element=this;var label=$('<span />').text('').css('margin-right','10px');var button=$('<input type="button" />').attr('value','Choose File');var rembutton=$('<input type="button" />').attr('value','Remove');rembutton.insertAfter(element);button.insertAfter(element);label.insertAfter(element);element.css('width','0px').hide();element.change(function(){var id=element.val();if(parseInt(id)==id){$.getJSON($.apps.url+'fileproxy/file/'+element.val(),function(d){label.text(d.name.replace(/\{%.*}/g,""));});rembutton.show();}else{rembutton.hide();}});button.click(function(event){event.preventDefault();$.apps.open('documents/private/opendlg','body',{opener:function()
{var file_id=this.id,file_name=this.name;element.val(file_id);label.text(file_name);element.change();}});});rembutton.click(function(event){event.preventDefault();element.val('');label.text('');element.change();});element.change();break;}
this.removeData('xmlNode');},disable:function(){this.attr('disabled',true);},enable:function(){this.attr('disabled',false);},id:function()
{return this.attr('id');}})});})(jQuery);(function(){$.extend({label:$.extend({},$.control,{_ctrl_load:function(load,settings)
{$.control._ctrl_load.apply(this,[load,settings]);var node=this.data('xmlNode');this.html(node.attr('value')||node.text()||'{DUMMY}');;return true;},_ctrl_create:function(ctrls)
{var forCtrl=this.data('xmlNode').attr('for');if(forCtrl&&ctrls[forCtrl]&&typeof ctrls[forCtrl].id=='function')
{this.attr('for',ctrls[forCtrl].id());}
this.removeData();},id:function()
{return this.attr('id');}})});})(jQuery);
