Your IP : 216.73.216.147


Current Path : /home/lejardintz/www/media/foundry/3.1/scripts/
Upload File :
Current File : /home/lejardintz/www/media/foundry/3.1/scripts/mvc.min.js

FD31.plugin("mvc",function($){!function(){var getObject,regs={undHash:/_|-/,colons:/::/,words:/([A-Z]+)([A-Z][a-z])/g,lowUp:/([a-z\d])([A-Z])/g,dash:/([a-z\d])([A-Z])/g,replacer:/\{([^\}]+)\}/g,dot:/\./},getNext=function(current,nextPart,add){return void 0!==current[nextPart]?current[nextPart]:add&&(current[nextPart]={})},isContainer=function(current){var type=typeof current;return current&&("function"==type||"object"==type)},str=$.String=$.extend($.String||{},{getObject:getObject=function(name,roots,add){var current,ret,i,parts=name?name.split(regs.dot):[],length=parts.length,r=0;
if(roots=$.isArray(roots)?roots:[roots||window],0==length)return roots[0];for(;current=roots[r++];){for(i=0;length-1>i&&isContainer(current);i++)current=getNext(current,parts[i],add);if(isContainer(current)&&(ret=getNext(current,parts[i],add),void 0!==ret))return add===!1&&delete current[parts[i]],ret}},capitalize:function(s){return s.charAt(0).toUpperCase()+s.substr(1)},camelize:function(s){return s=str.classize(s),s.charAt(0).toLowerCase()+s.substr(1)},classize:function(s,join){for(var parts=s.split(regs.undHash),i=0;i<parts.length;i++)parts[i]=str.capitalize(parts[i]);
return parts.join(join||"")},niceName:function(s){return str.classize(s," ")},underscore:function(s){return s.replace(regs.colons,"/").replace(regs.words,"$1_$2").replace(regs.lowUp,"$1_$2").replace(regs.dash,"_").toLowerCase()},sub:function(s,data,remove){var obs=[];return obs.push(s.replace(regs.replacer,function(whole,inside){var ob=getObject(whole,data,"boolean"==typeof remove?!remove:remove)||getObject(inside,data,"boolean"==typeof remove?!remove:remove),type=typeof ob;return"object"!==type&&"function"!==type||null===type?""+ob:(obs.push(ob),"")
})),obs.length<=1?obs[0]:obs},_regs:regs})}(),function(){$.String.rsplit=function(string,regex){for(var first_idx,last_idx,result=regex.exec(string),retArr=[];null!==result;)first_idx=result.index,last_idx=regex.lastIndex,0!==first_idx&&(retArr.push(string.substring(0,first_idx)),string=string.slice(first_idx)),retArr.push(result[0]),string=string.slice(result[0].length),result=regex.exec(string);return""!==string&&retArr.push(string),retArr}}(),function(){var digitTest=/^\d+$/,keyBreaker=/([^\[\]]+)|(\[\])/g,plus=/\+/g,paramTest=/([^?#]*)(#.*)?$/;
$.String=$.extend($.String||{},{deparam:function(params){if(!params||!paramTest.test(params))return{};for(var current,data={},pairs=params.split("&"),i=0;i<pairs.length;i++){current=data;var pair=pairs[i].split("=");2!=pair.length&&(pair=[pair[0],pair.slice(1).join("=")]);for(var key=decodeURIComponent(pair[0].replace(plus," ")),value=decodeURIComponent(pair[1].replace(plus," ")),parts=key.match(keyBreaker),j=0;j<parts.length-1;j++){var part=parts[j];current[part]||(current[part]=digitTest.test(parts[j+1])||"[]"==parts[j+1]?[]:{}),current=current[part]
}lastPart=parts[parts.length-1],"[]"==lastPart?current.push(value):current[lastPart]=value}return data}})}(),function(){var oldClean=$.cleanData;$.cleanData=function(elems){for(var elem,i=0;void 0!==(elem=elems[i]);i++)$(elem).triggerHandler("destroyed");oldClean(elems)}}(),function(){var oldClosest=$.fn.closest;$.fn.closest=function(selectors,context){var res,result,i,selector,selector,rooted={},rootedIsEmpty=!0,selectorsArr=selectors;if("string"==typeof selectors&&(selectorsArr=[selectors]),$.each(selectorsArr,function(i,selector){if(0==selector.indexOf(">")){if(-1!=selector.indexOf(" "))throw" closest does not work with > followed by spaces!";
rooted[selectorsArr[i]=selector.substr(1)]=selector,"string"==typeof selectors&&(selectors=selector.substr(1)),rootedIsEmpty=!1}}),res=oldClosest.call(this,selectors,context),rootedIsEmpty)return res;for(i=0;i<res.length;)result=res[i],selector=result.selector,void 0===rooted[selector]||(result.selector=rooted[selector],rooted[selector]=!1,"string"==typeof result.selector&&result.elem.parentNode===context)?i++:res.splice(i,1);return res}}(),function(){$.cookie=function(name,value,options){if("undefined"==typeof value){var cookieValue=null;
if(document.cookie&&""!=document.cookie)for(var cookies=document.cookie.split(";"),i=0;i<cookies.length;i++){var cookie=jQuery.trim(cookies[i]);if(cookie.substring(0,name.length+1)==name+"="){cookieValue=decodeURIComponent(cookie.substring(name.length+1));break}}if(jQuery.evalJSON&&cookieValue&&cookieValue.match(/^\s*\{/))try{cookieValue=jQuery.evalJSON(cookieValue)}catch(e){}return cookieValue}options=options||{},null===value&&(value="",options.expires=-1),"object"==typeof value&&jQuery.toJSON&&(value=jQuery.toJSON(value));
var expires="";if(options.expires&&("number"==typeof options.expires||options.expires.toUTCString)){var date;"number"==typeof options.expires?(date=new Date,date.setTime(date.getTime()+1e3*60*60*24*options.expires)):date=options.expires,expires="; expires="+date.toUTCString()}var path=options.path?"; path="+options.path:"",domain=options.domain?"; domain="+options.domain:"",secure=options.secure?"; secure":"";document.cookie=[name,"=",encodeURIComponent(value),expires,path,domain,secure].join("")}}(),function(){var initializing=!1,makeArray=$.makeArray,isFunction=$.isFunction,isArray=$.isArray,extend=$.extend,getObject=$.String.getObject,concatArgs=function(arr,args){return arr.concat(makeArray(args))
},fnTest=/xyz/.test(function(){})?/\b_super\b/:/.*/,inheritProps=function(newProps,oldProps,addTo){addTo=addTo||newProps;for(var name in newProps)addTo[name]=isFunction(newProps[name])&&isFunction(oldProps[name])&&fnTest.test(newProps[name])?function(name,fn){return function(){var ret,tmp=this._super;return this._super=oldProps[name],ret=fn.apply(this,arguments),this._super=tmp,ret}}(name,newProps[name]):newProps[name]},STR_PROTOTYPE="prototype";clss=$.Class=function(){arguments.length&&clss.extend.apply(clss,arguments)
},extend(clss,{proxy:function(funcs){var self,args=makeArray(arguments);return funcs=args.shift(),isArray(funcs)||(funcs=[funcs]),self=this,function(){for(var isString,func,cur=concatArgs(args,arguments),length=funcs.length,f=0;length>f;f++)func=funcs[f],func&&(isString="string"==typeof func,isString&&self._set_called&&(self.called=func),cur=(isString?self[func]:func).apply(self,cur||[]),length-1>f&&(cur=!isArray(cur)||cur._use_call?[cur]:cur));return cur}},newInstance:function(){var args,inst=this.rawInstance();
return inst.setup&&(args=inst.setup.apply(inst,arguments)),inst.init&&inst.init.apply(inst,isArray(args)?args:arguments),inst},setup:function(baseClass){return this.defaults=extend(!0,{},baseClass.defaults,this.defaults),arguments},rawInstance:function(){initializing=!0;var inst=new this;return initializing=!1,inst},extend:function(fullName,klass,proto){function Class(){return initializing?void 0:this.constructor!==Class&&arguments.length?arguments.callee.extend.apply(arguments.callee,arguments):this.Class.newInstance.apply(this.Class,arguments)
}"string"!=typeof fullName&&(proto=klass,klass=fullName,fullName=null),proto||(proto=klass,klass=null),proto=proto||{};var name,shortName,namespace,prototype,_super_class=this,_super=this[STR_PROTOTYPE];initializing=!0,prototype=new this,initializing=!1,inheritProps(proto,_super,prototype);for(name in this)this.hasOwnProperty(name)&&(Class[name]=this[name]);if(inheritProps(klass,this,Class),fullName){var root;klass&&klass.root&&(root=klass.root,$.isString(root)&&(root=getObject(root,window,!0)));var parts=fullName.split(/\./),shortName=parts.pop(),current=getObject(parts.join("."),root||window,!0),namespace=current;
extend(!0,Class,current[shortName]),current[shortName]=Class}extend(Class,{prototype:prototype,namespace:namespace,shortName:shortName,constructor:Class,fullName:fullName}),Class[STR_PROTOTYPE].Class=Class[STR_PROTOTYPE].constructor=Class;var args=Class.setup.apply(Class,concatArgs([_super_class],arguments));return Class.init&&Class.init.apply(Class,args||concatArgs([_super_class],arguments)),Class}}),clss.callback=clss[STR_PROTOTYPE].callback=clss[STR_PROTOTYPE].proxy=clss.proxy}(),function(){var basicProcessor,bind=function(el,ev,callback){var wrappedCallback,binder=el.bind&&el.unbind?el:$(isFunction(el)?[el]:el);
return 0===ev.indexOf(">")&&(ev=ev.substr(1),wrappedCallback=function(event){event.target===el&&callback.apply(this,arguments)}),binder.bind(ev,wrappedCallback||callback),function(){binder.unbind(ev,wrappedCallback||callback),el=ev=callback=wrappedCallback=null}},makeArray=$.makeArray,isArray=$.isArray,isFunction=$.isFunction,isString=$.isString,extend=$.extend,Str=$.String,each=$.each,getObject=Str.getObject,STR_PROTOTYPE="prototype",STR_CONSTRUCTOR="constructor",slice=Array[STR_PROTOTYPE].slice,delegate=function(el,selector,ev,callback){0===selector.indexOf(">")&&(selector=(el.data("directSelector")+" "||"")+selector);
var binder=el.delegate&&el.undelegate?el:$(isFunction(el)?[el]:el);return binder.delegate(selector,ev,callback),function(){binder.undelegate(selector,ev,callback),binder=el=ev=callback=selector=null}},binder=function(el,ev,callback,selector){return selector?delegate(el,selector,ev,callback):bind(el,ev,callback)},shifter=function(context,name){var method="string"==typeof name?context[name]:name;return function(){return context.called=name,method.apply(context,[this.nodeName?$(this):this].concat(slice.call(arguments,0)))
}},dotsReg=/\./g,controllersReg=/_?controllers?/gi,underscoreAndRemoveController=function(className){return Str.underscore(className.replace($.globalNamespace+".","").replace(dotsReg,"_").replace(controllersReg,""))},actionMatcher=/^\S(.*)\s(.*)/,parameterReplacer=/\{([^\}]+)\}/g,controllerReplacer=/\{([^\.]+[\.][^\.]+)\}/g,breaker=/^(?:(.*?)\s)?([\w\.\:>]+)$/,data=function(el,data){return $.data(el,"controllers",data)},controllerRoot=$.globalNamespace+".Controller";$.Controller=function(name){var _prototype,args=makeArray(arguments),_static={root:controllerRoot};
return args.length>2?(_static=$.extend(_static,args[1]),_prototype=args[2]):_prototype=args[1],_static.namespace&&(name=_static.namespace+"."+name),$.Controller.Class(name,_static,_prototype)};var controllerClass=controllerRoot+".Class";$.Class(controllerClass,{setup:function(){if(this._super.apply(this,arguments),this.shortName&&this.fullName!=controllerClass){this._fullName=underscoreAndRemoveController(this.fullName),this._shortName=underscoreAndRemoveController(this.shortName);var funcName,controller=this;
if(isString(this.pluginName)){var _fullName=this._fullName,pluginname=this.pluginName;$.fn[pluginname]||($.fn[pluginname]=function(options){var args=makeArray(arguments);if($.isString(options)&&"controller"===options){var controllers=data(this[0]),instance=controllers&&controllers[_fullName];return instance}return this.each(function(){var controllers=data(this),instance=controllers&&controllers[_fullName];if(instance){if($.isString(options)){var method=instance[options];return $.isFunction(method)&&method.apply(instance,args.slice(1)),void 0
}instance.update.apply(instance,args)}else controller.newInstance.apply(controller,[this].concat(args))})})}var args=makeArray(arguments),prototype=this[STR_PROTOTYPE],protoFactory=args[args.length>3?3:2];isFunction(protoFactory)&&(this.protoFactory=protoFactory,prototype=this.protoFactory.call(this,null)),this.actions={};for(funcName in prototype)"constructor"!=funcName&&isFunction(prototype[funcName])&&this._isAction(funcName)&&(this.actions[funcName]=this._action(funcName));$.module("$:/Controllers/"+this.fullName).resolve(this)
}},hookup:function(el){return new this(el)},_isAction:function(methodName){return actionMatcher.test(methodName)?!0:$.inArray(methodName,this.listensTo)>-1||$.event.special[methodName]||processors[methodName]},_action:function(methodName,options){if(parameterReplacer.lastIndex=0,!options&&parameterReplacer.test(methodName))return null;methodName=methodName.replace("{self} ","");var convertedName=methodName;if(options){var bindingOtherController=!1;if(controllerReplacer.test(methodName)){var controller,selector="";
convertedName=methodName.replace(controllerReplacer,function(whole,inside){var parts=inside.split(".");return controller=options["{"+parts[0]+"}"]||{},$.isControllerInstance(controller)&&(selector=(controller[parts[1]]||{}).selector),selector}).match(breaker),bindingOtherController=!!selector,convertedName=[controller.element].concat(convertedName||[])}bindingOtherController||(convertedName=Str.sub(methodName,[options,window]))}var arr=isArray(convertedName),parts=(arr?convertedName[1]:convertedName).match(breaker),event=parts[2],processor=processors[event]||basicProcessor;
return{processor:processor,parts:parts,delegate:arr?convertedName[0]:void 0}},processors:{},listensTo:[],defaults:{},hostname:"parent"},{setup:function(elem,options){var instance=this,Class=instance[STR_CONSTRUCTOR],prototype=instance[STR_PROTOTYPE],_fullName=Class._fullName;instance.instanceId=$.uid(_fullName+"_");var instanceOptions=instance.options=extend(!0,{},Class.defaults,Class.defaultOptions,options),element=instance.element=$(elem);if(Class.protoFactory&&(prototype=Class.protoFactory.apply(Class,[instance,instanceOptions,element]),extend(!0,instance,prototype)),(data(elem)||data(elem,{}))[_fullName]=instance,!element.data("directSelector")){var selector=$.uid("DS");
element.addClass(selector).data("directSelector","."+selector)}for(name in instanceOptions)if(name.match(/^\{.+\}$/)){var key=name.replace(/^\{|\}$/g,""),val=instanceOptions[name];instance[key]=isString(val)?function(instance,selector,funcName){selector=/^(\.|\#)$/.test(selector)?selector+funcName:selector;var selectorFunc=function(filter){var elements=instance.element.find(selector);return filter&&(elements=elements.filter(filter)),elements};return selectorFunc.selector=selector,selectorFunc.css=function(){var cssRule=selectorFunc.cssRule;
if(!cssRule){var directSelector=element.data("directSelector"),ruleSelector=$.map(selector.split(","),function(selector){return directSelector+" "+selector});cssRule=selectorFunc.cssRule=$.cssRule(ruleSelector),cssRule.important=!0}return arguments.length?cssRule.css.apply(cssRule,arguments):cssRule},selectorFunc}(instance,val,key):val}var views=instanceOptions.view,__view=instance.view;instance.view=function(){return __view.apply(this,arguments)},each(views||{},function(name){instance.view[name]=function(useHtml){var args=makeArray(arguments);
return $.isBoolean(useHtml)?args=args.slice(1):useHtml=!1,instance.view.apply(instance,[useHtml,name].concat(args))}}),$.extend(instance,instanceOptions.controller),instance.pluginInstances={},instance.called="init",instance._bind();var __init=instance.init||$.noop;return instance.init=function(){return instance.init=__init,result=__init.apply(instance,arguments),instance.trigger("init."+Class.fullName.toLowerCase(),[instance]),result},[element,instanceOptions].concat(makeArray(arguments).slice(2))},on:function(eventName){var args=makeArray(arguments),element=this.element,length=args.length;
return 2==length?this._binder(element,eventName,args[1]):3==length&&isString(args[1])?this._binder(element,eventName,args[2],args[1]):this._binder(args[1],eventName,args[2])},_bind:function(){var instance=this,Class=instance[STR_CONSTRUCTOR],actions=Class.actions,bindings=instance._bindings=[],element=instance.element;each(actions||{},function(name){if(actions.hasOwnProperty(name)){var ready=Class.actions[name]||Class._action(name,instance.options);$.isControllerInstance(ready.delegate)&&(ready.delegate=ready.delegate.element),bindings.push(ready.processor(ready.delegate||element,ready.parts[2],ready.parts[1],name,instance))
}});var destroyCB=shifter(this,"destroy");return element.bind("destroyed",destroyCB),bindings.push(function(el){$(el).unbind("destroyed",destroyCB)}),bindings.length},_binder:function(el,eventName,func,selector){return"string"==typeof func&&(func=shifter(this,func)),this._bindings.push(binder(el,eventName,func,selector)),this._bindings.length},_unbind:function(){var el=this.element[0];each(this._bindings,function(key,value){value(el)}),this._bindings=[]},trigger:function(name){var el=this.element;if(el){var event=$.Event(name);
return el.trigger.apply(el,[event].concat($.makeArray(arguments).slice(1))),event}},delegate:function(element,selector,eventName,func){return"string"==typeof element&&(func=eventName,eventName=selector,selector=element,element=this.element),this._binder(element,eventName,func,selector)},update:function(options){extend(this.options,options),this._unbind(),this._bind()},destroy:function(){if(!this._destroyed){var fname=this[STR_CONSTRUCTOR]._fullName;for(pname in this.pluginInstances)this.removePlugin(pname);this._destroyed=!0,this.element.removeClass(fname),this._unbind(),delete this._actions,delete this.element.data("controllers")[fname],$(this).triggerHandler("destroyed"),this.element=$()
}},find:function(selector){return this.element.find(selector)},view:function(){var name,args=makeArray(arguments),options=args,useHtml=!1,context=this[STR_CONSTRUCTOR].component||$,html="",view=this.options.view||{};return"boolean"==typeof args[0]&&(useHtml=args[0],options=args.slice(1)),name=options[0]=view[options[0]],void 0==name?useHtml?"":$(""):(html=context.View.apply(context,options),useHtml?html:$($.parseHTML($.trim(html))))},getPlugin:function(name){return this.pluginInstances[name]},addSubscriber:function(instance){var instances=$.isArray(instance)?instance:[instance||{}],host=this,hostname=this.Class.hostname,options={};
return options["{"+hostname+"}"]=host,$.map(instances,function(instance){return $.isControllerInstance(instance)?instance.options[hostname]===this?instance:(instance[hostname]=host,instance.update(options)):!1}),instances},addPlugin:function(name,plugin,options){if(name){(!plugin&&!options||$.isPlainObject(plugin))&&(options=plugin,plugin=[this.Class.root,this.Class.fullName,$.String.capitalize(name)].join(".")),$.isString(plugin)&&(plugin=$.getController(plugin));var isPluginInstance=$.isControllerInstance(plugin);
if(isFunction(plugin)||isPluginInstance){options=$.extend(!0,{element:this.element},options,(this.options.plugin||{})[name]||{});var type=isPluginInstance?"instance":$.isController(plugin)?"controller":"function";this.trigger("addPlugin",[name,plugin,options,type]);var hostname=this.Class.hostname;options["{"+hostname+"}"]=this;var pluginInstance;switch(type){case"instance":pluginInstance=plugin,plugin.update(options),plugin[hostname]=this;break;case"controller":pluginInstance=options.element.addController(plugin,options);
break;case"function":pluginInstance=plugin(this,options)}if(pluginInstance){if(this.pluginInstances[name]=pluginInstance,"function"!==type){var hostOptions={};hostOptions["{"+name+"}"]=pluginInstance,this.update(hostOptions)}return this.trigger("registerPlugin",[name,pluginInstance,options,type]),pluginInstance}}}},removePlugin:function(name){var plugin=this.getPlugin(name);if(plugin)return this.trigger("removePlugin",[name,plugin]),delete this.pluginInstances[name],$.isFunction(plugin.destroy)?plugin.destroy():null
},invokePlugin:function(name,method,args){var plugin=this.getPlugin(name);if(plugin&&$.isFunction(plugin[method]))return this.trigger("invokePlugin",[name,plugin,args]),plugin[method].apply(this,args)},getMessageGroup:function(){var messageGroup=$.isFunction(this.messageGroup)?this.messageGroup():this.element.find("[data-message-group]");return messageGroup.length<1&&(messageGroup=$("<div data-message-group></div>").prependTo(this.element)),messageGroup},setMessage:function(message,type){var defaultOptions={type:"warning",message:"",parent:this.getMessageGroup(),element:$('<div class="alert fade in"><button type="button" class="close" data-foundry-dismiss="alert">×</button></div>')},userOptions={},isDeferred=$.isDeferred(message);
userOptions=$.isPlainObject(message)&&!isDeferred?message:{message:message,type:type||"warning"};var options=$.extend({},defaultOptions,userOptions),element=options.element;if($.isDeferred(message)){var myself=arguments.callee,context=this;message.done(function(message,type){options.message=message,options.type=type||"warning",myself.call(context,options),element.show()})}else element.addClass("alert-"+options.type).append(options.message),$("html").has(element).length<1&&element.appendTo(options.parent);return element
},clearMessage:function(){this.getMessageGroup().empty()},_set_called:!0});var processors=$.Controller.Class.processors,basicProcessor=function(el,event,selector,methodName,controller){return binder(el,event,shifter(controller,methodName),selector)};each("change click contextmenu dblclick keydown keyup keypress mousedown mousemove mouseout mouseover mouseup reset resize scroll select submit focusin focusout mouseenter mouseleave".split(" "),function(i,v){processors[v]=basicProcessor});var normalizeController=function(controller){return controller.replace("$.Controller",controllerRoot)
},getController=function(controller){return isString(controller)&&(controller=normalizeController(controller),controller=getObject(controller)||getObject(controllerRoot+"."+controller)),isController(controller)?controller:void 0},isController=function(controller){return isFunction(controller)&&controller.hasOwnProperty("_fullName")},flattenControllers=function(controllers){return $.map(controllers,function(controller){return isArray(controller)?flattenControllers(controller):getController(controller)})};$.getController=getController,$.isController=function(controller){return!!getController(controller)
},$.isControllerInstance=function(instance){return instance&&instance[STR_CONSTRUCTOR]&&isController(instance[STR_CONSTRUCTOR])},$.isControllerOf=function(instance,controllers){if(!controllers)return!1;isArray(controllers)||(controllers=[controllers]);for(var i=0;i<controllers.length;i++){var controller=getController(controllers[i]);if(instance instanceof controller)return!0}return!1},$.fn.extend({controllers:function(){var candidates=flattenControllers(makeArray(arguments)),instances=[];return this.each(function(){var controllers=$.data(this,"controllers");
each(controllers||{},function(_fullName,instance){controllers.hasOwnProperty(_fullName)&&(!candidates.length||$.isControllerOf(instance,candidates))&&instances.push(instance)})}),instances},controller:function(controller,options){return void 0===options?this.controllers(controller)[0]:(this.addController.apply(this,arguments),this)},hasController:function(controller){var _fullName=(getController(controller)||{})._fullName||(isString(controller)?underscoreAndRemoveController(normalizeController(controller)):"");
return _fullName?($(this).data("controllers")||{}).hasOwnProperty(_fullName):!1},addController:function(controller,options,callback){var Controller=getController(controller);if(Controller){var instances=[];return this.each(function(){if(1===this.nodeType&&"SCRIPT"!=this.nodeName){var existingInstance=$(this).controller(controller);if(existingInstance)return instances.push(existingInstance),void 0;var instance=new Controller(this,options);isFunction(callback)&&callback.apply(instance,[$(this),instance]),instances.push(instance)
}}),instances.length>1?instances:instances[0]}},removeController:function(controller){return this.each(function(){for(var instances=$(this).controllers(controller);instances.length;)instances.shift().destroy()}),this},addControllerWhenAvailable:function(controller){var elements=this,args=arguments,task=$.Deferred();return $.isController(controller)&&(controller=controller.fullName),isString(controller)?($.module("$:/Controllers/"+controller).pipe(function(){var instance=elements.addController.apply(elements,args);
task.resolveWith(instance,[elements,instance])},task.reject,task.fail),task):task.reject()},implement:function(){return this.addController.apply(this,arguments),this}})}(),function(){var toId=function(src){return src.replace(/^\/\//,"").replace(/[\/\.]/g,"_")},makeArray=$.makeArray,id=1,$view=$.View=function(view,data,helpers,callback){"function"==typeof helpers&&(callback=helpers,helpers=void 0);var deferreds=getDeferreds(data);if(deferreds.length){var deferred=$.Deferred();return deferreds.push(get(view,!0)),$.when.apply($,deferreds).then(function(resolved){var result,objs=makeArray(arguments),renderer=objs.pop()[0];
if(isDeferred(data))data=usefulPart(resolved);else for(var prop in data)isDeferred(data[prop])&&(data[prop]=usefulPart(objs.shift()));result=renderer(data,helpers),deferred.resolve(result),callback&&callback(result)}),deferred.promise()}var response,async="function"==typeof callback,deferred=get(view,async);return async?(response=deferred,deferred.done(function(renderer){callback(renderer(data,helpers))})):deferred.done(function(renderer){response=renderer(data,helpers)}),response},checkText=function(text,url){if(!text.match(/[^\s]/))throw"$.View ERROR: There is no template or an empty template at "+url
},get=function(url,async){return $.ajax({url:url,dataType:"view",async:async})},isDeferred=function(obj){return obj&&$.isFunction(obj.always)},getDeferreds=function(data){var deferreds=[];if(isDeferred(data))return[data];for(var prop in data)isDeferred(data[prop])&&deferreds.push(data[prop]);return deferreds},usefulPart=function(resolved){return $.isArray(resolved)&&3===resolved.length&&"success"===resolved[1]?resolved[0]:resolved};$.ajaxTransport("view",function(options,orig){var type,el,id,jqXHR,url=orig.url,suffix=url.match(/\.[\w\d]+$/),response=function(text){var func=type.renderer(id,text);
return $view.cache&&($view.cached[id]=func),{view:func}};if((el=document.getElementById(url))&&(suffix="."+el.type.match(/\/(x\-)?(.+)/)[2]),suffix||(suffix=$view.ext,url+=$view.ext),id=toId(url),url.match(/^\/\//)){var sub=url.substr(2);url="undefined"==typeof steal?url="/"+sub:steal.root.mapJoin(sub)+""}type=$view.types[suffix];var template=$.template()[orig.url];return{send:function(headers,callback){return template?(type=$view.types["."+template.type],callback(200,"success",response(template.content))):$view.cached[id]?callback(200,"success",{view:$view.cached[id]}):(el?callback(200,"success",response(el.innerHTML)):jqXHR=$.ajax({async:orig.async,url:url,dataType:"text",error:function(){checkText("",url),callback(404)
},success:function(text){checkText(text,url),callback(200,"success",response(text))}}),void 0)},abort:function(){jqXHR&&jqXHR.abort()}}}),$.extend($view,{hookups:{},hookup:function(cb){var myid=++id;return $view.hookups[myid]=cb,myid},cached:{},cache:!0,register:function(info){this.types["."+info.suffix]=info,window.steal&&steal.type(info.suffix+" view js",function(options,success){var type=$view.types["."+options.type],id=toId(options.rootSrc+"");options.text=type.script(id,options.text),success()})},types:{},ext:".ejs",registerScript:function(type,id,src){return"$.View.preload('"+id+"',"+$view.types["."+type].script(id,src)+");"
},preload:function(id,renderer){$view.cached[id]=function(data,helpers){return renderer.call(data,data,helpers)}}}),window.steal&&steal.type("view js",function(options,success){var type=$view.types["."+options.type],id=toId(options.rootSrc+"");options.text="steal('"+(type.plugin||"jquery/view/"+options.type)+"').then(function($){"+"$.View.preload('"+id+"',"+options.text+");\n})",success()});var convert,modify,isTemplate,isHTML,isDOM,getCallback,hookupView,noHookup={val:!0,text:!0};convert=function(func_name){var old=$.fn[func_name];
$.fn[func_name]=function(){var callbackNum,callback,result,args=makeArray(arguments),self=this;if(isDeferred(args[0]))return args[0].done(function(res){modify.call(self,[res],old)}),this;if(isTemplate(args)){if(callbackNum=getCallback(args))return callback=args[callbackNum],args[callbackNum]=function(result){modify.call(self,[result],old),callback.call(self,result)},$view.apply($view,args),this;if(result=$view.apply($view,args),isDeferred(result))return result.done(function(res){modify.call(self,[res],old)}),this;
args=[result]}return noHookup[func_name]?old.apply(this,args):modify.call(this,args,old)}},modify=function(args,old){var res,hooks;for(var hasHookups in $view.hookups)break;return hasHookups&&args[0]&&isHTML(args[0])&&(hooks=$view.hookups,$view.hookups={},args[0]=$(args[0])),res=old.apply(this,args),hooks&&hookupView(args[0],hooks),res},isTemplate=function(args){var secArgType=typeof args[1];return"string"==typeof args[0]&&("object"==secArgType||"function"==secArgType)&&!isDOM(args[1])},isDOM=function(arg){return arg.nodeType||arg.jquery
},isHTML=function(arg){return isDOM(arg)?!0:"string"==typeof arg?(arg=$.trim(arg),"<"===arg.substr(0,1)&&">"===arg.substr(arg.length-1,1)&&arg.length>=3):!1},getCallback=function(args){return"function"==typeof args[3]?3:"function"==typeof args[2]&&2},hookupView=function(els,hooks){var hookupEls,len,id,func,i=0;for(els=els.filter(function(){return 3!=this.nodeType}),hookupEls=els.add("[data-view-id]",els),len=hookupEls.length;len>i;i++)hookupEls[i].getAttribute&&(id=hookupEls[i].getAttribute("data-view-id"))&&(func=hooks[id])&&(func(hookupEls[i],id),delete hooks[id],hookupEls[i].removeAttribute("data-view-id"));
$.extend($view.hookups,hooks)},$.fn.hookup=function(){var hooks=$view.hookups;return $view.hookups={},hookupView(this,hooks),this},$.each(["prepend","append","after","before","text","html","replaceWith","val"],function(i,func){convert(func)})}(),function(){var myEval=function(script){eval(script)},rSplit=$.String.rsplit,extend=$.extend,isArray=$.isArray,returnReg=/\r\n/g,retReg=/\r/g,newReg=/\n/g,nReg=/\n/,slashReg=/\\/g,quoteReg=/"/g,singleQuoteReg=/'/g,tabReg=/\t/g,leftBracket=/\{/g,rightBracket=/\}/g,quickFunc=/\s*\(([\$\w]+)\)\s*->([^\n]*)/,clean=function(content){return content.replace(slashReg,"\\\\").replace(newReg,"\\n").replace(quoteReg,'\\"').replace(tabReg,"\\t")
},escapeHTML=function(content){return content.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(quoteReg,"&#34;").replace(singleQuoteReg,"&#39;")},$View=$.View,bracketNum=function(content){var lefts=content.match(leftBracket),rights=content.match(rightBracket);return(lefts?lefts.length:0)-(rights?rights.length:0)},EJS=function(options){if(this.constructor!=EJS){var ejs=new EJS(options);return function(data,helpers){return ejs.render(data,helpers)}}return"function"==typeof options?(this.template={fn:options},void 0):(extend(this,EJS.options,options),this.template=compile(this.text,this.type,this.name),void 0)
};$&&($.EJS=EJS),EJS.prototype.render=function(object,extraHelpers){object=object||{},this._extra_helpers=extraHelpers;var v=new EJS.Helpers(object,extraHelpers||{});return this.template.fn.call(object,object,v)},extend(EJS,{text:function(input){if("string"==typeof input)return input;if(null===input||void 0===input)return"";var hook=input.hookup&&function(el,id){input.hookup.call(input,el,id)}||"function"==typeof input&&input||isArray(input)&&function(el,id){for(var i=0;i<input.length;i++)input[i].hookup?input[i].hookup(el,id):input[i](el,id)
};return hook?"data-view-id='"+$View.hookup(hook)+"'":input.toString?input.toString():""},clean:function(text){return"string"==typeof text?escapeHTML(text):"number"==typeof text?text:EJS.text(text)},options:{type:"[",ext:".ejs"}});var scan=function(scanner,source,block){for(var source_split=rSplit(source,nReg),i=0;i<source_split.length;i++)scanline(scanner,source_split[i],block)},scanline=function(scanner,line,block){scanner.lines++;for(var token,line_split=rSplit(line,scanner.splitter),i=0;i<line_split.length;i++)token=line_split[i],null!==token&&block(token,scanner)
},makeScanner=function(left,right){var scanner={};return extend(scanner,{left:left+"%",right:"%"+right,dLeft:left+"%%",dRight:"%%"+right,eeLeft:left+"%==",eLeft:left+"%=",cmnt:left+"%#",cleanLeft:left+"%~",scan:scan,lines:0}),scanner.splitter=new RegExp("("+[scanner.dLeft,scanner.dRight,scanner.eeLeft,scanner.eLeft,scanner.cmnt,scanner.left,scanner.right+"\n",scanner.right,"\n"].join(")|(").replace(/\[/g,"\\[").replace(/\]/g,"\\]")+")"),scanner},compile=function(source,left){source=source.replace(returnReg,"\n").replace(retReg,"\n"),left=left||"[";
var put_cmd="___v1ew.push(",insert_cmd=put_cmd,startTxt="var ___v1ew = [];",finishTxt="return ___v1ew.join('')",buff=new EJS.Buffer([startTxt],[]),content="",put=function(content){buff.push(put_cmd,'"',clean(content),'");')},startTag=null,empty=function(){content=""},doubleParen="));",endStack=[];scan(makeScanner(left,"["===left?"]":">"),source||"",function(token,scanner){var bn;if(null===startTag)switch(token){case"\n":content+="\n",put(content),buff.cr(),empty();break;case scanner.left:case scanner.eLeft:case scanner.eeLeft:case scanner.cmnt:startTag=token,content.length>0&&put(content),empty();
break;case scanner.dLeft:content+=scanner.left;break;default:content+=token}else switch(token){case scanner.right:switch(startTag){case scanner.left:bn=bracketNum(content);var last=endStack.length&&-1==bn?endStack.pop():";";last===doubleParen&&buff.push(finishTxt),buff.push(content,last),1===bn&&endStack.push(";");break;case scanner.eLeft:if(bn=bracketNum(content),bn&&endStack.push(doubleParen),quickFunc.test(content)){var parts=content.match(quickFunc);content="function(__){var "+parts[1]+"=$(__);"+parts[2]+"}"
}buff.push(insert_cmd,$.globalNamespace+".EJS.clean(",content,bn?startTxt:doubleParen);break;case scanner.eeLeft:bn=bracketNum(content),bn&&endStack.push(doubleParen),buff.push(insert_cmd,$.globalNamespace+".EJS.text(",content,bn?startTxt:doubleParen)}startTag=null,empty();break;case scanner.dRight:content+=scanner.right;break;default:content+=token}}),content.length>0&&buff.push(put_cmd,'"',clean(content)+'");');var template=buff.close(),out={out:"try { with(_VIEW) { with (_CONTEXT) {"+template+" "+finishTxt+"}}}catch(e){e.lineNumber=null;throw e;}"};
return myEval.call(out,"this.fn = (function(_CONTEXT,_VIEW){ var $ = "+$.globalNamespace+";"+out.out+"});"),out};EJS.Buffer=function(pre_cmd,post){this.line=[],this.script=[],this.post=post,this.push.apply(this,pre_cmd)},EJS.Buffer.prototype={push:function(){this.line.push.apply(this.line,arguments)},cr:function(){this.script.push(this.line.join(""),"\n"),this.line=[]},close:function(){return this.line.length>0&&(this.script.push(this.line.join("")),this.line=[]),this.post.length&&this.push.apply(this,this.post),this.script.push(";"),this.script.join("")
}},EJS.Helpers=function(data,extras){this._data=data,this._extras=extras,extend(this,extras)},EJS.Helpers.prototype={plugin:function(){var args=$.makeArray(arguments),widget=args.shift();return function(el){var jq=$(el);jq[widget].apply(jq,args)}},view:function(url,data,helpers){return helpers=helpers||this._extras,data=data||this._data,$View(url,data,helpers)}},$View.register({suffix:"ejs",script:function(id,src){return $.globalNamespace+".EJS(function(_CONTEXT,_VIEW) { "+new EJS({text:src,name:id}).template.out+" })"
},renderer:function(id,text){return EJS({text:text,name:id})}})}(),function(){var isArray=$.isArray,isObject=function(obj){return"object"==typeof obj&&null!==obj&&obj},makeArray=$.makeArray,each=$.each,hookup=function(val,prop,parent){return val instanceof $.Observe?unhookup([val],parent._namespace):val=isArray(val)?new $.Observe.List(val):new $.Observe(val),val.bind("change"+parent._namespace,function(ev){var args=$.makeArray(arguments),ev=args.shift();args[0]="*"===prop?parent.indexOf(val)+"."+args[0]:prop+"."+args[0],$.event.trigger(ev,args,parent)
}),val},unhookup=function(items,namespace){for(var item,i=0;i<items.length;i++)item=items[i],item&&item.unbind&&item.unbind("change"+namespace)},id=0,collecting=null,collect=function(){return collecting?void 0:(collecting=[],!0)},trigger=function(item,event,args){return item._init?void 0:collecting?(collecting.push({t:item,ev:event,args:args}),void 0):$.event.trigger(event,args,item,!0)},batchNum=0,sendCollection=function(){var cur,len=collecting.length,items=collecting.slice(0);collecting=null,batchNum++;for(var i=0;len>i;i++)cur=items[i],$.event.trigger({type:cur.ev,batchNum:batchNum},cur.args,cur.t)
},serialize=function(observe,how,where){return observe.each(function(name,val){where[name]=isObject(val)&&"function"==typeof val[how]?val[how]():val}),where};$.Class($.globalNamespace+".Observe",{init:function(obj){this._data={},this._namespace=".observe"+ ++id,this._init=!0,this.attrs(obj),delete this._init},attr:function(attr,val){return void 0===val?this._get(attr):(this._set(attr,val),this)},each:function(){return each.apply(null,[this.__get()].concat(makeArray(arguments)))},removeAttr:function(attr){var parts=isArray(attr)?attr:attr.split("."),prop=parts.shift(),current=this._data[prop];
return parts.length?current.removeAttr(parts):(delete this._data[prop],trigger(this,"change",[prop,"remove",void 0,current]),current)},_get:function(attr){var parts=isArray(attr)?attr:(""+attr).split("."),current=this.__get(parts.shift());return parts.length?current?current._get(parts):void 0:current},__get:function(attr){return attr?this._data[attr]:this._data},_set:function(attr,value){var parts=isArray(attr)?attr:(""+attr).split("."),prop=parts.shift(),current=this.__get(prop);if(isObject(current)&&parts.length)current._set(parts,value);
else{if(parts.length)throw"jQuery.Observe: set a property on an object that does not exist";if(value!==current){var changeType=this.__get().hasOwnProperty(prop)?"set":"add";this.__set(prop,isObject(value)?hookup(value,prop,this):value),trigger(this,"change",[prop,changeType,value,current]),current&&unhookup([current],this._namespace)}}},__set:function(prop,val){this._data[prop]=val,prop in this.constructor.prototype||(this[prop]=val)},bind:function(){return $.fn.bind.apply($([this]),arguments),this},unbind:function(){return $.fn.unbind.apply($([this]),arguments),this
},serialize:function(){return serialize(this,"serialize",{})},attrs:function(props,remove){if(void 0===props)return serialize(this,"attrs",{});props=$.extend(!0,{},props);var prop,collectingStarted=collect();for(prop in this._data){var curVal=this._data[prop],newVal=props[prop];void 0!==newVal?(isObject(curVal)&&isObject(newVal)?curVal.attrs(newVal,remove):curVal!=newVal&&this._set(prop,newVal),delete props[prop]):remove&&this.removeAttr(prop)}for(var prop in props)newVal=props[prop],this._set(prop,newVal);collectingStarted&&sendCollection()
}});var list=$.Observe($.globalNamespace+".Observe.List",{init:function(instances,options){this.length=0,this._namespace=".list"+ ++id,this._init=!0,this.bind("change",this.proxy("_changes")),this.push.apply(this,makeArray(instances||[])),$.extend(this,options),this.comparator&&this.sort(),delete this._init},_changes:function(ev,attr,how,newVal,oldVal){if(this.comparator&&/^\d+./.test(attr)){var index=+/^\d+/.exec(attr)[0],item=this[index],newIndex=this.sortedIndex(item);if(newIndex!==index)return[].splice.call(this,index,1),[].splice.call(this,newIndex,0,item),trigger(this,"move",[item,newIndex,index]),ev.stopImmediatePropagation(),trigger(this,"change",[attr.replace(/^\d+/,newIndex),how,newVal,oldVal]),void 0
}-1===attr.indexOf(".")&&("add"===how?trigger(this,how,[newVal,+attr]):"remove"===how&&trigger(this,how,[oldVal,+attr]))},sortedIndex:function(item){for(var i,itemCompare=item.attr(this.comparator),equaled=0,i=0;i<this.length;i++)if(item!==this[i]){if(itemCompare<=this[i].attr(this.comparator))return i+equaled}else equaled=-1;return i+equaled},__get:function(attr){return attr?this[attr]:this},__set:function(attr,val){this[attr]=val},serialize:function(){return serialize(this,"serialize",[])},splice:function(index,count){var i,args=makeArray(arguments);
for(i=2;i<args.length;i++){var val=args[i];isObject(val)&&(args[i]=hookup(val,"*",this))}void 0===count&&(count=args[1]=this.length-index);var removed=[].splice.apply(this,args);return count>0&&(trigger(this,"change",[""+index,"remove",void 0,removed]),unhookup(removed,this._namespace)),args.length>2&&trigger(this,"change",[""+index,"add",args.slice(2),removed]),removed},attrs:function(props,remove){if(void 0===props)return serialize(this,"attrs",[]);props=props.slice(0);for(var len=Math.min(props.length,this.length),collectingStarted=collect(),prop=0;len>prop;prop++){var curVal=this[prop],newVal=props[prop];
isObject(curVal)&&isObject(newVal)?curVal.attrs(newVal,remove):curVal!=newVal&&this._set(prop,newVal)}props.length>this.length?this.push(props.slice(this.length)):props.length<this.length&&remove&&this.splice(props.length),collectingStarted&&sendCollection()},sort:function(method,silent){var comparator=this.comparator,args=comparator?[function(a,b){return a=a[comparator],b=b[comparator],a===b?0:b>a?-1:1}]:[];[].sort.apply(this,args),!silent&&trigger(this,"reset")}}),getArgs=function(args){return args[0]&&$.isArray(args[0])?args[0]:makeArray(args)
};each({push:"length",unshift:0},function(name,where){list.prototype[name]=function(){for(var args=getArgs(arguments),len=where?this.length:0,i=0;i<args.length;i++){var val=args[i];isObject(val)&&(args[i]=hookup(val,"*",this))}if(1==args.length&&this.comparator){var index=this.sortedIndex(args[0]);return this.splice(index,0,args[0]),this.length}var res=[][name].apply(this,args);return this.comparator&&args.length>1?(this.sort(null,!0),trigger(this,"reset",[args])):trigger(this,"change",[""+len,"add",args,void 0]),res
}}),each({pop:"length",shift:0},function(name,where){list.prototype[name]=function(){var args=getArgs(arguments),len=where&&this.length?this.length-1:0,res=[][name].apply(this,args);return trigger(this,"change",[""+len,"remove",void 0,[res]]),res&&res.unbind&&res.unbind("change"+this._namespace),res}}),list.prototype.indexOf=[].indexOf||function(item){return $.inArray(item,this)},$.O=function(data,options){return isArray(data)||data instanceof $.Observe.List?new $.Observe.List(data,options):new $.Observe(data,options)
}}()});