/** 
 | 
 * 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); 
 |