parent
8c3ee77fbf
commit
4241e417e2
@ -0,0 +1,63 @@ |
||||
/*! |
||||
* jQuery UI 1.8.5 |
||||
* |
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses. |
||||
* http://jquery.org/license
|
||||
* |
||||
* http://docs.jquery.com/UI
|
||||
*/ |
||||
(function(c,j){function k(a){return!c(a).parents().andSelf().filter(function(){return c.curCSS(this,"visibility")==="hidden"||c.expr.filters.hidden(this)}).length}c.ui=c.ui||{};if(!c.ui.version){c.extend(c.ui,{version:"1.8.5",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106, |
||||
NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}});c.fn.extend({_focus:c.fn.focus,focus:function(a,b){return typeof a==="number"?this.each(function(){var d=this;setTimeout(function(){c(d).focus();b&&b.call(d)},a)}):this._focus.apply(this,arguments)},scrollParent:function(){var a;a=c.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?this.parents().filter(function(){return/(relative|absolute|fixed)/.test(c.curCSS(this, |
||||
"position",1))&&/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0):this.parents().filter(function(){return/(auto|scroll)/.test(c.curCSS(this,"overflow",1)+c.curCSS(this,"overflow-y",1)+c.curCSS(this,"overflow-x",1))}).eq(0);return/fixed/.test(this.css("position"))||!a.length?c(document):a},zIndex:function(a){if(a!==j)return this.css("zIndex",a);if(this.length){a=c(this[0]);for(var b;a.length&&a[0]!==document;){b=a.css("position"); |
||||
if(b==="absolute"||b==="relative"||b==="fixed"){b=parseInt(a.css("zIndex"));if(!isNaN(b)&&b!=0)return b}a=a.parent()}}return 0},disableSelection:function(){return this.bind("mousedown.ui-disableSelection selectstart.ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}});c.each(["Width","Height"],function(a,b){function d(f,g,l,m){c.each(e,function(){g-=parseFloat(c.curCSS(f,"padding"+this,true))||0;if(l)g-=parseFloat(c.curCSS(f, |
||||
"border"+this+"Width",true))||0;if(m)g-=parseFloat(c.curCSS(f,"margin"+this,true))||0});return g}var e=b==="Width"?["Left","Right"]:["Top","Bottom"],h=b.toLowerCase(),i={innerWidth:c.fn.innerWidth,innerHeight:c.fn.innerHeight,outerWidth:c.fn.outerWidth,outerHeight:c.fn.outerHeight};c.fn["inner"+b]=function(f){if(f===j)return i["inner"+b].call(this);return this.each(function(){c.style(this,h,d(this,f)+"px")})};c.fn["outer"+b]=function(f,g){if(typeof f!=="number")return i["outer"+b].call(this,f);return this.each(function(){c.style(this, |
||||
h,d(this,f,true,g)+"px")})}});c.extend(c.expr[":"],{data:function(a,b,d){return!!c.data(a,d[3])},focusable:function(a){var b=a.nodeName.toLowerCase(),d=c.attr(a,"tabindex");if("area"===b){b=a.parentNode;d=b.name;if(!a.href||!d||b.nodeName.toLowerCase()!=="map")return false;a=c("img[usemap=#"+d+"]")[0];return!!a&&k(a)}return(/input|select|textarea|button|object/.test(b)?!a.disabled:"a"==b?a.href||!isNaN(d):!isNaN(d))&&k(a)},tabbable:function(a){var b=c.attr(a,"tabindex");return(isNaN(b)||b>=0)&&c(a).is(":focusable")}}); |
||||
c(function(){var a=document.createElement("div"),b=document.body;c.extend(a.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0});c.support.minHeight=b.appendChild(a).offsetHeight===100;b.removeChild(a).style.display="none"});c.extend(c.ui,{plugin:{add:function(a,b,d){a=c.ui[a].prototype;for(var e in d){a.plugins[e]=a.plugins[e]||[];a.plugins[e].push([b,d[e]])}},call:function(a,b,d){if((b=a.plugins[b])&&a.element[0].parentNode)for(var e=0;e<b.length;e++)a.options[b[e][0]]&&b[e][1].apply(a.element, |
||||
d)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(a,b){if(c(a).css("overflow")==="hidden")return false;b=b&&b==="left"?"scrollLeft":"scrollTop";var d=false;if(a[b]>0)return true;a[b]=1;d=a[b]>0;a[b]=0;return d},isOverAxis:function(a,b,d){return a>b&&a<b+d},isOver:function(a,b,d,e,h,i){return c.ui.isOverAxis(a,d,h)&&c.ui.isOverAxis(b,e,i)}})}})(jQuery); |
||||
;/*! |
||||
* jQuery UI Widget 1.8.5 |
||||
* |
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses. |
||||
* http://jquery.org/license
|
||||
* |
||||
* http://docs.jquery.com/UI/Widget
|
||||
*/ |
||||
(function(b,j){if(b.cleanData){var k=b.cleanData;b.cleanData=function(a){for(var c=0,d;(d=a[c])!=null;c++)b(d).triggerHandler("remove");k(a)}}else{var l=b.fn.remove;b.fn.remove=function(a,c){return this.each(function(){if(!c)if(!a||b.filter(a,[this]).length)b("*",this).add([this]).each(function(){b(this).triggerHandler("remove")});return l.call(b(this),a,c)})}}b.widget=function(a,c,d){var e=a.split(".")[0],f;a=a.split(".")[1];f=e+"-"+a;if(!d){d=c;c=b.Widget}b.expr[":"][f]=function(h){return!!b.data(h, |
||||
a)};b[e]=b[e]||{};b[e][a]=function(h,g){arguments.length&&this._createWidget(h,g)};c=new c;c.options=b.extend(true,{},c.options);b[e][a].prototype=b.extend(true,c,{namespace:e,widgetName:a,widgetEventPrefix:b[e][a].prototype.widgetEventPrefix||a,widgetBaseClass:f},d);b.widget.bridge(a,b[e][a])};b.widget.bridge=function(a,c){b.fn[a]=function(d){var e=typeof d==="string",f=Array.prototype.slice.call(arguments,1),h=this;d=!e&&f.length?b.extend.apply(null,[true,d].concat(f)):d;if(e&&d.substring(0,1)=== |
||||
"_")return h;e?this.each(function(){var g=b.data(this,a);if(!g)throw"cannot call methods on "+a+" prior to initialization; attempted to call method '"+d+"'";if(!b.isFunction(g[d]))throw"no such method '"+d+"' for "+a+" widget instance";var i=g[d].apply(g,f);if(i!==g&&i!==j){h=i;return false}}):this.each(function(){var g=b.data(this,a);g?g.option(d||{})._init():b.data(this,a,new c(d,this))});return h}};b.Widget=function(a,c){arguments.length&&this._createWidget(a,c)};b.Widget.prototype={widgetName:"widget", |
||||
widgetEventPrefix:"",options:{disabled:false},_createWidget:function(a,c){b.data(c,this.widgetName,this);this.element=b(c);this.options=b.extend(true,{},this.options,b.metadata&&b.metadata.get(c)[this.widgetName],a);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()});this._create();this._init()},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName);this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+ |
||||
"-disabled ui-state-disabled")},widget:function(){return this.element},option:function(a,c){var d=a,e=this;if(arguments.length===0)return b.extend({},e.options);if(typeof a==="string"){if(c===j)return this.options[a];d={};d[a]=c}b.each(d,function(f,h){e._setOption(f,h)});return e},_setOption:function(a,c){this.options[a]=c;if(a==="disabled")this.widget()[c?"addClass":"removeClass"](this.widgetBaseClass+"-disabled ui-state-disabled").attr("aria-disabled",c);return this},enable:function(){return this._setOption("disabled", |
||||
false)},disable:function(){return this._setOption("disabled",true)},_trigger:function(a,c,d){var e=this.options[a];c=b.Event(c);c.type=(a===this.widgetEventPrefix?a:this.widgetEventPrefix+a).toLowerCase();d=d||{};if(c.originalEvent){a=b.event.props.length;for(var f;a;){f=b.event.props[--a];c[f]=c.originalEvent[f]}}this.element.trigger(c,d);return!(b.isFunction(e)&&e.call(this.element[0],c,d)===false||c.isDefaultPrevented())}}})(jQuery); |
||||
;/* |
||||
* jQuery UI Effects 1.8.5 |
||||
* |
||||
* Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
|
||||
* Dual licensed under the MIT or GPL Version 2 licenses. |
||||
* http://jquery.org/license
|
||||
* |
||||
* http://docs.jquery.com/UI/Effects/
|
||||
*/ |
||||
jQuery.effects||function(f,j){function l(c){var a;if(c&&c.constructor==Array&&c.length==3)return c;if(a=/rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(c))return[parseInt(a[1],10),parseInt(a[2],10),parseInt(a[3],10)];if(a=/rgb\(\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*,\s*([0-9]+(?:\.[0-9]+)?)\%\s*\)/.exec(c))return[parseFloat(a[1])*2.55,parseFloat(a[2])*2.55,parseFloat(a[3])*2.55];if(a=/#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/.exec(c))return[parseInt(a[1], |
||||
16),parseInt(a[2],16),parseInt(a[3],16)];if(a=/#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/.exec(c))return[parseInt(a[1]+a[1],16),parseInt(a[2]+a[2],16),parseInt(a[3]+a[3],16)];if(/rgba\(0, 0, 0, 0\)/.exec(c))return m.transparent;return m[f.trim(c).toLowerCase()]}function r(c,a){var b;do{b=f.curCSS(c,a);if(b!=""&&b!="transparent"||f.nodeName(c,"body"))break;a="backgroundColor"}while(c=c.parentNode);return l(b)}function n(){var c=document.defaultView?document.defaultView.getComputedStyle(this,null):this.currentStyle, |
||||
a={},b,d;if(c&&c.length&&c[0]&&c[c[0]])for(var e=c.length;e--;){b=c[e];if(typeof c[b]=="string"){d=b.replace(/\-(\w)/g,function(g,h){return h.toUpperCase()});a[d]=c[b]}}else for(b in c)if(typeof c[b]==="string")a[b]=c[b];return a}function o(c){var a,b;for(a in c){b=c[a];if(b==null||f.isFunction(b)||a in s||/scrollbar/.test(a)||!/color/i.test(a)&&isNaN(parseFloat(b)))delete c[a]}return c}function t(c,a){var b={_:0},d;for(d in a)if(c[d]!=a[d])b[d]=a[d];return b}function k(c,a,b,d){if(typeof c=="object"){d= |
||||
a;b=null;a=c;c=a.effect}if(f.isFunction(a)){d=a;b=null;a={}}if(typeof a=="number"||f.fx.speeds[a]){d=b;b=a;a={}}if(f.isFunction(b)){d=b;b=null}a=a||{};b=b||a.duration;b=f.fx.off?0:typeof b=="number"?b:f.fx.speeds[b]||f.fx.speeds._default;d=d||a.complete;return[c,a,b,d]}f.effects={};f.each(["backgroundColor","borderBottomColor","borderLeftColor","borderRightColor","borderTopColor","color","outlineColor"],function(c,a){f.fx.step[a]=function(b){if(!b.colorInit){b.start=r(b.elem,a);b.end=l(b.end);b.colorInit= |
||||
true}b.elem.style[a]="rgb("+Math.max(Math.min(parseInt(b.pos*(b.end[0]-b.start[0])+b.start[0],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[1]-b.start[1])+b.start[1],10),255),0)+","+Math.max(Math.min(parseInt(b.pos*(b.end[2]-b.start[2])+b.start[2],10),255),0)+")"}});var m={aqua:[0,255,255],azure:[240,255,255],beige:[245,245,220],black:[0,0,0],blue:[0,0,255],brown:[165,42,42],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgrey:[169,169,169],darkgreen:[0,100,0],darkkhaki:[189, |
||||
183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkviolet:[148,0,211],fuchsia:[255,0,255],gold:[255,215,0],green:[0,128,0],indigo:[75,0,130],khaki:[240,230,140],lightblue:[173,216,230],lightcyan:[224,255,255],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightyellow:[255,255,224],lime:[0,255,0],magenta:[255,0,255],maroon:[128,0,0],navy:[0,0,128],olive:[128,128,0],orange:[255, |
||||
165,0],pink:[255,192,203],purple:[128,0,128],violet:[128,0,128],red:[255,0,0],silver:[192,192,192],white:[255,255,255],yellow:[255,255,0],transparent:[255,255,255]},p=["add","remove","toggle"],s={border:1,borderBottom:1,borderColor:1,borderLeft:1,borderRight:1,borderTop:1,borderWidth:1,margin:1,padding:1};f.effects.animateClass=function(c,a,b,d){if(f.isFunction(b)){d=b;b=null}return this.each(function(){var e=f(this),g=e.attr("style")||" ",h=o(n.call(this)),q,u=e.attr("className");f.each(p,function(v, |
||||
i){c[i]&&e[i+"Class"](c[i])});q=o(n.call(this));e.attr("className",u);e.animate(t(h,q),a,b,function(){f.each(p,function(v,i){c[i]&&e[i+"Class"](c[i])});if(typeof e.attr("style")=="object"){e.attr("style").cssText="";e.attr("style").cssText=g}else e.attr("style",g);d&&d.apply(this,arguments)})})};f.fn.extend({_addClass:f.fn.addClass,addClass:function(c,a,b,d){return a?f.effects.animateClass.apply(this,[{add:c},a,b,d]):this._addClass(c)},_removeClass:f.fn.removeClass,removeClass:function(c,a,b,d){return a? |
||||
f.effects.animateClass.apply(this,[{remove:c},a,b,d]):this._removeClass(c)},_toggleClass:f.fn.toggleClass,toggleClass:function(c,a,b,d,e){return typeof a=="boolean"||a===j?b?f.effects.animateClass.apply(this,[a?{add:c}:{remove:c},b,d,e]):this._toggleClass(c,a):f.effects.animateClass.apply(this,[{toggle:c},a,b,d])},switchClass:function(c,a,b,d,e){return f.effects.animateClass.apply(this,[{add:a,remove:c},b,d,e])}});f.extend(f.effects,{version:"1.8.5",save:function(c,a){for(var b=0;b<a.length;b++)a[b]!== |
||||
null&&c.data("ec.storage."+a[b],c[0].style[a[b]])},restore:function(c,a){for(var b=0;b<a.length;b++)a[b]!==null&&c.css(a[b],c.data("ec.storage."+a[b]))},setMode:function(c,a){if(a=="toggle")a=c.is(":hidden")?"show":"hide";return a},getBaseline:function(c,a){var b;switch(c[0]){case "top":b=0;break;case "middle":b=0.5;break;case "bottom":b=1;break;default:b=c[0]/a.height}switch(c[1]){case "left":c=0;break;case "center":c=0.5;break;case "right":c=1;break;default:c=c[1]/a.width}return{x:c,y:b}},createWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent(); |
||||
var a={width:c.outerWidth(true),height:c.outerHeight(true),"float":c.css("float")},b=f("<div></div>").addClass("ui-effects-wrapper").css({fontSize:"100%",background:"transparent",border:"none",margin:0,padding:0});c.wrap(b);b=c.parent();if(c.css("position")=="static"){b.css({position:"relative"});c.css({position:"relative"})}else{f.extend(a,{position:c.css("position"),zIndex:c.css("z-index")});f.each(["top","left","bottom","right"],function(d,e){a[e]=c.css(e);if(isNaN(parseInt(a[e],10)))a[e]="auto"}); |
||||
c.css({position:"relative",top:0,left:0})}return b.css(a).show()},removeWrapper:function(c){if(c.parent().is(".ui-effects-wrapper"))return c.parent().replaceWith(c);return c},setTransition:function(c,a,b,d){d=d||{};f.each(a,function(e,g){unit=c.cssUnit(g);if(unit[0]>0)d[g]=unit[0]*b+unit[1]});return d}});f.fn.extend({effect:function(c){var a=k.apply(this,arguments);a={options:a[1],duration:a[2],callback:a[3]};var b=f.effects[c];return b&&!f.fx.off?b.call(this,a):this},_show:f.fn.show,show:function(c){if(!c|| |
||||
typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._show.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="show";return this.effect.apply(this,a)}},_hide:f.fn.hide,hide:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c])return this._hide.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="hide";return this.effect.apply(this,a)}},__toggle:f.fn.toggle,toggle:function(c){if(!c||typeof c=="number"||f.fx.speeds[c]||!f.effects[c]||typeof c== |
||||
"boolean"||f.isFunction(c))return this.__toggle.apply(this,arguments);else{var a=k.apply(this,arguments);a[1].mode="toggle";return this.effect.apply(this,a)}},cssUnit:function(c){var a=this.css(c),b=[];f.each(["em","px","%","pt"],function(d,e){if(a.indexOf(e)>0)b=[parseFloat(a),e]});return b}});f.easing.jswing=f.easing.swing;f.extend(f.easing,{def:"easeOutQuad",swing:function(c,a,b,d,e){return f.easing[f.easing.def](c,a,b,d,e)},easeInQuad:function(c,a,b,d,e){return d*(a/=e)*a+b},easeOutQuad:function(c, |
||||
a,b,d,e){return-d*(a/=e)*(a-2)+b},easeInOutQuad:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a+b;return-d/2*(--a*(a-2)-1)+b},easeInCubic:function(c,a,b,d,e){return d*(a/=e)*a*a+b},easeOutCubic:function(c,a,b,d,e){return d*((a=a/e-1)*a*a+1)+b},easeInOutCubic:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a+b;return d/2*((a-=2)*a*a+2)+b},easeInQuart:function(c,a,b,d,e){return d*(a/=e)*a*a*a+b},easeOutQuart:function(c,a,b,d,e){return-d*((a=a/e-1)*a*a*a-1)+b},easeInOutQuart:function(c,a,b,d,e){if((a/= |
||||
e/2)<1)return d/2*a*a*a*a+b;return-d/2*((a-=2)*a*a*a-2)+b},easeInQuint:function(c,a,b,d,e){return d*(a/=e)*a*a*a*a+b},easeOutQuint:function(c,a,b,d,e){return d*((a=a/e-1)*a*a*a*a+1)+b},easeInOutQuint:function(c,a,b,d,e){if((a/=e/2)<1)return d/2*a*a*a*a*a+b;return d/2*((a-=2)*a*a*a*a+2)+b},easeInSine:function(c,a,b,d,e){return-d*Math.cos(a/e*(Math.PI/2))+d+b},easeOutSine:function(c,a,b,d,e){return d*Math.sin(a/e*(Math.PI/2))+b},easeInOutSine:function(c,a,b,d,e){return-d/2*(Math.cos(Math.PI*a/e)-1)+ |
||||
b},easeInExpo:function(c,a,b,d,e){return a==0?b:d*Math.pow(2,10*(a/e-1))+b},easeOutExpo:function(c,a,b,d,e){return a==e?b+d:d*(-Math.pow(2,-10*a/e)+1)+b},easeInOutExpo:function(c,a,b,d,e){if(a==0)return b;if(a==e)return b+d;if((a/=e/2)<1)return d/2*Math.pow(2,10*(a-1))+b;return d/2*(-Math.pow(2,-10*--a)+2)+b},easeInCirc:function(c,a,b,d,e){return-d*(Math.sqrt(1-(a/=e)*a)-1)+b},easeOutCirc:function(c,a,b,d,e){return d*Math.sqrt(1-(a=a/e-1)*a)+b},easeInOutCirc:function(c,a,b,d,e){if((a/=e/2)<1)return-d/ |
||||
2*(Math.sqrt(1-a*a)-1)+b;return d/2*(Math.sqrt(1-(a-=2)*a)+1)+b},easeInElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return-(h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g))+b},easeOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e)==1)return b+d;g||(g=e*0.3);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);return h*Math.pow(2,-10* |
||||
a)*Math.sin((a*e-c)*2*Math.PI/g)+d+b},easeInOutElastic:function(c,a,b,d,e){c=1.70158;var g=0,h=d;if(a==0)return b;if((a/=e/2)==2)return b+d;g||(g=e*0.3*1.5);if(h<Math.abs(d)){h=d;c=g/4}else c=g/(2*Math.PI)*Math.asin(d/h);if(a<1)return-0.5*h*Math.pow(2,10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)+b;return h*Math.pow(2,-10*(a-=1))*Math.sin((a*e-c)*2*Math.PI/g)*0.5+d+b},easeInBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;return d*(a/=e)*a*((g+1)*a-g)+b},easeOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158; |
||||
return d*((a=a/e-1)*a*((g+1)*a+g)+1)+b},easeInOutBack:function(c,a,b,d,e,g){if(g==j)g=1.70158;if((a/=e/2)<1)return d/2*a*a*(((g*=1.525)+1)*a-g)+b;return d/2*((a-=2)*a*(((g*=1.525)+1)*a+g)+2)+b},easeInBounce:function(c,a,b,d,e){return d-f.easing.easeOutBounce(c,e-a,0,d,e)+b},easeOutBounce:function(c,a,b,d,e){return(a/=e)<1/2.75?d*7.5625*a*a+b:a<2/2.75?d*(7.5625*(a-=1.5/2.75)*a+0.75)+b:a<2.5/2.75?d*(7.5625*(a-=2.25/2.75)*a+0.9375)+b:d*(7.5625*(a-=2.625/2.75)*a+0.984375)+b},easeInOutBounce:function(c, |
||||
a,b,d,e){if(a<e/2)return f.easing.easeInBounce(c,a*2,0,d,e)*0.5+b;return f.easing.easeOutBounce(c,a*2-e,0,d,e)*0.5+d*0.5+b}})}(jQuery); |
||||
; |
||||
@ -0,0 +1,18 @@ |
||||
/* |
||||
* jQuery BBQ: Back Button & Query Library - v1.2.1 - 2/17/2010 |
||||
* http://benalman.com/projects/jquery-bbq-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman |
||||
* Dual licensed under the MIT and GPL licenses. |
||||
* http://benalman.com/about/license/
|
||||
*/ |
||||
(function($,p){var i,m=Array.prototype.slice,r=decodeURIComponent,a=$.param,c,l,v,b=$.bbq=$.bbq||{},q,u,j,e=$.event.special,d="hashchange",A="querystring",D="fragment",y="elemUrlAttr",g="location",k="href",t="src",x=/^.*\?|#.*$/g,w=/^.*\#/,h,C={};function E(F){return typeof F==="string"}function B(G){var F=m.call(arguments,1);return function(){return G.apply(this,F.concat(m.call(arguments)))}}function n(F){return F.replace(/^[^#]*#?(.*)$/,"$1")}function o(F){return F.replace(/(?:^[^?#]*\?([^#]*).*$)?.*/,"$1")}function f(H,M,F,I,G){var O,L,K,N,J;if(I!==i){K=F.match(H?/^([^#]*)\#?(.*)$/:/^([^#?]*)\??([^#]*)(#?.*)/);J=K[3]||"";if(G===2&&E(I)){L=I.replace(H?w:x,"")}else{N=l(K[2]);I=E(I)?l[H?D:A](I):I;L=G===2?I:G===1?$.extend({},I,N):$.extend({},N,I);L=a(L);if(H){L=L.replace(h,r)}}O=K[1]+(H?"#":L||!K[1]?"?":"")+L+J}else{O=M(F!==i?F:p[g][k])}return O}a[A]=B(f,0,o);a[D]=c=B(f,1,n);c.noEscape=function(G){G=G||"";var F=$.map(G.split(""),encodeURIComponent);h=new RegExp(F.join("|"),"g")};c.noEscape(",/");$.deparam=l=function(I,F){var H={},G={"true":!0,"false":!1,"null":null};$.each(I.replace(/\+/g," ").split("&"),function(L,Q){var K=Q.split("="),P=r(K[0]),J,O=H,M=0,R=P.split("]["),N=R.length-1;if(/\[/.test(R[0])&&/\]$/.test(R[N])){R[N]=R[N].replace(/\]$/,"");R=R.shift().split("[").concat(R);N=R.length-1}else{N=0}if(K.length===2){J=r(K[1]);if(F){J=J&&!isNaN(J)?+J:J==="undefined"?i:G[J]!==i?G[J]:J}if(N){for(;M<=N;M++){P=R[M]===""?O.length:R[M];O=O[P]=M<N?O[P]||(R[M+1]&&isNaN(R[M+1])?{}:[]):J}}else{if($.isArray(H[P])){H[P].push(J)}else{if(H[P]!==i){H[P]=[H[P],J]}else{H[P]=J}}}}else{if(P){H[P]=F?i:""}}});return H};function z(H,F,G){if(F===i||typeof F==="boolean"){G=F;F=a[H?D:A]()}else{F=E(F)?F.replace(H?w:x,""):F}return l(F,G)}l[A]=B(z,0);l[D]=v=B(z,1);$[y]||($[y]=function(F){return $.extend(C,F)})({a:k,base:k,iframe:t,img:t,input:t,form:"action",link:k,script:t});j=$[y];function s(I,G,H,F){if(!E(H)&&typeof H!=="object"){F=H;H=G;G=i}return this.each(function(){var L=$(this),J=G||j()[(this.nodeName||"").toLowerCase()]||"",K=J&&L.attr(J)||"";L.attr(J,a[I](K,H,F))})}$.fn[A]=B(s,A);$.fn[D]=B(s,D);b.pushState=q=function(I,F){if(E(I)&&/^#/.test(I)&&F===i){F=2}var H=I!==i,G=c(p[g][k],H?I:{},H?F:2);p[g][k]=G+(/#/.test(G)?"":"#")};b.getState=u=function(F,G){return F===i||typeof F==="boolean"?v(F):v(G)[F]};b.removeState=function(F){var G={};if(F!==i){G=u();$.each($.isArray(F)?F:arguments,function(I,H){delete G[H]})}q(G,2)};e[d]=$.extend(e[d],{add:function(F){var H;function G(J){var I=J[D]=c();J.getState=function(K,L){return K===i||typeof K==="boolean"?l(I,K):l(I,L)[K]};H.apply(this,arguments)}if($.isFunction(F)){H=F;return G}else{H=F.handler;F.handler=G}}})})(jQuery,this); |
||||
/* |
||||
* jQuery hashchange event - v1.2 - 2/11/2010 |
||||
* http://benalman.com/projects/jquery-hashchange-plugin/
|
||||
*
|
||||
* Copyright (c) 2010 "Cowboy" Ben Alman |
||||
* Dual licensed under the MIT and GPL licenses. |
||||
* http://benalman.com/about/license/
|
||||
*/ |
||||
(function($,i,b){var j,k=$.event.special,c="location",d="hashchange",l="href",f=$.browser,g=document.documentMode,h=f.msie&&(g===b||g<8),e="on"+d in i&&!h;function a(m){m=m||i[c][l];return m.replace(/^[^#]*#?(.*)$/,"$1")}$[d+"Delay"]=100;k[d]=$.extend(k[d],{setup:function(){if(e){return false}$(j.start)},teardown:function(){if(e){return false}$(j.stop)}});j=(function(){var m={},r,n,o,q;function p(){o=q=function(s){return s};if(h){n=$('<iframe src="javascript:0"/>').hide().insertAfter("body")[0].contentWindow;q=function(){return a(n.document[c][l])};o=function(u,s){if(u!==s){var t=n.document;t.open().close();t[c].hash="#"+u}};o(a())}}m.start=function(){if(r){return}var t=a();o||p();(function s(){var v=a(),u=q(t);if(v!==t){o(t=v,u);$(i).trigger(d)}else{if(u!==t){i[c][l]=i[c][l].replace(/#.*/,"")+"#"+u}}r=setTimeout(s,$[d+"Delay"])})()};m.stop=function(){if(!n){r&&clearTimeout(r);r=0}};return m})()})(jQuery,this); |
||||
@ -0,0 +1,675 @@ |
||||
/*! |
||||
* jQuery Form Plugin |
||||
* version: 2.43 (12-MAR-2010) |
||||
* @requires jQuery v1.3.2 or later |
||||
* |
||||
* Examples and documentation at: http://malsup.com/jquery/form/
|
||||
* Dual licensed under the MIT and GPL licenses: |
||||
* http://www.opensource.org/licenses/mit-license.php
|
||||
* http://www.gnu.org/licenses/gpl.html
|
||||
*/ |
||||
;(function($) { |
||||
|
||||
/* |
||||
Usage Note: |
||||
----------- |
||||
Do not use both ajaxSubmit and ajaxForm on the same form. These |
||||
functions are intended to be exclusive. Use ajaxSubmit if you want |
||||
to bind your own submit handler to the form. For example, |
||||
|
||||
$(document).ready(function() { |
||||
$('#myForm').bind('submit', function() { |
||||
$(this).ajaxSubmit({ |
||||
target: '#output' |
||||
}); |
||||
return false; // <-- important!
|
||||
}); |
||||
}); |
||||
|
||||
Use ajaxForm when you want the plugin to manage all the event binding |
||||
for you. For example, |
||||
|
||||
$(document).ready(function() { |
||||
$('#myForm').ajaxForm({ |
||||
target: '#output' |
||||
}); |
||||
}); |
||||
|
||||
When using ajaxForm, the ajaxSubmit function will be invoked for you |
||||
at the appropriate time. |
||||
*/ |
||||
|
||||
/** |
||||
* ajaxSubmit() provides a mechanism for immediately submitting |
||||
* an HTML form using AJAX. |
||||
*/ |
||||
$.fn.ajaxSubmit = function(options) { |
||||
// fast fail if nothing selected (http://dev.jquery.com/ticket/2752)
|
||||
if (!this.length) { |
||||
log('ajaxSubmit: skipping submit process - no element selected'); |
||||
return this; |
||||
} |
||||
|
||||
if (typeof options == 'function') |
||||
options = { success: options }; |
||||
|
||||
var url = $.trim(this.attr('action')); |
||||
if (url) { |
||||
// clean url (don't include hash vaue)
|
||||
url = (url.match(/^([^#]+)/)||[])[1]; |
||||
} |
||||
url = url || window.location.href || ''; |
||||
|
||||
options = $.extend({ |
||||
url: url, |
||||
type: this.attr('method') || 'GET', |
||||
iframeSrc: /^https/i.test(window.location.href || '') ? 'javascript:false' : 'about:blank' |
||||
}, options || {}); |
||||
|
||||
// hook for manipulating the form data before it is extracted;
|
||||
// convenient for use with rich editors like tinyMCE or FCKEditor
|
||||
var veto = {}; |
||||
this.trigger('form-pre-serialize', [this, options, veto]); |
||||
if (veto.veto) { |
||||
log('ajaxSubmit: submit vetoed via form-pre-serialize trigger'); |
||||
return this; |
||||
} |
||||
|
||||
// provide opportunity to alter form data before it is serialized
|
||||
if (options.beforeSerialize && options.beforeSerialize(this, options) === false) { |
||||
log('ajaxSubmit: submit aborted via beforeSerialize callback'); |
||||
return this; |
||||
} |
||||
|
||||
var a = this.formToArray(options.semantic); |
||||
if (options.data) { |
||||
options.extraData = options.data; |
||||
for (var n in options.data) { |
||||
if(options.data[n] instanceof Array) { |
||||
for (var k in options.data[n]) |
||||
a.push( { name: n, value: options.data[n][k] } ); |
||||
} |
||||
else |
||||
a.push( { name: n, value: options.data[n] } ); |
||||
} |
||||
} |
||||
|
||||
// give pre-submit callback an opportunity to abort the submit
|
||||
if (options.beforeSubmit && options.beforeSubmit(a, this, options) === false) { |
||||
log('ajaxSubmit: submit aborted via beforeSubmit callback'); |
||||
return this; |
||||
} |
||||
|
||||
// fire vetoable 'validate' event
|
||||
this.trigger('form-submit-validate', [a, this, options, veto]); |
||||
if (veto.veto) { |
||||
log('ajaxSubmit: submit vetoed via form-submit-validate trigger'); |
||||
return this; |
||||
} |
||||
|
||||
var q = $.param(a); |
||||
|
||||
if (options.type.toUpperCase() == 'GET') { |
||||
options.url += (options.url.indexOf('?') >= 0 ? '&' : '?') + q; |
||||
options.data = null; // data is null for 'get'
|
||||
} |
||||
else |
||||
options.data = q; // data is the query string for 'post'
|
||||
|
||||
var $form = this, callbacks = []; |
||||
if (options.resetForm) callbacks.push(function() { $form.resetForm(); }); |
||||
if (options.clearForm) callbacks.push(function() { $form.clearForm(); }); |
||||
|
||||
// perform a load on the target only if dataType is not provided
|
||||
if (!options.dataType && options.target) { |
||||
var oldSuccess = options.success || function(){}; |
||||
callbacks.push(function(data) { |
||||
var fn = options.replaceTarget ? 'replaceWith' : 'html'; |
||||
$(options.target)[fn](data).each(oldSuccess, arguments); |
||||
}); |
||||
} |
||||
else if (options.success) |
||||
callbacks.push(options.success); |
||||
|
||||
options.success = function(data, status, xhr) { // jQuery 1.4+ passes xhr as 3rd arg
|
||||
for (var i=0, max=callbacks.length; i < max; i++) |
||||
callbacks[i].apply(options, [data, status, xhr || $form, $form]); |
||||
}; |
||||
|
||||
// are there files to upload?
|
||||
var files = $('input:file', this).fieldValue(); |
||||
var found = false; |
||||
for (var j=0; j < files.length; j++) |
||||
if (files[j]) |
||||
found = true; |
||||
|
||||
var multipart = false; |
||||
// var mp = 'multipart/form-data';
|
||||
// multipart = ($form.attr('enctype') == mp || $form.attr('encoding') == mp);
|
||||
|
||||
// options.iframe allows user to force iframe mode
|
||||
// 06-NOV-09: now defaulting to iframe mode if file input is detected
|
||||
if ((files.length && options.iframe !== false) || options.iframe || found || multipart) { |
||||
// hack to fix Safari hang (thanks to Tim Molendijk for this)
|
||||
// see: http://groups.google.com/group/jquery-dev/browse_thread/thread/36395b7ab510dd5d
|
||||
if (options.closeKeepAlive) |
||||
$.get(options.closeKeepAlive, fileUpload); |
||||
else |
||||
fileUpload(); |
||||
} |
||||
else |
||||
$.ajax(options); |
||||
|
||||
// fire 'notify' event
|
||||
this.trigger('form-submit-notify', [this, options]); |
||||
return this; |
||||
|
||||
|
||||
// private function for handling file uploads (hat tip to YAHOO!)
|
||||
function fileUpload() { |
||||
var form = $form[0]; |
||||
|
||||
if ($(':input[name=submit]', form).length) { |
||||
alert('Error: Form elements must not be named "submit".'); |
||||
return; |
||||
} |
||||
|
||||
var opts = $.extend({}, $.ajaxSettings, options); |
||||
var s = $.extend(true, {}, $.extend(true, {}, $.ajaxSettings), opts); |
||||
|
||||
var id = 'jqFormIO' + (new Date().getTime()); |
||||
var $io = $('<iframe id="' + id + '" name="' + id + '" src="'+ opts.iframeSrc +'" onload="(jQuery(this).data(\'form-plugin-onload\'))()" />'); |
||||
var io = $io[0]; |
||||
|
||||
$io.css({ position: 'absolute', top: '-1000px', left: '-1000px' }); |
||||
|
||||
var xhr = { // mock object
|
||||
aborted: 0, |
||||
responseText: null, |
||||
responseXML: null, |
||||
status: 0, |
||||
statusText: 'n/a', |
||||
getAllResponseHeaders: function() {}, |
||||
getResponseHeader: function() {}, |
||||
setRequestHeader: function() {}, |
||||
abort: function() { |
||||
this.aborted = 1; |
||||
$io.attr('src', opts.iframeSrc); // abort op in progress
|
||||
} |
||||
}; |
||||
|
||||
var g = opts.global; |
||||
// trigger ajax global events so that activity/block indicators work like normal
|
||||
if (g && ! $.active++) $.event.trigger("ajaxStart"); |
||||
if (g) $.event.trigger("ajaxSend", [xhr, opts]); |
||||
|
||||
if (s.beforeSend && s.beforeSend(xhr, s) === false) { |
||||
s.global && $.active--; |
||||
return; |
||||
} |
||||
if (xhr.aborted) |
||||
return; |
||||
|
||||
var cbInvoked = false; |
||||
var timedOut = 0; |
||||
|
||||
// add submitting element to data if we know it
|
||||
var sub = form.clk; |
||||
if (sub) { |
||||
var n = sub.name; |
||||
if (n && !sub.disabled) { |
||||
opts.extraData = opts.extraData || {}; |
||||
opts.extraData[n] = sub.value; |
||||
if (sub.type == "image") { |
||||
opts.extraData[n+'.x'] = form.clk_x; |
||||
opts.extraData[n+'.y'] = form.clk_y; |
||||
} |
||||
} |
||||
} |
||||
|
||||
// take a breath so that pending repaints get some cpu time before the upload starts
|
||||
function doSubmit() { |
||||
// make sure form attrs are set
|
||||
var t = $form.attr('target'), a = $form.attr('action'); |
||||
|
||||
// update form attrs in IE friendly way
|
||||
form.setAttribute('target',id); |
||||
if (form.getAttribute('method') != 'POST') |
||||
form.setAttribute('method', 'POST'); |
||||
if (form.getAttribute('action') != opts.url) |
||||
form.setAttribute('action', opts.url); |
||||
|
||||
// ie borks in some cases when setting encoding
|
||||
if (! opts.skipEncodingOverride) { |
||||
$form.attr({ |
||||
encoding: 'multipart/form-data', |
||||
enctype: 'multipart/form-data' |
||||
}); |
||||
} |
||||
|
||||
// support timout
|
||||
if (opts.timeout) |
||||
setTimeout(function() { timedOut = true; cb(); }, opts.timeout); |
||||
|
||||
// add "extra" data to form if provided in options
|
||||
var extraInputs = []; |
||||
try { |
||||
if (opts.extraData) |
||||
for (var n in opts.extraData) |
||||
extraInputs.push( |
||||
$('<input type="hidden" name="'+n+'" value="'+opts.extraData[n]+'" />') |
||||
.appendTo(form)[0]); |
||||
|
||||
// add iframe to doc and submit the form
|
||||
$io.appendTo('body'); |
||||
$io.data('form-plugin-onload', cb); |
||||
form.submit(); |
||||
} |
||||
finally { |
||||
// reset attrs and remove "extra" input elements
|
||||
form.setAttribute('action',a); |
||||
t ? form.setAttribute('target', t) : $form.removeAttr('target'); |
||||
$(extraInputs).remove(); |
||||
} |
||||
}; |
||||
|
||||
if (opts.forceSync) |
||||
doSubmit(); |
||||
else |
||||
setTimeout(doSubmit, 10); // this lets dom updates render
|
||||
|
||||
var domCheckCount = 100; |
||||
|
||||
function cb() { |
||||
if (cbInvoked)
|
||||
return; |
||||
|
||||
var ok = true; |
||||
try { |
||||
if (timedOut) throw 'timeout'; |
||||
// extract the server response from the iframe
|
||||
var data, doc; |
||||
|
||||
doc = io.contentWindow ? io.contentWindow.document : io.contentDocument ? io.contentDocument : io.document; |
||||
|
||||
var isXml = opts.dataType == 'xml' || doc.XMLDocument || $.isXMLDoc(doc); |
||||
log('isXml='+isXml); |
||||
if (!isXml && (doc.body == null || doc.body.innerHTML == '')) { |
||||
if (--domCheckCount) { |
||||
// in some browsers (Opera) the iframe DOM is not always traversable when
|
||||
// the onload callback fires, so we loop a bit to accommodate
|
||||
log('requeing onLoad callback, DOM not available'); |
||||
setTimeout(cb, 250); |
||||
return; |
||||
} |
||||
log('Could not access iframe DOM after 100 tries.'); |
||||
return; |
||||
} |
||||
|
||||
log('response detected'); |
||||
cbInvoked = true; |
||||
xhr.responseText = doc.body ? doc.body.innerHTML : null; |
||||
xhr.responseXML = doc.XMLDocument ? doc.XMLDocument : doc; |
||||
xhr.getResponseHeader = function(header){ |
||||
var headers = {'content-type': opts.dataType}; |
||||
return headers[header]; |
||||
}; |
||||
|
||||
if (opts.dataType == 'json' || opts.dataType == 'script') { |
||||
// see if user embedded response in textarea
|
||||
var ta = doc.getElementsByTagName('textarea')[0]; |
||||
if (ta) |
||||
xhr.responseText = ta.value; |
||||
else { |
||||
// account for browsers injecting pre around json response
|
||||
var pre = doc.getElementsByTagName('pre')[0]; |
||||
if (pre) |
||||
xhr.responseText = pre.innerHTML; |
||||
}
|
||||
} |
||||
else if (opts.dataType == 'xml' && !xhr.responseXML && xhr.responseText != null) { |
||||
xhr.responseXML = toXml(xhr.responseText); |
||||
} |
||||
data = $.httpData(xhr, opts.dataType); |
||||
} |
||||
catch(e){ |
||||
log('error caught:',e); |
||||
ok = false; |
||||
xhr.error = e; |
||||
$.handleError(opts, xhr, 'error', e); |
||||
} |
||||
|
||||
// ordering of these callbacks/triggers is odd, but that's how $.ajax does it
|
||||
if (ok) { |
||||
opts.success(data, 'success'); |
||||
if (g) $.event.trigger("ajaxSuccess", [xhr, opts]); |
||||
} |
||||
if (g) $.event.trigger("ajaxComplete", [xhr, opts]); |
||||
if (g && ! --$.active) $.event.trigger("ajaxStop"); |
||||
if (opts.complete) opts.complete(xhr, ok ? 'success' : 'error'); |
||||
|
||||
// clean up
|
||||
setTimeout(function() { |
||||
$io.removeData('form-plugin-onload'); |
||||
$io.remove(); |
||||
xhr.responseXML = null; |
||||
}, 100); |
||||
}; |
||||
|
||||
function toXml(s, doc) { |
||||
if (window.ActiveXObject) { |
||||
doc = new ActiveXObject('Microsoft.XMLDOM'); |
||||
doc.async = 'false'; |
||||
doc.loadXML(s); |
||||
} |
||||
else |
||||
doc = (new DOMParser()).parseFromString(s, 'text/xml'); |
||||
return (doc && doc.documentElement && doc.documentElement.tagName != 'parsererror') ? doc : null; |
||||
}; |
||||
}; |
||||
}; |
||||
|
||||
/** |
||||
* ajaxForm() provides a mechanism for fully automating form submission. |
||||
* |
||||
* The advantages of using this method instead of ajaxSubmit() are: |
||||
* |
||||
* 1: This method will include coordinates for <input type="image" /> elements (if the element |
||||
* is used to submit the form). |
||||
* 2. This method will include the submit element's name/value data (for the element that was |
||||
* used to submit the form). |
||||
* 3. This method binds the submit() method to the form for you. |
||||
* |
||||
* The options argument for ajaxForm works exactly as it does for ajaxSubmit. ajaxForm merely |
||||
* passes the options argument along after properly binding events for submit elements and |
||||
* the form itself. |
||||
*/ |
||||
$.fn.ajaxForm = function(options) { |
||||
return this.ajaxFormUnbind().bind('submit.form-plugin', function(e) { |
||||
e.preventDefault(); |
||||
$(this).ajaxSubmit(options); |
||||
}).bind('click.form-plugin', function(e) { |
||||
var target = e.target; |
||||
var $el = $(target); |
||||
if (!($el.is(":submit,input:image"))) { |
||||
// is this a child element of the submit el? (ex: a span within a button)
|
||||
var t = $el.closest(':submit'); |
||||
if (t.length == 0) |
||||
return; |
||||
target = t[0]; |
||||
} |
||||
var form = this; |
||||
form.clk = target; |
||||
if (target.type == 'image') { |
||||
if (e.offsetX != undefined) { |
||||
form.clk_x = e.offsetX; |
||||
form.clk_y = e.offsetY; |
||||
} else if (typeof $.fn.offset == 'function') { // try to use dimensions plugin
|
||||
var offset = $el.offset(); |
||||
form.clk_x = e.pageX - offset.left; |
||||
form.clk_y = e.pageY - offset.top; |
||||
} else { |
||||
form.clk_x = e.pageX - target.offsetLeft; |
||||
form.clk_y = e.pageY - target.offsetTop; |
||||
} |
||||
} |
||||
// clear form vars
|
||||
setTimeout(function() { form.clk = form.clk_x = form.clk_y = null; }, 100); |
||||
}); |
||||
}; |
||||
|
||||
// ajaxFormUnbind unbinds the event handlers that were bound by ajaxForm
|
||||
$.fn.ajaxFormUnbind = function() { |
||||
return this.unbind('submit.form-plugin click.form-plugin'); |
||||
}; |
||||
|
||||
/** |
||||
* formToArray() gathers form element data into an array of objects that can |
||||
* be passed to any of the following ajax functions: $.get, $.post, or load. |
||||
* Each object in the array has both a 'name' and 'value' property. An example of |
||||
* an array for a simple login form might be: |
||||
* |
||||
* [ { name: 'username', value: 'jresig' }, { name: 'password', value: 'secret' } ] |
||||
* |
||||
* It is this array that is passed to pre-submit callback functions provided to the |
||||
* ajaxSubmit() and ajaxForm() methods. |
||||
*/ |
||||
$.fn.formToArray = function(semantic) { |
||||
var a = []; |
||||
if (this.length == 0) return a; |
||||
|
||||
var form = this[0]; |
||||
var els = semantic ? form.getElementsByTagName('*') : form.elements; |
||||
if (!els) return a; |
||||
for(var i=0, max=els.length; i < max; i++) { |
||||
var el = els[i]; |
||||
var n = el.name; |
||||
if (!n) continue; |
||||
|
||||
if (semantic && form.clk && el.type == "image") { |
||||
// handle image inputs on the fly when semantic == true
|
||||
if(!el.disabled && form.clk == el) { |
||||
a.push({name: n, value: $(el).val()}); |
||||
a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); |
||||
} |
||||
continue; |
||||
} |
||||
|
||||
var v = $.fieldValue(el, true); |
||||
if (v && v.constructor == Array) { |
||||
for(var j=0, jmax=v.length; j < jmax; j++) |
||||
a.push({name: n, value: v[j]}); |
||||
} |
||||
else if (v !== null && typeof v != 'undefined') |
||||
a.push({name: n, value: v}); |
||||
} |
||||
|
||||
if (!semantic && form.clk) { |
||||
// input type=='image' are not found in elements array! handle it here
|
||||
var $input = $(form.clk), input = $input[0], n = input.name; |
||||
if (n && !input.disabled && input.type == 'image') { |
||||
a.push({name: n, value: $input.val()}); |
||||
a.push({name: n+'.x', value: form.clk_x}, {name: n+'.y', value: form.clk_y}); |
||||
} |
||||
} |
||||
return a; |
||||
}; |
||||
|
||||
/** |
||||
* Serializes form data into a 'submittable' string. This method will return a string |
||||
* in the format: name1=value1&name2=value2 |
||||
*/ |
||||
$.fn.formSerialize = function(semantic) { |
||||
//hand off to jQuery.param for proper encoding
|
||||
return $.param(this.formToArray(semantic)); |
||||
}; |
||||
|
||||
/** |
||||
* Serializes all field elements in the jQuery object into a query string. |
||||
* This method will return a string in the format: name1=value1&name2=value2 |
||||
*/ |
||||
$.fn.fieldSerialize = function(successful) { |
||||
var a = []; |
||||
this.each(function() { |
||||
var n = this.name; |
||||
if (!n) return; |
||||
var v = $.fieldValue(this, successful); |
||||
if (v && v.constructor == Array) { |
||||
for (var i=0,max=v.length; i < max; i++) |
||||
a.push({name: n, value: v[i]}); |
||||
} |
||||
else if (v !== null && typeof v != 'undefined') |
||||
a.push({name: this.name, value: v}); |
||||
}); |
||||
//hand off to jQuery.param for proper encoding
|
||||
return $.param(a); |
||||
}; |
||||
|
||||
/** |
||||
* Returns the value(s) of the element in the matched set. For example, consider the following form: |
||||
* |
||||
* <form><fieldset> |
||||
* <input name="A" type="text" /> |
||||
* <input name="A" type="text" /> |
||||
* <input name="B" type="checkbox" value="B1" /> |
||||
* <input name="B" type="checkbox" value="B2"/> |
||||
* <input name="C" type="radio" value="C1" /> |
||||
* <input name="C" type="radio" value="C2" /> |
||||
* </fieldset></form> |
||||
* |
||||
* var v = $(':text').fieldValue(); |
||||
* // if no values are entered into the text inputs
|
||||
* v == ['',''] |
||||
* // if values entered into the text inputs are 'foo' and 'bar'
|
||||
* v == ['foo','bar'] |
||||
* |
||||
* var v = $(':checkbox').fieldValue(); |
||||
* // if neither checkbox is checked
|
||||
* v === undefined |
||||
* // if both checkboxes are checked
|
||||
* v == ['B1', 'B2'] |
||||
* |
||||
* var v = $(':radio').fieldValue(); |
||||
* // if neither radio is checked
|
||||
* v === undefined |
||||
* // if first radio is checked
|
||||
* v == ['C1'] |
||||
* |
||||
* The successful argument controls whether or not the field element must be 'successful' |
||||
* (per http://www.w3.org/TR/html4/interact/forms.html#successful-controls).
|
||||
* The default value of the successful argument is true. If this value is false the value(s) |
||||
* for each element is returned. |
||||
* |
||||
* Note: This method *always* returns an array. If no valid value can be determined the |
||||
* array will be empty, otherwise it will contain one or more values. |
||||
*/ |
||||
$.fn.fieldValue = function(successful) { |
||||
for (var val=[], i=0, max=this.length; i < max; i++) { |
||||
var el = this[i]; |
||||
var v = $.fieldValue(el, successful); |
||||
if (v === null || typeof v == 'undefined' || (v.constructor == Array && !v.length)) |
||||
continue; |
||||
v.constructor == Array ? $.merge(val, v) : val.push(v); |
||||
} |
||||
return val; |
||||
}; |
||||
|
||||
/** |
||||
* Returns the value of the field element. |
||||
*/ |
||||
$.fieldValue = function(el, successful) { |
||||
var n = el.name, t = el.type, tag = el.tagName.toLowerCase(); |
||||
if (typeof successful == 'undefined') successful = true; |
||||
|
||||
if (successful && (!n || el.disabled || t == 'reset' || t == 'button' || |
||||
(t == 'checkbox' || t == 'radio') && !el.checked || |
||||
(t == 'submit' || t == 'image') && el.form && el.form.clk != el || |
||||
tag == 'select' && el.selectedIndex == -1)) |
||||
return null; |
||||
|
||||
if (tag == 'select') { |
||||
var index = el.selectedIndex; |
||||
if (index < 0) return null; |
||||
var a = [], ops = el.options; |
||||
var one = (t == 'select-one'); |
||||
var max = (one ? index+1 : ops.length); |
||||
for(var i=(one ? index : 0); i < max; i++) { |
||||
var op = ops[i]; |
||||
if (op.selected) { |
||||
var v = op.value; |
||||
if (!v) // extra pain for IE...
|
||||
v = (op.attributes && op.attributes['value'] && !(op.attributes['value'].specified)) ? op.text : op.value; |
||||
if (one) return v; |
||||
a.push(v); |
||||
} |
||||
} |
||||
return a; |
||||
} |
||||
return el.value; |
||||
}; |
||||
|
||||
/** |
||||
* Clears the form data. Takes the following actions on the form's input fields: |
||||
* - input text fields will have their 'value' property set to the empty string |
||||
* - select elements will have their 'selectedIndex' property set to -1 |
||||
* - checkbox and radio inputs will have their 'checked' property set to false |
||||
* - inputs of type submit, button, reset, and hidden will *not* be effected |
||||
* - button elements will *not* be effected |
||||
*/ |
||||
$.fn.clearForm = function() { |
||||
return this.each(function() { |
||||
$('input,select,textarea', this).clearFields(); |
||||
}); |
||||
}; |
||||
|
||||
/** |
||||
* Clears the selected form elements. |
||||
*/ |
||||
$.fn.clearFields = $.fn.clearInputs = function() { |
||||
return this.each(function() { |
||||
var t = this.type, tag = this.tagName.toLowerCase(); |
||||
if (t == 'text' || t == 'password' || tag == 'textarea') |
||||
this.value = ''; |
||||
else if (t == 'checkbox' || t == 'radio') |
||||
this.checked = false; |
||||
else if (tag == 'select') |
||||
this.selectedIndex = -1; |
||||
}); |
||||
}; |
||||
|
||||
/** |
||||
* Resets the form data. Causes all form elements to be reset to their original value. |
||||
*/ |
||||
$.fn.resetForm = function() { |
||||
return this.each(function() { |
||||
// guard against an input with the name of 'reset'
|
||||
// note that IE reports the reset function as an 'object'
|
||||
if (typeof this.reset == 'function' || (typeof this.reset == 'object' && !this.reset.nodeType)) |
||||
this.reset(); |
||||
}); |
||||
}; |
||||
|
||||
/** |
||||
* Enables or disables any matching elements. |
||||
*/ |
||||
$.fn.enable = function(b) { |
||||
if (b == undefined) b = true; |
||||
return this.each(function() { |
||||
this.disabled = !b; |
||||
}); |
||||
}; |
||||
|
||||
/** |
||||
* Checks/unchecks any matching checkboxes or radio buttons and |
||||
* selects/deselects and matching option elements. |
||||
*/ |
||||
$.fn.selected = function(select) { |
||||
if (select == undefined) select = true; |
||||
return this.each(function() { |
||||
var t = this.type; |
||||
if (t == 'checkbox' || t == 'radio') |
||||
this.checked = select; |
||||
else if (this.tagName.toLowerCase() == 'option') { |
||||
var $sel = $(this).parent('select'); |
||||
if (select && $sel[0] && $sel[0].type == 'select-one') { |
||||
// deselect all other options
|
||||
$sel.find('option').selected(false); |
||||
} |
||||
this.selected = select; |
||||
} |
||||
}); |
||||
}; |
||||
|
||||
// helper fn for console logging
|
||||
// set $.fn.ajaxSubmit.debug to true to enable debug logging
|
||||
function log() { |
||||
if ($.fn.ajaxSubmit.debug) { |
||||
var msg = '[jquery.form] ' + Array.prototype.join.call(arguments,''); |
||||
if (window.console && window.console.log) |
||||
window.console.log(msg); |
||||
else if (window.opera && window.opera.postError) |
||||
window.opera.postError(msg); |
||||
} |
||||
}; |
||||
|
||||
})(jQuery); |
||||
File diff suppressed because one or more lines are too long
File diff suppressed because it is too large
Load Diff
Loading…
Reference in new issue