/*
 * plugins.js compiled on 2012-02-21 15:15:11 +0100
 */
(function(c){var a=["DOMMouseScroll","mousewheel"];c.event.special.mousewheel={setup:function(){if(this.addEventListener)for(var d=a.length;d;)this.addEventListener(a[--d],b,false);else this.onmousewheel=b},teardown:function(){if(this.removeEventListener)for(var d=a.length;d;)this.removeEventListener(a[--d],b,false);else this.onmousewheel=null}};c.fn.extend({mousewheel:function(d){return d?this.bind("mousewheel",d):this.trigger("mousewheel")},unmousewheel:function(d){return this.unbind("mousewheel",
d)}});function b(f){var d=[].slice.call(arguments,1),g=0,e=true;f=c.event.fix(f||window.event);f.type="mousewheel";if(f.wheelDelta)g=f.wheelDelta/120;if(f.detail)g=-f.detail/3;d.unshift(f,g);return c.event.handle.apply(this,d)}})(jQuery);(function($){var _that={};var _divs={};var _isOnFocus;var _isSelectable;var _selectDirection;var _intervalid;$.fn.customScroller=function(options){options=$.extend({width:null,height:null,horizontal:1,vertical:1,speed:4},options);if($(".customScrollerContent",this).length>0){var cl_cnt=$(".customScrollerContent",this).children();cl_cnt.appendTo($(this));$(this).children().not(cl_cnt).remove()}if(this.length>0){var _lastDate;this.each(function(index,domElement){if(undefined===this.id||!this.id.length)this.id=
"customScroller_"+_curDate;var _curDate=(new Date).getTime();var _uniqueID=_lastDate===_curDate?"ID_"+(_curDate+1E3):"ID_"+_curDate;if(!_that[this.id])_that[this.id]=this;_that[this.id]._uniqueID=_uniqueID;_divs[_uniqueID]={};if(!options.width)if($(this).css("width")!=="auto")_divs[_uniqueID].width=$(this).css("width").indexOf("%")>0?"100%":parseInt($(this).css("width"),10)+"px";else return false;else{_divs[_uniqueID].width=(options.width+"").indexOf("%")>0||(options.width+"").indexOf("px")>0?options.width:
parseInt(options.width,10)+"px";$(this).css("width",_divs[_uniqueID].width)}if(!options.height)if($(this).css("height")!=="auto")_divs[_uniqueID].height=$(this).css("height").indexOf("%")>0?"100%":parseInt($(this).css("height"),10)+"px";else return false;else{_divs[_uniqueID].height=(options.height+"").indexOf("%")>0||(options.height+"").indexOf("px")>0?options.height:parseInt(options.height,10)+"px";$(this).css("height",_divs[_uniqueID].height)}$(this).css("overflow","hidden");$(this).css("position",
"relative");_divs[_uniqueID].speed=!$(this).attr("speed")?options.speed:parseInt($(this).attr("speed"),10);if(isNaN(_divs[_uniqueID].speed))_divs[_uniqueID].speed=options.speed;_divs[_uniqueID].vertical=!$(this).attr("vertical")?options.vertical:parseInt($(this).attr("vertical"),10);if(isNaN(_divs[_uniqueID].vertical))_divs[_uniqueID].vertical=options.vertical;_divs[_uniqueID].horizontal=!$(this).attr("horizontal")?options.horizontal:parseInt($(this).attr("horizontal"),10);if(isNaN(_divs[_uniqueID].horizontal))_divs[_uniqueID].horizontal=
options.horizontal;var _containerHTML='<div class="customScrollerContainer" id="customScrollerContainer_'+_uniqueID+'">';_containerHTML+='<div class="customScrollerContent" id="customScrollerContent_'+_uniqueID+'"></div></div>';var cntHTML=$(_containerHTML);$($(this).children()).appendTo(cntHTML.children(".customScrollerContent"));cntHTML.appendTo($(this));_divs[_uniqueID].objContainer=$("#customScrollerContainer_"+_uniqueID);_divs[_uniqueID].objContent=$("#customScrollerContent_"+_uniqueID);_divs[_uniqueID].objContainer.css({"position":"relative",
"float":"left","width":"100%","height":$(this).height(),"overflow":"hidden","margin":"0px","border":"0px","padding":"0px"});_divs[_uniqueID].objContent.css({"position":"absolute","top":"0px","left":"0px","margin":"0px","border":"0px","padding":"0px"});var _vscrollerHTML='<div id="divVScrollerBar_'+_uniqueID+'" class="divVScrollerBar">';_vscrollerHTML+='<span id="divVScrollerBar_up_'+_uniqueID+'" class="divVScrollerBarUp"><span></span></span>';_vscrollerHTML+='<span id="divVScrollerBar_trace_'+_uniqueID+
'" class="divVScrollerBarTrace">';_vscrollerHTML+='<span id="divVScrollerBar_cursor_'+_uniqueID+'" class="divVScrollerBarCursor"><span></span></span>';_vscrollerHTML+="</span>";_vscrollerHTML+='<span id="divVScrollerBar_down_'+_uniqueID+'" class="divVScrollerBarDown"><span></span></span>';_vscrollerHTML+="</div>";$(this).prepend(_vscrollerHTML);_divs[_uniqueID].objVScroller=$("#divVScrollerBar_"+_uniqueID);_divs[_uniqueID].objUp=$("#divVScrollerBar_up_"+_uniqueID);_divs[_uniqueID].objDown=$("#divVScrollerBar_down_"+
_uniqueID);_divs[_uniqueID].objVTrace=$("#divVScrollerBar_trace_"+_uniqueID);_divs[_uniqueID].objVCursor=$("#divVScrollerBar_cursor_"+_uniqueID);_divs[_uniqueID].objVScroller.css({"float":"right","overflow":"hidden","padding":"0px"});_divs[_uniqueID].objUp.css({"display":"block","width":"100%","overflow":"hidden"});_divs[_uniqueID].objDown.css({"display":"block","width":"100%","overflow":"hidden"});_divs[_uniqueID].objVTrace.css({"display":"block","position":"relative","width":"100%","overflow":"hidden",
"margin":"0px","border":"0px","padding":"0px"});_divs[_uniqueID].objVCursor.css({"display":"block","position":"absolute","width":"100%","overflow":"hidden","top":"0px","left":"0px","margin":"0px","border":"0px","padding":"0px"});var _oscrollerHTML='<div id="divOScrollerBar_'+_uniqueID+'" class="divOScrollerBar">';_oscrollerHTML+='<span id="divOScrollerBar_left_'+_uniqueID+'" class="divOScrollerBarLeft"><span></span></span>';_oscrollerHTML+='<span id="divOScrollerBar_trace_'+_uniqueID+'" class="divOScrollerBarTrace">';
_oscrollerHTML+='<span id="divOScrollerBar_cursor_'+_uniqueID+'" class="divOScrollerBarCursor"><span></span></span>';_oscrollerHTML+="</span>";_oscrollerHTML+='<span id="divOScrollerBar_right_'+_uniqueID+'" class="divOScrollerBarRight"><span></span></span>';_oscrollerHTML+='<div style="clear: both;"></div></div>';$(this).append(_oscrollerHTML);_divs[_uniqueID].objOScroller=$("#divOScrollerBar_"+_uniqueID);_divs[_uniqueID].objLeft=$("#divOScrollerBar_left_"+_uniqueID);_divs[_uniqueID].objRight=$("#divOScrollerBar_right_"+
_uniqueID);_divs[_uniqueID].objOTrace=$("#divOScrollerBar_trace_"+_uniqueID);_divs[_uniqueID].objOCursor=$("#divOScrollerBar_cursor_"+_uniqueID);_divs[_uniqueID].objOScroller.css({"float":"left","overflow":"hidden","padding":"0px"});_divs[_uniqueID].objLeft.css({"float":"left","display":"block","height":"100%","margin":"0px","overflow":"hidden"});_divs[_uniqueID].objRight.css({"float":"left","display":"block","height":"100%","margin":"0px","overflow":"hidden"});_divs[_uniqueID].objOTrace.css({"float":"left",
"display":"block","position":"relative","height":"100%","overflow":"hidden","margin":"0px","border":"0px","padding":"0px"});_divs[_uniqueID].objOCursor.css({"display":"block","position":"absolute","height":"100%","overflow":"hidden","top":"0px","left":"0px","margin":"0px","border":"0px","padding":"0px"});$(this).append('<div style="clear: both;"></div>');$.fn.setScroller=function(){if(this.length>0)this.each(function(index,domElement){if(_that[this.id]._uniqueID&&_that[this.id]._uniqueID.length>0){var id=
_that[this.id]._uniqueID;if(_divs[id]){_divs[id]._vscroll=false;_divs[id]._oscroll=false;_divs[id].objOScroller.hide();_divs[id].objVScroller.hide();_divs[id].objContainer.css({"width":"100%","height":"100%"});if($.browser.msie)_divs[id].objContent.css({"width":"auto"});if(_divs[id].vertical===1&&_divs[id]._vscroll===false&&_divs[id].objContainer.height()>0&&_divs[id].objContent.outerHeight(true)>_divs[id].objContainer.height()){_divs[id]._vscroll=true;_divs[id].objVScroller.show();_divs[id].containerHeight=
_divs[id].objContainer.height();_divs[id].contentHeight=_divs[id].objContent.outerHeight(true);_divs[id].objVScroller.css("height",_divs[id].containerHeight+"px");_divs[id].traceHeight=_divs[id].containerHeight-_divs[id].objUp.outerHeight(true)-_divs[id].objDown.outerHeight(true);_divs[id].objVTrace.css("height",_divs[id].traceHeight+"px");_divs[id].cursorHeight=90;_divs[id].objVCursor.css("height",_divs[id].cursorHeight+"px");_divs[id].traceVVoid=_divs[id].traceHeight-_divs[id].cursorHeight;_divs[id].posVTrace=
_divs[id].objVTrace.offset().top;var cursorY=(0-parseInt(_divs[id].objContent.css("top"),10))*_divs[id].traceVVoid/(_divs[id].contentHeight-_divs[id].containerHeight);_divs[id].objVCursor.css("top",cursorY+"px")}if(_divs[id].horizontal===1&&_divs[id]._oscroll===false&&_divs[id].objContainer.width()>0&&_divs[id].objContent.outerWidth(true)>_divs[id].objContainer.width()){_divs[id]._oscroll=true;_divs[id].objOScroller.show();_divs[id].objContainer.css("height",_divs[id].objContainer.height()-_divs[id].objOScroller.outerHeight(true)+
"px");_divs[id].containerWidth=_divs[id].objContainer.width();_divs[id].contentWidth=_divs[id].objContent.outerWidth(true);_divs[id].objOScroller.css("width",_divs[id].containerWidth+"px");_divs[id].traceWidth=_divs[id].containerWidth-_divs[id].objLeft.outerWidth(true)-_divs[id].objRight.outerWidth(true);_divs[id].objOTrace.css("width",_divs[id].traceWidth+"px");_divs[id].cursorWidth=Math.ceil(_divs[id].traceWidth*_divs[id].containerWidth/_divs[id].contentWidth);_divs[id].objOCursor.css("width",_divs[id].cursorWidth+
"px");_divs[id].traceOVoid=_divs[id].traceWidth-_divs[id].cursorWidth;_divs[id].posOTrace=_divs[id].objOTrace.offset().left;var cursorX=(0-parseInt(_divs[id].objContent.css("left"),10))*_divs[id].traceOVoid/(_divs[id].contentWidth-_divs[id].containerWidth);_divs[id].objOCursor.css("left",cursorX+"px");if(_divs[id].vertical===1&&_divs[id]._vscroll===true){_divs[id].containerHeight=_divs[id].objContainer.height();_divs[id].contentHeight=_divs[id].objContent.outerHeight(true);_divs[id].objVScroller.css("height",
_divs[id].containerHeight+"px");_divs[id].traceHeight=_divs[id].containerHeight-_divs[id].objUp.outerHeight(true)-_divs[id].objDown.outerHeight(true);_divs[id].objVTrace.css("height",_divs[id].traceHeight+"px");_divs[id].cursorHeight=10;_divs[id].objVCursor.css("height",_divs[id].cursorHeight+"px");_divs[id].traceVVoid=_divs[id].traceHeight-_divs[id].cursorHeight;_divs[id].posVTrace=_divs[id].objVTrace.offset().top;var cursorY=(0-parseInt(_divs[id].objContent.css("top"),10))*_divs[id].traceVVoid/
(_divs[id].contentHeight-_divs[id].containerHeight);_divs[id].objVCursor.css("top",cursorY+"px")}}if($.browser.msie)_divs[id].objContent.css({"width":_divs[id].objContent.width()+"px"});if(_divs[id]._vscroll===false)_divs[id].objContent.css("top","0px");if(_divs[id]._oscroll===false)_divs[id].objContent.css("left","0px");_divs[id].containerOffset=_divs[id].objContainer.offset();_divs[id].containerHeight=_divs[id].objContainer.height();_divs[id].contentHeight=_divs[id].objContent.outerHeight();_divs[id].containerWidth=
_divs[id].objContainer.width();_divs[id].contentWidth=_divs[id].objContent.outerWidth(true)}}})};$(this).setScroller();$(this).bind("mousedown",function(e){e.stopPropagation();_isOnFocus=_uniqueID});_divs[_uniqueID].objContainer.bind("mousedown",function(e){_isSelectable=_uniqueID;_selectDirection=null});_divs[_uniqueID].objContainer.bind("mousemove",function(e){if(!_isSelectable)return;var containerOffset=_divs[_isSelectable].containerOffset;var containerHeight=_divs[_isSelectable].containerHeight;
var containerWidth=_divs[_isSelectable].containerWidth;_stopMove();if(_divs[_isSelectable]._vscroll===true&&e.pageY>containerOffset.top&&e.pageY<containerOffset.top+10){_selectDirection="up";_startMoveUp(_divs[_isSelectable],1)}else if(_divs[_isSelectable]._oscroll===true&&e.pageX>containerOffset.left&&e.pageX<containerOffset.left+10){_selectDirection="left";_startMoveLeft(_divs[_isSelectable],1)}else if(_divs[_isSelectable]._vscroll===true&&e.pageY>containerOffset.top+containerHeight-10&&e.pageY<
containerOffset.top+containerHeight){_selectDirection="down";_startMoveDown(_divs[_isSelectable],-1)}else if(_divs[_isSelectable]._oscroll===true&&e.pageX>containerOffset.left+containerWidth-10&&e.pageX<containerOffset.left+containerWidth){_selectDirection="right";_startMoveRight(_divs[_isSelectable],-1)}});_divs[_uniqueID].objContainer.bind("mouseup",function(e){_stopMove();_isSelectable=null;_selectDirection=null});if($().mousewheel){_divs[_uniqueID].objContainer.bind("mousewheel",function(e,delta){delta>
0?_moveUp(_divs[_uniqueID],delta):_moveDown(_divs[_uniqueID],delta);return false});if(_divs[_uniqueID]._vscroll===false)_divs[_uniqueID].objContainer.bind("mousewheel",function(e,delta){delta>0?_moveLeft(_divs[_uniqueID],delta):_moveRight(_divs[_uniqueID],delta);return false})}_divs[_uniqueID].objVTrace.bind("mousedown",function(e){var spanY=e.pageY-_divs[_uniqueID].posVTrace;if(spanY>_divs[_uniqueID].cursorHeight+parseInt(_divs[_uniqueID].objVCursor.css("top"),10))_moveDown(_divs[_uniqueID],-3);
else if(spanY<parseInt(_divs[_uniqueID].objVCursor.css("top"),10))_moveUp(_divs[_uniqueID],3);return false});_divs[_uniqueID].objUp.bind("mouseover",function(e){$("span",this).addClass("hover");_startMoveUp(_divs[_uniqueID]);return false});_divs[_uniqueID].objDown.bind("mouseover",function(e){$("span",this).addClass("hover");_startMoveDown(_divs[_uniqueID]);return false});_divs[_uniqueID].objUp.bind("mouseout",function(e){$("span",this).removeClass("hover");_stopMove();return false});_divs[_uniqueID].objDown.bind("mouseout",
function(e){$("span",this).removeClass("hover");_stopMove();return false});_divs[_uniqueID].objVCursor.bind("mouseover",function(e){$("span",this).addClass("hover");return false});_divs[_uniqueID].objVCursor.bind("mouseout",function(e){$("span",this).removeClass("hover");return false});$(_divs[_uniqueID].objVCursor).dragCursor(_uniqueID,"bottom");$(_divs[_uniqueID].objVCursor).ondrag(function(e,element){var cursorY=parseInt(_divs[_uniqueID].objVCursor.css("top"),10);var contentY=0-cursorY*(_divs[_uniqueID].contentHeight-
_divs[_uniqueID].containerHeight)/_divs[_uniqueID].traceVVoid;_divs[_uniqueID].objContent.css("top",contentY+"px");return false});_divs[_uniqueID].objOTrace.bind("mousedown",function(e){var spanX=e.pageX-_divs[_uniqueID].posOTrace;if(spanX>_divs[_uniqueID].cursorWidth+parseInt(_divs[_uniqueID].objOCursor.css("left"),10))_moveRight(_divs[_uniqueID],-3);else if(spanX<parseInt(_divs[_uniqueID].objOCursor.css("left"),10))_moveLeft(_divs[_uniqueID],3);return false});_divs[_uniqueID].objLeft.bind("mouseover",
function(e){$("span",this).addClass("hover");_startMoveLeft(_divs[_uniqueID]);return false});_divs[_uniqueID].objRight.bind("mouseover",function(e){$("span",this).addClass("hover");_startMoveRight(_divs[_uniqueID]);return false});_divs[_uniqueID].objLeft.bind("mouseout",function(e){$("span",this).removeClass("hover");_stopMove();return false});_divs[_uniqueID].objRight.bind("mouseout",function(e){$("span",this).removeClass("hover");_stopMove();return false});_divs[_uniqueID].objOCursor.bind("mouseover",
function(e){$("span",this).addClass("hover");return false});_divs[_uniqueID].objOCursor.bind("mouseout",function(e){$("span",this).removeClass("hover");return false});$(_divs[_uniqueID].objOCursor).dragCursor(_uniqueID,"right");$(_divs[_uniqueID].objOCursor).ondrag(function(e,element){var cursorX=parseInt(_divs[_uniqueID].objOCursor.css("left"),10);var contentX=0-cursorX*(_divs[_uniqueID].contentWidth-_divs[_uniqueID].containerWidth)/_divs[_uniqueID].traceOVoid;_divs[_uniqueID].objContent.css("left",
contentX+"px");return false});_lastDate=_curDate});$.anchorFix()}};$.anchorFix=function(){$("a").each(function(index,domElement){$(this).bind("click",function(e){var getHref=$(this).attr("href");if(getHref&&getHref.indexOf("#")!==-1){var anchors=getHref.replace(window.location.href,"");anchors=anchors.substring(anchors.indexOf("#"))}var targets=$(this).attr("target");if(anchors&&targets&&_that[targets])if(anchors.length>0&&_that[targets]._uniqueID.length>0&&anchors.charAt(0)==="#"){var topAnchor=
$("a[name="+anchors.substring(1)+"]").parent().offset().top;var topContainer=_divs[_that[targets]._uniqueID].objContainer.offset().top;var topContent=parseInt(_divs[_that[targets]._uniqueID].objContent.css("top"),10);var offScroll=topContent+(0-parseInt(topAnchor-topContainer,10));var maxScroll=0-_divs[_that[targets]._uniqueID].contentHeight+_divs[_that[targets]._uniqueID].containerHeight;if(offScroll<maxScroll)offScroll=maxScroll;_divs[_that[targets]._uniqueID].objContent.css("top",offScroll+"px");
var cursorY=(0-parseInt(offScroll,10))*_divs[_that[targets]._uniqueID].traceVVoid/(_divs[_that[targets]._uniqueID].contentHeight-_divs[_that[targets]._uniqueID].containerHeight);_divs[_that[targets]._uniqueID].objVCursor.css("top",cursorY+"px");return false}})})};var _startMoveDown=function(objCopy,wheelDelta){_intervalid=window.setInterval(function(){_moveDown(objCopy,wheelDelta)},20)};var _startMoveUp=function(objCopy,wheelDelta){_intervalid=window.setInterval(function(){_moveUp(objCopy,wheelDelta)},
20)};var _startMoveRight=function(objCopy,wheelDelta){_intervalid=window.setInterval(function(){_moveRight(objCopy,wheelDelta)},20)};var _startMoveLeft=function(objCopy,wheelDelta){_intervalid=window.setInterval(function(){_moveLeft(objCopy,wheelDelta)},20)};var _stopMove=function(){if(_intervalid)window.clearInterval(_intervalid)};var _moveDown=function(objCopy,wheelDelta){var increment;if(wheelDelta)increment=0-parseInt(wheelDelta*5,10);else increment=1;var scrolling=parseInt(objCopy.objContent.css("top"),
10);var maxScroll=0-objCopy.contentHeight+objCopy.containerHeight;if(scrolling>=maxScroll){var delTop=scrolling-parseInt(objCopy.speed*increment,10);if(delTop<maxScroll)delTop=maxScroll;objCopy.objContent.css("top",delTop+"px");var addTop=parseInt((0-delTop)*objCopy.traceVVoid/(objCopy.contentHeight-objCopy.containerHeight),10);objCopy.objVCursor.css("top",addTop+"px")}};var _moveUp=function(objCopy,wheelDelta){var increment;if(wheelDelta)increment=parseInt(wheelDelta*5,10);else increment=1;var scrolling=
parseInt(objCopy.objContent.css("top"),10);if(scrolling<=0){var addTop=scrolling+parseInt(objCopy.speed*increment,10);if(addTop>0)addTop=0;objCopy.objContent.css("top",addTop+"px");var delTop=parseInt((0-addTop)*objCopy.traceVVoid/(objCopy.contentHeight-objCopy.containerHeight),10);objCopy.objVCursor.css("top",delTop+"px")}};var _moveRight=function(objCopy,wheelDelta){var increment;if(wheelDelta)increment=0-parseInt(wheelDelta*5,10);else increment=1;var scrolling=parseInt(objCopy.objContent.css("left"),
10);var maxScroll=0-objCopy.contentWidth+objCopy.containerWidth;if(scrolling>=maxScroll){var delRight=scrolling-parseInt(objCopy.speed*increment,10);if(delRight<maxScroll)delRight=maxScroll;objCopy.objContent.css("left",delRight+"px");var addLeft=parseInt((0-delRight)*objCopy.traceOVoid/(objCopy.contentWidth-objCopy.containerWidth),10);objCopy.objOCursor.css("left",addLeft+"px")}};var _moveLeft=function(objCopy,wheelDelta){var increment;if(wheelDelta)increment=parseInt(wheelDelta*5,10);else increment=
1;var scrolling=parseInt(objCopy.objContent.css("left"),10);if(scrolling<=0){var addLeft=scrolling+parseInt(objCopy.speed*increment,10);if(addLeft>0)addLeft=0;objCopy.objContent.css("left",addLeft+"px");var delRight=parseInt((0-addLeft)*objCopy.traceOVoid/(objCopy.contentWidth-objCopy.containerWidth),10);objCopy.objOCursor.css("left",delRight+"px")}};$.fn.dragCursor=function(id,which){var _isMouseDown=false;var _currentElement=null;var _dragCallbacks={};var _lastMouseX;var _lastMouseY;var _lastElemTop;
var _lastElemLeft;if(_divs[id]){options={maxTop:0,maxRight:0,maxBottom:0,maxLeft:0};$.fn.ondrag=function(callback){if(this.length>0)return this.each(function(){_dragCallbacks[this.id]=callback})};if(this.length>0)this.each(function(index,domElement){$(this).bind("mousedown",function(e){if(which==="bottom"){options.maxTop=0;options.maxRight=0;options.maxBottom=_divs[id].traceVVoid;options.maxLeft=0}if(which==="right"){options.maxTop=0;options.maxRight=_divs[id].traceOVoid;options.maxBottom=0;options.maxLeft=
0}_isMouseDown=true;_currentElement=this;var offset=$(this).offset();var parentOffSet=$(this).offsetParent();var additionalOffSet={};if(parentOffSet.length>0){additionalOffSet.top=parentOffSet.offset().top;additionalOffSet.left=parentOffSet.offset().left}_lastMouseX=e.pageX;_lastMouseY=e.pageY;_lastElemTop=offset.top-additionalOffSet.top;_lastElemLeft=offset.left-additionalOffSet.left;updatePosition(e);return false})});var updatePosition=function(e){var spanX=e.pageX-_lastMouseX;var spanY=e.pageY-
_lastMouseY;var Y=_lastElemTop+spanY;var X=_lastElemLeft+spanX;if(options.maxTop!==null&&Y<options.maxTop)Y=options.maxTop;if(options.maxLeft!==null&&X<options.maxLeft)X=options.maxLeft;if(options.maxBottom!==null&&Y>options.maxBottom)Y=options.maxBottom;if(options.maxRight!==null&&X>options.maxRight)X=options.maxRight;$(_currentElement).css("top",Y+"px");$(_currentElement).css("left",X+"px")};$(document).bind("mousemove",function(e){if(_isMouseDown===true){updatePosition(e);if(typeof _dragCallbacks[_currentElement.id]===
"function")_dragCallbacks[_currentElement.id](e,_currentElement);return false}});$(document).bind("mouseup",function(e){_isMouseDown=false;return true})}};$.fn.ajaxScroller=function(url,data,options){options=$.extend({},options);if(this.length>0)this.each(function(index,domElement){$(this).html(t("dock.loading"));$(this).load(url,data,function(responseText,textStatus,XMLHttpRequest){if(textStatus==="success")$(this).customScroller(options);else alert(t("error"))})})};$(document).ready(function(){$(document).bind("mousedown",
function(e){_isOnFocus=null});$(document).bind("keydown keypress",function(e){if(!_isOnFocus)return;switch(e.which){case 38:_moveUp(_divs[_isOnFocus],1);break;case 40:_moveDown(_divs[_isOnFocus],-1);break;case 37:_moveLeft(_divs[_isOnFocus],1);break;case 39:_moveRight(_divs[_isOnFocus],-1);break;case 33:_moveUp(_divs[_isOnFocus],3);break;case 34:_moveDown(_divs[_isOnFocus],-3);break;case 36:_moveLeft(_divs[_isOnFocus],3);break;case 35:_moveRight(_divs[_isOnFocus],-3);break;default:return true;break}return false})})})(jQuery);jQuery.cookie=function(name,value,options){if(typeof value!="undefined"){options=options||{};if(value===null){value="";options.expires=-1}var expires="";if(options.expires&&(typeof options.expires=="number"||options.expires.toUTCString)){var date;if(typeof options.expires=="number"){date=new Date;date.setTime(date.getTime()+options.expires*24*60*60*1E3)}else date=options.expires;expires="; expires="+date.toUTCString()}var path=options.path?"; path="+options.path:"";var domain=options.domain?"; domain="+
options.domain:"";var secure=options.secure?"; secure":"";document.cookie=[name,"=",encodeURIComponent(value),expires,path,domain,secure].join("")}else{var cookieValue=null;if(document.cookie&&document.cookie!=""){var cookies=document.cookie.split(";");for(var 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}}}return cookieValue}};(function($){var PREFIX="data-",PATTERN=/^data\-(.*)$/;function dataset(name,value){if(value!==undefined)return this.attr(PREFIX+name,value);switch(typeof name){case "string":return this.attr(PREFIX+name);case "object":return set_items.call(this,name);case "undefined":return get_items.call(this);default:throw"dataset: invalid argument "+name;}}function get_items(){return this.foldAttr(function(index,attr,result){var match=PATTERN.exec(this.name);if(match)result[match[1]]=this.value})}function set_items(items){for(var key in items)this.attr(PREFIX+
key,items[key]);return this}function remove(name){if(typeof name=="string")return this.removeAttr(PREFIX+name);return remove_names(name)}function remove_names(obj){var idx,length=obj&&obj.length;if(length===undefined)for(idx in obj)this.removeAttr(PREFIX+idx);else for(idx=0;idx<length;idx++)this.removeAttr(PREFIX+obj[idx]);return this}$.fn.dataset=dataset;$.fn.removeDataset=remove_names})(jQuery);
(function($){function each_attr(proc){if(this.length>0)$.each(this[0].attributes,proc);return this}function fold_attr(proc,acc){return fold(this.length>0&&this[0].attributes,proc,acc)}function fold(object,proc,acc){var length=object&&object.length;if(acc===undefined)acc={};if(!object)return acc;if(length!==undefined)for(var i=0,value=object[i];i<length&&proc.call(value,i,value,acc)!==false;value=object[++i]);else for(var name in object)if(proc.call(object[name],name,object[name],acc)===false)break;
return acc}function fold_jquery(proc,acc){if(acc===undefined)acc=[];return fold(this,proc,acc)}$.fn.eachAttr=each_attr;$.fn.foldAttr=fold_attr;$.fn.fold=fold_jquery;$.fold=fold})(jQuery);(function($){$.nano=function(tmpl,data){return tmpl.replace(/\{([^{}]*)}/g,function(str,key){var keys=key.split("."),value=data[keys.shift()];$.each(keys,function(){value=value[this]});return value})}})(jQuery);(function($){$.compile_i18n_template=function(tmpl){return tmpl.replace(/\{([^{}]*)}/g,function(str,key){return t(key)})}})(jQuery);
(function($){$.render={item:function(item,tpl,modifier){var m=modifier||function(){};var copy=$.extend({},item);m.call(copy);return $.nano(tpl,copy)},collection:function(collection,tpl,modifier){var self=this;var output=[];$.each(collection,function(i,item){output.push(self.item(item,tpl,modifier))});return output.join("")}}})(jQuery);
(function($){$.extend($.render,{wrapped_collection:function(data){var type=data.type;var html;if(data.results.length>0)html=$.render.collection(data.results,$.templates[type]["item"],$.modifiers[type]);else html="no results";if($.templates[type]["wrapper"])html=$.render.item({query:data.query,page:data.page,inner_html:html},$.templates[type]["wrapper"]);return html},item_n_times:function(item,tpl,n){var i=1;var output=[];var modifier=function(){this.i=i};while(i<=n){output.push($.render.item(item,
tpl,modifier));i++}return output.join("")},in_groups_of:function(number,collection,tpl,slice_tpl,modifier){var output=[];$.each(in_groups_of(number,collection),function(i,slice){var slice_html=$.render.collection(slice,tpl,modifier);output.push($.render.item({inner_html:slice_html},slice_tpl))});return output.join("")}})})(jQuery);(function(window,undefined){"$:nomunge";var $=window.jQuery||window.Cowboy||(window.Cowboy={}),jq_throttle;$.throttle=jq_throttle=function(delay,no_trailing,callback,debounce_mode){var timeout_id,last_exec=0;if(typeof no_trailing!=="boolean"){debounce_mode=callback;callback=no_trailing;no_trailing=undefined}function wrapper(){var that=this,elapsed=+new Date-last_exec,args=arguments;function exec(){last_exec=+new Date;callback.apply(that,args)}function clear(){timeout_id=undefined}if(debounce_mode&&
!timeout_id)exec();timeout_id&&clearTimeout(timeout_id);if(debounce_mode===undefined&&elapsed>delay)exec();else if(no_trailing!==true)timeout_id=setTimeout(debounce_mode?clear:exec,debounce_mode===undefined?delay-elapsed:delay)}if($.guid)wrapper.guid=callback.guid=callback.guid||$.guid++;return wrapper};$.debounce=function(delay,at_begin,callback){return callback===undefined?jq_throttle(delay,at_begin,false):jq_throttle(delay,callback,at_begin!==false)}})(this);(function($){$.fn.tokenField=function(options){var settings={regex:/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i,delimiters:", ",max:0,nested:false,badToken:function(){$(this).val("")},tooMany:function(){$(this).val("")}};if(options)$.extend(settings,options);function console_log(text){try{console.log(text)}catch(e){}}function expandTokens(name,tokens){return $.map(tokens,function(v){return tokenHtml(name,v)}).join("")}function inputHtml(name){return"<div class='token-input'><input type='text' size='1'/><span class='token-input-sizer'>###</span></div>"}
function isDelimiter(ch){return String.fromCharCode(ch).match(RegExp("["+settings.delimiters+"]"))}function isToken(text){return text.match(settings.regex)}function observeTokenField(tokenField){tokenField.click(function(){$(".token-input",this).siblings(".selected-token").removeClass("selected-token");$(".token-input input",this).focus();return false});$(".token-input input",tokenField).keydown(function(e){if(e.which==9&&$(this).val()){$(this).blur();$(this).focus();return false}return true}).keypress(function(e){$(this).next(".token-input-sizer").html($(this).val()+
"###");if(e.which==13||isDelimiter(e.which)){$(this).blur();if(isDelimiter(e.which))$(this).focus();return false}return true}).keyup(function(){$(this).next(".token-input-sizer").html($(this).val()+"###");return true}).focus(function(){$(this).next(".token-input-sizer").html($(this).val()+"###");return true}).blur(function(e){if(!$(this).data("blur")){$(this).data("blur",true);if(settings.max==0||$(this).closest(".token-input").siblings(".token").length<settings.max)if(isToken($(this).val())){observeToken($(tokenHtml($(this).attr("name"),
$(this).val())).insertBefore($(this).closest(".token-input")));if(!settings.nested){var input=$(this).closest(".token-field").find("input:hidden");var values=input.val().split(",");values.splice(0,0,$(this).val());input.val(values.join(","))}$(this).val("")}else{if(settings.badToken){this.badToken=settings.badToken;this.badToken()}}else if(settings.tooMany){this.tooMany=settings.tooMany;this.tooMany()}$(this).removeData("blur")}return true});observeToken($(".token",tokenField))}function observeToken(token){token.click(function(){$(this).focus();
return false}).keydown(function(e){if($(this).hasClass("selected-token"))if(e.which==8){removeToken($(this));return false}return true}).blur(function(){$(this).removeClass("selected-token")}).focus(function(){$(this).siblings(".selected-token").removeClass("selected-token");$(this).addClass("selected-token")});$(".token-x",token).click(function(){$(this).closest(".token").siblings(".selected-token").removeClass("selected-token");removeToken($(this).closest(".token"));return false})}function parseTokens(text){text=
text.replace(/^\s*(.+)\s*$/,"$1");if(!text)return[];return $.map(text.split(","),function(v){if(isToken(v))return v;console_log("Warning: ignoring bad token - "+v);return null})}function removeToken(token){if(!settings.nested){var index=token.siblings(".token").andSelf().index(token);var input=token.closest(".token-field").find("input:hidden");var values=input.val().split(",");values.splice(index,1);input.val(values.join(","))}token.remove()}function tokenHtml(name,text){return"<a href='#' class='token'><span><span><span><span>"+
text+(settings.nested?"<input type='hidden' value='"+text+"' name='"+name+"'/>":"")+"<span href='#' class='token-x'>x</span></span></span></span></span></a>"}return this.each(function(){var id=$(this).attr("id");var name=$(this).attr("name");var klass=$(this).attr("class");var style="";var tokens=parseTokens($(this).val());if($(this).height()>0)style=style+"min-height: "+$(this).height()+"px; height: auto !important; height: "+$(this).height()+"px;";if($(this).width()>0)style=style+"width: "+$(this).width()+
"px;";if(settings.max>0&&tokens.length>settings.max){console_log("Warning: ignoring extra tokens after maximum of "+settings.max);tokens=tokens.slice(0,settings.max)}var field=$("<div></div>").attr({"class":klass,"id":id,"style":style}).addClass("token-field").append(expandTokens(name,tokens)).append(inputHtml(name)).append("<div style='clear:both'></div>").replaceAll(this);if(!settings.nested)field.prepend("<input type='hidden' value='"+tokens.join(",")+"' name='"+name+"'/>");observeTokenField(field)})}})(jQuery);jQuery.fn.extend({everyTime:function(interval,label,fn,times){return this.each(function(){jQuery.timer.add(this,interval,label,fn,times)})},oneTime:function(interval,label,fn){return this.each(function(){jQuery.timer.add(this,interval,label,fn,1)})},stopTime:function(label,fn){return this.each(function(){jQuery.timer.remove(this,label,fn)})}});
jQuery.extend({timer:{global:[],guid:1,dataKey:"jQuery.timer",regex:/^([0-9]+(?:\.[0-9]*)?)\s*(.*s)?$/,powers:{"ms":1,"cs":10,"ds":100,"s":1E3,"das":1E4,"hs":1E5,"ks":1E6},timeParse:function(value){if(value==undefined||value==null)return null;var result=this.regex.exec(jQuery.trim(value.toString()));if(result[2]){var num=parseFloat(result[1]);var mult=this.powers[result[2]]||1;return num*mult}else return value},add:function(element,interval,label,fn,times){var counter=0;if(jQuery.isFunction(label)){if(!times)times=
fn;fn=label;label=interval}interval=jQuery.timer.timeParse(interval);if(typeof interval!="number"||isNaN(interval)||interval<0)return;if(typeof times!="number"||isNaN(times)||times<0)times=0;times=times||0;var timers=jQuery.data(element,this.dataKey)||jQuery.data(element,this.dataKey,{});if(!timers[label])timers[label]={};fn.timerID=fn.timerID||this.guid++;var handler=function(){if(++counter>times&&times!==0||fn.call(element,counter)===false)jQuery.timer.remove(element,label,fn)};handler.timerID=
fn.timerID;if(!timers[label][fn.timerID])timers[label][fn.timerID]=window.setInterval(handler,interval);this.global.push(element)},remove:function(element,label,fn){var timers=jQuery.data(element,this.dataKey),ret;if(timers){if(!label)for(label in timers)this.remove(element,label,fn);else if(timers[label]){if(fn){if(fn.timerID){window.clearInterval(timers[label][fn.timerID]);delete timers[label][fn.timerID]}}else for(var fn in timers[label]){window.clearInterval(timers[label][fn]);delete timers[label][fn]}for(ret in timers[label])break;
if(!ret){ret=null;delete timers[label]}}for(ret in timers)break;if(!ret)jQuery.removeData(element,this.dataKey)}}}});jQuery(window).bind("unload",function(){jQuery.each(jQuery.timer.global,function(index,item){jQuery.timer.remove(item)})});(function($){$.uniform={options:{selectClass:"selector",radioClass:"radio",checkboxClass:"checker",fileClass:"uploader",filenameClass:"filename",fileBtnClass:"action",fileDefaultText:"No file selected",fileBtnText:"Choose File",checkedClass:"checked",focusClass:"focus",disabledClass:"disabled",activeClass:"active",hoverClass:"hover",useID:true,idPrefix:"uniform",resetSelector:false},elements:[]};if($.browser.msie&&$.browser.version<7)$.support.selectOpacity=false;else $.support.selectOpacity=true;
$.fn.uniform=function(options){options=$.extend($.uniform.options,options);var el=this;if(options.resetSelector!=false)$(options.resetSelector).mouseup(function(){function resetThis(){$.uniform.update(el)}setTimeout(resetThis,10)});function doSelect(elem){var divTag=$("<div />"),spanTag=$("<span />");divTag.addClass(options.selectClass);if(options.useID)divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));var selected=elem.find(":selected:first");if(selected.length==0)selected=elem.find("option:first");
spanTag.html(selected.text());elem.css("opacity",0);elem.wrap(divTag);elem.before(spanTag);divTag=elem.parent("div");spanTag=elem.siblings("span");elem.change(function(){spanTag.text(elem.find(":selected").text());divTag.removeClass(options.activeClass)}).focus(function(){divTag.addClass(options.focusClass)}).blur(function(){divTag.removeClass(options.focusClass);divTag.removeClass(options.activeClass)}).mousedown(function(){divTag.addClass(options.activeClass)}).mouseup(function(){divTag.removeClass(options.activeClass)}).click(function(){divTag.removeClass(options.activeClass)}).hover(function(){divTag.addClass(options.hoverClass)},
function(){divTag.removeClass(options.hoverClass)}).keyup(function(){spanTag.text(elem.find(":selected").text())});if($(elem).attr("disabled"))divTag.addClass(options.disabledClass);$.uniform.noSelect(spanTag);storeElement(elem)}function doCheckbox(elem){var divTag=$("<div />"),spanTag=$("<span />");divTag.addClass(options.checkboxClass);if(options.useID)divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));$(elem).wrap(divTag);$(elem).wrap(spanTag);spanTag=elem.parent();divTag=spanTag.parent();
$(elem).css("opacity",0).focus(function(){divTag.addClass(options.focusClass)}).blur(function(){divTag.removeClass(options.focusClass)}).click(function(){if(!$(elem).attr("checked"))spanTag.removeClass(options.checkedClass);else spanTag.addClass(options.checkedClass)}).mousedown(function(){divTag.addClass(options.activeClass)}).mouseup(function(){divTag.removeClass(options.activeClass)}).hover(function(){divTag.addClass(options.hoverClass)},function(){divTag.removeClass(options.hoverClass)});if($(elem).attr("checked"))spanTag.addClass(options.checkedClass);
if($(elem).attr("disabled"))divTag.addClass(options.disabledClass);storeElement(elem)}function doRadio(elem){var divTag=$("<div />"),spanTag=$("<span />");divTag.addClass(options.radioClass);if(options.useID)divTag.attr("id",options.idPrefix+"-"+elem.attr("id"));$(elem).wrap(divTag);$(elem).wrap(spanTag);spanTag=elem.parent();divTag=spanTag.parent();$(elem).css("opacity",0).focus(function(){divTag.addClass(options.focusClass)}).blur(function(){divTag.removeClass(options.focusClass)}).click(function(){if(!$(elem).attr("checked"))spanTag.removeClass(options.checkedClass);
else{$("."+options.radioClass+" span."+options.checkedClass+":has([name='"+$(elem).attr("name")+"'])").removeClass(options.checkedClass);spanTag.addClass(options.checkedClass)}}).mousedown(function(){if(!$(elem).is(":disabled"))divTag.addClass(options.activeClass)}).mouseup(function(){divTag.removeClass(options.activeClass)}).hover(function(){divTag.addClass(options.hoverClass)},function(){divTag.removeClass(options.hoverClass)});if($(elem).attr("checked"))spanTag.addClass(options.checkedClass);if($(elem).attr("disabled"))divTag.addClass(options.disabledClass);
storeElement(elem)}function doFile(elem){$el=$(elem);var divTag=$("<div />"),filenameTag=$("<span>"+options.fileDefaultText+"</span>"),btnTag=$("<span>"+options.fileBtnText+"</span>");divTag.addClass(options.fileClass);filenameTag.addClass(options.filenameClass);btnTag.addClass(options.fileBtnClass);if(options.useID)divTag.attr("id",options.idPrefix+"-"+$el.attr("id"));$el.wrap(divTag);$el.after(btnTag);$el.after(filenameTag);divTag=$el.closest("div");filenameTag=$el.siblings("."+options.filenameClass);
btnTag=$el.siblings("."+options.fileBtnClass);if(!$el.attr("size")){var divWidth=divTag.width();$el.attr("size",divWidth/10)}$el.css("opacity",0).focus(function(){divTag.addClass(options.focusClass)}).blur(function(){divTag.removeClass(options.focusClass)}).change(function(){var filename=$(this).val();filename=filename.split(/[\/\\]+/);filename=filename[filename.length-1];filenameTag.text(filename)}).mousedown(function(){if(!$(elem).is(":disabled"))divTag.addClass(options.activeClass)}).mouseup(function(){divTag.removeClass(options.activeClass)}).hover(function(){divTag.addClass(options.hoverClass)},
function(){divTag.removeClass(options.hoverClass)});if($el.attr("disabled"))divTag.addClass(options.disabledClass);$.uniform.noSelect(filenameTag);$.uniform.noSelect(btnTag);storeElement(elem)}function storeElement(elem){elem=$(elem).get();if(elem.length>1)$.each(elem,function(i,val){$.uniform.elements.push(val)});else $.uniform.elements.push(elem)}$.uniform.noSelect=function(elem){function f(){return false}$(elem).each(function(){this.onselectstart=this.ondragstart=f;$(this).mousedown(f).css({MozUserSelect:"none"})})};
$.uniform.update=function(elem){if(elem==undefined)elem=$($.uniform.elements);elem=$(elem);elem.each(function(){$e=$(this);if($e.is("select")){spanTag=$e.siblings("span");divTag=$e.parent("div");divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);spanTag.html($e.find(":selected").text());if($e.is(":disabled"))divTag.addClass(options.disabledClass);else divTag.removeClass(options.disabledClass)}else if($e.is(":checkbox")){spanTag=$e.closest("span");divTag=$e.closest("div");
divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);spanTag.removeClass(options.checkedClass);if($e.is(":checked"))spanTag.addClass(options.checkedClass);if($e.is(":disabled"))divTag.addClass(options.disabledClass);else divTag.removeClass(options.disabledClass)}else if($e.is(":radio")){spanTag=$e.closest("span");divTag=$e.closest("div");divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);spanTag.removeClass(options.checkedClass);
if($e.is(":checked"))spanTag.addClass(options.checkedClass);if($e.is(":disabled"))divTag.addClass(options.disabledClass);else divTag.removeClass(options.disabledClass)}else if($e.is(":file")){divTag=$e.parent("div");filenameTag=$e.siblings(options.filenameClass);btnTag=$e.siblings(options.fileBtnClass);divTag.removeClass(options.hoverClass+" "+options.focusClass+" "+options.activeClass);filenameTag.text($e.val());if($e.is(":disabled"))divTag.addClass(options.disabledClass);else divTag.removeClass(options.disabledClass)}})};
return this.each(function(){if($.support.selectOpacity){var elem=$(this);if(elem.is("select")){if(elem.attr("multiple")!=true)doSelect(elem)}else if(elem.is(":checkbox"))doCheckbox(elem);else if(elem.is(":radio"))doRadio(elem);else if(elem.is(":file"))doFile(elem)}})}})(jQuery);(function($){$.extend($.fn,{validate:function(options){if(!this.length){options&&options.debug&&window.console&&console.warn("nothing selected, can't validate, returning nothing");return}var validator=$.data(this[0],"validator");if(validator)return validator;validator=new $.validator(options,this[0]);$.data(this[0],"validator",validator);if(validator.settings.onsubmit){this.find("input, button").filter(".cancel").click(function(){validator.cancelSubmit=true});if(validator.settings.submitHandler)this.find("input, button").filter(":submit").click(function(){validator.submitButton=
this});this.submit(function(event){if(validator.settings.debug)event.preventDefault();function handle(){if(validator.settings.submitHandler){if(validator.submitButton)var hidden=$("<input type='hidden'/>").attr("name",validator.submitButton.name).val(validator.submitButton.value).appendTo(validator.currentForm);validator.settings.submitHandler.call(validator,validator.currentForm);if(validator.submitButton)hidden.remove();return false}return true}if(validator.cancelSubmit){validator.cancelSubmit=
false;return handle()}if(validator.form()){if(validator.pendingRequest){validator.formSubmitted=true;return false}return handle()}else{validator.focusInvalid();return false}})}return validator},valid:function(){if($(this[0]).is("form"))return this.validate().form();else{var valid=true;var validator=$(this[0].form).validate();this.each(function(){valid&=validator.element(this)});return valid}},removeAttrs:function(attributes){var result={},$element=this;$.each(attributes.split(/\s/),function(index,
value){result[value]=$element.attr(value);$element.removeAttr(value)});return result},rules:function(command,argument){var element=this[0];if(command){var settings=$.data(element.form,"validator").settings;var staticRules=settings.rules;var existingRules=$.validator.staticRules(element);switch(command){case "add":$.extend(existingRules,$.validator.normalizeRule(argument));staticRules[element.name]=existingRules;if(argument.messages)settings.messages[element.name]=$.extend(settings.messages[element.name],
argument.messages);break;case "remove":if(!argument){delete staticRules[element.name];return existingRules}var filtered={};$.each(argument.split(/\s/),function(index,method){filtered[method]=existingRules[method];delete existingRules[method]});return filtered}}var data=$.validator.normalizeRules($.extend({},$.validator.metadataRules(element),$.validator.classRules(element),$.validator.attributeRules(element),$.validator.staticRules(element)),element);if(data.required){var param=data.required;delete data.required;
data=$.extend({required:param},data)}return data}});$.extend($.expr[":"],{blank:function(a){return!$.trim(""+a.value)},filled:function(a){return!!$.trim(""+a.value)},unchecked:function(a){return!a.checked}});$.validator=function(options,form){this.settings=$.extend(true,{},$.validator.defaults,options);this.currentForm=form;this.init()};$.validator.format=function(source,params){if(arguments.length==1)return function(){var args=$.makeArray(arguments);args.unshift(source);return $.validator.format.apply(this,
args)};if(arguments.length>2&&params.constructor!=Array)params=$.makeArray(arguments).slice(1);if(params.constructor!=Array)params=[params];$.each(params,function(i,n){source=source.replace(new RegExp("\\{"+i+"\\}","g"),n)});return source};$.extend($.validator,{defaults:{messages:{},groups:{},rules:{},errorClass:"error",validClass:"valid",errorElement:"label",focusInvalid:true,errorContainer:$([]),errorLabelContainer:$([]),onsubmit:true,ignore:[],ignoreTitle:false,onfocusin:function(element){this.lastActive=
element;if(this.settings.focusCleanup&&!this.blockFocusCleanup){this.settings.unhighlight&&this.settings.unhighlight.call(this,element,this.settings.errorClass,this.settings.validClass);this.errorsFor(element).hide()}},onfocusout:function(element){if(!this.checkable(element)&&(element.name in this.submitted||!this.optional(element)))this.element(element)},onkeyup:function(element){if(element.name in this.submitted||element==this.lastElement)this.element(element)},onclick:function(element){if(element.name in
this.submitted)this.element(element);else if(element.parentNode.name in this.submitted)this.element(element.parentNode)},highlight:function(element,errorClass,validClass){$(element).addClass(errorClass).removeClass(validClass)},unhighlight:function(element,errorClass,validClass){$(element).removeClass(errorClass).addClass(validClass)}},setDefaults:function(settings){$.extend($.validator.defaults,settings)},messages:{required:"This field is required.",remote:"Please fix this field.",email:"Please enter a valid email address.",
url:"Please enter a valid URL.",date:"Please enter a valid date.",dateISO:"Please enter a valid date (ISO).",number:"Please enter a valid number.",digits:"Please enter only digits.",creditcard:"Please enter a valid credit card number.",equalTo:"Please enter the same value again.",accept:"Please enter a value with a valid extension.",maxlength:$.validator.format("Please enter no more than {0} characters."),minlength:$.validator.format("Please enter at least {0} characters."),rangelength:$.validator.format("Please enter a value between {0} and {1} characters long."),
range:$.validator.format("Please enter a value between {0} and {1}."),max:$.validator.format("Please enter a value less than or equal to {0}."),min:$.validator.format("Please enter a value greater than or equal to {0}.")},autoCreateRanges:false,prototype:{init:function(){this.labelContainer=$(this.settings.errorLabelContainer);this.errorContext=this.labelContainer.length&&this.labelContainer||$(this.currentForm);this.containers=$(this.settings.errorContainer).add(this.settings.errorLabelContainer);
this.submitted={};this.valueCache={};this.pendingRequest=0;this.pending={};this.invalid={};this.reset();var groups=this.groups={};$.each(this.settings.groups,function(key,value){$.each(value.split(/\s/),function(index,name){groups[name]=key})});var rules=this.settings.rules;$.each(rules,function(key,value){rules[key]=$.validator.normalizeRule(value)});function delegate(event){var validator=$.data(this[0].form,"validator"),eventType="on"+event.type.replace(/^validate/,"");validator.settings[eventType]&&
validator.settings[eventType].call(validator,this[0])}$(this.currentForm).validateDelegate(":text, :password, :file, select, textarea","focusin focusout keyup",delegate).validateDelegate(":radio, :checkbox, select, option","click",delegate);if(this.settings.invalidHandler)$(this.currentForm).bind("invalid-form.validate",this.settings.invalidHandler)},form:function(){this.checkForm();$.extend(this.submitted,this.errorMap);this.invalid=$.extend({},this.errorMap);if(!this.valid())$(this.currentForm).triggerHandler("invalid-form",
[this]);this.showErrors();return this.valid()},checkForm:function(){this.prepareForm();for(var i=0,elements=this.currentElements=this.elements();elements[i];i++)this.check(elements[i]);return this.valid()},element:function(element){element=this.clean(element);this.lastElement=element;this.prepareElement(element);this.currentElements=$(element);var result=this.check(element);if(result)delete this.invalid[element.name];else this.invalid[element.name]=true;if(!this.numberOfInvalids())this.toHide=this.toHide.add(this.containers);
this.showErrors();return result},showErrors:function(errors){if(errors){$.extend(this.errorMap,errors);this.errorList=[];for(var name in errors)this.errorList.push({message:errors[name],element:this.findByName(name)[0]});this.successList=$.grep(this.successList,function(element){return!(element.name in errors)})}this.settings.showErrors?this.settings.showErrors.call(this,this.errorMap,this.errorList):this.defaultShowErrors()},resetForm:function(){if($.fn.resetForm)$(this.currentForm).resetForm();
this.submitted={};this.prepareForm();this.hideErrors();this.elements().removeClass(this.settings.errorClass)},numberOfInvalids:function(){return this.objectLength(this.invalid)},objectLength:function(obj){var count=0;for(var i in obj)count++;return count},hideErrors:function(){this.addWrapper(this.toHide).hide()},valid:function(){return this.size()==0},size:function(){return this.errorList.length},focusInvalid:function(){if(this.settings.focusInvalid)try{$(this.findLastActive()||this.errorList.length&&
this.errorList[0].element||[]).filter(":visible").focus().trigger("focusin")}catch(e){}},findLastActive:function(){var lastActive=this.lastActive;return lastActive&&$.grep(this.errorList,function(n){return n.element.name==lastActive.name}).length==1&&lastActive},elements:function(){var validator=this,rulesCache={};return $([]).add(this.currentForm.elements).filter(":input").not(":submit, :reset, :image, [disabled]").not(this.settings.ignore).filter(function(){!this.name&&validator.settings.debug&&
window.console&&console.error("%o has no name assigned",this);if(this.name in rulesCache||!validator.objectLength($(this).rules()))return false;rulesCache[this.name]=true;return true})},clean:function(selector){return $(selector)[0]},errors:function(){return $(this.settings.errorElement+"."+this.settings.errorClass,this.errorContext)},reset:function(){this.successList=[];this.errorList=[];this.errorMap={};this.toShow=$([]);this.toHide=$([]);this.currentElements=$([])},prepareForm:function(){this.reset();
this.toHide=this.errors().add(this.containers)},prepareElement:function(element){this.reset();this.toHide=this.errorsFor(element)},check:function(element){element=this.clean(element);if(this.checkable(element))element=this.findByName(element.name)[0];var rules=$(element).rules();var dependencyMismatch=false;for(method in rules){var rule={method:method,parameters:rules[method]};try{var result=$.validator.methods[method].call(this,element.value.replace(/\r/g,""),element,rule.parameters);if(result==
"dependency-mismatch"){dependencyMismatch=true;continue}dependencyMismatch=false;if(result=="pending"){this.toHide=this.toHide.not(this.errorsFor(element));return}if(!result){this.formatAndAdd(element,rule);return false}}catch(e){this.settings.debug&&window.console&&console.log("exception occured when checking element "+element.id+", check the '"+rule.method+"' method",e);throw e;}}if(dependencyMismatch)return;if(this.objectLength(rules))this.successList.push(element);return true},customMetaMessage:function(element,
method){if(!$.metadata)return;var meta=this.settings.meta?$(element).metadata()[this.settings.meta]:$(element).metadata();return meta&&meta.messages&&meta.messages[method]},customMessage:function(name,method){var m=this.settings.messages[name];return m&&(m.constructor==String?m:m[method])},findDefined:function(){for(var i=0;i<arguments.length;i++)if(arguments[i]!==undefined)return arguments[i];return undefined},defaultMessage:function(element,method){return this.findDefined(this.customMessage(element.name,
method),this.customMetaMessage(element,method),!this.settings.ignoreTitle&&element.title||undefined,$.validator.messages[method],"<strong>Warning: No message defined for "+element.name+"</strong>")},formatAndAdd:function(element,rule){var message=this.defaultMessage(element,rule.method),theregex=/\$?\{(\d+)\}/g;if(typeof message=="function")message=message.call(this,rule.parameters,element);else if(theregex.test(message))message=jQuery.format(message.replace(theregex,"{$1}"),rule.parameters);this.errorList.push({message:message,
element:element});this.errorMap[element.name]=message;this.submitted[element.name]=message},addWrapper:function(toToggle){if(this.settings.wrapper)toToggle=toToggle.add(toToggle.parent(this.settings.wrapper));return toToggle},defaultShowErrors:function(){for(var i=0;this.errorList[i];i++){var error=this.errorList[i];this.settings.highlight&&this.settings.highlight.call(this,error.element,this.settings.errorClass,this.settings.validClass);this.showLabel(error.element,error.message)}if(this.errorList.length)this.toShow=
this.toShow.add(this.containers);if(this.settings.success)for(var i=0;this.successList[i];i++)this.showLabel(this.successList[i]);if(this.settings.unhighlight)for(var i=0,elements=this.validElements();elements[i];i++)this.settings.unhighlight.call(this,elements[i],this.settings.errorClass,this.settings.validClass);this.toHide=this.toHide.not(this.toShow);this.hideErrors();this.addWrapper(this.toShow).show()},validElements:function(){return this.currentElements.not(this.invalidElements())},invalidElements:function(){return $(this.errorList).map(function(){return this.element})},
showLabel:function(element,message){var label=this.errorsFor(element);if(label.length){label.removeClass().addClass(this.settings.errorClass);label.attr("generated")&&label.html(message)}else{label=$("<"+this.settings.errorElement+"/>").attr({"for":this.idOrName(element),generated:true}).addClass(this.settings.errorClass).html(message||"");if(this.settings.wrapper)label=label.hide().show().wrap("<"+this.settings.wrapper+"/>").parent();if(!this.labelContainer.append(label).length)this.settings.errorPlacement?
this.settings.errorPlacement(label,$(element)):label.insertAfter(element)}if(!message&&this.settings.success){label.text("");typeof this.settings.success=="string"?label.addClass(this.settings.success):this.settings.success(label)}this.toShow=this.toShow.add(label)},errorsFor:function(element){var name=this.idOrName(element);return this.errors().filter(function(){return $(this).attr("for")==name})},idOrName:function(element){return this.groups[element.name]||(this.checkable(element)?element.name:
element.id||element.name)},checkable:function(element){return/radio|checkbox/i.test(element.type)},findByName:function(name){var form=this.currentForm;return $(document.getElementsByName(name)).map(function(index,element){return element.form==form&&element.name==name&&element||null})},getLength:function(value,element){switch(element.nodeName.toLowerCase()){case "select":return $("option:selected",element).length;case "input":if(this.checkable(element))return this.findByName(element.name).filter(":checked").length}return value.length},
depend:function(param,element){return this.dependTypes[typeof param]?this.dependTypes[typeof param](param,element):true},dependTypes:{"boolean":function(param,element){return param},"string":function(param,element){return!!$(param,element.form).length},"function":function(param,element){return param(element)}},optional:function(element){return!$.validator.methods.required.call(this,$.trim(element.value),element)&&"dependency-mismatch"},startRequest:function(element){if(!this.pending[element.name]){this.pendingRequest++;
this.pending[element.name]=true}},stopRequest:function(element,valid){this.pendingRequest--;if(this.pendingRequest<0)this.pendingRequest=0;delete this.pending[element.name];if(valid&&this.pendingRequest==0&&this.formSubmitted&&this.form()){$(this.currentForm).submit();this.formSubmitted=false}else if(!valid&&this.pendingRequest==0&&this.formSubmitted){$(this.currentForm).triggerHandler("invalid-form",[this]);this.formSubmitted=false}},previousValue:function(element){return $.data(element,"previousValue")||
$.data(element,"previousValue",{old:null,valid:true,message:this.defaultMessage(element,"remote")})}},classRuleSettings:{required:{required:true},email:{email:true},url:{url:true},date:{date:true},dateISO:{dateISO:true},dateDE:{dateDE:true},number:{number:true},numberDE:{numberDE:true},digits:{digits:true},creditcard:{creditcard:true}},addClassRules:function(className,rules){className.constructor==String?this.classRuleSettings[className]=rules:$.extend(this.classRuleSettings,className)},classRules:function(element){var rules=
{};var classes=$(element).attr("class");classes&&$.each(classes.split(" "),function(){if(this in $.validator.classRuleSettings)$.extend(rules,$.validator.classRuleSettings[this])});return rules},attributeRules:function(element){var rules={};var $element=$(element);for(method in $.validator.methods){var value=$element.attr(method);if(value)rules[method]=value}if(rules.maxlength&&/-1|2147483647|524288/.test(rules.maxlength))delete rules.maxlength;return rules},metadataRules:function(element){if(!$.metadata)return{};
var meta=$.data(element.form,"validator").settings.meta;return meta?$(element).metadata()[meta]:$(element).metadata()},staticRules:function(element){var rules={};var validator=$.data(element.form,"validator");if(validator.settings.rules)rules=$.validator.normalizeRule(validator.settings.rules[element.name])||{};return rules},normalizeRules:function(rules,element){$.each(rules,function(prop,val){if(val===false){delete rules[prop];return}if(val.param||val.depends){var keepRule=true;switch(typeof val.depends){case "string":keepRule=
!!$(val.depends,element.form).length;break;case "function":keepRule=val.depends.call(element,element);break}if(keepRule)rules[prop]=val.param!==undefined?val.param:true;else delete rules[prop]}});$.each(rules,function(rule,parameter){rules[rule]=$.isFunction(parameter)?parameter(element):parameter});$.each(["minlength","maxlength","min","max"],function(){if(rules[this])rules[this]=Number(rules[this])});$.each(["rangelength","range"],function(){if(rules[this])rules[this]=[Number(rules[this][0]),Number(rules[this][1])]});
if($.validator.autoCreateRanges){if(rules.min&&rules.max){rules.range=[rules.min,rules.max];delete rules.min;delete rules.max}if(rules.minlength&&rules.maxlength){rules.rangelength=[rules.minlength,rules.maxlength];delete rules.minlength;delete rules.maxlength}}if(rules.messages)delete rules.messages;return rules},normalizeRule:function(data){if(typeof data=="string"){var transformed={};$.each(data.split(/\s/),function(){transformed[this]=true});data=transformed}return data},addMethod:function(name,
method,message){$.validator.methods[name]=method;$.validator.messages[name]=message!=undefined?message:$.validator.messages[name];if(method.length<3)$.validator.addClassRules(name,$.validator.normalizeRule(name))},methods:{required:function(value,element,param){if(!this.depend(param,element))return"dependency-mismatch";switch(element.nodeName.toLowerCase()){case "select":var val=$(element).val();return val&&val.length>0;case "input":if(this.checkable(element))return this.getLength(value,element)>
0;default:return $.trim(value).length>0}},remote:function(value,element,param){if(this.optional(element))return"dependency-mismatch";var previous=this.previousValue(element);if(!this.settings.messages[element.name])this.settings.messages[element.name]={};previous.originalMessage=this.settings.messages[element.name].remote;this.settings.messages[element.name].remote=previous.message;param=typeof param=="string"&&{url:param}||param;if(previous.old!==value){previous.old=value;var validator=this;this.startRequest(element);
var data={};data[element.name]=value;$.ajax($.extend(true,{url:param,mode:"abort",port:"validate"+element.name,dataType:"json",data:data,success:function(response){validator.settings.messages[element.name].remote=previous.originalMessage;var valid=response===true;if(valid){var submitted=validator.formSubmitted;validator.prepareElement(element);validator.formSubmitted=submitted;validator.successList.push(element);validator.showErrors()}else{var errors={};var message=previous.message=response||validator.defaultMessage(element,
"remote");errors[element.name]=$.isFunction(message)?message(value):message;validator.showErrors(errors)}previous.valid=valid;validator.stopRequest(element,valid)}},param));return"pending"}else if(this.pending[element.name])return"pending";return previous.valid},minlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)>=param},maxlength:function(value,element,param){return this.optional(element)||this.getLength($.trim(value),element)<=param},rangelength:function(value,
element,param){var length=this.getLength($.trim(value),element);return this.optional(element)||length>=param[0]&&length<=param[1]},min:function(value,element,param){return this.optional(element)||value>=param},max:function(value,element,param){return this.optional(element)||value<=param},range:function(value,element,param){return this.optional(element)||value>=param[0]&&value<=param[1]},email:function(value,element){return this.optional(element)||/^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value)},
url:function(value,element){return this.optional(element)||/^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value)},
date:function(value,element){return this.optional(element)||!/Invalid|NaN/.test(new Date(value))},dateISO:function(value,element){return this.optional(element)||/^\d{4}[\/-]\d{1,2}[\/-]\d{1,2}$/.test(value)},number:function(value,element){return this.optional(element)||/^-?(?:\d+|\d{1,3}(?:,\d{3})+)(?:\.\d+)?$/.test(value)},digits:function(value,element){return this.optional(element)||/^\d+$/.test(value)},creditcard:function(value,element){if(this.optional(element))return"dependency-mismatch";if(/[^0-9-]+/.test(value))return false;
var nCheck=0,nDigit=0,bEven=false;value=value.replace(/\D/g,"");for(var n=value.length-1;n>=0;n--){var cDigit=value.charAt(n);var nDigit=parseInt(cDigit,10);if(bEven)if((nDigit*=2)>9)nDigit-=9;nCheck+=nDigit;bEven=!bEven}return nCheck%10==0},accept:function(value,element,param){param=typeof param=="string"?param.replace(/,/g,"|"):"png|jpe?g|gif";return this.optional(element)||value.match(new RegExp(".("+param+")$","i"))},equalTo:function(value,element,param){var target=$(param).unbind(".validate-equalTo").bind("blur.validate-equalTo",
function(){$(element).valid()});return value==target.val()}}});$.format=$.validator.format})(jQuery);(function($){var ajax=$.ajax;var pendingRequests={};$.ajax=function(settings){settings=$.extend(settings,$.extend({},$.ajaxSettings,settings));var port=settings.port;if(settings.mode=="abort"){if(pendingRequests[port])pendingRequests[port].abort();return pendingRequests[port]=ajax.apply(this,arguments)}return ajax.apply(this,arguments)}})(jQuery);
(function($){if(!jQuery.event.special.focusin&&!jQuery.event.special.focusout&&document.addEventListener)$.each({focus:"focusin",blur:"focusout"},function(original,fix){$.event.special[fix]={setup:function(){this.addEventListener(original,handler,true)},teardown:function(){this.removeEventListener(original,handler,true)},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments)}};function handler(e){e=$.event.fix(e);e.type=fix;return $.event.handle.call(this,
e)}});$.extend($.fn,{validateDelegate:function(delegate,type,handler){return this.bind(type,function(event){var target=$(event.target);if(target.is(delegate))return handler.apply(target,arguments)})}})})(jQuery);(function($,window){var Sammy,PATH_REPLACER="([^/]+)",PATH_NAME_MATCHER=/:([\w\d]+)/g,QUERY_STRING_MATCHER=/\?([^#]*)$/,_makeArray=function(nonarray){return Array.prototype.slice.call(nonarray)},_isFunction=function(obj){return Object.prototype.toString.call(obj)==="[object Function]"},_isArray=function(obj){return Object.prototype.toString.call(obj)==="[object Array]"},_decode=decodeURIComponent,_escapeHTML=function(s){return s.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")},_routeWrapper=
function(verb){return function(path,callback){return this.route.apply(this,[verb,path,callback])}},_template_cache={},loggers=[];Sammy=function(){var args=_makeArray(arguments),app,selector;Sammy.apps=Sammy.apps||{};if(args.length===0||args[0]&&_isFunction(args[0]))return Sammy.apply(Sammy,["body"].concat(args));else if(typeof(selector=args.shift())=="string"){app=Sammy.apps[selector]||new Sammy.Application;app.element_selector=selector;if(args.length>0)$.each(args,function(i,plugin){app.use(plugin)});
if(app.element_selector!=selector)delete Sammy.apps[selector];Sammy.apps[app.element_selector]=app;return app}};Sammy.VERSION="0.6.2";Sammy.addLogger=function(logger){loggers.push(logger)};Sammy.log=function(){var args=_makeArray(arguments);args.unshift("["+Date()+"]");$.each(loggers,function(i,logger){logger.apply(Sammy,args)})};if(typeof window.console!="undefined")if(_isFunction(console.log.apply))Sammy.addLogger(function(){window.console.log.apply(console,arguments)});else Sammy.addLogger(function(){window.console.log(arguments)});
else if(typeof console!="undefined")Sammy.addLogger(function(){console.log.apply(console,arguments)});$.extend(Sammy,{makeArray:_makeArray,isFunction:_isFunction,isArray:_isArray});Sammy.Object=function(obj){return $.extend(this,obj||{})};$.extend(Sammy.Object.prototype,{escapeHTML:_escapeHTML,h:_escapeHTML,toHash:function(){var json={};$.each(this,function(k,v){if(!_isFunction(v))json[k]=v});return json},toHTML:function(){var display="";$.each(this,function(k,v){if(!_isFunction(v))display+="<strong>"+
k+"</strong> "+v+"<br />"});return display},keys:function(attributes_only){var keys=[];for(var property in this)if(!_isFunction(this[property])||!attributes_only)keys.push(property);return keys},has:function(key){return this[key]&&$.trim(this[key].toString())!=""},join:function(){var args=_makeArray(arguments);var delimiter=args.shift();return args.join(delimiter)},log:function(){Sammy.log.apply(Sammy,arguments)},toString:function(include_functions){var s=[];$.each(this,function(k,v){if(!_isFunction(v)||
include_functions)s.push('"'+k+'": '+v.toString())});return"Sammy.Object: {"+s.join(",")+"}"}});Sammy.HashLocationProxy=function(app,run_interval_every){this.app=app;this.is_native=false;this._startPolling(run_interval_every)};Sammy.HashLocationProxy.prototype={bind:function(){var proxy=this,app=this.app;$(window).bind("hashchange."+this.app.eventNamespace(),function(e,non_native){if(proxy.is_native===false&&!non_native){Sammy.log("native hash change exists, using");proxy.is_native=true;window.clearInterval(Sammy.HashLocationProxy._interval)}app.trigger("location-changed")});
if(!Sammy.HashLocationProxy._bindings)Sammy.HashLocationProxy._bindings=0;Sammy.HashLocationProxy._bindings++},unbind:function(){$(window).unbind("hashchange."+this.app.eventNamespace());Sammy.HashLocationProxy._bindings--;if(Sammy.HashLocationProxy._bindings<=0)window.clearInterval(Sammy.HashLocationProxy._interval)},getLocation:function(){var matches=window.location.toString().match(/^[^#]*(#.+)$/);return matches?matches[1]:""},setLocation:function(new_location){return window.location=new_location},
_startPolling:function(every){var proxy=this;if(!Sammy.HashLocationProxy._interval){if(!every)every=10;var hashCheck=function(){var current_location=proxy.getLocation();if(!Sammy.HashLocationProxy._last_location||current_location!=Sammy.HashLocationProxy._last_location)window.setTimeout(function(){$(window).trigger("hashchange",[true])},13);Sammy.HashLocationProxy._last_location=current_location};hashCheck();Sammy.HashLocationProxy._interval=window.setInterval(hashCheck,every)}}};Sammy.Application=
function(app_function){var app=this;this.routes={};this.listeners=new Sammy.Object({});this.arounds=[];this.befores=[];this.namespace=(new Date).getTime()+"-"+parseInt(Math.random()*1E3,10);this.context_prototype=function(){Sammy.EventContext.apply(this,arguments)};this.context_prototype.prototype=new Sammy.EventContext;if(_isFunction(app_function))app_function.apply(this,[this]);if(!this._location_proxy)this.setLocationProxy(new Sammy.HashLocationProxy(this,this.run_interval_every));if(this.debug)this.bindToAllEvents(function(e,
data){app.log(app.toString(),e.cleaned_type,data||{})})};Sammy.Application.prototype=$.extend({},Sammy.Object.prototype,{ROUTE_VERBS:["get","post","put","delete"],APP_EVENTS:["run","unload","lookup-route","run-route","route-found","event-context-before","event-context-after","changed","error","check-form-submission","redirect","location-changed"],_last_route:null,_location_proxy:null,_running:false,element_selector:"body",debug:false,raise_errors:false,run_interval_every:50,template_engine:null,toString:function(){return"Sammy.Application:"+
this.element_selector},$element:function(){return $(this.element_selector)},use:function(){var args=_makeArray(arguments),plugin=args.shift(),plugin_name=plugin||"";try{args.unshift(this);if(typeof plugin=="string"){plugin_name="Sammy."+plugin;plugin=Sammy[plugin]}plugin.apply(this,args)}catch(e){if(typeof plugin==="undefined")this.error("Plugin Error: called use() but plugin ("+plugin_name.toString()+") is not defined",e);else if(!_isFunction(plugin))this.error("Plugin Error: called use() but '"+
plugin_name.toString()+"' is not a function",e);else this.error("Plugin Error",e)}return this},setLocationProxy:function(new_proxy){var original_proxy=this._location_proxy;this._location_proxy=new_proxy;if(this.isRunning()){if(original_proxy)original_proxy.unbind();this._location_proxy.bind()}},route:function(verb,path,callback){var app=this,param_names=[],add_route,path_match;if(!callback&&_isFunction(path)){path=verb;callback=path;verb="any"}verb=verb.toLowerCase();if(path.constructor==String){PATH_NAME_MATCHER.lastIndex=
0;while((path_match=PATH_NAME_MATCHER.exec(path))!==null)param_names.push(path_match[1]);path=new RegExp("^"+path.replace(PATH_NAME_MATCHER,PATH_REPLACER)+"$")}if(typeof callback=="string")callback=app[callback];add_route=function(with_verb){var r={verb:with_verb,path:path,callback:callback,param_names:param_names};app.routes[with_verb]=app.routes[with_verb]||[];app.routes[with_verb].push(r)};if(verb==="any")$.each(this.ROUTE_VERBS,function(i,v){add_route(v)});else add_route(verb);return this},get:_routeWrapper("get"),
post:_routeWrapper("post"),put:_routeWrapper("put"),del:_routeWrapper("delete"),any:_routeWrapper("any"),mapRoutes:function(route_array){var app=this;$.each(route_array,function(i,route_args){app.route.apply(app,route_args)});return this},eventNamespace:function(){return["sammy-app",this.namespace].join("-")},bind:function(name,data,callback){var app=this;if(typeof callback=="undefined")callback=data;var listener_callback=function(){var e,context,data;e=arguments[0];data=arguments[1];if(data&&data.context){context=
data.context;delete data.context}else context=new app.context_prototype(app,"bind",e.type,data,e.target);e.cleaned_type=e.type.replace(app.eventNamespace(),"");callback.apply(context,[e,data])};if(!this.listeners[name])this.listeners[name]=[];this.listeners[name].push(listener_callback);if(this.isRunning())this._listen(name,listener_callback);return this},trigger:function(name,data){this.$element().trigger([name,this.eventNamespace()].join("."),[data]);return this},refresh:function(){this.last_location=
null;this.trigger("location-changed");return this},before:function(options,callback){if(_isFunction(options)){callback=options;options={}}this.befores.push([options,callback]);return this},after:function(callback){return this.bind("event-context-after",callback)},around:function(callback){this.arounds.push(callback);return this},isRunning:function(){return this._running},helpers:function(extensions){$.extend(this.context_prototype.prototype,extensions);return this},helper:function(name,method){this.context_prototype.prototype[name]=
method;return this},run:function(start_url){if(this.isRunning())return false;var app=this;$.each(this.listeners.toHash(),function(name,callbacks){$.each(callbacks,function(i,listener_callback){app._listen(name,listener_callback)})});this.trigger("run",{start_url:start_url});this._running=true;this.last_location=null;if(this.getLocation()==""&&typeof start_url!="undefined")this.setLocation(start_url);this._checkLocation();this._location_proxy.bind();this.bind("location-changed",function(){app._checkLocation()});
this.bind("submit",function(e){var returned=app._checkFormSubmission($(e.target).closest("form"));return returned===false?e.preventDefault():false});$(window).bind("beforeunload",function(){app.unload()});return this.trigger("changed")},unload:function(){if(!this.isRunning())return false;var app=this;this.trigger("unload");this._location_proxy.unbind();this.$element().unbind("submit").removeClass(app.eventNamespace());$.each(this.listeners.toHash(),function(name,listeners){$.each(listeners,function(i,
listener_callback){app._unlisten(name,listener_callback)})});this._running=false;return this},bindToAllEvents:function(callback){var app=this;$.each(this.APP_EVENTS,function(i,e){app.bind(e,callback)});$.each(this.listeners.keys(true),function(i,name){if(app.APP_EVENTS.indexOf(name)==-1)app.bind(name,callback)});return this},routablePath:function(path){return path.replace(QUERY_STRING_MATCHER,"")},lookupRoute:function(verb,path){var app=this,routed=false;this.trigger("lookup-route",{verb:verb,path:path});
if(typeof this.routes[verb]!="undefined")$.each(this.routes[verb],function(i,route){if(app.routablePath(path).match(route.path)){routed=route;return false}});return routed},runRoute:function(verb,path,params,target){var app=this,route=this.lookupRoute(verb,path),context,wrapped_route,arounds,around,befores,before,callback_args,path_params,final_returned;this.log("runRoute",[verb,path].join(" "));this.trigger("run-route",{verb:verb,path:path,params:params});if(typeof params=="undefined")params={};
$.extend(params,this._parseQueryString(path));if(route){this.trigger("route-found",{route:route});if((path_params=route.path.exec(this.routablePath(path)))!==null){path_params.shift();$.each(path_params,function(i,param){if(route.param_names[i])params[route.param_names[i]]=_decode(param);else{if(!params.splat)params.splat=[];params.splat.push(_decode(param))}})}context=new this.context_prototype(this,verb,path,params,target);arounds=this.arounds.slice(0);befores=this.befores.slice(0);callback_args=
[context].concat(params.splat);wrapped_route=function(){var returned;while(befores.length>0){before=befores.shift();if(app.contextMatchesOptions(context,before[0])){returned=before[1].apply(context,[context]);if(returned===false)return false}}app.last_route=route;context.trigger("event-context-before",{context:context});returned=route.callback.apply(context,callback_args);context.trigger("event-context-after",{context:context});return returned};$.each(arounds.reverse(),function(i,around){var last_wrapped_route=
wrapped_route;wrapped_route=function(){return around.apply(context,[last_wrapped_route])}});try{final_returned=wrapped_route()}catch(e){this.error(["500 Error",verb,path].join(" "),e)}return final_returned}else return this.notFound(verb,path)},contextMatchesOptions:function(context,match_options,positive){var options=match_options;if(typeof options==="undefined"||options=={})return true;if(typeof positive==="undefined")positive=true;if(typeof options==="string"||_isFunction(options.test))options=
{path:options};if(options.only)return this.contextMatchesOptions(context,options.only,true);else if(options.except)return this.contextMatchesOptions(context,options.except,false);var path_matched=true,verb_matched=true;if(options.path)if(_isFunction(options.path.test))path_matched=options.path.test(context.path);else path_matched=options.path.toString()===context.path;if(options.verb)verb_matched=options.verb===context.verb;return positive?verb_matched&&path_matched:!(verb_matched&&path_matched)},
getLocation:function(){return this._location_proxy.getLocation()},setLocation:function(new_location){return this._location_proxy.setLocation(new_location)},swap:function(content){return this.$element().html(content)},templateCache:function(key,value){if(typeof value!="undefined")return _template_cache[key]=value;else return _template_cache[key]},clearTemplateCache:function(){return _template_cache={}},notFound:function(verb,path){var ret=this.error(["404 Not Found",verb,path].join(" "));return verb===
"get"?ret:true},error:function(message,original_error){if(!original_error)original_error=new Error;original_error.message=[message,original_error.message].join(" ");this.trigger("error",{message:original_error.message,error:original_error});if(this.raise_errors)throw original_error;else this.log(original_error.message,original_error)},_checkLocation:function(){var location,returned;location=this.getLocation();if(!this.last_location||this.last_location[0]!="get"||this.last_location[1]!=location){this.last_location=
["get",location];returned=this.runRoute("get",location)}return returned},_getFormVerb:function(form){var $form=$(form),verb,$_method;$_method=$form.find('input[name="_method"]');if($_method.length>0)verb=$_method.val();if(!verb)verb=$form[0].getAttribute("method");return $.trim(verb.toString().toLowerCase())},_checkFormSubmission:function(form){var $form,path,verb,params,returned;this.trigger("check-form-submission",{form:form});$form=$(form);path=$form.attr("action");verb=this._getFormVerb($form);
if(!verb||verb=="")verb="get";this.log("_checkFormSubmission",$form,path,verb);if(verb==="get"){this.setLocation(path+"?"+$form.serialize());returned=false}else{params=$.extend({},this._parseFormParams($form));returned=this.runRoute(verb,path,params,form.get(0))}return typeof returned=="undefined"?false:returned},_parseFormParams:function($form){var params={},form_fields=$form.serializeArray(),i;for(i=0;i<form_fields.length;i++)params=this._parseParamPair(params,form_fields[i].name,form_fields[i].value);
return params},_parseQueryString:function(path){var params={},parts,pairs,pair,i;parts=path.match(QUERY_STRING_MATCHER);if(parts){pairs=parts[1].split("&");for(i=0;i<pairs.length;i++){pair=pairs[i].split("=");params=this._parseParamPair(params,_decode(pair[0]),_decode(pair[1]))}}return params},_parseParamPair:function(params,key,value){if(params[key])if(_isArray(params[key]))params[key].push(value);else params[key]=[params[key],value];else params[key]=value;return params},_listen:function(name,callback){return this.$element().bind([name,
this.eventNamespace()].join("."),callback)},_unlisten:function(name,callback){return this.$element().unbind([name,this.eventNamespace()].join("."),callback)}});Sammy.RenderContext=function(event_context){this.event_context=event_context;this.callbacks=[];this.previous_content=null;this.content=null;this.next_engine=false;this.waiting=false};$.extend(Sammy.RenderContext.prototype,{then:function(callback){if(!_isFunction(callback))if(typeof callback==="string"&&callback in this.event_context){var helper=
this.event_context[callback];callback=function(content){return helper.apply(this.event_context,[content])}}else return this;var context=this;if(this.waiting)this.callbacks.push(callback);else{this.wait();window.setTimeout(function(){var returned=callback.apply(context,[context.content,context.previous_content]);if(returned!==false)context.next(returned)},13)}return this},wait:function(){this.waiting=true},next:function(content){this.waiting=false;if(typeof content!=="undefined"){this.previous_content=
this.content;this.content=content}if(this.callbacks.length>0)this.then(this.callbacks.shift())},load:function(location,options,callback){var context=this;return this.then(function(){var should_cache,cached,is_json,location_array;if(_isFunction(options)){callback=options;options={}}else options=$.extend({},options);if(callback)this.then(callback);if(typeof location==="string"){is_json=location.match(/\.json$/)||options.json;should_cache=is_json&&options.cache===true||options.cache!==false;context.next_engine=
context.event_context.engineFor(location);delete options.cache;delete options.json;if(options.engine){context.next_engine=options.engine;delete options.engine}if(should_cache&&(cached=this.event_context.app.templateCache(location)))return cached;this.wait();$.ajax($.extend({url:location,data:{},dataType:is_json?"json":null,type:"get",success:function(data){if(should_cache)context.event_context.app.templateCache(location,data);context.next(data)}},options));return false}else{if(location.nodeType)return location.innerHTML;
if(location.selector){context.next_engine=location.attr("data-engine");if(options.clone===false)return location.remove()[0].innerHTML.toString();else return location[0].innerHTML.toString()}}})},render:function(location,data,callback){if(_isFunction(location)&&!data)return this.then(location);else{if(!data&&this.content)data=this.content;return this.load(location).interpolate(data,location).then(callback)}},partial:function(location,data){return this.render(location,data).swap()},send:function(){var context=
this,args=_makeArray(arguments),fun=args.shift();if(_isArray(args[0]))args=args[0];return this.then(function(content){args.push(function(response){context.next(response)});context.wait();fun.apply(fun,args);return false})},collect:function(array,callback,now){var context=this;var coll=function(){if(_isFunction(array)){callback=array;array=this.content}var contents=[],doms=false;$.each(array,function(i,item){var returned=callback.apply(context,[i,item]);if(returned.jquery&&returned.length==1){returned=
returned[0];doms=true}contents.push(returned);return returned});return doms?contents:contents.join("")};return now?coll():this.then(coll)},renderEach:function(location,name,data,callback){if(_isArray(name)){callback=data;data=name;name=null}return this.load(location).then(function(content){var rctx=this;if(!data)data=_isArray(this.previous_content)?this.previous_content:[];if(callback)$.each(data,function(i,value){var idata={},engine=this.next_engine||location;name?idata[name]=value:idata=value;callback(value,
rctx.event_context.interpolate(content,idata,engine))});else return this.collect(data,function(i,value){var idata={},engine=this.next_engine||location;name?idata[name]=value:idata=value;return this.event_context.interpolate(content,idata,engine)},true)})},interpolate:function(data,engine,retain){var context=this;return this.then(function(content,prev){if(!data&&prev)data=prev;if(this.next_engine){engine=this.next_engine;this.next_engine=false}var rendered=context.event_context.interpolate(content,
data,engine);return retain?prev+rendered:rendered})},swap:function(){return this.then(function(content){this.event_context.swap(content)}).trigger("changed",{})},appendTo:function(selector){return this.then(function(content){$(selector).append(content)}).trigger("changed",{})},prependTo:function(selector){return this.then(function(content){$(selector).prepend(content)}).trigger("changed",{})},replace:function(selector){return this.then(function(content){$(selector).html(content)}).trigger("changed",
{})},trigger:function(name,data){return this.then(function(content){if(typeof data=="undefined")data={content:content};this.event_context.trigger(name,data)})}});Sammy.EventContext=function(app,verb,path,params,target){this.app=app;this.verb=verb;this.path=path;this.params=new Sammy.Object(params);this.target=target};Sammy.EventContext.prototype=$.extend({},Sammy.Object.prototype,{$element:function(){return this.app.$element()},engineFor:function(engine){var context=this,engine_match;if(_isFunction(engine))return engine;
engine=engine.toString();if(engine_match=engine.match(/\.([^\.]+)$/))engine=engine_match[1];if(engine&&_isFunction(context[engine]))return context[engine];if(context.app.template_engine)return this.engineFor(context.app.template_engine);return function(content,data){return content}},interpolate:function(content,data,engine){return this.engineFor(engine).apply(this,[content,data])},render:function(location,data,callback){return(new Sammy.RenderContext(this)).render(location,data,callback)},renderEach:function(location,
name,data,callback){return(new Sammy.RenderContext(this)).renderEach(location,name,data,callback)},load:function(location,options,callback){return(new Sammy.RenderContext(this)).load(location,options,callback)},partial:function(location,data){return(new Sammy.RenderContext(this)).partial(location,data)},send:function(){var rctx=new Sammy.RenderContext(this);return rctx.send.apply(rctx,arguments)},redirect:function(){var to,args=_makeArray(arguments),current_location=this.app.getLocation();if(args.length>
1){args.unshift("/");to=this.join.apply(this,args)}else to=args[0];this.trigger("redirect",{to:to});this.app.last_location=[this.verb,this.path];this.app.setLocation(to);if(current_location==to)this.app.trigger("location-changed")},trigger:function(name,data){if(typeof data=="undefined")data={};if(!data.context)data.context=this;return this.app.trigger(name,data)},eventNamespace:function(){return this.app.eventNamespace()},swap:function(contents){return this.app.swap(contents)},notFound:function(){return this.app.notFound(this.verb,
this.path)},json:function(string){return $.parseJSON(string)},toString:function(){return"Sammy.EventContext: "+[this.verb,this.path,this.params].join(" ")}});$.sammy=window.Sammy=Sammy})(jQuery,window);(function(document,undefined){var width="width";var length="length";var radius="radius";var lines="lines";var trail="trail";var color="color";var opacity="opacity";var speed="speed";var shadow="shadow";var style="style";var height="height";var left="left";var top="top";var px="px";var childNodes="childNodes";var firstChild="firstChild";var parentNode="parentNode";var position="position";var relative="relative";var absolute="absolute";var animation="animation";var transform="transform";var Origin=
"Origin";var coord="coord";var black="#000";var prefixes="webkit0Moz0ms0O".split(0);var animations={};var useCssAnimations;function eachPair(args,it){var end=~~((args[length]-1)/2);for(var i=1;i<=end;i++)it(args[i*2-1],args[i*2])}function createEl(tag){var el=document.createElement(tag||"div");eachPair(arguments,function(prop,val){el[prop]=val});return el}function ins(parent,child1,child2){if(child2&&!child2[parentNode])ins(parent,child2);parent.insertBefore(child1,child2||null);return parent}function styleSheet(){var sheets=
document.styleSheets;if(!sheets[length])ins(document.documentElement[firstChild],createEl(style));return sheets[0]}function addAnimation(to,end){var name=[opacity,end,~~(to*100)].join("-");if(!animations[name]){var sheet=styleSheet();var dest="{"+opacity+":"+to+"}";var i;for(i=0;i<prefixes[length];i++)try{sheet.insertRule("@"+(prefixes[i]&&"-"+prefixes[i].toLowerCase()+"-"||"")+"keyframes "+name+"{0%{"+opacity+":1}"+end+"%"+dest+"to"+dest+"}",sheet.cssRules[length])}catch(err){}animations[name]=1}return name}
function vendor(el,prop){var s=el[style];if(s[prop]!==undefined)return prop;prop=prop.charAt(0).toUpperCase()+prop.slice(1);for(var i=0;i<prefixes[length];i++){var pp=prefixes[i]+prop;if(s[pp]!==undefined)return pp}}function css(el){eachPair(arguments,function(n,val){el[style][vendor(el,n)||n]=val});return el}function defaults(obj){eachPair(arguments,function(prop,val){if(obj[prop]===undefined)obj[prop]=val});return obj}var Spinner=function Spinner(o){this.el=this[lines](this.opts=defaults(o||{},
lines,12,trail,100,length,7,width,5,radius,10,color,black,opacity,1/4,speed,1))};var proto=Spinner.prototype={spin:function(target){var self=this;var el=self.el;if(target)ins(target,css(el,left,~~(target.offsetWidth/2)+px,top,~~(target.offsetHeight/2)+px),target[firstChild]);self.on=1;if(!useCssAnimations){var o=self.opts;var i=0;var f=20/o[speed];var ostep=(1-o[opacity])/(f*o[trail]/100);var astep=f/o[lines];(function anim(){i++;for(var s=o[lines];s;s--){var alpha=Math.max(1-(i+s*astep)%f*ostep,
o[opacity]);self[opacity](el,o[lines]-s,alpha,o)}if(self.on)setTimeout(anim,50)})()}return self},stop:function(){var self=this;var el=self.el;self.on=0;if(el[parentNode])el[parentNode].removeChild(el);return self}};proto[lines]=function(o){var el=css(createEl(),position,relative);var animationName=addAnimation(o[opacity],o[trail]);var i=0;function fill(color,shadow){return css(createEl(),position,absolute,width,o[length]+o[width]+px,height,o[width]+px,"background",color,"boxShadow",shadow,transform+
Origin,left,transform,"rotate("+~~(360/o[lines]*i)+"deg) translate("+o[radius]+px+",0)","borderRadius","100em")}for(;i<o[lines];i++){var seg=css(createEl(),position,absolute,top,1+~(o[width]/2)+px,transform,"translate3d(0,0,0)",animation,animationName+" "+1/o[speed]+"s linear infinite "+(-1+1/o[lines]*i/o[speed])+"s");if(o[shadow])ins(seg,css(fill(black,"0 0 4px "+black),top,2+px));ins(el,ins(seg,fill(o[color],"0 0 1px rgba(0,0,0,.1)")))}return el};proto[opacity]=function(el,i,val){el[childNodes][i][style][opacity]=
val};var behavior="behavior";var URL_VML="url(#default#VML)";var tag="group0roundrect0fill0stroke".split(0);(function(){var s=css(createEl(tag[0]),behavior,URL_VML);if(!vendor(s,transform)&&s.adj){var sheet=styleSheet();var i;for(i=0;i<tag[length];i++)sheet.addRule(tag[i],behavior+":"+URL_VML);proto[lines]=function(){var o=this.opts;var r=o[length]+o[width];var s=2*r;function grp(){return css(createEl(tag[0],coord+"size",s+" "+s,coord+Origin,-r+" "+-r),width,s,height,s)}var g=grp();var margin=~(o[length]+
o[radius]+o[width])+px;var i;function seg(i,dx,filter){ins(g,ins(css(grp(),"rotation",360/o[lines]*i+"deg",left,~~dx),ins(css(createEl(tag[1],"arcsize",1),width,r,height,o[width],left,o[radius],top,-o[width]/2,"filter",filter),createEl(tag[2],color,o[color],opacity,o[opacity]),createEl(tag[3],opacity,0))))}if(o[shadow])for(i=1;i<=o[lines];i++)seg(i,-2,"progid:DXImage"+transform+".Microsoft.Blur(pixel"+radius+"=2,make"+shadow+"=1,"+shadow+opacity+"=.3)");for(i=1;i<=o[lines];i++)seg(i);return ins(css(createEl(),
"margin",margin+" 0 0 "+margin,position,relative),g)};proto[opacity]=function(el,i,val,o){o=o[shadow]&&o[lines]||0;el[firstChild][childNodes][i+o][firstChild][firstChild][opacity]=val}}else useCssAnimations=vendor(s,animation)})();window.Spinner=Spinner})(document);(function($){Sammy=Sammy||{};Sammy.Title=function(){this.setTitle=function(title){if(!$.isFunction(title))this.title_function=function(additional_title){return[title,additional_title].join(" ")};else this.title_function=title};this.helper("title",function(){var new_title=$.makeArray(arguments).join(" ");if(this.app.title_function)new_title=this.app.title_function(new_title);document.title=new_title})}})(jQuery);(function($){Sammy.Router=function(app,callback){app.paths={"get":{},"post":{},"put":{}};var router={setup_action:function(to,context){var params=to.split("#");var controller=params[0],action=params[1];context.controller=controller;context.action=action;context.helpers=$.helpers[controller];context.templates=$.templates[controller];$.controllers[controller][action].call(context,context)},build:function(verb,path,to){var router=this;app.paths[verb][to]=path;app.route(verb,path,function(){router.setup_action(to,
this)})},get:function(path,to){this.build("get",path,to)},post:function(match,to){this.build("post",path,to)},put:function(match,to){this.build("put",path,to)}};callback.call(router)}})(jQuery);
