| /** | 
|  * Double-tap jQuery Extension  | 
|  * @copy Appcropolis LLC (c) 2012. All rights reserved. | 
|  * @author Raul Sanchez (support@appcropolis.com) | 
|  * @date 2012-10-11 | 
|  * | 
|  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,  | 
|  * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | 
|  * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND | 
|  * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS | 
|  * BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN  | 
|  * ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN  | 
|  * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE  | 
|  * SOFTWARE. | 
|  * | 
|  * License and legal information:  | 
|  * | 
|  * http://appcropolis.com/license/ | 
|  * http://appcropolis.com/legal/ | 
|  * http://appcropolis.com/privacy/ | 
|  */ | 
|   | 
| (function($){ | 
|     // Determine if we on iPhone or iPad | 
|     var isiOS = false; | 
|     var agent = navigator.userAgent.toLowerCase(); | 
|     if(agent.indexOf('iphone') >= 0 || agent.indexOf('ipad') >= 0){ | 
|            isiOS = true; | 
|     } | 
|   | 
|     $.fn.doubletap = function(onDoubleTapCallback, onTapCallback, delay){ | 
|         var eventName, action; | 
|         delay = delay == null? 500 : delay; | 
|         eventName = isiOS == true? 'touchend' : 'click'; | 
|   | 
|         $(this).bind(eventName, function(event){ | 
|             var now = new Date().getTime(); | 
|             var lastTouch = $(this).data('lastTouch') || now + 1 /** the first time this will make delta a negative number */; | 
|             var delta = now - lastTouch; | 
|             clearTimeout(action); | 
|             if(delta<500 && delta>0){ | 
|                 if(onDoubleTapCallback != null && typeof onDoubleTapCallback == 'function'){ | 
|                     onDoubleTapCallback(event); | 
|                 } | 
|             }else{ | 
|                 $(this).data('lastTouch', now); | 
|                 action = setTimeout(function(evt){ | 
|                     if(onTapCallback != null && typeof onTapCallback == 'function'){ | 
|                         onTapCallback(evt); | 
|                     } | 
|                     clearTimeout(action);   // clear the timeout | 
|                 }, delay, [event]); | 
|             } | 
|             $(this).data('lastTouch', now); | 
|         }); | 
|     }; | 
| })(jQuery); |