/** Verify.js - v0.0.1 - 2013/06/12 * https://github.com/jpillora/verify * Copyright (c) 2013 Jaime Pillora - MIT */ (function(window,document,undefined) { (function($) { if(window.console === undefined) window.console = { isFake: true }; var fns = ["log","warn","info","group","groupCollapsed","groupEnd"]; for (var i = fns.length - 1; i >= 0; i--) if(window.console[fns[i]] === undefined) window.console[fns[i]] = $.noop; if(!$) return; var I = function(i){ return i; }; function log() { if(this.suppressLog) return; cons('log', this, arguments); } function warn() { cons('warn', this, arguments); } function info() { cons('info', this, arguments); } function cons(type, opts, args) { if(window.console === undefined || window.console.isFake === true) return; var a = $.map(args,I); a[0] = [opts.prefix, a[0], opts.postfix].join(''); var grp = $.type(a[a.length-1]) === 'boolean' ? a.pop() : null; //if(a[0]) a[0] = getName(this) + a[0]; if(grp === true) window.console.group(a[0]); if(a[0] && grp === null) if(window.navigator.userAgent.indexOf("MSIE") >= 0) window.console.log(a.join(',')); else window.console[type].apply(window.console, a); if(grp === false) window.console.groupEnd(); } function withOptions(opts) { return { log: function() { log.apply(opts, arguments); }, warn: function() { warn.apply(opts, arguments); }, info: function() { info.apply(opts, arguments); } }; } var console = function(opts) { opts = $.extend({}, console.defaults, opts); return withOptions(opts); }; console.defaults = { suppressLog: false, prefix: '', postfix: '' }; $.extend(console, withOptions(console.defaults)); if($.console === undefined) $.console = console; $.consoleNoConflict = console; }(jQuery)); //plugin wide ajax cache var ajaxCache = { loading: {}, loaded: {} } ; //callable from user defined rules. alias: r.ajax function ajaxHelper(userOpts, r) { var defaults = { method: "GET", timeout: 15 * 1000 }, exec = r._exec, promptContainer = exec.type === "GroupRuleExecution" ? exec.element.domElem : r.field, userSuccess = userOpts.success, userError = userOpts.error, options = exec.element.options, serialised = JSON ? JSON.stringify(userOpts) : guid(); function onErrorDefault(e) { log("ajax error"); r.callback("There has been an error"); } var userCallbacks = { success: userSuccess, error: userError || onErrorDefault }; //already completed if(ajaxCache.loaded[serialised]) { var args = ajaxCache.loaded[serialised], success = userCallbacks.success; success.apply(r, args); return; } //this request is in progress, //store callbacks for when first request completes if(!ajaxCache.loading[serialised]) ajaxCache.loading[serialised] = []; ajaxCache.loading[serialised].push(userCallbacks); if(ajaxCache.loading[serialised].length !== 1) return; options.prompt(promptContainer, "Checking...", "load"); function intercept() { options.prompt(promptContainer, false); var reqs = ajaxCache.loading[serialised]; while(reqs.length) reqs.pop().success.apply(r,arguments); ajaxCache.loaded[serialised] = arguments; } var realCallbacks = { success: intercept, error: intercept }; exec.ajax = $.ajax($.extend(defaults, userOpts, realCallbacks)); } // var guid = function() { // return (((1 + Math.random()) * 65536) | 0).toString(16).substring(1); // }; var guid = function() { return guid.curr++; }; guid.curr = 1; $.fn.verifyScrollView = function(onComplete) { var field = $(this).first(); if(field.length !== 1) return $(this); return $(this).verifyScrollTo(field, onComplete); }; $.fn.verifyScrollTo = function( target, options, callback ){ if(typeof options == 'function' && arguments.length == 2){ callback = options; options = target; } var settings = $.extend({ scrollTarget : target, offsetTop : 50, duration : 500, easing : 'swing' }, options); return this.each(function(){ var scrollPane = $(this); var scrollTarget = (typeof settings.scrollTarget == "number") ? settings.scrollTarget : $(settings.scrollTarget); var scrollY = (typeof scrollTarget == "number") ? scrollTarget : scrollTarget.offset().top + scrollPane.scrollTop() - parseInt(settings.offsetTop, 10); scrollPane.animate({scrollTop : scrollY }, parseInt(settings.duration, 10), settings.easing, function(){ if (typeof callback == 'function') { callback.call(this); } }); }); }; $.fn.equals = function(that) { if($(this).length !== that.length) return false; for(var i=0,l=$(this).length;i