Team:HokkaidoU Japan

From 2014.igem.org

(Difference between revisions)
Line 58: Line 58:
</div>
</div>
</div><!-- /container -->
</div><!-- /container -->
-
                  
+
                 <script>
 +
(function() {
 +
 
 +
var event = jQuery.event,
 +
 
 +
//helper that finds handlers by type and calls back a function, this is basically handle
 +
// events - the events object
 +
// types - an array of event types to look for
 +
// callback(type, handlerFunc, selector) - a callback
 +
// selector - an optional selector to filter with, if there, matches by selector
 +
//    if null, matches anything, otherwise, matches with no selector
 +
findHelper = function( events, types, callback, selector ) {
 +
var t, type, typeHandlers, all, h, handle,
 +
namespaces, namespace,
 +
match;
 +
for ( t = 0; t < types.length; t++ ) {
 +
type = types[t];
 +
all = type.indexOf(".") < 0;
 +
if (!all ) {
 +
namespaces = type.split(".");
 +
type = namespaces.shift();
 +
namespace = new RegExp("(^|\\.)" + namespaces.slice(0).sort().join("\\.(?:.*\\.)?") + "(\\.|$)");
 +
}
 +
typeHandlers = (events[type] || []).slice(0);
 +
 
 +
for ( h = 0; h < typeHandlers.length; h++ ) {
 +
handle = typeHandlers[h];
 +
 +
match = (all || namespace.test(handle.namespace));
 +
 +
if(match){
 +
if(selector){
 +
if (handle.selector === selector  ) {
 +
callback(type, handle.origHandler || handle.handler);
 +
}
 +
} else if (selector === null){
 +
callback(type, handle.origHandler || handle.handler, handle.selector);
 +
}
 +
else if (!handle.selector ) {
 +
callback(type, handle.origHandler || handle.handler);
 +
 +
}
 +
}
 +
 +
 +
}
 +
}
 +
};
 +
 
 +
/**
 +
* Finds event handlers of a given type on an element.
 +
* @param {HTMLElement} el
 +
* @param {Array} types an array of event names
 +
* @param {String} [selector] optional selector
 +
* @return {Array} an array of event handlers
 +
*/
 +
event.find = function( el, types, selector ) {
 +
var events = ( $._data(el) || {} ).events,
 +
handlers = [],
 +
t, liver, live;
 +
 
 +
if (!events ) {
 +
return handlers;
 +
}
 +
findHelper(events, types, function( type, handler ) {
 +
handlers.push(handler);
 +
}, selector);
 +
return handlers;
 +
};
 +
/**
 +
* Finds all events.  Group by selector.
 +
* @param {HTMLElement} el the element
 +
* @param {Array} types event types
 +
*/
 +
event.findBySelector = function( el, types ) {
 +
var events = $._data(el).events,
 +
selectors = {},
 +
//adds a handler for a given selector and event
 +
add = function( selector, event, handler ) {
 +
var select = selectors[selector] || (selectors[selector] = {}),
 +
events = select[event] || (select[event] = []);
 +
events.push(handler);
 +
};
 +
 
 +
if (!events ) {
 +
return selectors;
 +
}
 +
//first check live:
 +
/*$.each(events.live || [], function( i, live ) {
 +
if ( $.inArray(live.origType, types) !== -1 ) {
 +
add(live.selector, live.origType, live.origHandler || live.handler);
 +
}
 +
});*/
 +
//then check straight binds
 +
findHelper(events, types, function( type, handler, selector ) {
 +
add(selector || "", type, handler);
 +
}, null);
 +
 
 +
return selectors;
 +
};
 +
event.supportTouch = "ontouchend" in document;
 +
 +
$.fn.respondsTo = function( events ) {
 +
if (!this.length ) {
 +
return false;
 +
} else {
 +
//add default ?
 +
return event.find(this[0], $.isArray(events) ? events : [events]).length > 0;
 +
}
 +
};
 +
$.fn.triggerHandled = function( event, data ) {
 +
event = (typeof event == "string" ? $.Event(event) : event);
 +
this.trigger(event, data);
 +
return event.handled;
 +
};
 +
/**
 +
* Only attaches one event handler for all types ...
 +
* @param {Array} types llist of types that will delegate here
 +
* @param {Object} startingEvent the first event to start listening to
 +
* @param {Object} onFirst a function to call
 +
*/
 +
event.setupHelper = function( types, startingEvent, onFirst ) {
 +
if (!onFirst ) {
 +
onFirst = startingEvent;
 +
startingEvent = null;
 +
}
 +
var add = function( handleObj ) {
 +
 
 +
var bySelector, selector = handleObj.selector || "";
 +
if ( selector ) {
 +
bySelector = event.find(this, types, selector);
 +
if (!bySelector.length ) {
 +
$(this).delegate(selector, startingEvent, onFirst);
 +
}
 +
}
 +
else {
 +
//var bySelector = event.find(this, types, selector);
 +
if (!event.find(this, types, selector).length ) {
 +
event.add(this, startingEvent, onFirst, {
 +
selector: selector,
 +
delegate: this
 +
});
 +
}
 +
 
 +
}
 +
 
 +
},
 +
remove = function( handleObj ) {
 +
var bySelector, selector = handleObj.selector || "";
 +
if ( selector ) {
 +
bySelector = event.find(this, types, selector);
 +
if (!bySelector.length ) {
 +
$(this).undelegate(selector, startingEvent, onFirst);
 +
}
 +
}
 +
else {
 +
if (!event.find(this, types, selector).length ) {
 +
event.remove(this, startingEvent, onFirst, {
 +
selector: selector,
 +
delegate: this
 +
});
 +
}
 +
}
 +
};
 +
$.each(types, function() {
 +
event.special[this] = {
 +
add: add,
 +
remove: remove,
 +
setup: function() {},
 +
teardown: function() {}
 +
};
 +
});
 +
};
 +
})(jQuery);
 +
