JsBehaviourToolkit={prefix:"jsb_",handlers:{},registerHandler:function(key,handler_function)
{this.handlers[key]=handler_function;},callHandler:function(key,dom_element)
{if(typeof this.handlers[key]==="undefined")
{throw new Error("The handler "+key+" is not defined!");}
var input_element;if(dom_element.is("input"))
{input_element=dom_element;dom_element=input_element.parent();}
else
{input_element=dom_element.children("input").first();}
if(input_element)
{var value_string=input_element.val();if(value_string.substr(0,1)=='{')
{value=jQuery.parseJSON(value_string);}
else
{var value={};var parts=value_string.split("&");var parts_length=parts.length;for(var i=0;i<parts_length;i++)
{var query_string_entry=parts[i].split("=");var value_key=decodeURIComponent(query_string_entry[0]);var value_content=decodeURIComponent(query_string_entry.slice(1).join("="));value[value_key]=value_content;}}
new this.handlers[key](dom_element,value);}
else
{new this.handlers[key](dom_element);}},applyBehaviour:function(dom_element)
{var dom_elements=jQuery(dom_element).find("."+this.prefix);var dom_elements_length=dom_elements.length;for(var i=0;i<dom_elements_length;i++)
{var dom_element=jQuery(dom_elements[i]);var key=dom_element.attr("class").match(/jsb_([^\s]+)/)[1];this.callHandler(key,dom_element);dom_element.removeClass(this.prefix);dom_element.removeClass(this.prefix+""+key);}}};jQuery(document).ready(function(){JsBehaviourToolkit.applyBehaviour(window.document);});
