docs: function triggerHandlerForGesture(event, phase, gesture) {	
  			
  			var ret;
  			
  			//SWIPES....
  			if(gesture==SWIPE) {
  				//Trigger status every time..
  				
  				//Trigger the event...
  				$element.trigger('swipeStatus', [phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData]);
  				
  				//Fire the callback
  				if (options.swipeStatus) {
  					ret = options.swipeStatus.call($element, event, phase, direction || null, distance || 0, duration || 0, fingerCount, fingerData);
  					//If the status cancels, then dont run the subsequent event handlers..
  					if(ret===false) return false;
  				}
  				
  				
  				
  				
  				if (phase == PHASE_END && validateSwipe()) {
  					//Fire the catch all event
  					$element.trigger('swipe', [direction, distance, duration, fingerCount, fingerData]);
  					
  					//Fire catch all callback
  					if (options.swipe) {
  						ret = options.swipe.call($element, event, direction, distance, duration, fingerCount, fingerData);
  						//If the status cancels, then dont run the subsequent event handlers..
  						if(ret===false) return false;
  					}
  					
  					//trigger direction specific event handlers	
  					switch (direction) {
  						case LEFT:
  							//Trigger the event
  							$element.trigger('swipeLeft', [direction, distance, duration, fingerCount, fingerData]);
  					
  					        //Fire the callback
  							if (options.swipeLeft) {
  								ret = options.swipeLeft.call($element, event, direction, distance, duration, fingerCount, fingerData);
  							}
  							break;
  	
  						case RIGHT:
  							//Trigger the event
  					        $element.trigger('swipeRight', [direction, distance, duration, fingerCount, fingerData]);
  					
  					        //Fire the callback
  							if (options.swipeRight) {
  								ret = options.swipeRight.call($element, event, direction, distance, duration, fingerCount, fingerData);
  							}
  							break;
  	
  						case UP:
  							//Trigger the event
  					        $element.trigger('swipeUp', [direction, distance, duration, fingerCount, fingerData]);
  					
  					        //Fire the callback
  							if (options.swipeUp) {
  								ret = options.swipeUp.call($element, event, direction, distance, duration, fingerCount, fingerData);
  							}
  							break;
  	
  						case DOWN:
  							//Trigger the event
  					        $element.trigger('swipeDown', [direction, distance, duration, fingerCount, fingerData]);
  					
  					        //Fire the callback
  							if (options.swipeDown) {
  								ret = options.swipeDown.call($element, event, direction, distance, duration, fingerCount, fingerData);
  							}
  							break;
  					}
  				}
  			}
  			
  			
  			//PINCHES....
  			if(gesture==PINCH) {
  				//Trigger the event
  			     $element.trigger('pinchStatus', [phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
  					
                  //Fire the callback
  				if (options.pinchStatus) {
  					ret = options.pinchStatus.call($element, event, phase, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
  					//If the status cancels, then dont run the subsequent event handlers..
  					if(ret===false) return false;
  				}
  				
  				if(phase==PHASE_END && validatePinch()) {
  					
  					switch (pinchDirection) {
  						case IN:
  							//Trigger the event
                              $element.trigger('pinchIn', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
                      
                              //Fire the callback
                              if (options.pinchIn) {
  								ret = options.pinchIn.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
  							}
  							break;
  						
  						case OUT:
  							//Trigger the event
                              $element.trigger('pinchOut', [pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData]);
                      
                              //Fire the callback
                              if (options.pinchOut) {
  								ret = options.pinchOut.call($element, event, pinchDirection || null, pinchDistance || 0, duration || 0, fingerCount, pinchZoom, fingerData);
  							}
  							break;	
  					}
  				}
  			}
  			
  
  
                  
  	    		
  			if(gesture==TAP) {
  				if(phase === PHASE_CANCEL || phase === PHASE_END) {
  					
      			    
      			    //Cancel any existing double tap
  				    clearTimeout(singleTapTimeout);
      			    //Cancel hold timeout
  				    clearTimeout(holdTimeout);
  				           
  					//If we are also looking for doubelTaps, wait incase this is one...
  				    if(hasDoubleTap() && !inDoubleTap()) {
  				        //Cache the time of this tap
                          doubleTapStartTime = getTimeStamp();
                         
  				        //Now wait for the double tap timeout, and trigger this single tap
  				        //if its not cancelled by a double tap
  				        singleTapTimeout = setTimeout($.proxy(function() {
          			        doubleTapStartTime=null;
          			        //Trigger the event
                  			$element.trigger('tap', [event.target]);
  
                          
                              //Fire the callback
                              if(options.tap) {
                                  ret = options.tap.call($element, event, event.target);
                              }
      			        }, this), options.doubleTapThreshold );
      			    	
      			    } else {
                          doubleTapStartTime=null;
                          
                          //Trigger the event
                          $element.trigger('tap', [event.target]);
  
                          
                          //Fire the callback
                          if(options.tap) {
                              ret = options.tap.call($element, event, event.target);
                          }
  	    		    }
  	    		}
  			}
  			
  			else if (gesture==DOUBLE_TAP) {
  				if(phase === PHASE_CANCEL || phase === PHASE_END) {
  					//Cancel any pending singletap 
  				    clearTimeout(singleTapTimeout);
  				    doubleTapStartTime=null;
  				        
                      //Trigger the event
                      $element.trigger('doubletap', [event.target]);
                  
                      //Fire the callback
                      if(options.doubleTap) {
                          ret = options.doubleTap.call($element, event, event.target);
                      }
  	    		}
  			}
  			
  			else if (gesture==LONG_TAP) {
  				if(phase === PHASE_CANCEL || phase === PHASE_END) {
  					//Cancel any pending singletap (shouldnt be one)
  				    clearTimeout(singleTapTimeout);
  				    doubleTapStartTime=null;
  				        
                      //Trigger the event
                      $element.trigger('longtap', [event.target]);
                  
                      //Fire the callback
                      if(options.longTap) {
                          ret = options.longTap.call($element, event, event.target);
                      }
  	    		}
  			}				
  				
  			return ret;
  		}