(function($){
 +
var isPhantom = /Phantom/.test(navigator.userAgent),
 +
supportTouch = !isPhantom && "ontouchend" in document,
 +
scrollEvent = "touchmove scroll",
 +
// Use touch events or map it to mouse events
 +
touchStartEvent = supportTouch ? "touchstart" : "mousedown",
 +
touchStopEvent = supportTouch ? "touchend" : "mouseup",
 +
touchMoveEvent = supportTouch ? "touchmove" : "mousemove",
 +
data = function(event){
 +
var d = event.originalEvent.touches ?
 +
event.originalEvent.touches[ 0 ] :
 +
event;
 +
return {
 +
time: (new Date).getTime(),
 +
coords: [ d.pageX, d.pageY ],
 +
origin: $( event.target )
 +
};
 +
};
 +
 
 +
/**
 +
* @add jQuery.event.swipe
 +
*/
 +
var swipe = $.event.swipe = {
 +
/**
 +
* @attribute delay
 +
* Delay is the upper limit of time the swipe motion can take in milliseconds.  This defaults to 500.
 +
*
 +
* A user must perform the swipe motion in this much time.
 +
*/
 +
delay : 500,
 +
/**
 +
* @attribute max
 +
* The maximum distance the pointer must travel in pixels.  The default is 75 pixels.
 +
*/
 +
max : 75,
 +
/**
 +
* @attribute min
 +
* The minimum distance the pointer must travel in pixels.  The default is 30 pixels.
 +
*/
 +
min : 30
 +
};
 +
 
 +
$.event.setupHelper( [
 +
 
 +
/**
 +
* @hide
 +
* @attribute swipe
 +
*/
 +
"swipe",
 +
/**
 +
* @hide
 +
* @attribute swipeleft
 +
*/
 +
'swipeleft',
 +
/**
 +
* @hide
 +
* @attribute swiperight
 +
*/
 +
'swiperight',
 +
/**
 +
* @hide
 +
* @attribute swipeup
 +
*/
 +
'swipeup',
 +
/**
 +
* @hide
 +
* @attribute swipedown
 +
*/
 +
'swipedown'], touchStartEvent, function(ev){
 +
var
 +
// update with data when the event was started
 +
start = data(ev),
 +
stop,
 +
delegate = ev.delegateTarget || ev.currentTarget,
 +
selector = ev.handleObj.selector,
 +
entered = this;
 +
 +
function moveHandler(event){
 +
if ( !start ) {
 +
return;
 +
}
 +
// update stop with the data from the current event
 +
stop = data(event);
 +
 
 +
// prevent scrolling
 +
if ( Math.abs( start.coords[0] - stop.coords[0] ) > 10 ) {
 +
event.preventDefault();
 +
}
 +
};
 +
 
 +
// Attach to the touch move events
 +
$(document.documentElement).bind(touchMoveEvent, moveHandler)
 +
.one(touchStopEvent, function(event){
 +
$(this).unbind( touchMoveEvent, moveHandler);
 +
// if start and stop contain data figure out if we have a swipe event
 +
if ( start && stop ) {
 +
// calculate the distance between start and stop data
 +
var deltaX = Math.abs(start.coords[0] - stop.coords[0]),
 +
deltaY = Math.abs(start.coords[1] - stop.coords[1]),
 +
distance = Math.sqrt(deltaX*deltaX+deltaY*deltaY);
 +
 
 +
// check if the delay and distance are matched
 +
if ( stop.time - start.time < swipe.delay && distance >= swipe.min ) {
 +
var events = ['swipe'];
 +
// check if we moved horizontally
 +
if( deltaX >= swipe.min && deltaY < swipe.min) {
 +
// based on the x coordinate check if we moved left or right
 +
events.push( start.coords[0] > stop.coords[0] ? "swipeleft" : "swiperight" );
 +
} else
 +
// check if we moved vertically
 +
if(deltaY >= swipe.min && deltaX < swipe.min){
 +
// based on the y coordinate check if we moved up or down
 +
events.push( start.coords[1] < stop.coords[1] ? "swipedown" : "swipeup" );
 +
}
 +
 
 +
// trigger swipe events on this guy
 +
$.each($.event.find(delegate, events, selector), function(){
 +
this.call(entered, ev, {start : start, end: stop})
 +
})
 +
 +
}
 +
}
 +
// reset start and stop
 +
start = stop = undefined;
 +
})
 +
});
 +
 
 +
})(jQuery)
 +
                </script>
<script>
<script>
var Page = (function() {
var Page = (function() {

Revision as of 14:45, 15 September 2014

Top
Project
Human Practice
About Us