(function(){
var _1=window.melange=function(){
return new _1();
};
if(window.jQuery===undefined){
throw new Error("jQuery package must be loaded exposing jQuery namespace");
}
if(window.JSON===undefined){
throw new Error("json2 package must be loaded exposing JSON namespace");
}
var $m=_1;
$m.config={};
(function(){
var _2=jQuery("script[melangeConfig][src$='melange.js']").attr("melangeConfig");
if(_2){
var _3=JSON.parse("{ "+_2+" }");
jQuery.extend($m.config,_3);
}
}());
$m.clone=function(_4){
return jQuery.extend(true,{},_4);
};
$m.setOptions=function(_5){
switch(_5.debug){
case true:
$m.logging.setDebug();
break;
case false:
$m.logging.unsetDebug();
break;
default:
$m.logging.setDebug();
}
if(_5.debugLevel){
$m.logging.setDebugLevel(_5.debugLevel);
}
};
$m.loadGoogleApi=function(_6,_7,_8,_9){
if(!_6||!_7){
throw new TypeError("modulename must be defined");
}
var _a={name:_6,version:_7,settings:_8};
jQuery.extend(_a.settings,{callback:_9});
google.load(_a.name,_a.version,_a.settings);
};
(function(){
_1.error=window.melange.error=function(){
return new _1.error();
};
var $m=_1.error;
var _b=["DependencyNotSatisfied","notImplementedByChildClass"];
$m.createErrors=function(_c){
jQuery.each(_c,function(){
_1.error[this]=Error;
});
};
$m.createErrors(_b);
}());
(function(){
_1.logging=window.melange.logging=function(){
return new _1.logging();
};
var $m=_1.logging;
var _d=false;
var _e=5;
$m.setDebug=function(){
_d=true;
};
$m.unsetDebug=function(){
_d=false;
};
$m.isDebug=function(){
return _d?true:false;
};
$m.setDebugLevel=function(_f){
if(isNaN(_f)){
throw new _1.error.TypeError("melange.logging.setDebugLevel: parameter must be a number");
}
if(_f<=0){
_f=1;
}
if(_f>=6){
_f=5;
}
_e=_f;
};
$m.getDebugLevel=function(){
return _e;
};
$m.debugDecorator=function(_10){
_10.log=function(_11,_12){
if(_1.logging.isDebug()&&_e>=_11){
console.debug(_12);
}
};
return _10;
};
}());
(function(){
_1.templates=window.melange.templates=function(){
return new _1.templates();
};
var $m=_1.logging.debugDecorator(_1.templates);
_1.error.createErrors([]);
$m._baseTemplate=function(){
this.context={};
var _13=jQuery("script[melangeContext]")[0];
if(_13!==undefined){
_13=jQuery(_13).attr("melangeContext");
if(_13){
eval("var configuration_object = "+_13);
jQuery.extend(this.context,configuration_object);
}
}
};
}());
}());
window.melange=window.melange.logging.debugDecorator(window.melange);

