193 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
			
		
		
	
	
			193 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
| /*
 | |
| *
 | |
| * jRails ajax extras
 | |
| * version 0.1
 | |
| * <aaron@ennerchi.com> | http://www.ennerchi.com
 | |
| *
 | |
| */
 | |
| 
 | |
| (function($) {
 | |
| 	$.ajaxSettings.accepts._default = "text/javascript, text/html, application/xml, text/xml, */*";
 | |
| })(jQuery);
 | |
| 
 | |
| 
 | |
| /*
 | |
| *
 | |
| * jRails form extras
 | |
| * <aaron@ennerchi.com> | http://www.ennerchi.com
 | |
| *
 | |
| */
 | |
| 
 | |
| 
 | |
| (function($) {
 | |
| 	// reset a form
 | |
| 	$.fn.reset = 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();
 | |
| 		});
 | |
| 	};
 | |
| 	// enable a form element
 | |
| 	$.fn.enable = function() {
 | |
| 		return this.each(function() {
 | |
| 			this.disabled = false;
 | |
| 		});
 | |
| 	};
 | |
| 	// disable a form element
 | |
| 	$.fn.disable = function() {
 | |
| 		return this.each(function() {
 | |
| 			this.disabled = true;
 | |
| 		});
 | |
| 	};
 | |
| 
 | |
| })(jQuery);
 | |
| 
 | |
| /*
 | |
| *
 | |
| * jRails form observer plugin
 | |
| * version 0.2
 | |
| * <aaron@ennerchi.com> | http://www.ennerchi.com
 | |
| *
 | |
| */
 | |
| 
 | |
| (function($) {
 | |
| 	$.extend({ // Translate field to event
 | |
| 		fieldEvent: function(el, obs) {
 | |
| 			var field = el[0] || el, e = 'change';
 | |
| 			if (field.type == 'radio' || field.type == 'checkbox') e = 'click';
 | |
| 			else if (obs && field.type == 'text' || field.type == 'textarea') e = 'keyup';
 | |
| 			return e;
 | |
| 		}
 | |
| 	});
 | |
| 	$.fn.extend({ // Delayed observer for fields and forms
 | |
| 		delayedObserver: function(delay, callback){
 | |
| 			var el = $(this);
 | |
| 			if (typeof window.delayedObserverStack == 'undefined') window.delayedObserverStack = [];
 | |
| 			if (typeof window.delayedObserverCallback == 'undefined') {
 | |
| 				window.delayedObserverCallback = function(stackPos) {
 | |
| 					var observed = window.delayedObserverStack[stackPos];
 | |
| 					if (observed.timer) clearTimeout(observed.timer);
 | |
| 					observed.timer = setTimeout(function(){
 | |
| 						observed.timer = null;
 | |
| 						observed.callback(observed.obj, observed.obj.formVal());
 | |
| 					}, observed.delay * 1000);
 | |
| 					observed.oldVal = observed.obj.formVal();
 | |
| 				};
 | |
| 			}
 | |
| 			window.delayedObserverStack.push({
 | |
| 				obj: el, timer: null, delay: delay,
 | |
| 				oldVal: el.formVal(), callback: callback
 | |
| 			});
 | |
| 			var stackPos = window.delayedObserverStack.length-1;
 | |
| 			if (el[0].tagName == 'FORM') {
 | |
| 				$(':input', el).each(function(){
 | |
| 					var field = $(this);
 | |
| 					field.bind($.fieldEvent(field, delay), function(){
 | |
| 						var observed = window.delayedObserverStack[stackPos];
 | |
| 						if (observed.obj.formVal() == observed.oldVal) return;
 | |
| 						else window.delayedObserverCallback(stackPos);
 | |
| 					});
 | |
| 				});
 | |
| 			} else {
 | |
| 				el.bind($.fieldEvent(el, delay), function(){
 | |
| 					var observed = window.delayedObserverStack[stackPos];
 | |
| 					if (observed.obj.formVal() == observed.oldVal) return;
 | |
| 					else window.delayedObserverCallback(stackPos);
 | |
| 				});
 | |
| 			};
 | |
| 		},
 | |
| 		formVal: function() { // Gets form values
 | |
| 			var el = this[0];
 | |
| 			if(el.tagName == 'FORM') return this.serialize();
 | |
| 			if(el.type == 'checkbox' || el.type == 'radio') return this.filter('input:checked').val() || '';
 | |
| 			else return this.val();
 | |
| 		}
 | |
| 	});
 | |
| })(jQuery);
 | |
