(function($){function getFnIndex(args){var ret=2;$.each(args,function(i,data){if($.isFunction(data)){ret=i;return false;}});return ret;}
(function(){var contains=document.compareDocumentPosition?function(a,b){return a.compareDocumentPosition(b)&16;}:function(a,b){return a!==b&&(a.contains?a.contains(b):true);},oldLive=$.fn.live,oldDie=$.fn.die;function createEnterLeaveFn(fn,type){return jQuery.event.proxy(fn,function(e){if(this!==e.relatedTarget&&e.relatedTarget&&!contains(this,e.relatedTarget)){e.type=type;fn.apply(this,arguments);}});}
var enterLeaveTypes={mouseenter:'mouseover',mouseleave:'mouseout'};$.fn.live=function(types){var that=this,args=arguments,fnIndex=getFnIndex(args),fn=args[fnIndex];$.each(types.split(' '),function(i,type){var proxy=fn;if(enterLeaveTypes[type]){proxy=createEnterLeaveFn(proxy,type);type=enterLeaveTypes[type];}
args[0]=type;args[fnIndex]=proxy;oldLive.apply(that,args);});return this;};$.fn.die=function(type,fn){if(/mouseenter|mouseleave/.test(type)){if(type=='mouseenter'){type=type.replace(/mouseenter/g,'mouseover');}
if(type=='mouseleave'){type=type.replace(/mouseleave/g,'mouseout');}}
oldDie.call(this,type,fn);return this;};function createBubbleFn(fn,selector,context){return jQuery.event.proxy(fn,function(e){var parent=this.parentNode,stop=(enterLeaveTypes[e.type])?e.relatedTarget:undefined;fn.apply(this,arguments);while(parent&&parent!==context&&parent!==e.relatedTarget){if($.multiFilter(selector,[parent])[0]){fn.apply(parent,arguments);}
parent=parent.parentNode;}});}
$.fn.bubbleLive=function(){var args=arguments,fnIndex=getFnIndex(args);args[fnIndex]=createBubbleFn(args[fnIndex],this.selector,this.context);$.fn.live.apply(this,args);};$.fn.liveHover=function(enter,out){return this.live('mouseenter',enter).live('mouseleave',out);};})();(function(){$.support.bubblingChange=!($.browser.msie||$.browser.safari);if(!$.support.bubblingChange){var oldLive=$.fn.live,oldDie=$.fn.die;function detectChange(fn){return $.event.proxy(fn,function(e){var jElm=$(e.target);if((e.type!=='keydown'||e.keyCode===13)&&jElm.is('input, textarea, select')){var oldData=jElm.data('changeVal'),isRadioCheckbox=jElm.is(':checkbox, :radio'),nowData;if(isRadioCheckbox&&jElm.is(':enabled')&&e.type==='click'){nowData=jElm.is(':checked');if((e.target.type!=='radio'||nowData===true)&&e.type!=='change'&&oldData!==nowData){e.type='change';jElm.trigger(e);}}else if(!isRadioCheckbox){nowData=jElm.val();if(oldData!==undefined&&oldData!==nowData){e.type='change';jElm.trigger(e);}}
if(nowData!==undefined){jElm.data('changeVal',nowData);}}});}
function createChangeProxy(fn){return $.event.proxy(fn,function(e){if(e.type==='change'){var jElm=$(e.target),nowData=(jElm.is(':checkbox, :radio'))?jElm.is(':checked'):jElm.val();if(nowData===jElm.data('changeVal')){return false;}
jElm.data('changeVal',nowData);}
fn.apply(this,arguments);});}
$.fn.live=function(type,fn){var that=this,args=arguments,fnIndex=getFnIndex(args),proxy=args[fnIndex];if(type.indexOf('change')!=-1){$(this.context).bind('click focusin focusout keydown',detectChange(proxy));proxy=createChangeProxy(proxy);}
args[fnIndex]=proxy;oldLive.apply(that,args);return this;};$.fn.die=function(type,fn){if(type.indexOf('change')!=-1){$(this.context).unbind('click focusin focusout keydown',fn);}
oldDie.apply(this,arguments);return this;};}})();(function(){$.support.focusInOut=!!($.browser.msie);if(!$.support.focusInOut){$.each({focus:'focusin',blur:'focusout'},function(original,fix){$.event.special[fix]={setup:function(){if(!this.addEventListener){return false;}
this.addEventListener(original,$.event.special[fix].handler,true);},teardown:function(){if(!this.removeEventListener){return false;}
this.removeEventListener(original,$.event.special[fix].handler,true);},handler:function(e){arguments[0]=$.event.fix(e);arguments[0].type=fix;return $.event.handle.apply(this,arguments);}};});}
var activeFocus=null,block;$(document).bind('focusin',function(e){var target=e.realTarget||e.target;if(activeFocus&&activeFocus!==target){e.type='focusout';$(activeFocus).trigger(e);e.type='focusin';e.target=target;}
activeFocus=target;}).bind('focusout',function(e){activeFocus=null;});})();})(jQuery);
