removed lots of legacy files
@@ -1 +1 @@
|
||||
Version 2.00.0 (2012-08-26 20:45:59) dev
|
||||
Version 2.00.0 (2012-08-26 21:13:59) dev
|
||||
|
||||
|
Before Width: | Height: | Size: 718 B |
@@ -1,571 +0,0 @@
|
||||
/*
|
||||
http://keith-wood.name/timeEntry.html
|
||||
Time entry for jQuery v1.4.8.
|
||||
Written by Keith Wood (kbwood{at}iinet.com.au) June 2007.
|
||||
Minor changes by Massimo Di Pierro Nov 2010 (simplified and changed behavior)
|
||||
Dual licensed under the GPL (http://dev.jquery.com/browser/trunk/jquery/GPL-LICENSE.txt) and
|
||||
MIT (http://dev.jquery.com/browser/trunk/jquery/MIT-LICENSE.txt) licenses.
|
||||
Please attribute the author if you use it.
|
||||
|
||||
Turn an input field into an entry point for a time value.
|
||||
The time can be entered via directly typing the value,
|
||||
via the arrow keys.
|
||||
It is configurable to show 12 or 24-hour time, to show or hide seconds,
|
||||
to enforce a minimum and/or maximum time, to change the spinner image.
|
||||
|
||||
Example: jQuery('input.time').timeEntry();
|
||||
*/
|
||||
|
||||
(function(jQuery) { // Hide scope, no jQuery conflict
|
||||
|
||||
var PROP_NAME = 'timeEntry';
|
||||
|
||||
/* TimeEntry manager.
|
||||
Use the singleton instance of this class, jQuery.timeEntry, to interact with the time entry
|
||||
functionality. Settings for (groups of) fields are maintained in an instance object
|
||||
(TimeEntryInstance), allowing multiple different settings on the same page.
|
||||
*/
|
||||
|
||||
function TimeEntry() {
|
||||
this._disabledInputs = []; // List of time entry inputs that have been disabled
|
||||
this._defaults = {
|
||||
showSeconds: true, // True to show seconds as well, false for hours/minutes only
|
||||
defaultTime: null, // The time to use if none has been set, leave at null for now
|
||||
minTime: null, // The earliest selectable time, or null for no limit
|
||||
maxTime: null, // The latest selectable time, or null for no limit
|
||||
show24Hours: true, // True to use 24 hour time, false for 12 hour (AM/PM)
|
||||
ampmNames: ['am', 'pm'] // Names of morning/evening markers
|
||||
};
|
||||
jQuery.extend(this._defaults);
|
||||
}
|
||||
|
||||
jQuery.extend(TimeEntry.prototype, {
|
||||
/*
|
||||
Class name added to elements to indicate already configured with time entry.
|
||||
*/
|
||||
markerClassName: 'hasTimeEntry',
|
||||
|
||||
/* Override the default settings for all instances of the time entry.
|
||||
@param options (object) the new settings to use as defaults (anonymous object)
|
||||
@return (DateEntry) this object
|
||||
*/
|
||||
setDefaults: function(options) {
|
||||
extendRemove(this._defaults, options || {});
|
||||
return this;
|
||||
},
|
||||
|
||||
/* Attach the time entry handler to an input field.
|
||||
@param target (element) the field to attach to
|
||||
@param options (object) custom settings for this instance
|
||||
*/
|
||||
_connectTimeEntry: function(target, options) {
|
||||
var input = jQuery(target);
|
||||
if (input.hasClass(this.markerClassName)) {
|
||||
return;
|
||||
}
|
||||
var inst = {};
|
||||
inst.options = jQuery.extend({}, options);
|
||||
inst._selectedHour = 0; // The currently selected hour
|
||||
inst._selectedMinute = 0; // The currently selected minute
|
||||
inst._selectedSecond = 0; // The currently selected second
|
||||
inst._field = 0; // The selected subfield
|
||||
inst.input = jQuery(target); // The attached input field
|
||||
jQuery.data(target, PROP_NAME, inst);
|
||||
input.addClass(this.markerClassName).bind('focus.timeEntry', this._doFocus).
|
||||
bind('blur.timeEntry', this._doBlur).bind('click.timeEntry', this._doClick).
|
||||
bind('keydown.timeEntry', this._doKeyDown).bind('keypress.timeEntry', this._doKeyPress);
|
||||
// Check pastes
|
||||
if (jQuery.browser.mozilla)
|
||||
input.bind('input.timeEntry', function(event) { jQuery.timeEntry._parseTime(inst); });
|
||||
if (jQuery.browser.msie)
|
||||
input.bind('paste.timeEntry', function(event) { setTimeout(function() { jQuery.timeEntry._parseTime(inst); }, 1); });
|
||||
},
|
||||
|
||||
|
||||
/* Check whether an input field has been disabled.
|
||||
@param input (element) input field to check
|
||||
@return (boolean) true if this field has been disabled, false if it is enabled
|
||||
*/
|
||||
_isDisabledTimeEntry: function(input) {
|
||||
return jQuery.inArray(input, this._disabledInputs) > -1;
|
||||
},
|
||||
|
||||
/* Reconfigure the settings for a time entry field.
|
||||
@param input (element) input field to change
|
||||
@param options (object) new settings to add or
|
||||
(string) an individual setting name
|
||||
@param value (any) the individual setting's value
|
||||
*/
|
||||
_changeTimeEntry: function(input, options, value) {
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
if (inst) {
|
||||
if (typeof options == 'string') {
|
||||
var name = options;
|
||||
options = {};
|
||||
options[name] = value;
|
||||
}
|
||||
var currentTime = this._extractTime(inst);
|
||||
extendRemove(inst.options, options || {});
|
||||
if (currentTime)
|
||||
this._setTime(inst, new Date(0, 0, 0,
|
||||
currentTime[0], currentTime[1], currentTime[2]));
|
||||
}
|
||||
jQuery.data(input, PROP_NAME, inst);
|
||||
},
|
||||
|
||||
/* Remove the time entry functionality from an input.
|
||||
@param input (element) input field to affect
|
||||
*/
|
||||
_destroyTimeEntry: function(input) {
|
||||
jQueryinput = jQuery(input);
|
||||
if (!jQueryinput.hasClass(this.markerClassName)) return;
|
||||
jQueryinput.removeClass(this.markerClassName).unbind('.timeEntry');
|
||||
this._disabledInputs = jQuery.map(this._disabledInputs, function(value) { return (value == input ? null : value); }); // Delete entry
|
||||
jQueryinput.parent().replaceWith(jQueryinput);
|
||||
jQuery.removeData(input, PROP_NAME);
|
||||
},
|
||||
|
||||
/* Initialise the current time for a time entry input field.
|
||||
@param input (element) input field to update
|
||||
@param time (Date) the new time (year/month/day ignored) or null for now
|
||||
*/
|
||||
_setTimeTimeEntry: function(input, time) {
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
if (inst) this._setTime(inst, time ? (typeof time == 'object' ? new Date(time.getTime()) : time) : null);
|
||||
},
|
||||
|
||||
/* Retrieve the current time for a time entry input field.
|
||||
@param input (element) input field to examine
|
||||
@return (Date) current time (year/month/day zero) or null if none
|
||||
*/
|
||||
_getTimeTimeEntry: function(input) {
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
var currentTime = (inst ? this._extractTime(inst) : null);
|
||||
return (!currentTime ? null : new Date(0, 0, 0, currentTime[0], currentTime[1], currentTime[2]));
|
||||
},
|
||||
|
||||
/* Retrieve the millisecond offset for the current time.
|
||||
@param input (element) input field to examine
|
||||
@return (number) the time as milliseconds offset or zero if none
|
||||
*/
|
||||
_getOffsetTimeEntry: function(input) {
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
var currentTime = (inst ? this._extractTime(inst) : null);
|
||||
return (!currentTime ? 0 : (currentTime[0] * 3600 + currentTime[1] * 60 + currentTime[2]) * 1000);
|
||||
},
|
||||
|
||||
/* Initialise time entry.
|
||||
@param target (element) the input field or (event) the focus event
|
||||
*/
|
||||
_doFocus: function(target) {
|
||||
var input = (target.nodeName && target.nodeName.toLowerCase() == 'input' ? target : this);
|
||||
if (jQuery.timeEntry._lastInput == input || jQuery.timeEntry._isDisabledTimeEntry(input)) {
|
||||
jQuery.timeEntry._focussed = false;
|
||||
return;
|
||||
}
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
jQuery.timeEntry._focussed = true;
|
||||
jQuery.timeEntry._lastInput = input;
|
||||
jQuery.timeEntry._blurredInput = null;
|
||||
jQuery.data(input, PROP_NAME, inst);
|
||||
jQuery.timeEntry._parseTime(inst);
|
||||
setTimeout(function() { jQuery.timeEntry._showField(inst); }, 10);
|
||||
},
|
||||
|
||||
/* Note that the field has been exited.
|
||||
@param event (event) the blur event
|
||||
*/
|
||||
_doBlur: function(event) {
|
||||
jQuery.timeEntry._blurredInput = jQuery.timeEntry._lastInput;
|
||||
jQuery.timeEntry._lastInput = null;
|
||||
},
|
||||
|
||||
/* Select appropriate field portion on click, if already in the field.
|
||||
@param event (event) the click event
|
||||
*/
|
||||
_doClick: function(event) {
|
||||
var input = event.target;
|
||||
var inst = jQuery.data(input, PROP_NAME);
|
||||
if (!jQuery.timeEntry._focussed) {
|
||||
var fieldSize = 3;
|
||||
inst._field = 0;
|
||||
if (input.selectionStart != null) { // Use input select range
|
||||
for (var field = 0; field <= Math.max(1, inst._secondField, inst._ampmField); field++) {
|
||||
var end = (field != inst._ampmField ? (field * fieldSize) + 2 : (inst._ampmField * fieldSize) + 2);
|
||||
inst._field = field;
|
||||
if (input.selectionStart < end) break;
|
||||
}
|
||||
} else if (input.createTextRange) { // Check against bounding boxes
|
||||
var src = jQuery(event.srcElement);
|
||||
var range = input.createTextRange();
|
||||
var convert = function(value) {
|
||||
return {thin: 2, medium: 4, thick: 6}[value] || value;
|
||||
};
|
||||
var offsetX = event.clientX + document.documentElement.scrollLeft -
|
||||
(src.offset().left + parseInt(convert(src.css('border-left-width')), 10)) -
|
||||
range.offsetLeft; // Position - left edge - alignment
|
||||
for (var field = 0; field <= Math.max(1, inst._secondField, inst._ampmField); field++) {
|
||||
var end = (field != inst._ampmField ? (field * fieldSize) + 2 : (inst._ampmField * fieldSize) + 2);
|
||||
range.collapse();
|
||||
range.moveEnd('character', end);
|
||||
inst._field = field;
|
||||
if (offsetX < range.boundingWidth) break; // And compare
|
||||
}
|
||||
}
|
||||
}
|
||||
jQuery.data(input, PROP_NAME, inst);
|
||||
jQuery.timeEntry._showField(inst);
|
||||
jQuery.timeEntry._focussed = false;
|
||||
},
|
||||
|
||||
/* Handle keystrokes in the field.
|
||||
@param event (event) the keydown event
|
||||
@return (boolean) true to continue, false to stop processing
|
||||
*/
|
||||
_doKeyDown: function(event) {
|
||||
if (event.keyCode >= 48) return true;
|
||||
var inst = jQuery.data(event.target, PROP_NAME);
|
||||
|
||||
switch (event.keyCode) {
|
||||
case 9:
|
||||
var its = jQuery(':input');
|
||||
its.eq(its.index(this)+(event.shiftKey?-1:+1)).focus();
|
||||
break;
|
||||
case 37: jQuery.timeEntry._changeField(inst, -1, false); break; // Previous field on left
|
||||
case 38: jQuery.timeEntry._adjustField(inst, -1); break; // Increment time field on down
|
||||
case 16: if(!event.shiftKey) jQuery.timeEntry._changeField(inst, +1, false); break; // Next field on right
|
||||
case 39: jQuery.timeEntry._changeField(inst, +1, false); break; // Next field on right
|
||||
case 40: jQuery.timeEntry._adjustField(inst, +1); break; // Decrement time field on up
|
||||
case 32: case 46: jQuery.timeEntry._setValue(inst, ''); break; // Clear time on delete
|
||||
}
|
||||
return false;
|
||||
},
|
||||
|
||||
/* Disallow unwanted characters.
|
||||
@param event (event) the keypress event
|
||||
@return (boolean) true to continue, false to stop processing
|
||||
*/
|
||||
_doKeyPress: function(event) {
|
||||
var chr = String.fromCharCode(event.charCode == undefined ? event.keyCode : event.charCode);
|
||||
if (chr < ' ') return true;
|
||||
var inst = jQuery.data(event.target, PROP_NAME);
|
||||
jQuery.timeEntry._handleKeyPress(inst, chr);
|
||||
return false;
|
||||
},
|
||||
|
||||
/* Get a setting value, defaulting if necessary.
|
||||
@param inst (object) the instance settings
|
||||
@param name (string) the setting name
|
||||
@return (any) the setting value
|
||||
*/
|
||||
_get: function(inst, name) {
|
||||
return (inst.options[name] != null ? inst.options[name] : jQuery.timeEntry._defaults[name]);
|
||||
},
|
||||
|
||||
/* Extract the time value from the input field, or default to now.
|
||||
@param inst (object) the instance settings
|
||||
*/
|
||||
_parseTime: function(inst) {
|
||||
var currentTime = this._extractTime(inst);
|
||||
var showSeconds = this._get(inst, 'showSeconds');
|
||||
if (currentTime) {
|
||||
inst._selectedHour = currentTime[0];
|
||||
inst._selectedMinute = currentTime[1];
|
||||
inst._selectedSecond = currentTime[2];
|
||||
}
|
||||
else {
|
||||
var now = this._constrainTime(inst);
|
||||
inst._selectedHour = now[0];
|
||||
inst._selectedMinute = now[1];
|
||||
inst._selectedSecond = (showSeconds ? now[2] : 0);
|
||||
}
|
||||
inst._secondField = (showSeconds ? 2 : -1);
|
||||
inst._ampmField = (this._get(inst, 'show24Hours') ? -1 : (showSeconds ? 3 : 2));
|
||||
inst._lastChr = '';
|
||||
inst._field = Math.max(0, Math.min(Math.max(1, inst._secondField, inst._ampmField), 0));
|
||||
if (inst.input.val() != '') this._showTime(inst);
|
||||
},
|
||||
|
||||
/* Extract the time value from a string as an array of values, or default to null.
|
||||
@param inst (object) the instance settings
|
||||
@param value (string) the time value to parse
|
||||
@return (number[3]) the time components (hours, minutes, seconds)
|
||||
or null if no value
|
||||
*/
|
||||
_extractTime: function(inst, value) {
|
||||
value = value || inst.input.val();
|
||||
var currentTime = value.split(':');
|
||||
var ampmNames = this._get(inst, 'ampmNames');
|
||||
var show24Hours = this._get(inst, 'show24Hours');
|
||||
if (currentTime.length >= 2) {
|
||||
var isAM = !show24Hours && (value.indexOf(ampmNames[0]) > -1);
|
||||
var isPM = !show24Hours && (value.indexOf(ampmNames[1]) > -1);
|
||||
var hour = parseInt(currentTime[0], 10);
|
||||
hour = (isNaN(hour) ? 0 : hour);
|
||||
hour = ((isAM || isPM) && hour == 12 ? 0 : hour) + (isPM ? 12 : 0);
|
||||
var minute = parseInt(currentTime[1], 10);
|
||||
minute = (isNaN(minute) ? 0 : minute);
|
||||
var second = (currentTime.length >= 3 ?
|
||||
parseInt(currentTime[2], 10) : 0);
|
||||
second = (isNaN(second) || !this._get(inst, 'showSeconds') ? 0 : second);
|
||||
return this._constrainTime(inst, [hour, minute, second]);
|
||||
}
|
||||
return null;
|
||||
},
|
||||
|
||||
/* Constrain the given/current time to the time steps.
|
||||
@param inst (object) the instance settings
|
||||
@param fields (number[3]) the current time components (hours, minutes, seconds)
|
||||
@return (number[3]) the constrained time components (hours, minutes, seconds)
|
||||
*/
|
||||
_constrainTime: function(inst, fields) {
|
||||
var specified = (fields != null);
|
||||
if (!specified) {
|
||||
var now = this._determineTime(inst, this._get(inst, 'defaultTime')) || new Date();
|
||||
fields = [now.getHours(), now.getMinutes(), now.getSeconds()];
|
||||
}
|
||||
return fields;
|
||||
},
|
||||
|
||||
/* Set the selected time into the input field.
|
||||
@param inst (object) the instance settings
|
||||
*/
|
||||
_showTime: function(inst) {
|
||||
var show24Hours = this._get(inst, 'show24Hours');
|
||||
var currentTime = (this._formatNumber(show24Hours ? inst._selectedHour :
|
||||
((inst._selectedHour + 11) % 12) + 1) + ':' +
|
||||
this._formatNumber(inst._selectedMinute) +
|
||||
(this._get(inst, 'showSeconds') ? ':' +
|
||||
this._formatNumber(inst._selectedSecond) : '') +
|
||||
(show24Hours ? '' : this._get(inst, 'ampmNames')[(inst._selectedHour < 12 ? 0 : 1)]));
|
||||
this._setValue(inst, currentTime);
|
||||
this._showField(inst);
|
||||
},
|
||||
|
||||
/* Highlight the current time field.
|
||||
@param inst (object) the instance settings
|
||||
*/
|
||||
_showField: function(inst) {
|
||||
var input = inst.input[0];
|
||||
if (inst.input.is(':hidden') || jQuery.timeEntry._lastInput != input) return;
|
||||
var fieldSize = 3;
|
||||
var start = (inst._field == inst._ampmField ? (inst._ampmField * fieldSize) - 1 : (inst._field * fieldSize));
|
||||
var end = start + (inst._field == inst._ampmField ? 2 : 2);
|
||||
if (input.setSelectionRange) { // Mozilla
|
||||
input.setSelectionRange(start, end);
|
||||
}
|
||||
else if (input.createTextRange) { // IE
|
||||
var range = input.createTextRange();
|
||||
range.moveStart('character', start);
|
||||
range.moveEnd('character', end - inst.input.val().length);
|
||||
range.select();
|
||||
}
|
||||
if (!input.disabled) input.focus();
|
||||
},
|
||||
|
||||
/* Ensure displayed single number has a leading zero.
|
||||
@param value (number) current value
|
||||
@return (string) number with at least two digits
|
||||
*/
|
||||
_formatNumber: function(value) {
|
||||
return (value < 10 ? '0' : '') + value;
|
||||
},
|
||||
|
||||
/* Update the input field and notify listeners.
|
||||
@param inst (object) the instance settings
|
||||
@param value (string) the new value
|
||||
*/
|
||||
_setValue: function(inst, value) {
|
||||
if (value != inst.input.val()) inst.input.val(value).trigger('change');
|
||||
},
|
||||
|
||||
/* Move to previous/next field, or out of field altogether if appropriate.
|
||||
@param inst (object) the instance settings
|
||||
@param offset (number) the direction of change (-1, +1)
|
||||
@param moveOut (boolean) true if can move out of the field
|
||||
@return (boolean) true if exitting the field, false if not
|
||||
*/
|
||||
_changeField: function(inst, offset, moveOut) {
|
||||
var atFirstLast = (inst.input.val() == '' || inst._field == (offset == -1 ? 0 : Math.max(1, inst._secondField, inst._ampmField)));
|
||||
if (!atFirstLast) inst._field += offset;
|
||||
this._showField(inst);
|
||||
inst._lastChr = '';
|
||||
jQuery.data(inst.input[0], PROP_NAME, inst);
|
||||
return (atFirstLast && moveOut);
|
||||
},
|
||||
|
||||
/* Update the current field in the direction indicated.
|
||||
@param inst (object) the instance settings
|
||||
@param offset (number) the amount to change by
|
||||
*/
|
||||
_adjustField: function(inst, offset) {
|
||||
if (inst.input.val() == '') offset = 0;
|
||||
this._setTime(inst, new Date(0, 0, 0,
|
||||
inst._selectedHour + (inst._field == 0 ? offset : 0) +
|
||||
(inst._field == inst._ampmField ? offset * 12 : 0),
|
||||
inst._selectedMinute + (inst._field == 1 ? offset : 0),
|
||||
inst._selectedSecond + (inst._field == inst._secondField ? offset : 0)));
|
||||
},
|
||||
|
||||
/* Check against minimum/maximum and display time.
|
||||
@param inst (object) the instance settings
|
||||
@param time (Date) an actual time or
|
||||
(number) offset in seconds from now or
|
||||
(string) units and periods of offsets from now
|
||||
*/
|
||||
_setTime: function(inst, time) {
|
||||
time = this._determineTime(inst, time);
|
||||
var fields = this._constrainTime(inst, time ?
|
||||
[time.getHours(), time.getMinutes(), time.getSeconds()] : null);
|
||||
time = new Date(0, 0, 0, fields[0], fields[1], fields[2]);
|
||||
// Normalise to base date
|
||||
var time = this._normaliseTime(time);
|
||||
var minTime = this._normaliseTime(this._determineTime(inst, this._get(inst, 'minTime')));
|
||||
var maxTime = this._normaliseTime(this._determineTime(inst, this._get(inst, 'maxTime')));
|
||||
// Ensure it is within the bounds set
|
||||
time = (minTime && time < minTime ? minTime :
|
||||
(maxTime && time > maxTime ? maxTime : time));
|
||||
inst._selectedHour = time.getHours();
|
||||
inst._selectedMinute = time.getMinutes();
|
||||
inst._selectedSecond = time.getSeconds();
|
||||
this._showTime(inst);
|
||||
jQuery.data(inst.input[0], PROP_NAME, inst);
|
||||
},
|
||||
|
||||
/* Normalise time object to a common date.
|
||||
@param time (Date) the original time
|
||||
@return (Date) the normalised time
|
||||
*/
|
||||
_normaliseTime: function(time) {
|
||||
if (!time) return null;
|
||||
time.setFullYear(1900);
|
||||
time.setMonth(0);
|
||||
time.setDate(0);
|
||||
return time;
|
||||
},
|
||||
|
||||
/* A time may be specified as an exact value or a relative one.
|
||||
@param inst (object) the instance settings
|
||||
@param setting (Date) an actual time or
|
||||
(number) offset in seconds from now or
|
||||
(string) units and periods of offsets from now
|
||||
@return (Date) the calculated time
|
||||
*/
|
||||
_determineTime: function(inst, setting) {
|
||||
var offsetNumeric = function(offset) { // E.g. +300, -2
|
||||
var time = new Date();
|
||||
time.setTime(time.getTime() + offset * 1000);
|
||||
return time;
|
||||
};
|
||||
var offsetString = function(offset) { // E.g. '+2m', '-4h', '+3h +30m' or '12:34:56PM'
|
||||
var fields = jQuery.timeEntry._extractTime(inst, offset); // Actual time?
|
||||
var time = new Date();
|
||||
var hour = (fields ? fields[0] : time.getHours());
|
||||
var minute = (fields ? fields[1] : time.getMinutes());
|
||||
var second = (fields ? fields[2] : time.getSeconds());
|
||||
if (!fields) {
|
||||
var pattern = /([+-]?[0-9]+)\s*(s|S|m|M|h|H)?/g;
|
||||
var matches = pattern.exec(offset);
|
||||
while (matches) {
|
||||
switch (matches[2] || 's') {
|
||||
case 's' : case 'S' : second += parseInt(matches[1], 10); break;
|
||||
case 'm' : case 'M' : minute += parseInt(matches[1], 10); break;
|
||||
case 'h' : case 'H' : hour += parseInt(matches[1], 10); break;
|
||||
}
|
||||
matches = pattern.exec(offset);
|
||||
}
|
||||
}
|
||||
time = new Date(0, 0, 10, hour, minute, second, 0);
|
||||
if (/^!/.test(offset)) { // No wrapping
|
||||
if (time.getDate() > 10)
|
||||
time = new Date(0, 0, 10, 23, 59, 59);
|
||||
else if (time.getDate() < 10)
|
||||
time = new Date(0, 0, 10, 0, 0, 0);
|
||||
}
|
||||
return time;
|
||||
};
|
||||
return (setting ? (typeof setting == 'string' ? offsetString(setting) :
|
||||
(typeof setting == 'number' ? offsetNumeric(setting) : setting)) : null);
|
||||
},
|
||||
|
||||
/* Update time based on keystroke entered.
|
||||
@param inst (object) the instance settings
|
||||
@param chr (ch) the new character
|
||||
*/
|
||||
_handleKeyPress: function(inst, chr) {
|
||||
if (chr == ':') this._changeField(inst, +1, false);
|
||||
else if (chr >= '0' && chr <= '9') { // Allow direct entry of time
|
||||
var key = parseInt(chr, 10);
|
||||
var value = parseInt(inst._lastChr + chr, 10);
|
||||
var show24Hours = this._get(inst, 'show24Hours');
|
||||
var hour = (inst._field != 0 ? inst._selectedHour :
|
||||
(show24Hours ? (value < 24 ? value : key) :
|
||||
(value >= 1 && value <= 12 ? value :
|
||||
(key > 0 ? key : inst._selectedHour)) % 12 +
|
||||
(inst._selectedHour >= 12 ? 12 : 0)));
|
||||
var minute = (inst._field != 1 ? inst._selectedMinute :
|
||||
(value < 60 ? value : key));
|
||||
var second = (inst._field != inst._secondField ? inst._selectedSecond :
|
||||
(value < 60 ? value : key));
|
||||
var fields = this._constrainTime(inst, [hour, minute, second]);
|
||||
this._setTime(inst, new Date(0, 0, 0, fields[0], fields[1], fields[2]));
|
||||
inst._lastChr = chr;
|
||||
}
|
||||
else if (!this._get(inst, 'show24Hours')) { // Set am/pm based on first char of names
|
||||
chr = chr.toLowerCase();
|
||||
var ampmNames = this._get(inst, 'ampmNames');
|
||||
if ((chr == ampmNames[0].substring(0, 1).toLowerCase() && inst._selectedHour >= 12) ||
|
||||
(chr == ampmNames[1].substring(0, 1).toLowerCase() && inst._selectedHour < 12)) {
|
||||
var saveField = inst._field;
|
||||
inst._field = inst._ampmField;
|
||||
this._adjustField(inst, +1);
|
||||
inst._field = saveField;
|
||||
this._showField(inst);
|
||||
}
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
/* jQuery extend now ignores nulls!
|
||||
@param target (object) the object to update
|
||||
@param props (object) the new settings
|
||||
@return (object) the updated object
|
||||
*/
|
||||
function extendRemove(target, props) {
|
||||
jQuery.extend(target, props);
|
||||
for (var name in props) if (props[name] == null) target[name] = null;
|
||||
return target;
|
||||
}
|
||||
|
||||
// Commands that don't return a jQuery object
|
||||
var getters = ['getOffset', 'getTime', 'isDisabled'];
|
||||
|
||||
/* Attach the time entry functionality to a jQuery selection.
|
||||
@param command (string) the command to run (optional, default 'attach')
|
||||
@param options (object) the new settings to use for these countdown instances (optional)
|
||||
@return (jQuery) for chaining further calls
|
||||
*/
|
||||
jQuery.fn.timeEntry = function(options) {
|
||||
var otherArgs = Array.prototype.slice.call(arguments, 1);
|
||||
if (typeof options == 'string' && jQuery.inArray(options, getters) > -1) {
|
||||
return jQuery.timeEntry['_' + options + 'TimeEntry'].apply(jQuery.timeEntry, [this[0]].concat(otherArgs));
|
||||
}
|
||||
return this.each(function() {
|
||||
var nodeName = this.nodeName.toLowerCase();
|
||||
if (nodeName == 'input') {
|
||||
if (typeof options == 'string')
|
||||
jQuery.timeEntry['_' + options + 'TimeEntry'].apply(jQuery.timeEntry, [this].concat(otherArgs));
|
||||
else {
|
||||
// Check for settings on the control itself
|
||||
var inlineSettings = (jQuery.fn.metadata ? jQuery(this).metadata() : {});
|
||||
jQuery.timeEntry._connectTimeEntry(this, jQuery.extend(inlineSettings, options));
|
||||
}
|
||||
}
|
||||
});
|
||||
};
|
||||
|
||||
/* Initialise the time entry functionality. */
|
||||
jQuery.timeEntry = new TimeEntry(); // Singleton instance
|
||||
|
||||
})(jQuery);
|
||||
|
||||
|
Before Width: | Height: | Size: 57 KiB |
|
Before Width: | Height: | Size: 146 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 3.8 KiB |
|
Before Width: | Height: | Size: 714 B |
|
Before Width: | Height: | Size: 50 KiB |
|
Before Width: | Height: | Size: 5.6 KiB |
|
Before Width: | Height: | Size: 5.9 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
@@ -1,116 +0,0 @@
|
||||
$(function(){
|
||||
// hide/show header
|
||||
$('#close-open-top a').bind('click', function() {
|
||||
if($('header:visible').length) {
|
||||
$('img', this).attr('src', 'images/open.png');
|
||||
} else {
|
||||
$('img', this).attr('src', 'images/close.png');
|
||||
}
|
||||
$('header').slideToggle('slow');
|
||||
|
||||
return false;
|
||||
});
|
||||
|
||||
// tabs
|
||||
$('.tab_content').hide();
|
||||
$('ul.tabs li:first').addClass('active').show();
|
||||
$('.tab_content:first').show();
|
||||
|
||||
$('ul.tabs li').click(function() {
|
||||
$('ul.tabs li').removeClass('active');
|
||||
$(this).addClass('active');
|
||||
$('.tab_content').hide();
|
||||
var activeTab = $(this).find('a').attr('href');
|
||||
$(activeTab).fadeIn();
|
||||
return false;
|
||||
});
|
||||
|
||||
// hide/show default text when user focuses on newsletter subscribe field
|
||||
var defaultEmailTxt = $('#email-address').val();
|
||||
$('#email-address').focus(function() {
|
||||
if ($('#email-address').val() == defaultEmailTxt) {
|
||||
$('#email-address').val('');
|
||||
}
|
||||
});
|
||||
$('#email-address').blur(function() {
|
||||
if ($('#email-address').val() == '') {
|
||||
$('#email-address').val(defaultEmailTxt);
|
||||
}
|
||||
});
|
||||
|
||||
// Lightbox
|
||||
$(".gallery a[rel^='prettyPhoto']").prettyPhoto({animationSpeed:'slow',theme:'dark_rounded',slideshow:4000, autoplay_slideshow: false});
|
||||
|
||||
// Tipsy
|
||||
$('#social li a img').tipsy({delayIn: 1200, delayOut: 1200, gravity: 's'});
|
||||
|
||||
// init newsletter subscription AJAX handling
|
||||
$('#newslettersubmit').click(function() { $('#newsletterform').submit(); return false; });
|
||||
$('#newsletterform').ajaxForm({dataType: 'json',
|
||||
timeout: 2000,
|
||||
success: newsletterResponse});
|
||||
|
||||
// Twitter script config
|
||||
if ($('#tweet').length) {
|
||||
getTwitters('tweet', {
|
||||
id: 'envatowebdesign',
|
||||
count: 3,
|
||||
enableLinks: true,
|
||||
ignoreReplies: true,
|
||||
template: '"%text%" <a class="meta" href="http://twitter.com/%user_screen_name%/status/%id%">%time%</a>'});
|
||||
}
|
||||
|
||||
|
||||
// init contact form validation and AJAX handling
|
||||
if ($("#contactform").length > 0) {
|
||||
$("#contactform").validate({ rules: { name: "required",
|
||||
email: { required: true, email: true },
|
||||
message: "required"},
|
||||
messages: { name: "This field is required.",
|
||||
email: { required: "This field is required.",
|
||||
email: "Please enter a valied email address."},
|
||||
message: "This field is required."},
|
||||
submitHandler: function(form) { $(form).ajaxSubmit({dataType: 'json', success: contactFormResponse}); }
|
||||
});
|
||||
}
|
||||
});
|
||||
|
||||
// handle newsletter subscribe AJAX response
|
||||
function newsletterResponse(response) {
|
||||
if (response.responseStatus == 'err') {
|
||||
if (response.responseMsg == 'ajax') {
|
||||
alert('Error - this script can only be invoked via an AJAX call.');
|
||||
} else if (response.responseMsg == 'fileopen') {
|
||||
alert('Error opening $emailsFile. Please refer to documentation for help.');
|
||||
} else if (response.responseMsg == 'email') {
|
||||
alert('Please enter a valid email address.');
|
||||
} else if (response.responseMsg == 'duplicate') {
|
||||
alert('You are already subscribed to our newsletter.');
|
||||
} else if (response.responseMsg == 'filewrite') {
|
||||
alert('Error writing to $emailsFile. Please refer to documentation for help.');
|
||||
} else {
|
||||
alert('Undocumented error. Please refresh the page and try again.');
|
||||
}
|
||||
} else if (response.responseStatus == 'ok') {
|
||||
alert('Thank you for subscribing to our newsletter! We will not abuse your address.');
|
||||
} else {
|
||||
alert('Undocumented error. Please refresh the page and try again.');
|
||||
}
|
||||
} // newsletterResponse
|
||||
|
||||
// handle contact form AJAX response
|
||||
function contactFormResponse(response) {
|
||||
if (response.responseStatus == 'err') {
|
||||
if (response.responseMsg == 'ajax') {
|
||||
alert('Error - this script can only be invoked via an AJAX call.');
|
||||
} else if (response.responseMsg == 'notsent') {
|
||||
alert('We are having some mail server issues. Please refresh the page or try again later.');
|
||||
} else {
|
||||
alert('Undocumented error. Please refresh the page and try again.');
|
||||
}
|
||||
} else if (response.responseStatus == 'ok') {
|
||||
alert('Thank you for contacting us! We\'ll get back to you ASAP.');
|
||||
} else {
|
||||
alert('Undocumented error. Please refresh the page and try again.');
|
||||
}
|
||||
} // contactFormResponse
|
||||
@@ -1,69 +0,0 @@
|
||||
/* ------------------------------------------------------------------------
|
||||
Class: prettyPhoto
|
||||
Use: Lightbox clone for jQuery
|
||||
Author: Stephane Caron (http://www.no-margin-for-errors.com)
|
||||
Version: 3.0.3
|
||||
------------------------------------------------------------------------- */
|
||||
|
||||
(function($){$.prettyPhoto={version:'3.0.2'};$.fn.prettyPhoto=function(pp_settings){pp_settings=jQuery.extend({animation_speed:'fast',slideshow:false,autoplay_slideshow:false,opacity:0.80,show_title:true,allow_resize:true,default_width:500,default_height:344,counter_separator_label:'/',theme:'facebook',hideflash:false,wmode:'opaque',autoplay:true,modal:false,overlay_gallery:true,keyboard_shortcuts:true,changepicturecallback:function(){},callback:function(){},markup:'<div class="pp_pic_holder"> \
|
||||
<div class="ppt"> </div> \
|
||||
<div class="pp_top"> \
|
||||
<div class="pp_left"></div> \
|
||||
<div class="pp_middle"></div> \
|
||||
<div class="pp_right"></div> \
|
||||
</div> \
|
||||
<div class="pp_content_container"> \
|
||||
<div class="pp_left"> \
|
||||
<div class="pp_right"> \
|
||||
<div class="pp_content"> \
|
||||
<div class="pp_loaderIcon"></div> \
|
||||
<div class="pp_fade"> \
|
||||
<a href="#" class="pp_expand" title="Expand the image">Expand</a> \
|
||||
<div class="pp_hoverContainer"> \
|
||||
<a class="pp_next" href="#">next</a> \
|
||||
<a class="pp_previous" href="#">previous</a> \
|
||||
</div> \
|
||||
<div id="pp_full_res"></div> \
|
||||
<div class="pp_details clearfix"> \
|
||||
<p class="pp_description"></p> \
|
||||
<a class="pp_close" href="#">Close</a> \
|
||||
<div class="pp_nav"> \
|
||||
<a href="#" class="pp_arrow_previous">Previous</a> \
|
||||
<p class="currentTextHolder">0/0</p> \
|
||||
<a href="#" class="pp_arrow_next">Next</a> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
</div> \
|
||||
<div class="pp_bottom"> \
|
||||
<div class="pp_left"></div> \
|
||||
<div class="pp_middle"></div> \
|
||||
<div class="pp_right"></div> \
|
||||
</div> \
|
||||
</div> \
|
||||
<div class="pp_overlay"></div>',gallery_markup:'<div class="pp_gallery"> \
|
||||
<a href="#" class="pp_arrow_previous">Previous</a> \
|
||||
<ul> \
|
||||
{gallery} \
|
||||
</ul> \
|
||||
<a href="#" class="pp_arrow_next">Next</a> \
|
||||
</div>',image_markup:'<img id="fullResImage" src="{path}" />',flash_markup:'<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="{width}" height="{height}"><param name="wmode" value="{wmode}" /><param name="allowfullscreen" value="true" /><param name="allowscriptaccess" value="always" /><param name="movie" value="{path}" /><embed src="{path}" type="application/x-shockwave-flash" allowfullscreen="true" allowscriptaccess="always" width="{width}" height="{height}" wmode="{wmode}"></embed></object>',quicktime_markup:'<object classid="clsid:02BF25D5-8C17-4B23-BC80-D3488ABDDC6B" codebase="http://www.apple.com/qtactivex/qtplugin.cab" height="{height}" width="{width}"><param name="src" value="{path}"><param name="autoplay" value="{autoplay}"><param name="type" value="video/quicktime"><embed src="{path}" height="{height}" width="{width}" autoplay="{autoplay}" type="video/quicktime" pluginspage="http://www.apple.com/quicktime/download/"></embed></object>',iframe_markup:'<iframe src ="{path}" width="{width}" height="{height}" frameborder="no"></iframe>',inline_markup:'<div class="pp_inline clearfix">{content}</div>',custom_markup:''},pp_settings);var matchedObjects=this,percentBased=false,pp_dimensions,pp_open,pp_contentHeight,pp_contentWidth,pp_containerHeight,pp_containerWidth,windowHeight=$(window).height(),windowWidth=$(window).width(),pp_slideshow;doresize=true,scroll_pos=_get_scroll();$(window).unbind('resize.prettyphoto').bind('resize.prettyphoto',function(){_center_overlay();_resize_overlay();});if(pp_settings.keyboard_shortcuts){$(document).unbind('keydown.prettyphoto').bind('keydown.prettyphoto',function(e){if(typeof $pp_pic_holder!='undefined'){if($pp_pic_holder.is(':visible')){switch(e.keyCode){case 37:$.prettyPhoto.changePage('previous');e.preventDefault();break;case 39:$.prettyPhoto.changePage('next');e.preventDefault();break;case 27:if(!settings.modal)
|
||||
$.prettyPhoto.close();e.preventDefault();break;};};};});}
|
||||
$.prettyPhoto.initialize=function(){settings=pp_settings;if($.browser.msie&&parseInt($.browser.version)==6)settings.theme="light_square";theRel=$(this).attr('rel');galleryRegExp=/\[(?:.*)\]/;isSet=(galleryRegExp.exec(theRel))?true:false;pp_images=(isSet)?jQuery.map(matchedObjects,function(n,i){if($(n).attr('rel').indexOf(theRel)!=-1)return $(n).attr('href');}):$.makeArray($(this).attr('href'));pp_titles=(isSet)?jQuery.map(matchedObjects,function(n,i){if($(n).attr('rel').indexOf(theRel)!=-1)return($(n).find('img').attr('alt'))?$(n).find('img').attr('alt'):"";}):$.makeArray($(this).find('img').attr('alt'));pp_descriptions=(isSet)?jQuery.map(matchedObjects,function(n,i){if($(n).attr('rel').indexOf(theRel)!=-1)return($(n).attr('title'))?$(n).attr('title'):"";}):$.makeArray($(this).attr('title'));_buildOverlay(this);if(settings.allow_resize)
|
||||
$(window).bind('scroll.prettyphoto',function(){_center_overlay();});set_position=jQuery.inArray($(this).attr('href'),pp_images);$.prettyPhoto.open();return false;}
|
||||
$.prettyPhoto.open=function(event){if(typeof settings=="undefined"){settings=pp_settings;if($.browser.msie&&$.browser.version==6)settings.theme="light_square";pp_images=$.makeArray(arguments[0]);pp_titles=(arguments[1])?$.makeArray(arguments[1]):$.makeArray("");pp_descriptions=(arguments[2])?$.makeArray(arguments[2]):$.makeArray("");isSet=(pp_images.length>1)?true:false;set_position=0;_buildOverlay(event.target);}
|
||||
if($.browser.msie&&$.browser.version==6)$('select').css('visibility','hidden');if(settings.hideflash)$('object,embed').css('visibility','hidden');_checkPosition($(pp_images).size());$('.pp_loaderIcon').show();if($ppt.is(':hidden'))$ppt.css('opacity',0).show();$pp_overlay.show().fadeTo(settings.animation_speed,settings.opacity);$pp_pic_holder.find('.currentTextHolder').text((set_position+1)+settings.counter_separator_label+$(pp_images).size());$pp_pic_holder.find('.pp_description').show().html(unescape(pp_descriptions[set_position]));(settings.show_title&&pp_titles[set_position]!=""&&typeof pp_titles[set_position]!="undefined")?$ppt.html(unescape(pp_titles[set_position])):$ppt.html(' ');movie_width=(parseFloat(grab_param('width',pp_images[set_position])))?grab_param('width',pp_images[set_position]):settings.default_width.toString();movie_height=(parseFloat(grab_param('height',pp_images[set_position])))?grab_param('height',pp_images[set_position]):settings.default_height.toString();if(movie_height.indexOf('%')!=-1){movie_height=parseFloat(($(window).height()*parseFloat(movie_height)/100)-150);percentBased=true;}
|
||||
if(movie_width.indexOf('%')!=-1){movie_width=parseFloat(($(window).width()*parseFloat(movie_width)/100)-150);percentBased=true;}
|
||||
$pp_pic_holder.fadeIn(function(){imgPreloader="";switch(_getFileType(pp_images[set_position])){case'image':imgPreloader=new Image();nextImage=new Image();if(isSet&&set_position<$(pp_images).size()-1)nextImage.src=pp_images[set_position+1];prevImage=new Image();if(isSet&&pp_images[set_position-1])prevImage.src=pp_images[set_position-1];$pp_pic_holder.find('#pp_full_res')[0].innerHTML=settings.image_markup.replace(/{path}/g,pp_images[set_position]);imgPreloader.onload=function(){pp_dimensions=_fitToViewport(imgPreloader.width,imgPreloader.height);_showContent();};imgPreloader.onerror=function(){alert('Image cannot be loaded. Make sure the path is correct and image exist.');$.prettyPhoto.close();};imgPreloader.src=pp_images[set_position];break;case'youtube':pp_dimensions=_fitToViewport(movie_width,movie_height);movie='http://www.youtube.com/v/'+grab_param('v',pp_images[set_position]);if(settings.autoplay)movie+="&autoplay=1";toInject=settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,movie);break;case'vimeo':pp_dimensions=_fitToViewport(movie_width,movie_height);movie_id=pp_images[set_position];var regExp=/http:\/\/(www\.)?vimeo.com\/(\d+)/;var match=movie_id.match(regExp);movie='http://player.vimeo.com/video/'+match[2]+'?title=0&byline=0&portrait=0';if(settings.autoplay)movie+="&autoplay=1;";vimeo_width=pp_dimensions['width']+'/embed/?moog_width='+pp_dimensions['width'];toInject=settings.iframe_markup.replace(/{width}/g,vimeo_width).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,movie);break;case'quicktime':pp_dimensions=_fitToViewport(movie_width,movie_height);pp_dimensions['height']+=15;pp_dimensions['contentHeight']+=15;pp_dimensions['containerHeight']+=15;toInject=settings.quicktime_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,pp_images[set_position]).replace(/{autoplay}/g,settings.autoplay);break;case'flash':pp_dimensions=_fitToViewport(movie_width,movie_height);flash_vars=pp_images[set_position];flash_vars=flash_vars.substring(pp_images[set_position].indexOf('flashvars')+10,pp_images[set_position].length);filename=pp_images[set_position];filename=filename.substring(0,filename.indexOf('?'));toInject=settings.flash_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{wmode}/g,settings.wmode).replace(/{path}/g,filename+'?'+flash_vars);break;case'iframe':pp_dimensions=_fitToViewport(movie_width,movie_height);frame_url=pp_images[set_position];frame_url=frame_url.substr(0,frame_url.indexOf('iframe')-1);toInject=settings.iframe_markup.replace(/{width}/g,pp_dimensions['width']).replace(/{height}/g,pp_dimensions['height']).replace(/{path}/g,frame_url);break;case'custom':pp_dimensions=_fitToViewport(movie_width,movie_height);toInject=settings.custom_markup;break;case'inline':myClone=$(pp_images[set_position]).clone().css({'width':settings.default_width}).wrapInner('<div id="pp_full_res"><div class="pp_inline clearfix"></div></div>').appendTo($('body')).show();doresize=false;pp_dimensions=_fitToViewport($(myClone).width(),$(myClone).height());doresize=true;$(myClone).remove();toInject=settings.inline_markup.replace(/{content}/g,$(pp_images[set_position]).html());break;};if(!imgPreloader){$pp_pic_holder.find('#pp_full_res')[0].innerHTML=toInject;_showContent();};});return false;};$.prettyPhoto.changePage=function(direction){currentGalleryPage=0;if(direction=='previous'){set_position--;if(set_position<0){set_position=0;return;};}else if(direction=='next'){set_position++;if(set_position>$(pp_images).size()-1){set_position=0;}}else{set_position=direction;};if(!doresize)doresize=true;$('.pp_contract').removeClass('pp_contract').addClass('pp_expand');_hideContent(function(){$.prettyPhoto.open();});};$.prettyPhoto.changeGalleryPage=function(direction){if(direction=='next'){currentGalleryPage++;if(currentGalleryPage>totalPage){currentGalleryPage=0;};}else if(direction=='previous'){currentGalleryPage--;if(currentGalleryPage<0){currentGalleryPage=totalPage;};}else{currentGalleryPage=direction;};itemsToSlide=(currentGalleryPage==totalPage)?pp_images.length-((totalPage)*itemsPerPage):itemsPerPage;$pp_pic_holder.find('.pp_gallery li').each(function(i){$(this).animate({'left':(i*itemWidth)-((itemsToSlide*itemWidth)*currentGalleryPage)});});};$.prettyPhoto.startSlideshow=function(){if(typeof pp_slideshow=='undefined'){$pp_pic_holder.find('.pp_play').unbind('click').removeClass('pp_play').addClass('pp_pause').click(function(){$.prettyPhoto.stopSlideshow();return false;});pp_slideshow=setInterval($.prettyPhoto.startSlideshow,settings.slideshow);}else{$.prettyPhoto.changePage('next');};}
|
||||
$.prettyPhoto.stopSlideshow=function(){$pp_pic_holder.find('.pp_pause').unbind('click').removeClass('pp_pause').addClass('pp_play').click(function(){$.prettyPhoto.startSlideshow();return false;});clearInterval(pp_slideshow);pp_slideshow=undefined;}
|
||||
$.prettyPhoto.close=function(){if($pp_overlay.is(":animated"))return;$.prettyPhoto.stopSlideshow();$pp_pic_holder.stop().find('object,embed').css('visibility','hidden');$('div.pp_pic_holder,div.ppt,.pp_fade').fadeOut(settings.animation_speed,function(){$(this).remove();});$pp_overlay.fadeOut(settings.animation_speed,function(){if($.browser.msie&&$.browser.version==6)$('select').css('visibility','visible');if(settings.hideflash)$('object,embed').css('visibility','visible');$(this).remove();$(window).unbind('scroll');settings.callback();doresize=true;pp_open=false;delete settings;});};function _showContent(){$('.pp_loaderIcon').hide();$ppt.fadeTo(settings.animation_speed,1);projectedTop=scroll_pos['scrollTop']+((windowHeight/2)-(pp_dimensions['containerHeight']/2));if(projectedTop<0)projectedTop=0;$pp_pic_holder.find('.pp_content').animate({height:pp_dimensions['contentHeight'],width:pp_dimensions['contentWidth']},settings.animation_speed);$pp_pic_holder.animate({'top':projectedTop,'left':(windowWidth/2)-(pp_dimensions['containerWidth']/2),width:pp_dimensions['containerWidth']},settings.animation_speed,function(){$pp_pic_holder.find('.pp_hoverContainer,#fullResImage').height(pp_dimensions['height']).width(pp_dimensions['width']);$pp_pic_holder.find('.pp_fade').fadeIn(settings.animation_speed);if(isSet&&_getFileType(pp_images[set_position])=="image"){$pp_pic_holder.find('.pp_hoverContainer').show();}else{$pp_pic_holder.find('.pp_hoverContainer').hide();}
|
||||
if(pp_dimensions['resized']){$('a.pp_expand,a.pp_contract').show();}else{$('a.pp_expand,a.pp_contract').hide();}
|
||||
if(settings.autoplay_slideshow&&!pp_slideshow&&!pp_open)$.prettyPhoto.startSlideshow();settings.changepicturecallback();pp_open=true;});_insert_gallery();};function _hideContent(callback){$pp_pic_holder.find('#pp_full_res object,#pp_full_res embed').css('visibility','hidden');$pp_pic_holder.find('.pp_fade').fadeOut(settings.animation_speed,function(){$('.pp_loaderIcon').show();callback();});};function _checkPosition(setCount){(setCount>1)?$('.pp_nav').show():$('.pp_nav').hide();};function _fitToViewport(width,height){resized=false;_getDimensions(width,height);imageWidth=width,imageHeight=height;if(((pp_containerWidth>windowWidth)||(pp_containerHeight>windowHeight))&&doresize&&settings.allow_resize&&!percentBased){resized=true,fitting=false;while(!fitting){if((pp_containerWidth>windowWidth)){imageWidth=(windowWidth-200);imageHeight=(height/width)*imageWidth;}else if((pp_containerHeight>windowHeight)){imageHeight=(windowHeight-200);imageWidth=(width/height)*imageHeight;}else{fitting=true;};pp_containerHeight=imageHeight,pp_containerWidth=imageWidth;};_getDimensions(imageWidth,imageHeight);};return{width:Math.floor(imageWidth),height:Math.floor(imageHeight),containerHeight:Math.floor(pp_containerHeight),containerWidth:Math.floor(pp_containerWidth)+40,contentHeight:Math.floor(pp_contentHeight),contentWidth:Math.floor(pp_contentWidth),resized:resized};};function _getDimensions(width,height){width=parseFloat(width);height=parseFloat(height);$pp_details=$pp_pic_holder.find('.pp_details');$pp_details.width(width);detailsHeight=parseFloat($pp_details.css('marginTop'))+parseFloat($pp_details.css('marginBottom'));$pp_details=$pp_details.clone().appendTo($('body')).css({'position':'absolute','top':-10000});detailsHeight+=$pp_details.height();detailsHeight=(detailsHeight<=34)?36:detailsHeight;if($.browser.msie&&$.browser.version==7)detailsHeight+=8;$pp_details.remove();$pp_title=$pp_pic_holder.find('.ppt');$pp_title.width(width);titleHeight=parseFloat($pp_title.css('marginTop'))+parseFloat($pp_title.css('marginBottom'));$pp_title=$pp_title.clone().appendTo($('body')).css({'position':'absolute','top':-10000});titleHeight+=$pp_title.height();$pp_title.remove();pp_contentHeight=height+detailsHeight;pp_contentWidth=width;pp_containerHeight=pp_contentHeight+titleHeight+$pp_pic_holder.find('.pp_top').height()+$pp_pic_holder.find('.pp_bottom').height();pp_containerWidth=width;}
|
||||
function _getFileType(itemSrc){if(itemSrc.match(/youtube\.com\/watch/i)){return'youtube';}else if(itemSrc.match(/vimeo\.com/i)){return'vimeo';}else if(itemSrc.match(/\b.mov\b/i)){return'quicktime';}else if(itemSrc.match(/\b.swf\b/i)){return'flash';}else if(itemSrc.match(/\biframe=true\b/i)){return'iframe';}else if(itemSrc.match(/\bcustom=true\b/i)){return'custom';}else if(itemSrc.substr(0,1)=='#'){return'inline';}else{return'image';};};function _center_overlay(){if(doresize&&typeof $pp_pic_holder!='undefined'){scroll_pos=_get_scroll();contentHeight=$pp_pic_holder.height(),contentwidth=$pp_pic_holder.width();projectedTop=(windowHeight/2)+scroll_pos['scrollTop']-(contentHeight/2);if(projectedTop<0)projectedTop=0;$pp_pic_holder.css({'top':projectedTop,'left':(windowWidth/2)+scroll_pos['scrollLeft']-(contentwidth/2)});};};function _get_scroll(){if(self.pageYOffset){return{scrollTop:self.pageYOffset,scrollLeft:self.pageXOffset};}else if(document.documentElement&&document.documentElement.scrollTop){return{scrollTop:document.documentElement.scrollTop,scrollLeft:document.documentElement.scrollLeft};}else if(document.body){return{scrollTop:document.body.scrollTop,scrollLeft:document.body.scrollLeft};};};function _resize_overlay(){windowHeight=$(window).height(),windowWidth=$(window).width();if(typeof $pp_overlay!="undefined")$pp_overlay.height($(document).height()).width(windowWidth);};function _insert_gallery(){if(isSet&&settings.overlay_gallery&&_getFileType(pp_images[set_position])=="image"){itemWidth=52+5;navWidth=(settings.theme=="facebook")?58:38;itemsPerPage=Math.floor((pp_dimensions['containerWidth']-100-navWidth)/itemWidth);itemsPerPage=(itemsPerPage<pp_images.length)?itemsPerPage:pp_images.length;totalPage=Math.ceil(pp_images.length/itemsPerPage)-1;if(totalPage==0){navWidth=0;$pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').hide();}else{$pp_pic_holder.find('.pp_gallery .pp_arrow_next,.pp_gallery .pp_arrow_previous').show();};galleryWidth=itemsPerPage*itemWidth+navWidth;$pp_pic_holder.find('.pp_gallery').width(galleryWidth).css('margin-left',-(galleryWidth/2));$pp_pic_holder.find('.pp_gallery ul').width(itemsPerPage*itemWidth).find('li.selected').removeClass('selected');goToPage=(Math.ceil((set_position+1)/itemsPerPage)<totalPage)?Math.ceil((set_position+1)/itemsPerPage):totalPage;$.prettyPhoto.changeGalleryPage(goToPage);$pp_pic_holder.find('.pp_gallery ul li:eq('+set_position+')').addClass('selected');}else{$pp_pic_holder.find('.pp_content').unbind('mouseenter mouseleave');$pp_pic_holder.find('.pp_gallery').hide();}}
|
||||
function _buildOverlay(caller){$('body').append(settings.markup);$pp_pic_holder=$('.pp_pic_holder'),$ppt=$('.ppt'),$pp_overlay=$('div.pp_overlay');if(isSet&&settings.overlay_gallery){currentGalleryPage=0;toInject="";for(var i=0;i<pp_images.length;i++){if(!pp_images[i].match(/\b(jpg|jpeg|png|gif)\b/gi)){classname='default';}else{classname='';}
|
||||
toInject+="<li class='"+classname+"'><a href='#'><img src='"+pp_images[i]+"' width='50' alt='' /></a></li>";};toInject=settings.gallery_markup.replace(/{gallery}/g,toInject);$pp_pic_holder.find('#pp_full_res').after(toInject);$pp_pic_holder.find('.pp_gallery .pp_arrow_next').click(function(){$.prettyPhoto.changeGalleryPage('next');$.prettyPhoto.stopSlideshow();return false;});$pp_pic_holder.find('.pp_gallery .pp_arrow_previous').click(function(){$.prettyPhoto.changeGalleryPage('previous');$.prettyPhoto.stopSlideshow();return false;});$pp_pic_holder.find('.pp_content').hover(function(){$pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeIn();},function(){$pp_pic_holder.find('.pp_gallery:not(.disabled)').fadeOut();});itemWidth=52+5;$pp_pic_holder.find('.pp_gallery ul li').each(function(i){$(this).css({'position':'absolute','left':i*itemWidth});$(this).find('a').unbind('click').click(function(){$.prettyPhoto.changePage(i);$.prettyPhoto.stopSlideshow();return false;});});};if(settings.slideshow){$pp_pic_holder.find('.pp_nav').prepend('<a href="#" class="pp_play">Play</a>')
|
||||
$pp_pic_holder.find('.pp_nav .pp_play').click(function(){$.prettyPhoto.startSlideshow();return false;});}
|
||||
$pp_pic_holder.attr('class','pp_pic_holder '+settings.theme);$pp_overlay.css({'opacity':0,'height':$(document).height(),'width':$(window).width()}).bind('click',function(){if(!settings.modal)$.prettyPhoto.close();});$('a.pp_close').bind('click',function(){$.prettyPhoto.close();return false;});$('a.pp_expand').bind('click',function(e){if($(this).hasClass('pp_expand')){$(this).removeClass('pp_expand').addClass('pp_contract');doresize=false;}else{$(this).removeClass('pp_contract').addClass('pp_expand');doresize=true;};_hideContent(function(){$.prettyPhoto.open();});return false;});$pp_pic_holder.find('.pp_previous, .pp_nav .pp_arrow_previous').bind('click',function(){$.prettyPhoto.changePage('previous');$.prettyPhoto.stopSlideshow();return false;});$pp_pic_holder.find('.pp_next, .pp_nav .pp_arrow_next').bind('click',function(){$.prettyPhoto.changePage('next');$.prettyPhoto.stopSlideshow();return false;});_center_overlay();};return this.unbind('click.prettyphoto').bind('click.prettyphoto',$.prettyPhoto.initialize);};function grab_param(name,url){name=name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");var regexS="[\\?&]"+name+"=([^&#]*)";var regex=new RegExp(regexS);var results=regex.exec(url);return(results==null)?"":results[1];}})(jQuery);
|
||||
|
Before Width: | Height: | Size: 548 B |
|
Before Width: | Height: | Size: 545 B |
|
Before Width: | Height: | Size: 555 B |
|
Before Width: | Height: | Size: 547 B |
|
Before Width: | Height: | Size: 545 B |
|
Before Width: | Height: | Size: 536 B |
|
Before Width: | Height: | Size: 544 B |
|
Before Width: | Height: | Size: 550 B |
|
Before Width: | Height: | Size: 11 KiB |
|
Before Width: | Height: | Size: 7.6 KiB |
|
Before Width: | Height: | Size: 244 B |
|
Before Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 3.2 KiB |
|
Before Width: | Height: | Size: 4.1 KiB |
|
Before Width: | Height: | Size: 1.7 KiB |
|
Before Width: | Height: | Size: 4.3 KiB |