| 
 | |
| /*
 | |
| *
 | |
| * jRails visual effects stubs
 | |
| * version 0.2
 | |
| * <aaron@ennerchi.com> | http://www.ennerchi.com
 | |
| *
 | |
| */
 | |
| 
 | |
| (function($) {
 | |
| 	$.fn.extend({
 | |
| 		visualEffect : function(o) {
 | |
| 			e = o.replace(/\_(.)/g, function(m, l){return l.toUpperCase()});
 | |
| 			return eval('$(this).'+e+'()');
 | |
| 		},
 | |
| 		appear : function(speed, callback) {
 | |
| 			return this.fadeIn(speed, callback);
 | |
| 		},
 | |
| 		blindDown : function(speed, callback) {
 | |
| 			return this.show('blind', { direction: 'vertical' }, speed, callback);
 | |
| 		},
 | |
| 		blindUp : function(speed, callback) {
 | |
| 			return this.hide('blind', { direction: 'vertical' }, speed, callback);
 | |
| 		},
 | |
| 		blindRight : function(speed, callback) {
 | |
| 			return this.show('blind', { direction: 'horizontal' }, speed, callback);
 | |
| 		},
 | |
| 		blindLeft : function(speed, callback) {
 | |
| 			this.hide('blind', { direction: 'horizontal' }, speed, callback);
 | |
| 			return this;
 | |
| 		},
 | |
| 		dropOut : function(speed, callback) {
 | |
| 			return this.hide('drop', {direction: 'down' }, speed, callback);
 | |
| 		},
 | |
| 		dropIn : function(speed, callback) {
 | |
| 			return this.show('drop', { direction: 'up' }, speed, callback);
 | |
| 		},
 | |
| 		fade : function(speed, callback) {
 | |
| 			return this.fadeOut(speed, callback);
 | |
| 		},
 | |
| 		fadeToggle : function(speed, callback) {
 | |
| 			return this.animate({opacity: 'toggle'}, speed, callback);
 | |
| 		},
 | |
| 		fold : function(speed, callback) {
 | |
| 			return this.hide('fold', {}, speed, callback);
 | |
| 		},
 | |
| 		foldOut : function(speed, callback) {
 | |
| 			return this.show('fold', {}, speed, callback);
 | |
| 		},
 | |
| 		grow : function(speed, callback) {
 | |
| 			return this.show('scale', {}, speed, callback);
 | |
| 		},
 | |
| 		highlight : function(speed, callback) {
 | |
| 			return this.show('highlight', {}, speed, callback);
 | |
| 		},
 | |
| 		puff : function(speed, callback) {
 | |
| 			return this.hide('puff', {}, speed, callback);
 | |
| 		},
 | |
| 		pulsate : function(speed, callback) {
 | |
| 			return this.show('pulsate', {}, speed, callback);
 | |
| 		},
 | |
| 		shake : function(speed, callback) {
 | |
| 			return this.show('shake', {}, speed, callback);
 | |
| 		},
 | |
| 		shrink : function(speed, callback) {
 | |
| 			return this.hide('scale', {}, speed, callback);
 | |
| 		},
 | |
| 		squish : function(speed, callback) {
 | |
| 			return this.hide('scale', { origin: ['top', 'left'] }, speed, callback);
 | |
| 		},
 | |
| 		slideUp : function(speed, callback) {
 | |
| 			return this.hide('slide', { direction: 'up'}, speed, callback);
 | |
| 		},
 | |
| 		slideDown : function(speed, callback) {
 | |
| 			return this.show('slide', { direction: 'up'}, speed, callback);
 | |
| 		},
 | |
| 		switchOff : function(speed, callback) {
 | |
| 			return this.hide('clip', {}, speed, callback);
 | |
| 		},
 | |
| 		switchOn : function(speed, callback) {
 | |
| 			return this.show('clip', {}, speed, callback);
 | |
| 		}
 | |
| 	});
 | |
| })(jQuery);
 |