Created
July 7, 2015 23:22
-
-
Save rabeet/1bb458b6bdbd39940173 to your computer and use it in GitHub Desktop.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
// JavaScript Document | |
//NIVO SLIDER PLUGIN | |
/* | |
* jQuery Nivo Slider v2.7.1 | |
* http://nivo.dev7studios.com | |
* | |
* Copyright 2011, Gilbert Pellegrom | |
* Free to use and abuse under the MIT license. | |
* http://www.opensource.org/licenses/mit-license.php | |
* | |
* March 2010 | |
*/ | |
(function($) { | |
var NivoSlider = function(element, options){ | |
//Defaults are below | |
var settings = $.extend({}, $.fn.nivoSlider.defaults, options); | |
//Useful variables. Play carefully. | |
var vars = { | |
currentSlide: 0, | |
currentImage: '', | |
totalSlides: 0, | |
running: false, | |
paused: false, | |
stop: false | |
}; | |
//Get this slider | |
var slider = $(element); | |
slider.data('nivo:vars', vars); | |
slider.css('position','relative'); | |
slider.addClass('nivoSlider'); | |
//Find our slider children | |
var kids = slider.children(); | |
kids.each(function() { | |
var child = $(this); | |
var link = ''; | |
if(!child.is('img')){ | |
if(child.is('a')){ | |
child.addClass('nivo-imageLink'); | |
link = child; | |
} | |
child = child.find('img:first'); | |
} | |
//Get img width & height | |
var childWidth = child.width(); | |
if(childWidth == 0) childWidth = child.attr('width'); | |
var childHeight = child.height(); | |
if(childHeight == 0) childHeight = child.attr('height'); | |
//Resize the slider | |
if(childWidth > slider.width()){ | |
slider.width(childWidth); | |
} | |
if(childHeight > slider.height()){ | |
slider.height(childHeight); | |
} | |
if(link != ''){ | |
link.css('display','none'); | |
} | |
child.css('display','none'); | |
vars.totalSlides++; | |
}); | |
//If randomStart | |
if(settings.randomStart){ | |
settings.startSlide = Math.floor(Math.random() * vars.totalSlides); | |
} | |
//Set startSlide | |
if(settings.startSlide > 0){ | |
if(settings.startSlide >= vars.totalSlides) settings.startSlide = vars.totalSlides - 1; | |
vars.currentSlide = settings.startSlide; | |
} | |
//Get initial image | |
if($(kids[vars.currentSlide]).is('img')){ | |
vars.currentImage = $(kids[vars.currentSlide]); | |
} else { | |
vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); | |
} | |
//Show initial link | |
if($(kids[vars.currentSlide]).is('a')){ | |
$(kids[vars.currentSlide]).css('display','block'); | |
} | |
//Set first background | |
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat'); | |
//Create caption | |
slider.append( | |
$('<div class="nivo-caption"><p></p></div>').css({ display:'none', opacity:settings.captionOpacity }) | |
); | |
// Cross browser default caption opacity | |
$('.nivo-caption', slider).css('opacity', 0); | |
// Process caption function | |
var processCaption = function(settings){ | |
var nivoCaption = $('.nivo-caption', slider); | |
if(vars.currentImage.attr('title') != '' && vars.currentImage.attr('title') != undefined){ | |
var title = vars.currentImage.attr('title'); | |
if(title.substr(0,1) == '#') title = $(title).html(); | |
if(nivoCaption.css('opacity') != 0){ | |
nivoCaption.find('p').stop().fadeTo(settings.animSpeed, 0, function(){ | |
$(this).html(title); | |
$(this).stop().fadeTo(settings.animSpeed, 1); | |
}); | |
} else { | |
nivoCaption.find('p').html(title); | |
} | |
nivoCaption.stop().fadeTo(settings.animSpeed, settings.captionOpacity); | |
} else { | |
nivoCaption.stop().fadeTo(settings.animSpeed, 0); | |
} | |
} | |
//Process initial caption | |
processCaption(settings); | |
//In the words of Super Mario "let's a go!" | |
var timer = 0; | |
if(!settings.manualAdvance && kids.length > 1){ | |
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); | |
} | |
//Add Direction nav | |
if(settings.directionNav){ | |
slider.append('<div class="nivo-directionNav"><a class="nivo-prevNav">'+ settings.prevText +'</a><a class="nivo-nextNav">'+ settings.nextText +'</a></div>'); | |
//Hide Direction nav | |
if(settings.directionNavHide){ | |
$('.nivo-directionNav', slider).hide(); | |
slider.hover(function(){ | |
$('.nivo-directionNav', slider).show(); | |
}, function(){ | |
$('.nivo-directionNav', slider).hide(); | |
}); | |
} | |
$('a.nivo-prevNav', slider).live('click', function(){ | |
if(vars.running) return false; | |
clearInterval(timer); | |
timer = ''; | |
vars.currentSlide -= 2; | |
nivoRun(slider, kids, settings, 'prev'); | |
}); | |
$('a.nivo-nextNav', slider).live('click', function(){ | |
if(vars.running) return false; | |
clearInterval(timer); | |
timer = ''; | |
nivoRun(slider, kids, settings, 'next'); | |
}); | |
} | |
//Add Control nav | |
if(settings.controlNav){ | |
var nivoControl = $('<div class="nivo-controlNav"></div>'); | |
slider.append(nivoControl); | |
for(var i = 0; i < kids.length; i++){ | |
if(settings.controlNavThumbs){ | |
var child = kids.eq(i); | |
if(!child.is('img')){ | |
child = child.find('img:first'); | |
} | |
if (settings.controlNavThumbsFromRel) { | |
nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('rel') + '" alt="" /></a>'); | |
} else { | |
nivoControl.append('<a class="nivo-control" rel="'+ i +'"><img src="'+ child.attr('src').replace(settings.controlNavThumbsSearch, settings.controlNavThumbsReplace) +'" alt="" /></a>'); | |
} | |
} else { | |
nivoControl.append('<a class="nivo-control" rel="'+ i +'">'+ (i + 1) +'</a>'); | |
} | |
} | |
//Set initial active link | |
$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active'); | |
$('.nivo-controlNav a', slider).live('click', function(){ | |
if(vars.running) return false; | |
if($(this).hasClass('active')) return false; | |
clearInterval(timer); | |
timer = ''; | |
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat'); | |
vars.currentSlide = $(this).attr('rel') - 1; | |
nivoRun(slider, kids, settings, 'control'); | |
}); | |
} | |
//Keyboard Navigation | |
if(settings.keyboardNav){ | |
$(window).keypress(function(event){ | |
//Left | |
if(event.keyCode == '37'){ | |
if(vars.running) return false; | |
clearInterval(timer); | |
timer = ''; | |
vars.currentSlide-=2; | |
nivoRun(slider, kids, settings, 'prev'); | |
} | |
//Right | |
if(event.keyCode == '39'){ | |
if(vars.running) return false; | |
clearInterval(timer); | |
timer = ''; | |
nivoRun(slider, kids, settings, 'next'); | |
} | |
}); | |
} | |
//For pauseOnHover setting | |
if(settings.pauseOnHover){ | |
slider.hover(function(){ | |
vars.paused = true; | |
clearInterval(timer); | |
timer = ''; | |
}, function(){ | |
vars.paused = false; | |
//Restart the timer | |
if(timer == '' && !settings.manualAdvance){ | |
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); | |
} | |
}); | |
} | |
//Event when Animation finishes | |
slider.bind('nivo:animFinished', function(){ | |
vars.running = false; | |
//Hide child links | |
$(kids).each(function(){ | |
if($(this).is('a')){ | |
$(this).css('display','none'); | |
} | |
}); | |
//Show current link | |
if($(kids[vars.currentSlide]).is('a')){ | |
$(kids[vars.currentSlide]).css('display','block'); | |
} | |
//Restart the timer | |
if(timer == '' && !vars.paused && !settings.manualAdvance){ | |
timer = setInterval(function(){ nivoRun(slider, kids, settings, false); }, settings.pauseTime); | |
} | |
//Trigger the afterChange callback | |
settings.afterChange.call(this); | |
}); | |
// Add slices for slice animations | |
var createSlices = function(slider, settings, vars){ | |
for(var i = 0; i < settings.slices; i++){ | |
var sliceWidth = Math.round(slider.width()/settings.slices); | |
if(i == settings.slices-1){ | |
slider.append( | |
$('<div class="nivo-slice"></div>').css({ | |
left:(sliceWidth*i)+'px', width:(slider.width()-(sliceWidth*i))+'px', | |
height:'0px', | |
opacity:'0', | |
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' | |
}) | |
); | |
} else { | |
slider.append( | |
$('<div class="nivo-slice"></div>').css({ | |
left:(sliceWidth*i)+'px', width:sliceWidth+'px', | |
height:'0px', | |
opacity:'0', | |
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((sliceWidth + (i * sliceWidth)) - sliceWidth) +'px 0%' | |
}) | |
); | |
} | |
} | |
} | |
// Add boxes for box animations | |
var createBoxes = function(slider, settings, vars){ | |
var boxWidth = Math.round(slider.width()/settings.boxCols); | |
var boxHeight = Math.round(slider.height()/settings.boxRows); | |
for(var rows = 0; rows < settings.boxRows; rows++){ | |
for(var cols = 0; cols < settings.boxCols; cols++){ | |
if(cols == settings.boxCols-1){ | |
slider.append( | |
$('<div class="nivo-box"></div>').css({ | |
opacity:0, | |
left:(boxWidth*cols)+'px', | |
top:(boxHeight*rows)+'px', | |
width:(slider.width()-(boxWidth*cols))+'px', | |
height:boxHeight+'px', | |
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px' | |
}) | |
); | |
} else { | |
slider.append( | |
$('<div class="nivo-box"></div>').css({ | |
opacity:0, | |
left:(boxWidth*cols)+'px', | |
top:(boxHeight*rows)+'px', | |
width:boxWidth+'px', | |
height:boxHeight+'px', | |
background: 'url("'+ vars.currentImage.attr('src') +'") no-repeat -'+ ((boxWidth + (cols * boxWidth)) - boxWidth) +'px -'+ ((boxHeight + (rows * boxHeight)) - boxHeight) +'px' | |
}) | |
); | |
} | |
} | |
} | |
} | |
// Private run method | |
var nivoRun = function(slider, kids, settings, nudge){ | |
//Get our vars | |
var vars = slider.data('nivo:vars'); | |
//Trigger the lastSlide callback | |
if(vars && (vars.currentSlide == vars.totalSlides - 1)){ | |
settings.lastSlide.call(this); | |
} | |
// Stop | |
if((!vars || vars.stop) && !nudge) return false; | |
//Trigger the beforeChange callback | |
settings.beforeChange.call(this); | |
//Set current background before change | |
if(!nudge){ | |
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat'); | |
} else { | |
if(nudge == 'prev'){ | |
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat'); | |
} | |
if(nudge == 'next'){ | |
slider.css('background','url("'+ vars.currentImage.attr('src') +'") no-repeat'); | |
} | |
} | |
vars.currentSlide++; | |
//Trigger the slideshowEnd callback | |
if(vars.currentSlide == vars.totalSlides){ | |
vars.currentSlide = 0; | |
settings.slideshowEnd.call(this); | |
} | |
if(vars.currentSlide < 0) vars.currentSlide = (vars.totalSlides - 1); | |
//Set vars.currentImage | |
if($(kids[vars.currentSlide]).is('img')){ | |
vars.currentImage = $(kids[vars.currentSlide]); | |
} else { | |
vars.currentImage = $(kids[vars.currentSlide]).find('img:first'); | |
} | |
//Set active links | |
if(settings.controlNav){ | |
$('.nivo-controlNav a', slider).removeClass('active'); | |
$('.nivo-controlNav a:eq('+ vars.currentSlide +')', slider).addClass('active'); | |
} | |
//Process caption | |
processCaption(settings); | |
// Remove any slices from last transition | |
$('.nivo-slice', slider).remove(); | |
// Remove any boxes from last transition | |
$('.nivo-box', slider).remove(); | |
var currentEffect = settings.effect; | |
//Generate random effect | |
if(settings.effect == 'random'){ | |
var anims = new Array('sliceDownRight','sliceDownLeft','sliceUpRight','sliceUpLeft','sliceUpDown','sliceUpDownLeft','fold','fade', | |
'boxRandom','boxRain','boxRainReverse','boxRainGrow','boxRainGrowReverse'); | |
currentEffect = anims[Math.floor(Math.random()*(anims.length + 1))]; | |
if(currentEffect == undefined) currentEffect = 'fade'; | |
} | |
//Run random effect from specified set (eg: effect:'fold,fade') | |
if(settings.effect.indexOf(',') != -1){ | |
var anims = settings.effect.split(','); | |
currentEffect = anims[Math.floor(Math.random()*(anims.length))]; | |
if(currentEffect == undefined) currentEffect = 'fade'; | |
} | |
//Custom transition as defined by "data-transition" attribute | |
if(vars.currentImage.attr('data-transition')){ | |
currentEffect = vars.currentImage.attr('data-transition'); | |
} | |
//Run effects | |
vars.running = true; | |
if(currentEffect == 'sliceDown' || currentEffect == 'sliceDownRight' || currentEffect == 'sliceDownLeft'){ | |
createSlices(slider, settings, vars); | |
var timeBuff = 0; | |
var i = 0; | |
var slices = $('.nivo-slice', slider); | |
if(currentEffect == 'sliceDownLeft') slices = $('.nivo-slice', slider)._reverse(); | |
slices.each(function(){ | |
var slice = $(this); | |
slice.css({ 'top': '0px' }); | |
if(i == settings.slices-1){ | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + timeBuff)); | |
} else { | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed); | |
}, (100 + timeBuff)); | |
} | |
timeBuff += 50; | |
i++; | |
}); | |
} | |
else if(currentEffect == 'sliceUp' || currentEffect == 'sliceUpRight' || currentEffect == 'sliceUpLeft'){ | |
createSlices(slider, settings, vars); | |
var timeBuff = 0; | |
var i = 0; | |
var slices = $('.nivo-slice', slider); | |
if(currentEffect == 'sliceUpLeft') slices = $('.nivo-slice', slider)._reverse(); | |
slices.each(function(){ | |
var slice = $(this); | |
slice.css({ 'bottom': '0px' }); | |
if(i == settings.slices-1){ | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + timeBuff)); | |
} else { | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed); | |
}, (100 + timeBuff)); | |
} | |
timeBuff += 50; | |
i++; | |
}); | |
} | |
else if(currentEffect == 'sliceUpDown' || currentEffect == 'sliceUpDownRight' || currentEffect == 'sliceUpDownLeft'){ | |
createSlices(slider, settings, vars); | |
var timeBuff = 0; | |
var i = 0; | |
var v = 0; | |
var slices = $('.nivo-slice', slider); | |
if(currentEffect == 'sliceUpDownLeft') slices = $('.nivo-slice', slider)._reverse(); | |
slices.each(function(){ | |
var slice = $(this); | |
if(i == 0){ | |
slice.css('top','0px'); | |
i++; | |
} else { | |
slice.css('bottom','0px'); | |
i = 0; | |
} | |
if(v == settings.slices-1){ | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + timeBuff)); | |
} else { | |
setTimeout(function(){ | |
slice.animate({ height:'100%', opacity:'1.0' }, settings.animSpeed); | |
}, (100 + timeBuff)); | |
} | |
timeBuff += 50; | |
v++; | |
}); | |
} | |
else if(currentEffect == 'fold'){ | |
createSlices(slider, settings, vars); | |
var timeBuff = 0; | |
var i = 0; | |
$('.nivo-slice', slider).each(function(){ | |
var slice = $(this); | |
var origWidth = slice.width(); | |
slice.css({ top:'0px', height:'100%', width:'0px' }); | |
if(i == settings.slices-1){ | |
setTimeout(function(){ | |
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + timeBuff)); | |
} else { | |
setTimeout(function(){ | |
slice.animate({ width:origWidth, opacity:'1.0' }, settings.animSpeed); | |
}, (100 + timeBuff)); | |
} | |
timeBuff += 50; | |
i++; | |
}); | |
} | |
else if(currentEffect == 'fade'){ | |
createSlices(slider, settings, vars); | |
var firstSlice = $('.nivo-slice:first', slider); | |
firstSlice.css({ | |
'height': '100%', | |
'width': slider.width() + 'px' | |
}); | |
firstSlice.animate({ opacity:'1.0' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); }); | |
} | |
else if(currentEffect == 'slideInRight'){ | |
createSlices(slider, settings, vars); | |
var firstSlice = $('.nivo-slice:first', slider); | |
firstSlice.css({ | |
'height': '100%', | |
'width': '0px', | |
'opacity': '1' | |
}); | |
firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ slider.trigger('nivo:animFinished'); }); | |
} | |
else if(currentEffect == 'slideInLeft'){ | |
createSlices(slider, settings, vars); | |
var firstSlice = $('.nivo-slice:first', slider); | |
firstSlice.css({ | |
'height': '100%', | |
'width': '0px', | |
'opacity': '1', | |
'left': '', | |
'right': '0px' | |
}); | |
firstSlice.animate({ width: slider.width() + 'px' }, (settings.animSpeed*2), '', function(){ | |
// Reset positioning | |
firstSlice.css({ | |
'left': '0px', | |
'right': '' | |
}); | |
slider.trigger('nivo:animFinished'); | |
}); | |
} | |
else if(currentEffect == 'boxRandom'){ | |
createBoxes(slider, settings, vars); | |
var totalBoxes = settings.boxCols * settings.boxRows; | |
var i = 0; | |
var timeBuff = 0; | |
var boxes = shuffle($('.nivo-box', slider)); | |
boxes.each(function(){ | |
var box = $(this); | |
if(i == totalBoxes-1){ | |
setTimeout(function(){ | |
box.animate({ opacity:'1' }, settings.animSpeed, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + timeBuff)); | |
} else { | |
setTimeout(function(){ | |
box.animate({ opacity:'1' }, settings.animSpeed); | |
}, (100 + timeBuff)); | |
} | |
timeBuff += 20; | |
i++; | |
}); | |
} | |
else if(currentEffect == 'boxRain' || currentEffect == 'boxRainReverse' || currentEffect == 'boxRainGrow' || currentEffect == 'boxRainGrowReverse'){ | |
createBoxes(slider, settings, vars); | |
var totalBoxes = settings.boxCols * settings.boxRows; | |
var i = 0; | |
var timeBuff = 0; | |
// Split boxes into 2D array | |
var rowIndex = 0; | |
var colIndex = 0; | |
var box2Darr = new Array(); | |
box2Darr[rowIndex] = new Array(); | |
var boxes = $('.nivo-box', slider); | |
if(currentEffect == 'boxRainReverse' || currentEffect == 'boxRainGrowReverse'){ | |
boxes = $('.nivo-box', slider)._reverse(); | |
} | |
boxes.each(function(){ | |
box2Darr[rowIndex][colIndex] = $(this); | |
colIndex++; | |
if(colIndex == settings.boxCols){ | |
rowIndex++; | |
colIndex = 0; | |
box2Darr[rowIndex] = new Array(); | |
} | |
}); | |
// Run animation | |
for(var cols = 0; cols < (settings.boxCols * 2); cols++){ | |
var prevCol = cols; | |
for(var rows = 0; rows < settings.boxRows; rows++){ | |
if(prevCol >= 0 && prevCol < settings.boxCols){ | |
/* Due to some weird JS bug with loop vars | |
being used in setTimeout, this is wrapped | |
with an anonymous function call */ | |
(function(row, col, time, i, totalBoxes) { | |
var box = $(box2Darr[row][col]); | |
var w = box.width(); | |
var h = box.height(); | |
if(currentEffect == 'boxRainGrow' || currentEffect == 'boxRainGrowReverse'){ | |
box.width(0).height(0); | |
} | |
if(i == totalBoxes-1){ | |
setTimeout(function(){ | |
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3, '', function(){ slider.trigger('nivo:animFinished'); }); | |
}, (100 + time)); | |
} else { | |
setTimeout(function(){ | |
box.animate({ opacity:'1', width:w, height:h }, settings.animSpeed/1.3); | |
}, (100 + time)); | |
} | |
})(rows, prevCol, timeBuff, i, totalBoxes); | |
i++; | |
} | |
prevCol--; | |
} | |
timeBuff += 100; | |
} | |
} | |
} | |
// Shuffle an array | |
var shuffle = function(arr){ | |
for(var j, x, i = arr.length; i; j = parseInt(Math.random() * i), x = arr[--i], arr[i] = arr[j], arr[j] = x); | |
return arr; | |
} | |
// For debugging | |
var trace = function(msg){ | |
if (this.console && typeof console.log != "undefined") | |
console.log(msg); | |
} | |
// Start / Stop | |
this.stop = function(){ | |
if(!$(element).data('nivo:vars').stop){ | |
$(element).data('nivo:vars').stop = true; | |
trace('Stop Slider'); | |
} | |
} | |
this.start = function(){ | |
if($(element).data('nivo:vars').stop){ | |
$(element).data('nivo:vars').stop = false; | |
trace('Start Slider'); | |
} | |
} | |
//Trigger the afterLoad callback | |
settings.afterLoad.call(this); | |
return this; | |
}; | |
$.fn.nivoSlider = function(options) { | |
return this.each(function(key, value){ | |
var element = $(this); | |
// Return early if this element already has a plugin instance | |
if (element.data('nivoslider')) return element.data('nivoslider'); | |
// Pass options to plugin constructor | |
var nivoslider = new NivoSlider(this, options); | |
// Store plugin object in this element's data | |
element.data('nivoslider', nivoslider); | |
}); | |
}; | |
//Default settings | |
$.fn.nivoSlider.defaults = { | |
effect: 'random', | |
slices: 15, | |
boxCols: 8, | |
boxRows: 4, | |
animSpeed: 500, | |
pauseTime: 3000, | |
startSlide: 0, | |
directionNav: true, | |
directionNavHide: true, | |
controlNav: true, | |
controlNavThumbs: false, | |
controlNavThumbsFromRel: false, | |
controlNavThumbsSearch: '.jpg', | |
controlNavThumbsReplace: '_thumb.jpg', | |
keyboardNav: true, | |
pauseOnHover: true, | |
manualAdvance: false, | |
captionOpacity: 0.8, | |
prevText: 'Prev', | |
nextText: 'Next', | |
randomStart: false, | |
beforeChange: function(){}, | |
afterChange: function(){}, | |
slideshowEnd: function(){}, | |
lastSlide: function(){}, | |
afterLoad: function(){} | |
}; | |
$.fn._reverse = [].reverse; | |
})(jQuery); | |
//END NIVO SLIDER PLUGIN | |
//COLOR ANIMATION PLUGIN: JQUERY ANIMATE COLORS | |
/**! | |
* @preserve Color animation jQuery-plugin | |
* http://www.bitstorm.org/jquery/color-animation/ | |
* Copyright 2011 Edwin Martin <[email protected]> | |
* Released under the MIT and GPL licenses. | |
*/ | |
(function($) { | |
/** | |
* Check whether the browser supports RGBA color mode. | |
* | |
* Author Mehdi Kabab <http://pioupioum.fr> | |
* @return {boolean} True if the browser support RGBA. False otherwise. | |
*/ | |
function isRGBACapable() { | |
var $script = $('script:first'), | |
color = $script.css('color'), | |
result = false; | |
if (/^rgba/.test(color)) { | |
result = true; | |
} else { | |
try { | |
result = ( color != $script.css('color', 'rgba(0, 0, 0, 0.5)').css('color') ); | |
$script.css('color', color); | |
} catch (e) { | |
} | |
} | |
return result; | |
} | |
$.extend(true, $, { | |
support: { | |
'rgba': isRGBACapable() | |
} | |
}); | |
var properties = ['color', 'backgroundColor', 'borderBottomColor', 'borderLeftColor', 'borderRightColor', 'borderTopColor', 'outlineColor']; | |
$.each(properties, function(i, property) { | |
$.fx.step[property] = function(fx) { | |
if (!fx.init) { | |
fx.begin = parseColor($(fx.elem).css(property)); | |
fx.end = parseColor(fx.end); | |
fx.init = true; | |
} | |
fx.elem.style[property] = calculateColor(fx.begin, fx.end, fx.pos); | |
} | |
}); | |
// borderColor doesn't fit in standard fx.step above. | |
$.fx.step.borderColor = function(fx) { | |
if (!fx.init) { | |
fx.end = parseColor(fx.end); | |
} | |
var borders = properties.slice(2, 6); // All four border properties | |
$.each(borders, function(i, property) { | |
if (!fx.init) { | |
fx[property] = {begin: parseColor($(fx.elem).css(property))}; | |
} | |
fx.elem.style[property] = calculateColor(fx[property].begin, fx.end, fx.pos); | |
}); | |
fx.init = true; | |
} | |
// Calculate an in-between color. Returns "#aabbcc"-like string. | |
function calculateColor(begin, end, pos) { | |
var color = 'rgb' + ($.support['rgba'] ? 'a' : '') + '(' | |
+ parseInt((begin[0] + pos * (end[0] - begin[0])), 10) + ',' | |
+ parseInt((begin[1] + pos * (end[1] - begin[1])), 10) + ',' | |
+ parseInt((begin[2] + pos * (end[2] - begin[2])), 10); | |
if ($.support['rgba']) { | |
color += ',' + (begin && end ? parseFloat(begin[3] + pos * (end[3] - begin[3])) : 1); | |
} | |
color += ')'; | |
return color; | |
} | |
// Parse an CSS-syntax color. Outputs an array [r, g, b] | |
function parseColor(color) { | |
var match, triplet; | |
// Match #aabbcc | |
if (match = /#([0-9a-fA-F]{2})([0-9a-fA-F]{2})([0-9a-fA-F]{2})/.exec(color)) { | |
triplet = [parseInt(match[1], 16), parseInt(match[2], 16), parseInt(match[3], 16), 1]; | |
// Match #abc | |
} else if (match = /#([0-9a-fA-F])([0-9a-fA-F])([0-9a-fA-F])/.exec(color)) { | |
triplet = [parseInt(match[1], 16) * 17, parseInt(match[2], 16) * 17, parseInt(match[3], 16) * 17, 1]; | |
// Match rgb(n, n, n) | |
} else if (match = /rgb\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*\)/.exec(color)) { | |
triplet = [parseInt(match[1]), parseInt(match[2]), parseInt(match[3]), 1]; | |
} else if (match = /rgba\(\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9]{1,3})\s*,\s*([0-9\.]*)\s*\)/.exec(color)) { | |
triplet = [parseInt(match[1], 10), parseInt(match[2], 10), parseInt(match[3], 10),parseFloat(match[4])]; | |
// No browser returns rgb(n%, n%, n%), so little reason to support this format. | |
} | |
return triplet; | |
} | |
})(jQuery); | |
//END COLOR ANIMATION PLUGIN | |
//START JQUERY TABS | |
/*! jQuery UI - v1.8.20 - 2012-04-30 | |
* https://github.com/jquery/jquery-ui | |
* Includes: jquery.ui.core.js | |
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ | |
(function(a,b){function c(b,c){var e=b.nodeName.toLowerCase();if("area"===e){var f=b.parentNode,g=f.name,h;return!b.href||!g||f.nodeName.toLowerCase()!=="map"?!1:(h=a("img[usemap=#"+g+"]")[0],!!h&&d(h))}return(/input|select|textarea|button|object/.test(e)?!b.disabled:"a"==e?b.href||c:c)&&d(b)}function d(b){return!a(b).parents().andSelf().filter(function(){return a.curCSS(this,"visibility")==="hidden"||a.expr.filters.hidden(this)}).length}a.ui=a.ui||{};if(a.ui.version)return;a.extend(a.ui,{version:"1.8.20",keyCode:{ALT:18,BACKSPACE:8,CAPS_LOCK:20,COMMA:188,COMMAND:91,COMMAND_LEFT:91,COMMAND_RIGHT:93,CONTROL:17,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,INSERT:45,LEFT:37,MENU:93,NUMPAD_ADD:107,NUMPAD_DECIMAL:110,NUMPAD_DIVIDE:111,NUMPAD_ENTER:108,NUMPAD_MULTIPLY:106,NUMPAD_SUBTRACT:109,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SHIFT:16,SPACE:32,TAB:9,UP:38,WINDOWS:91}}),a.fn.extend({propAttr:a.fn.prop||a.fn.attr,_focus:a.fn.focus,focus:function(b,c){return typeof b=="number"?this.each(function(){var d=this;setTimeout(function(){a(d).focus(),c&&c.call(d)},b)}):this._focus.apply(this,arguments)},scrollParent:function(){var b;return a.browser.msie&&/(static|relative)/.test(this.css("position"))||/absolute/.test(this.css("position"))?b=this.parents().filter(function(){return/(relative|absolute|fixed)/.test(a.curCSS(this,"position",1))&&/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0):b=this.parents().filter(function(){return/(auto|scroll)/.test(a.curCSS(this,"overflow",1)+a.curCSS(this,"overflow-y",1)+a.curCSS(this,"overflow-x",1))}).eq(0),/fixed/.test(this.css("position"))||!b.length?a(document):b},zIndex:function(c){if(c!==b)return this.css("zIndex",c);if(this.length){var d=a(this[0]),e,f;while(d.length&&d[0]!==document){e=d.css("position");if(e==="absolute"||e==="relative"||e==="fixed"){f=parseInt(d.css("zIndex"),10);if(!isNaN(f)&&f!==0)return f}d=d.parent()}}return 0},disableSelection:function(){return this.bind((a.support.selectstart?"selectstart":"mousedown")+".ui-disableSelection",function(a){a.preventDefault()})},enableSelection:function(){return this.unbind(".ui-disableSelection")}}),a.each(["Width","Height"],function(c,d){function h(b,c,d,f){return a.each(e,function(){c-=parseFloat(a.curCSS(b,"padding"+this,!0))||0,d&&(c-=parseFloat(a.curCSS(b,"border"+this+"Width",!0))||0),f&&(c-=parseFloat(a.curCSS(b,"margin"+this,!0))||0)}),c}var e=d==="Width"?["Left","Right"]:["Top","Bottom"],f=d.toLowerCase(),g={innerWidth:a.fn.innerWidth,innerHeight:a.fn.innerHeight,outerWidth:a.fn.outerWidth,outerHeight:a.fn.outerHeight};a.fn["inner"+d]=function(c){return c===b?g["inner"+d].call(this):this.each(function(){a(this).css(f,h(this,c)+"px")})},a.fn["outer"+d]=function(b,c){return typeof b!="number"?g["outer"+d].call(this,b):this.each(function(){a(this).css(f,h(this,b,!0,c)+"px")})}}),a.extend(a.expr[":"],{data:function(b,c,d){return!!a.data(b,d[3])},focusable:function(b){return c(b,!isNaN(a.attr(b,"tabindex")))},tabbable:function(b){var d=a.attr(b,"tabindex"),e=isNaN(d);return(e||d>=0)&&c(b,!e)}}),a(function(){var b=document.body,c=b.appendChild(c=document.createElement("div"));c.offsetHeight,a.extend(c.style,{minHeight:"100px",height:"auto",padding:0,borderWidth:0}),a.support.minHeight=c.offsetHeight===100,a.support.selectstart="onselectstart"in c,b.removeChild(c).style.display="none"}),a.extend(a.ui,{plugin:{add:function(b,c,d){var e=a.ui[b].prototype;for(var f in d)e.plugins[f]=e.plugins[f]||[],e.plugins[f].push([c,d[f]])},call:function(a,b,c){var d=a.plugins[b];if(!d||!a.element[0].parentNode)return;for(var e=0;e<d.length;e++)a.options[d[e][0]]&&d[e][1].apply(a.element,c)}},contains:function(a,b){return document.compareDocumentPosition?a.compareDocumentPosition(b)&16:a!==b&&a.contains(b)},hasScroll:function(b,c){if(a(b).css("overflow")==="hidden")return!1;var d=c&&c==="left"?"scrollLeft":"scrollTop",e=!1;return b[d]>0?!0:(b[d]=1,e=b[d]>0,b[d]=0,e)},isOverAxis:function(a,b,c){return a>b&&a<b+c},isOver:function(b,c,d,e,f,g){return a.ui.isOverAxis(b,d,f)&&a.ui.isOverAxis(c,e,g)}})})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 | |
* https://github.com/jquery/jquery-ui | |
* Includes: jquery.ui.widget.js | |
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ | |
(function(a,b){if(a.cleanData){var c=a.cleanData;a.cleanData=function(b){for(var d=0,e;(e=b[d])!=null;d++)try{a(e).triggerHandler("remove")}catch(f){}c(b)}}else{var d=a.fn.remove;a.fn.remove=function(b,c){return this.each(function(){return c||(!b||a.filter(b,[this]).length)&&a("*",this).add([this]).each(function(){try{a(this).triggerHandler("remove")}catch(b){}}),d.call(a(this),b,c)})}}a.widget=function(b,c,d){var e=b.split(".")[0],f;b=b.split(".")[1],f=e+"-"+b,d||(d=c,c=a.Widget),a.expr[":"][f]=function(c){return!!a.data(c,b)},a[e]=a[e]||{},a[e][b]=function(a,b){arguments.length&&this._createWidget(a,b)};var g=new c;g.options=a.extend(!0,{},g.options),a[e][b].prototype=a.extend(!0,g,{namespace:e,widgetName:b,widgetEventPrefix:a[e][b].prototype.widgetEventPrefix||b,widgetBaseClass:f},d),a.widget.bridge(b,a[e][b])},a.widget.bridge=function(c,d){a.fn[c]=function(e){var f=typeof e=="string",g=Array.prototype.slice.call(arguments,1),h=this;return e=!f&&g.length?a.extend.apply(null,[!0,e].concat(g)):e,f&&e.charAt(0)==="_"?h:(f?this.each(function(){var d=a.data(this,c),f=d&&a.isFunction(d[e])?d[e].apply(d,g):d;if(f!==d&&f!==b)return h=f,!1}):this.each(function(){var b=a.data(this,c);b?b.option(e||{})._init():a.data(this,c,new d(e,this))}),h)}},a.Widget=function(a,b){arguments.length&&this._createWidget(a,b)},a.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",options:{disabled:!1},_createWidget:function(b,c){a.data(c,this.widgetName,this),this.element=a(c),this.options=a.extend(!0,{},this.options,this._getCreateOptions(),b);var d=this;this.element.bind("remove."+this.widgetName,function(){d.destroy()}),this._create(),this._trigger("create"),this._init()},_getCreateOptions:function(){return a.metadata&&a.metadata.get(this.element[0])[this.widgetName]},_create:function(){},_init:function(){},destroy:function(){this.element.unbind("."+this.widgetName).removeData(this.widgetName),this.widget().unbind("."+this.widgetName).removeAttr("aria-disabled").removeClass(this.widgetBaseClass+"-disabled "+"ui-state-disabled")},widget:function(){return this.element},option:function(c,d){var e=c;if(arguments.length===0)return a.extend({},this.options);if(typeof c=="string"){if(d===b)return this.options[c];e={},e[c]=d}return this._setOptions(e),this},_setOptions:function(b){var c=this;return a.each(b,function(a,b){c._setOption(a,b)}),this},_setOption:function(a,b){return this.options[a]=b,a==="disabled"&&this.widget()[b?"addClass":"removeClass"](this.widgetBaseClass+"-disabled"+" "+"ui-state-disabled").attr("aria-disabled",b),this},enable:function(){return this._setOption("disabled",!1)},disable:function(){return this._setOption("disabled",!0)},_trigger:function(b,c,d){var e,f,g=this.options[b];d=d||{},c=a.Event(c),c.type=(b===this.widgetEventPrefix?b:this.widgetEventPrefix+b).toLowerCase(),c.target=this.element[0],f=c.originalEvent;if(f)for(e in f)e in c||(c[e]=f[e]);return this.element.trigger(c,d),!(a.isFunction(g)&&g.call(this.element[0],c,d)===!1||c.isDefaultPrevented())}}})(jQuery);;/*! jQuery UI - v1.8.20 - 2012-04-30 | |
* https://github.com/jquery/jquery-ui | |
* Includes: jquery.ui.tabs.js | |
* Copyright (c) 2012 AUTHORS.txt; Licensed MIT, GPL */ | |
(function(a,b){function e(){return++c}function f(){return++d}var c=0,d=0;a.widget("ui.tabs",{options:{add:null,ajaxOptions:null,cache:!1,cookie:null,collapsible:!1,disable:null,disabled:[],enable:null,event:"click",fx:null,idPrefix:"ui-tabs-",load:null,panelTemplate:"<div></div>",remove:null,select:null,show:null,spinner:"<em>Loading…</em>",tabTemplate:"<li><a href='#{href}'><span>#{label}</span></a></li>"},_create:function(){this._tabify(!0)},_setOption:function(a,b){if(a=="selected"){if(this.options.collapsible&&b==this.options.selected)return;this.select(b)}else this.options[a]=b,this._tabify()},_tabId:function(a){return a.title&&a.title.replace(/\s/g,"_").replace(/[^\w\u00c0-\uFFFF-]/g,"")||this.options.idPrefix+e()},_sanitizeSelector:function(a){return a.replace(/:/g,"\\:")},_cookie:function(){var b=this.cookie||(this.cookie=this.options.cookie.name||"ui-tabs-"+f());return a.cookie.apply(null,[b].concat(a.makeArray(arguments)))},_ui:function(a,b){return{tab:a,panel:b,index:this.anchors.index(a)}},_cleanup:function(){this.lis.filter(".ui-state-processing").removeClass("ui-state-processing").find("span:data(label.tabs)").each(function(){var b=a(this);b.html(b.data("label.tabs")).removeData("label.tabs")})},_tabify:function(c){function m(b,c){b.css("display",""),!a.support.opacity&&c.opacity&&b[0].style.removeAttribute("filter")}var d=this,e=this.options,f=/^#.+/;this.list=this.element.find("ol,ul").eq(0),this.lis=a(" > li:has(a[href])",this.list),this.anchors=this.lis.map(function(){return a("a",this)[0]}),this.panels=a([]),this.anchors.each(function(b,c){var g=a(c).attr("href"),h=g.split("#")[0],i;h&&(h===location.toString().split("#")[0]||(i=a("base")[0])&&h===i.href)&&(g=c.hash,c.href=g);if(f.test(g))d.panels=d.panels.add(d.element.find(d._sanitizeSelector(g)));else if(g&&g!=="#"){a.data(c,"href.tabs",g),a.data(c,"load.tabs",g.replace(/#.*$/,""));var j=d._tabId(c);c.href="#"+j;var k=d.element.find("#"+j);k.length||(k=a(e.panelTemplate).attr("id",j).addClass("ui-tabs-panel ui-widget-content ui-corner-bottom").insertAfter(d.panels[b-1]||d.list),k.data("destroy.tabs",!0)),d.panels=d.panels.add(k)}else e.disabled.push(b)}),c?(this.element.addClass("ui-tabs ui-widget ui-widget-content ui-corner-all"),this.list.addClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.lis.addClass("ui-state-default ui-corner-top"),this.panels.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom"),e.selected===b?(location.hash&&this.anchors.each(function(a,b){if(b.hash==location.hash)return e.selected=a,!1}),typeof e.selected!="number"&&e.cookie&&(e.selected=parseInt(d._cookie(),10)),typeof e.selected!="number"&&this.lis.filter(".ui-tabs-selected").length&&(e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected"))),e.selected=e.selected||(this.lis.length?0:-1)):e.selected===null&&(e.selected=-1),e.selected=e.selected>=0&&this.anchors[e.selected]||e.selected<0?e.selected:0,e.disabled=a.unique(e.disabled.concat(a.map(this.lis.filter(".ui-state-disabled"),function(a,b){return d.lis.index(a)}))).sort(),a.inArray(e.selected,e.disabled)!=-1&&e.disabled.splice(a.inArray(e.selected,e.disabled),1),this.panels.addClass("ui-tabs-hide"),this.lis.removeClass("ui-tabs-selected ui-state-active"),e.selected>=0&&this.anchors.length&&(d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash)).removeClass("ui-tabs-hide"),this.lis.eq(e.selected).addClass("ui-tabs-selected ui-state-active"),d.element.queue("tabs",function(){d._trigger("show",null,d._ui(d.anchors[e.selected],d.element.find(d._sanitizeSelector(d.anchors[e.selected].hash))[0]))}),this.load(e.selected)),a(window).bind("unload",function(){d.lis.add(d.anchors).unbind(".tabs"),d.lis=d.anchors=d.panels=null})):e.selected=this.lis.index(this.lis.filter(".ui-tabs-selected")),this.element[e.collapsible?"addClass":"removeClass"]("ui-tabs-collapsible"),e.cookie&&this._cookie(e.selected,e.cookie);for(var g=0,h;h=this.lis[g];g++)a(h)[a.inArray(g,e.disabled)!=-1&&!a(h).hasClass("ui-tabs-selected")?"addClass":"removeClass"]("ui-state-disabled");e.cache===!1&&this.anchors.removeData("cache.tabs"),this.lis.add(this.anchors).unbind(".tabs");if(e.event!=="mouseover"){var i=function(a,b){b.is(":not(.ui-state-disabled)")&&b.addClass("ui-state-"+a)},j=function(a,b){b.removeClass("ui-state-"+a)};this.lis.bind("mouseover.tabs",function(){i("hover",a(this))}),this.lis.bind("mouseout.tabs",function(){j("hover",a(this))}),this.anchors.bind("focus.tabs",function(){i("focus",a(this).closest("li"))}),this.anchors.bind("blur.tabs",function(){j("focus",a(this).closest("li"))})}var k,l;e.fx&&(a.isArray(e.fx)?(k=e.fx[0],l=e.fx[1]):k=l=e.fx);var n=l?function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.hide().removeClass("ui-tabs-hide").animate(l,l.duration||"normal",function(){m(c,l),d._trigger("show",null,d._ui(b,c[0]))})}:function(b,c){a(b).closest("li").addClass("ui-tabs-selected ui-state-active"),c.removeClass("ui-tabs-hide"),d._trigger("show",null,d._ui(b,c[0]))},o=k?function(a,b){b.animate(k,k.duration||"normal",function(){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),m(b,k),d.element.dequeue("tabs")})}:function(a,b,c){d.lis.removeClass("ui-tabs-selected ui-state-active"),b.addClass("ui-tabs-hide"),d.element.dequeue("tabs")};this.anchors.bind(e.event+".tabs",function(){var b=this,c=a(b).closest("li"),f=d.panels.filter(":not(.ui-tabs-hide)"),g=d.element.find(d._sanitizeSelector(b.hash));if(c.hasClass("ui-tabs-selected")&&!e.collapsible||c.hasClass("ui-state-disabled")||c.hasClass("ui-state-processing")||d.panels.filter(":animated").length||d._trigger("select",null,d._ui(this,g[0]))===!1)return this.blur(),!1;e.selected=d.anchors.index(this),d.abort();if(e.collapsible){if(c.hasClass("ui-tabs-selected"))return e.selected=-1,e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){o(b,f)}).dequeue("tabs"),this.blur(),!1;if(!f.length)return e.cookie&&d._cookie(e.selected,e.cookie),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this)),this.blur(),!1}e.cookie&&d._cookie(e.selected,e.cookie);if(g.length)f.length&&d.element.queue("tabs",function(){o(b,f)}),d.element.queue("tabs",function(){n(b,g)}),d.load(d.anchors.index(this));else throw"jQuery UI Tabs: Mismatching fragment identifier.";a.browser.msie&&this.blur()}),this.anchors.bind("click.tabs",function(){return!1})},_getIndex:function(a){return typeof a=="string"&&(a=this.anchors.index(this.anchors.filter("[href$='"+a+"']"))),a},destroy:function(){var b=this.options;return this.abort(),this.element.unbind(".tabs").removeClass("ui-tabs ui-widget ui-widget-content ui-corner-all ui-tabs-collapsible").removeData("tabs"),this.list.removeClass("ui-tabs-nav ui-helper-reset ui-helper-clearfix ui-widget-header ui-corner-all"),this.anchors.each(function(){var b=a.data(this,"href.tabs");b&&(this.href=b);var c=a(this).unbind(".tabs");a.each(["href","load","cache"],function(a,b){c.removeData(b+".tabs")})}),this.lis.unbind(".tabs").add(this.panels).each(function(){a.data(this,"destroy.tabs")?a(this).remove():a(this).removeClass(["ui-state-default","ui-corner-top","ui-tabs-selected","ui-state-active","ui-state-hover","ui-state-focus","ui-state-disabled","ui-tabs-panel","ui-widget-content","ui-corner-bottom","ui-tabs-hide"].join(" "))}),b.cookie&&this._cookie(null,b.cookie),this},add:function(c,d,e){e===b&&(e=this.anchors.length);var f=this,g=this.options,h=a(g.tabTemplate.replace(/#\{href\}/g,c).replace(/#\{label\}/g,d)),i=c.indexOf("#")?this._tabId(a("a",h)[0]):c.replace("#","");h.addClass("ui-state-default ui-corner-top").data("destroy.tabs",!0);var j=f.element.find("#"+i);return j.length||(j=a(g.panelTemplate).attr("id",i).data("destroy.tabs",!0)),j.addClass("ui-tabs-panel ui-widget-content ui-corner-bottom ui-tabs-hide"),e>=this.lis.length?(h.appendTo(this.list),j.appendTo(this.list[0].parentNode)):(h.insertBefore(this.lis[e]),j.insertBefore(this.panels[e])),g.disabled=a.map(g.disabled,function(a,b){return a>=e?++a:a}),this._tabify(),this.anchors.length==1&&(g.selected=0,h.addClass("ui-tabs-selected ui-state-active"),j.removeClass("ui-tabs-hide"),this.element.queue("tabs",function(){f._trigger("show",null,f._ui(f.anchors[0],f.panels[0]))}),this.load(0)),this._trigger("add",null,this._ui(this.anchors[e],this.panels[e])),this},remove:function(b){b=this._getIndex(b);var c=this.options,d=this.lis.eq(b).remove(),e=this.panels.eq(b).remove();return d.hasClass("ui-tabs-selected")&&this.anchors.length>1&&this.select(b+(b+1<this.anchors.length?1:-1)),c.disabled=a.map(a.grep(c.disabled,function(a,c){return a!=b}),function(a,c){return a>=b?--a:a}),this._tabify(),this._trigger("remove",null,this._ui(d.find("a")[0],e[0])),this},enable:function(b){b=this._getIndex(b);var c=this.options;if(a.inArray(b,c.disabled)==-1)return;return this.lis.eq(b).removeClass("ui-state-disabled"),c.disabled=a.grep(c.disabled,function(a,c){return a!=b}),this._trigger("enable",null,this._ui(this.anchors[b],this.panels[b])),this},disable:function(a){a=this._getIndex(a);var b=this,c=this.options;return a!=c.selected&&(this.lis.eq(a).addClass("ui-state-disabled"),c.disabled.push(a),c.disabled.sort(),this._trigger("disable",null,this._ui(this.anchors[a],this.panels[a]))),this},select:function(a){a=this._getIndex(a);if(a==-1)if(this.options.collapsible&&this.options.selected!=-1)a=this.options.selected;else return this;return this.anchors.eq(a).trigger(this.options.event+".tabs"),this},load:function(b){b=this._getIndex(b);var c=this,d=this.options,e=this.anchors.eq(b)[0],f=a.data(e,"load.tabs");this.abort();if(!f||this.element.queue("tabs").length!==0&&a.data(e,"cache.tabs")){this.element.dequeue("tabs");return}this.lis.eq(b).addClass("ui-state-processing");if(d.spinner){var g=a("span",e);g.data("label.tabs",g.html()).html(d.spinner)}return this.xhr=a.ajax(a.extend({},d.ajaxOptions,{url:f,success:function(f,g){c.element.find(c._sanitizeSelector(e.hash)).html(f),c._cleanup(),d.cache&&a.data(e,"cache.tabs",!0),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.success(f,g)}catch(h){}},error:function(a,f,g){c._cleanup(),c._trigger("load",null,c._ui(c.anchors[b],c.panels[b]));try{d.ajaxOptions.error(a,f,b,e)}catch(g){}}})),c.element.dequeue("tabs"),this},abort:function(){return this.element.queue([]),this.panels.stop(!1,!0),this.element.queue("tabs",this.element.queue("tabs").splice(-2,2)),this.xhr&&(this.xhr.abort(),delete this.xhr),this._cleanup(),this},url:function(a,b){return this.anchors.eq(a).removeData("cache.tabs").data("load.tabs",b),this},length:function(){return this.anchors.length}}),a.extend(a.ui.tabs,{version:"1.8.20"}),a.extend(a.ui.tabs.prototype,{rotation:null,rotate:function(a,b){var c=this,d=this.options,e=c._rotate||(c._rotate=function(b){clearTimeout(c.rotation),c.rotation=setTimeout(function(){var a=d.selected;c.select(++a<c.anchors.length?a:0)},a),b&&b.stopPropagation()}),f=c._unrotate||(c._unrotate=b?function(a){e()}:function(a){a.clientX&&c.rotate(null)});return a?(this.element.bind("tabsshow",e),this.anchors.bind(d.event+".tabs",f),e()):(clearTimeout(c.rotation),this.element.unbind("tabsshow",e),this.anchors.unbind(d.event+".tabs",f),delete this._rotate,delete this._unrotate),this}})})(jQuery);; | |
//END UI TABS | |
// START SUPERFISH PLUGIN | |
/* | |
* Superfish v1.4.8 - jQuery menu widget | |
* Copyright (c) 2008 Joel Birch | |
* | |
* Dual licensed under the MIT and GPL licenses: | |
* http://www.opensource.org/licenses/mit-license.php | |
* http://www.gnu.org/licenses/gpl.html | |
* | |
* CHANGELOG: http://users.tpg.com.au/j_birch/plugins/superfish/changelog.txt | |
*/ | |
;(function($){ | |
$.fn.superfish = function(op){ | |
var sf = $.fn.superfish, | |
c = sf.c, | |
$arrow = $(['<span class="',c.arrowClass,'"> »</span>'].join('')), | |
over = function(){ | |
var $$ = $(this), menu = getMenu($$); | |
clearTimeout(menu.sfTimer); | |
$$.showSuperfishUl().siblings().hideSuperfishUl(); | |
}, | |
out = function(){ | |
var $$ = $(this), menu = getMenu($$), o = sf.op; | |
clearTimeout(menu.sfTimer); | |
menu.sfTimer=setTimeout(function(){ | |
o.retainPath=($.inArray($$[0],o.$path)>-1); | |
$$.hideSuperfishUl(); | |
if (o.$path.length && $$.parents(['li.',o.hoverClass].join('')).length<1){over.call(o.$path);} | |
},o.delay); | |
}, | |
getMenu = function($menu){ | |
var menu = $menu.parents(['ul.',c.menuClass,':first'].join(''))[0]; | |
sf.op = sf.o[menu.serial]; | |
return menu; | |
}, | |
addArrow = function($a){ $a.addClass(c.anchorClass).append($arrow.clone()); }; | |
return this.each(function() { | |
var s = this.serial = sf.o.length; | |
var o = $.extend({},sf.defaults,op); | |
o.$path = $('li.'+o.pathClass,this).slice(0,o.pathLevels).each(function(){ | |
$(this).addClass([o.hoverClass,c.bcClass].join(' ')) | |
.filter('li:has(ul)').removeClass(o.pathClass); | |
}); | |
sf.o[s] = sf.op = o; | |
$('li:has(ul)',this)[($.fn.hoverIntent && !o.disableHI) ? 'hoverIntent' : 'hover'](over,out).each(function() { | |
if (o.autoArrows) addArrow( $('>a:first-child',this) ); | |
}) | |
.not('.'+c.bcClass) | |
.hideSuperfishUl(); | |
var $a = $('a',this); | |
$a.each(function(i){ | |
var $li = $a.eq(i).parents('li'); | |
$a.eq(i).focus(function(){over.call($li);}).blur(function(){out.call($li);}); | |
}); | |
o.onInit.call(this); | |
}).each(function() { | |
var menuClasses = [c.menuClass]; | |
if (sf.op.dropShadows && !($.browser.msie && $.browser.version < 7)) menuClasses.push(c.shadowClass); | |
$(this).addClass(menuClasses.join(' ')); | |
}); | |
}; | |
var sf = $.fn.superfish; | |
sf.o = []; | |
sf.op = {}; | |
sf.IE7fix = function(){ | |
var o = sf.op; | |
if ($.browser.msie && $.browser.version > 6 && o.dropShadows && o.animation.opacity!=undefined) | |
this.toggleClass(sf.c.shadowClass+'-off'); | |
}; | |
sf.c = { | |
bcClass : 'sf-breadcrumb', | |
menuClass : 'sf-js-enabled', | |
anchorClass : 'sf-with-ul', | |
arrowClass : 'sf-sub-indicator', | |
shadowClass : 'sf-shadow' | |
}; | |
sf.defaults = { | |
hoverClass : 'sfHover', | |
pathClass : 'overideThisToUse', | |
pathLevels : 1, | |
delay : 800, | |
animation : {opacity:'show'}, | |
speed : 'normal', | |
autoArrows : true, | |
dropShadows : true, | |
disableHI : false, // true disables hoverIntent detection | |
onInit : function(){}, // callback functions | |
onBeforeShow: function(){}, | |
onShow : function(){}, | |
onHide : function(){} | |
}; | |
$.fn.extend({ | |
hideSuperfishUl : function(){ | |
var o = sf.op, | |
not = (o.retainPath===true) ? o.$path : ''; | |
o.retainPath = false; | |
var $ul = $(['li.',o.hoverClass].join(''),this).add(this).not(not).removeClass(o.hoverClass) | |
.find('>ul.hoverable').hide().css('visibility','hidden'); //tweaked: added .hoverable class | |
o.onHide.call($ul); | |
return this; | |
}, | |
showSuperfishUl : function(){ | |
var o = sf.op, | |
sh = sf.c.shadowClass+'-off', | |
$ul = this.addClass(o.hoverClass) | |
.find('>ul.hoverable:hidden').css('visibility','visible'); //tweaked: added .hoverable class | |
sf.IE7fix.call($ul); | |
o.onBeforeShow.call($ul); | |
$ul.animate(o.animation,o.speed,function(){ sf.IE7fix.call($ul); o.onShow.call($ul); }); | |
return this; | |
} | |
}); | |
})(jQuery); | |
// END SUPERFISH PLUGIN | |
// START LAVALAMP PLUGIN AND EASING EFFECT | |
/* | |
* jQuery Easing v1.3 - http://gsgd.co.uk/sandbox/jquery/easing/ | |
* | |
* Uses the built in easing capabilities added In jQuery 1.1 | |
* to offer multiple easing options | |
* | |
* TERMS OF USE - jQuery Easing | |
* | |
* Open source under the BSD License. | |
* | |
* Copyright © 2008 George McGinley Smith | |
* All rights reserved. | |
* | |
* Redistribution and use in source and binary forms, with or without modification, | |
* are permitted provided that the following conditions are met: | |
* | |
* Redistributions of source code must retain the above copyright notice, this list of | |
* conditions and the following disclaimer. | |
* Redistributions in binary form must reproduce the above copyright notice, this list | |
* of conditions and the following disclaimer in the documentation and/or other materials | |
* provided with the distribution. | |
* | |
* Neither the name of the author nor the names of contributors may be used to endorse | |
* or promote products derived from this software without specific prior written permission. | |
* | |
* THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY | |
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF | |
* MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE | |
* COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, | |
* EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE | |
* GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED | |
* AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING | |
* NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED | |
* OF THE POSSIBILITY OF SUCH DAMAGE. | |
* | |
*/ | |
// t: current time, b: begInnIng value, c: change In value, d: duration | |
jQuery.easing['jswing'] = jQuery.easing['swing']; | |
jQuery.extend( jQuery.easing, | |
{ | |
def: 'easeOutQuad', | |
swing: function (x, t, b, c, d) { | |
//alert(jQuery.easing.default); | |
return jQuery.easing[jQuery.easing.def](x, t, b, c, d); | |
}, | |
easeInQuad: function (x, t, b, c, d) { | |
return c*(t/=d)*t + b; | |
}, | |
easeOutQuad: function (x, t, b, c, d) { | |
return -c *(t/=d)*(t-2) + b; | |
}, | |
easeInOutQuad: function (x, t, b, c, d) { | |
if ((t/=d/2) < 1) return c/2*t*t + b; | |
return -c/2 * ((--t)*(t-2) - 1) + b; | |
}, | |
easeInCubic: function (x, t, b, c, d) { | |
return c*(t/=d)*t*t + b; | |
}, | |
easeOutCubic: function (x, t, b, c, d) { | |
return c*((t=t/d-1)*t*t + 1) + b; | |
}, | |
easeInOutCubic: function (x, t, b, c, d) { | |
if ((t/=d/2) < 1) return c/2*t*t*t + b; | |
return c/2*((t-=2)*t*t + 2) + b; | |
}, | |
easeInQuart: function (x, t, b, c, d) { | |
return c*(t/=d)*t*t*t + b; | |
}, | |
easeOutQuart: function (x, t, b, c, d) { | |
return -c * ((t=t/d-1)*t*t*t - 1) + b; | |
}, | |
easeInOutQuart: function (x, t, b, c, d) { | |
if ((t/=d/2) < 1) return c/2*t*t*t*t + b; | |
return -c/2 * ((t-=2)*t*t*t - 2) + b; | |
}, | |
easeInQuint: function (x, t, b, c, d) { | |
return c*(t/=d)*t*t*t*t + b; | |
}, | |
easeOutQuint: function (x, t, b, c, d) { | |
return c*((t=t/d-1)*t*t*t*t + 1) + b; | |
}, | |
easeInOutQuint: function (x, t, b, c, d) { | |
if ((t/=d/2) < 1) return c/2*t*t*t*t*t + b; | |
return c/2*((t-=2)*t*t*t*t + 2) + b; | |
}, | |
easeInSine: function (x, t, b, c, d) { | |
return -c * Math.cos(t/d * (Math.PI/2)) + c + b; | |
}, | |
easeOutSine: function (x, t, b, c, d) { | |
return c * Math.sin(t/d * (Math.PI/2)) + b; | |
}, | |
easeInOutSine: function (x, t, b, c, d) { | |
return -c/2 * (Math.cos(Math.PI*t/d) - 1) + b; | |
}, | |
easeInExpo: function (x, t, b, c, d) { | |
return (t==0) ? b : c * Math.pow(2, 10 * (t/d - 1)) + b; | |
}, | |
easeOutExpo: function (x, t, b, c, d) { | |
return (t==d) ? b+c : c * (-Math.pow(2, -10 * t/d) + 1) + b; | |
}, | |
easeInOutExpo: function (x, t, b, c, d) { | |
if (t==0) return b; | |
if (t==d) return b+c; | |
if ((t/=d/2) < 1) return c/2 * Math.pow(2, 10 * (t - 1)) + b; | |
return c/2 * (-Math.pow(2, -10 * --t) + 2) + b; | |
}, | |
easeInCirc: function (x, t, b, c, d) { | |
return -c * (Math.sqrt(1 - (t/=d)*t) - 1) + b; | |
}, | |
easeOutCirc: function (x, t, b, c, d) { | |
return c * Math.sqrt(1 - (t=t/d-1)*t) + b; | |
}, | |
easeInOutCirc: function (x, t, b, c, d) { | |
if ((t/=d/2) < 1) return -c/2 * (Math.sqrt(1 - t*t) - 1) + b; | |
return c/2 * (Math.sqrt(1 - (t-=2)*t) + 1) + b; | |
}, | |
easeInElastic: function (x, t, b, c, d) { | |
var s=1.70158;var p=0;var a=c; | |
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; | |
if (a < Math.abs(c)) { a=c; var s=p/4; } | |
else var s = p/(2*Math.PI) * Math.asin (c/a); | |
return -(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | |
}, | |
easeOutElastic: function (x, t, b, c, d) { | |
var s=1.70158;var p=0;var a=c; | |
if (t==0) return b; if ((t/=d)==1) return b+c; if (!p) p=d*.3; | |
if (a < Math.abs(c)) { a=c; var s=p/4; } | |
else var s = p/(2*Math.PI) * Math.asin (c/a); | |
return a*Math.pow(2,-10*t) * Math.sin( (t*d-s)*(2*Math.PI)/p ) + c + b; | |
}, | |
easeInOutElastic: function (x, t, b, c, d) { | |
var s=1.70158;var p=0;var a=c; | |
if (t==0) return b; if ((t/=d/2)==2) return b+c; if (!p) p=d*(.3*1.5); | |
if (a < Math.abs(c)) { a=c; var s=p/4; } | |
else var s = p/(2*Math.PI) * Math.asin (c/a); | |
if (t < 1) return -.5*(a*Math.pow(2,10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )) + b; | |
return a*Math.pow(2,-10*(t-=1)) * Math.sin( (t*d-s)*(2*Math.PI)/p )*.5 + c + b; | |
}, | |
easeInBack: function (x, t, b, c, d, s) { | |
if (s == undefined) s = 1.70158; | |
return c*(t/=d)*t*((s+1)*t - s) + b; | |
}, | |
easeOutBack: function (x, t, b, c, d, s) { | |
if (s == undefined) s = 1.70158; | |
return c*((t=t/d-1)*t*((s+1)*t + s) + 1) + b; | |
}, | |
easeInOutBack: function (x, t, b, c, d, s) { | |
if (s == undefined) s = 1.70158; | |
if ((t/=d/2) < 1) return c/2*(t*t*(((s*=(1.525))+1)*t - s)) + b; | |
return c/2*((t-=2)*t*(((s*=(1.525))+1)*t + s) + 2) + b; | |
}, | |
easeInBounce: function (x, t, b, c, d) { | |
return c - jQuery.easing.easeOutBounce (x, d-t, 0, c, d) + b; | |
}, | |
easeOutBounce: function (x, t, b, c, d) { | |
if ((t/=d) < (1/2.75)) { | |
return c*(7.5625*t*t) + b; | |
} else if (t < (2/2.75)) { | |
return c*(7.5625*(t-=(1.5/2.75))*t + .75) + b; | |
} else if (t < (2.5/2.75)) { | |
return c*(7.5625*(t-=(2.25/2.75))*t + .9375) + b; | |
} else { | |
return c*(7.5625*(t-=(2.625/2.75))*t + .984375) + b; | |
} | |
}, | |
easeInOutBounce: function (x, t, b, c, d) { | |
if (t < d/2) return jQuery.easing.easeInBounce (x, t*2, 0, c, d) * .5 + b; | |
return jQuery.easing.easeOutBounce (x, t*2-d, 0, c, d) * .5 + c*.5 + b; | |
} | |
}); | |
/** | |
* jquery.LavaLamp v1.3.5 - light up your menus with fluid, jQuery powered animations. | |
* Requires jQuery v1.2.3 or better from http://jquery.com | |
* Tested on jQuery 1.4.4, 1.3.2 and 1.2.6 | |
* http://nixbox.com/projects/jquery-lavalamp/ | |
* Source code Copyright (c) 2008, 2009, 2010 Jolyon Terwilliger, [email protected] | |
* Dual licensed under the MIT and GPL licenses: | |
* http://www.opensource.org/licenses/mit-license.php | |
* http://www.gnu.org/licenses/gpl.html | |
*/ | |
(function(d){jQuery.fn.lavaLamp=function(a){function e(g){g=parseInt(g);return isNaN(g)?0:g}a=d.extend({target:"li",container:"",fx:"swing",speed:500,click:function(){return true},startItem:"",includeMargins:false,autoReturn:true,returnDelay:0,setOnClick:true,homeTop:0,homeLeft:0,homeWidth:0,homeHeight:0,returnHome:false,autoResize:false},a||{});if(a.container=="")a.container=a.target;a.autoResize&&d(window).resize(function(){d(a.target+".selectedLava").trigger("mouseenter")});return this.each(function(){function g(c){c|| | |
(c=b);if(!a.includeMargins){i=e(c.css("marginLeft"));j=e(c.css("marginTop"))}c={left:c.position().left+i,top:c.position().top+j,width:c.outerWidth()-l-25,height:c.outerHeight()-m};f.stop().animate(c,a.speed,a.fx)}d(this).css("position")=="static"&&d(this).css("position","relative");if(a.homeTop||a.homeLeft){var n=d("<"+a.container+' class="homeLava"></'+a.container+">").css({left:a.homeLeft,top:a.homeTop,width:a.homeWidth-25,height:a.homeHeight,position:"absolute",display:"block"});d(this).prepend(n)}var s= | |
location.pathname+location.search+location.hash,b,f,k=d(a.target+"[class!=noLava]",this),h,l=0,m=0,p=0,q=0,i=0,j=0;b=d(a.target+".selectedLava",this);if(a.startItem!="")b=k.eq(a.startItem);if((a.homeTop||a.homeLeft)&&b.length<1)b=n;if(b.length<1){var o=0,r;k.each(function(){var c=d("a:first",this).attr("href");if(s.indexOf(c)>-1&&c.length>o){r=d(this);o=c.length}});if(o>0)b=r}if(b.length<1)b=k.eq(0);b=d(b.eq(0).addClass("selectedLava"));k.bind("mouseenter",function(){if(h){clearTimeout(h);h=null}g(d(this))}).click(function(c){if(a.setOnClick){b.removeClass("selectedLava"); | |
b=d(this).addClass("selectedLava")}return a.click.apply(this,[c,this])});f=d("<"+a.container+' class="backLava"><div class="leftLava"></div><div class="bottomLava"></div><div class="cornerLava"></div></'+a.container+">").css({position:"absolute",display:"block",margin:0,padding:0}).prependTo(this);if(a.includeMargins){p=e(b.css("marginTop"))+e(b.css("marginBottom"));q=e(b.css("marginLeft"))+e(b.css("marginRight"))}l=e(f.css("borderLeftWidth"))+e(f.css("borderRightWidth"))+e(f.css("paddingLeft"))+ | |
e(f.css("paddingRight"))-q;m=e(f.css("borderTopWidth"))+e(f.css("borderBottomWidth"))+e(f.css("paddingTop"))+e(f.css("paddingBottom"))-p;if(a.homeTop||a.homeLeft)f.css({left:a.homeLeft,top:a.homeTop,width:a.homeWidth-25,height:a.homeHeight});else{if(!a.includeMargins){i=e(b.css("marginLeft"));j=e(b.css("marginTop"))}f.css({left:b.position().left+i,top:b.position().top+j,width:b.outerWidth()-l-25,height:b.outerHeight()-m})}d(this).bind("mouseleave",function(){var c=null;if(a.returnHome)c=n;else if(!a.autoReturn)return true; | |
if(a.returnDelay){h&&clearTimeout(h);h=setTimeout(function(){g(c)},a.returnDelay)}else g(c);return true})})}})(jQuery); | |
/* | |
* jQuery Easing Compatibility v1 - http://gsgd.co.uk/sandbox/jquery.easing.php | |
* | |
* Adds compatibility for applications that use the pre 1.2 easing names | |
* | |
* Copyright (c) 2007 George Smith | |
* Licensed under the MIT License: | |
* http://www.opensource.org/licenses/mit-license.php | |
*/ | |
jQuery.extend( jQuery.easing, | |
{ | |
easeIn: function (x, t, b, c, d) { | |
return jQuery.easing.easeInQuad(x, t, b, c, d); | |
}, | |
easeOut: function (x, t, b, c, d) { | |
return jQuery.easing.easeOutQuad(x, t, b, c, d); | |
}, | |
easeInOut: function (x, t, b, c, d) { | |
return jQuery.easing.easeInOutQuad(x, t, b, c, d); | |
}, | |
expoin: function(x, t, b, c, d) { | |
return jQuery.easing.easeInExpo(x, t, b, c, d); | |
}, | |
expoout: function(x, t, b, c, d) { | |
return jQuery.easing.easeOutExpo(x, t, b, c, d); | |
}, | |
expoinout: function(x, t, b, c, d) { | |
return jQuery.easing.easeInOutExpo(x, t, b, c, d); | |
}, | |
bouncein: function(x, t, b, c, d) { | |
return jQuery.easing.easeInBounce(x, t, b, c, d); | |
}, | |
bounceout: function(x, t, b, c, d) { | |
return jQuery.easing.easeOutBounce(x, t, b, c, d); | |
}, | |
bounceinout: function(x, t, b, c, d) { | |
return jQuery.easing.easeInOutBounce(x, t, b, c, d); | |
}, | |
elasin: function(x, t, b, c, d) { | |
return jQuery.easing.easeInElastic(x, t, b, c, d); | |
}, | |
elasout: function(x, t, b, c, d) { | |
return jQuery.easing.easeOutElastic(x, t, b, c, d); | |
}, | |
elasinout: function(x, t, b, c, d) { | |
return jQuery.easing.easeInOutElastic(x, t, b, c, d); | |
}, | |
backin: function(x, t, b, c, d) { | |
return jQuery.easing.easeInBack(x, t, b, c, d); | |
}, | |
backout: function(x, t, b, c, d) { | |
return jQuery.easing.easeOutBack(x, t, b, c, d); | |
}, | |
backinout: function(x, t, b, c, d) { | |
return jQuery.easing.easeInOutBack(x, t, b, c, d); | |
} | |
}); | |
// END LAVALAMP PLUGIN | |
//START JCAROUSEL PLUGIN | |
/*! | |
* jCarousel - Riding carousels with jQuery | |
* http://sorgalla.com/jcarousel/ | |
* | |
* Copyright (c) 2006 Jan Sorgalla (http://sorgalla.com) | |
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php) | |
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses. | |
* | |
* Built on top of the jQuery library | |
* http://jquery.com | |
* | |
* Inspired by the "Carousel Component" by Bill Scott | |
* http://billwscott.com/carousel/ | |
*/ | |
(function(g){var q={vertical:!1,rtl:!1,start:1,offset:1,size:null,scroll:3,visible:null,animation:"normal",easing:"swing",auto:0,wrap:null,initCallback:null,setupCallback:null,reloadCallback:null,itemLoadCallback:null,itemFirstInCallback:null,itemFirstOutCallback:null,itemLastInCallback:null,itemLastOutCallback:null,itemVisibleInCallback:null,itemVisibleOutCallback:null,animationStepCallback:null,buttonNextHTML:"<div></div>",buttonPrevHTML:"<div></div>",buttonNextEvent:"click",buttonPrevEvent:"click", buttonNextCallback:null,buttonPrevCallback:null,itemFallbackDimension:null},m=!1;g(window).bind("load.jcarousel",function(){m=!0});g.jcarousel=function(a,c){this.options=g.extend({},q,c||{});this.autoStopped=this.locked=!1;this.buttonPrevState=this.buttonNextState=this.buttonPrev=this.buttonNext=this.list=this.clip=this.container=null;if(!c||c.rtl===void 0)this.options.rtl=(g(a).attr("dir")||g("html").attr("dir")||"").toLowerCase()=="rtl";this.wh=!this.options.vertical?"width":"height";this.lt=!this.options.vertical? this.options.rtl?"right":"left":"top";for(var b="",d=a.className.split(" "),f=0;f<d.length;f++)if(d[f].indexOf("jcarousel-skin")!=-1){g(a).removeClass(d[f]);b=d[f];break}a.nodeName.toUpperCase()=="UL"||a.nodeName.toUpperCase()=="OL"?(this.list=g(a),this.clip=this.list.parents(".jcarousel-clip"),this.container=this.list.parents(".jcarousel-container")):(this.container=g(a),this.list=this.container.find("ul,ol").eq(0),this.clip=this.container.find(".jcarousel-clip"));if(this.clip.size()===0)this.clip= this.list.wrap("<div></div>").parent();if(this.container.size()===0)this.container=this.clip.wrap("<div></div>").parent();b!==""&&this.container.parent()[0].className.indexOf("jcarousel-skin")==-1&&this.container.wrap('<div class=" '+b+'"></div>');this.buttonPrev=g(".jcarousel-prev",this.container);if(this.buttonPrev.size()===0&&this.options.buttonPrevHTML!==null)this.buttonPrev=g(this.options.buttonPrevHTML).appendTo(this.container);this.buttonPrev.addClass(this.className("jcarousel-prev"));this.buttonNext= g(".jcarousel-next",this.container);if(this.buttonNext.size()===0&&this.options.buttonNextHTML!==null)this.buttonNext=g(this.options.buttonNextHTML).appendTo(this.container);this.buttonNext.addClass(this.className("jcarousel-next"));this.clip.addClass(this.className("jcarousel-clip")).css({position:"relative"});this.list.addClass(this.className("jcarousel-list")).css({/*overflow:"hidden", NOT NEEDED DUE TO BORDER */position:"relative",top:0,margin:0,padding:0}).css(this.options.rtl?"right":"left",0);this.container.addClass(this.className("jcarousel-container")).css({position:"relative"}); !this.options.vertical&&this.options.rtl&&this.container.addClass("jcarousel-direction-rtl").attr("dir","rtl");var j=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible):null,b=this.list.children("li"),e=this;if(b.size()>0){var h=0,i=this.options.offset;b.each(function(){e.format(this,i++);h+=e.dimension(this,j)});this.list.css(this.wh,h+100+"px");if(!c||c.size===void 0)this.options.size=b.size()}this.container.css("display","block");this.buttonNext.css("display","block");this.buttonPrev.css("display", "block");this.funcNext=function(){e.next()};this.funcPrev=function(){e.prev()};this.funcResize=function(){e.resizeTimer&&clearTimeout(e.resizeTimer);e.resizeTimer=setTimeout(function(){e.reload()},100)};this.options.initCallback!==null&&this.options.initCallback(this,"init");!m&&g.browser.safari?(this.buttons(!1,!1),g(window).bind("load.jcarousel",function(){e.setup()})):this.setup()};var f=g.jcarousel;f.fn=f.prototype={jcarousel:"0.2.8"};f.fn.extend=f.extend=g.extend;f.fn.extend({setup:function(){this.prevLast= this.prevFirst=this.last=this.first=null;this.animating=!1;this.tail=this.resizeTimer=this.timer=null;this.inTail=!1;if(!this.locked){this.list.css(this.lt,this.pos(this.options.offset)+"px");var a=this.pos(this.options.start,!0);this.prevFirst=this.prevLast=null;this.animate(a,!1);g(window).unbind("resize.jcarousel",this.funcResize).bind("resize.jcarousel",this.funcResize);this.options.setupCallback!==null&&this.options.setupCallback(this)}},reset:function(){this.list.empty();this.list.css(this.lt, "0px");this.list.css(this.wh,"10px");this.options.initCallback!==null&&this.options.initCallback(this,"reset");this.setup()},reload:function(){this.tail!==null&&this.inTail&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+this.tail);this.tail=null;this.inTail=!1;this.options.reloadCallback!==null&&this.options.reloadCallback(this);if(this.options.visible!==null){var a=this,c=Math.ceil(this.clipping()/this.options.visible),b=0,d=0;this.list.children("li").each(function(f){b+=a.dimension(this, c);f+1<a.first&&(d=b)});this.list.css(this.wh,b+"px");this.list.css(this.lt,-d+"px")}this.scroll(this.first,!1)},lock:function(){this.locked=!0;this.buttons()},unlock:function(){this.locked=!1;this.buttons()},size:function(a){if(a!==void 0)this.options.size=a,this.locked||this.buttons();return this.options.size},has:function(a,c){if(c===void 0||!c)c=a;if(this.options.size!==null&&c>this.options.size)c=this.options.size;for(var b=a;b<=c;b++){var d=this.get(b);if(!d.length||d.hasClass("jcarousel-item-placeholder"))return!1}return!0}, get:function(a){return g(">.jcarousel-item-"+a,this.list)},add:function(a,c){var b=this.get(a),d=0,p=g(c);if(b.length===0)for(var j,e=f.intval(a),b=this.create(a);;){if(j=this.get(--e),e<=0||j.length){e<=0?this.list.prepend(b):j.after(b);break}}else d=this.dimension(b);p.get(0).nodeName.toUpperCase()=="LI"?(b.replaceWith(p),b=p):b.empty().append(c);this.format(b.removeClass(this.className("jcarousel-item-placeholder")),a);p=this.options.visible!==null?Math.ceil(this.clipping()/this.options.visible): null;d=this.dimension(b,p)-d;a>0&&a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))-d+"px");this.list.css(this.wh,f.intval(this.list.css(this.wh))+d+"px");return b},remove:function(a){var c=this.get(a);if(c.length&&!(a>=this.first&&a<=this.last)){var b=this.dimension(c);a<this.first&&this.list.css(this.lt,f.intval(this.list.css(this.lt))+b+"px");c.remove();this.list.css(this.wh,f.intval(this.list.css(this.wh))-b+"px")}},next:function(){this.tail!==null&&!this.inTail?this.scrollTail(!1): this.scroll((this.options.wrap=="both"||this.options.wrap=="last")&&this.options.size!==null&&this.last==this.options.size?1:this.first+this.options.scroll)},prev:function(){this.tail!==null&&this.inTail?this.scrollTail(!0):this.scroll((this.options.wrap=="both"||this.options.wrap=="first")&&this.options.size!==null&&this.first==1?this.options.size:this.first-this.options.scroll)},scrollTail:function(a){if(!this.locked&&!this.animating&&this.tail){this.pauseAuto();var c=f.intval(this.list.css(this.lt)), c=!a?c-this.tail:c+this.tail;this.inTail=!a;this.prevFirst=this.first;this.prevLast=this.last;this.animate(c)}},scroll:function(a,c){!this.locked&&!this.animating&&(this.pauseAuto(),this.animate(this.pos(a),c))},pos:function(a,c){var b=f.intval(this.list.css(this.lt));if(this.locked||this.animating)return b;this.options.wrap!="circular"&&(a=a<1?1:this.options.size&&a>this.options.size?this.options.size:a);for(var d=this.first>a,g=this.options.wrap!="circular"&&this.first<=1?1:this.first,j=d?this.get(g): this.get(this.last),e=d?g:g-1,h=null,i=0,k=!1,l=0;d?--e>=a:++e<a;){h=this.get(e);k=!h.length;if(h.length===0&&(h=this.create(e).addClass(this.className("jcarousel-item-placeholder")),j[d?"before":"after"](h),this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size)))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)));j=h;l=this.dimension(h);k&&(i+=l);if(this.first!==null&&(this.options.wrap=="circular"||e>=1&&(this.options.size===null||e<= this.options.size)))b=d?b+l:b-l}for(var g=this.clipping(),m=[],o=0,n=0,j=this.get(a-1),e=a;++o;){h=this.get(e);k=!h.length;if(h.length===0){h=this.create(e).addClass(this.className("jcarousel-item-placeholder"));if(j.length===0)this.list.prepend(h);else j[d?"before":"after"](h);if(this.first!==null&&this.options.wrap=="circular"&&this.options.size!==null&&(e<=0||e>this.options.size))j=this.get(this.index(e)),j.length&&(h=this.add(e,j.clone(!0)))}j=h;l=this.dimension(h);if(l===0)throw Error("jCarousel: No width/height set for items. This will cause an infinite loop. Aborting..."); this.options.wrap!="circular"&&this.options.size!==null&&e>this.options.size?m.push(h):k&&(i+=l);n+=l;if(n>=g)break;e++}for(h=0;h<m.length;h++)m[h].remove();i>0&&(this.list.css(this.wh,this.dimension(this.list)+i+"px"),d&&(b-=i,this.list.css(this.lt,f.intval(this.list.css(this.lt))-i+"px")));i=a+o-1;if(this.options.wrap!="circular"&&this.options.size&&i>this.options.size)i=this.options.size;if(e>i){o=0;e=i;for(n=0;++o;){h=this.get(e--);if(!h.length)break;n+=this.dimension(h);if(n>=g)break}}e=i-o+ 1;this.options.wrap!="circular"&&e<1&&(e=1);if(this.inTail&&d)b+=this.tail,this.inTail=!1;this.tail=null;if(this.options.wrap!="circular"&&i==this.options.size&&i-o+1>=1&&(d=f.intval(this.get(i).css(!this.options.vertical?"marginRight":"marginBottom")),n-d>g))this.tail=n-g-d;if(c&&a===this.options.size&&this.tail)b-=this.tail,this.inTail=!0;for(;a-- >e;)b+=this.dimension(this.get(a));this.prevFirst=this.first;this.prevLast=this.last;this.first=e;this.last=i;return b},animate:function(a,c){if(!this.locked&& !this.animating){this.animating=!0;var b=this,d=function(){b.animating=!1;a===0&&b.list.css(b.lt,0);!b.autoStopped&&(b.options.wrap=="circular"||b.options.wrap=="both"||b.options.wrap=="last"||b.options.size===null||b.last<b.options.size||b.last==b.options.size&&b.tail!==null&&!b.inTail)&&b.startAuto();b.buttons();b.notify("onAfterAnimation");if(b.options.wrap=="circular"&&b.options.size!==null)for(var c=b.prevFirst;c<=b.prevLast;c++)c!==null&&!(c>=b.first&&c<=b.last)&&(c<1||c>b.options.size)&&b.remove(c)}; this.notify("onBeforeAnimation");if(!this.options.animation||c===!1)this.list.css(this.lt,a+"px"),d();else{var f=!this.options.vertical?this.options.rtl?{right:a}:{left:a}:{top:a},d={duration:this.options.animation,easing:this.options.easing,complete:d};if(g.isFunction(this.options.animationStepCallback))d.step=this.options.animationStepCallback;this.list.animate(f,d)}}},startAuto:function(a){if(a!==void 0)this.options.auto=a;if(this.options.auto===0)return this.stopAuto();if(this.timer===null){this.autoStopped= !1;var c=this;this.timer=window.setTimeout(function(){c.next()},this.options.auto*1E3)}},stopAuto:function(){this.pauseAuto();this.autoStopped=!0},pauseAuto:function(){if(this.timer!==null)window.clearTimeout(this.timer),this.timer=null},buttons:function(a,c){if(a==null&&(a=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="first"||this.options.size===null||this.last<this.options.size),!this.locked&&(!this.options.wrap||this.options.wrap=="first")&&this.options.size!==null&& this.last>=this.options.size))a=this.tail!==null&&!this.inTail;if(c==null&&(c=!this.locked&&this.options.size!==0&&(this.options.wrap&&this.options.wrap!="last"||this.first>1),!this.locked&&(!this.options.wrap||this.options.wrap=="last")&&this.options.size!==null&&this.first==1))c=this.tail!==null&&this.inTail;var b=this;this.buttonNext.size()>0?(this.buttonNext.unbind(this.options.buttonNextEvent+".jcarousel",this.funcNext),a&&this.buttonNext.bind(this.options.buttonNextEvent+".jcarousel",this.funcNext), this.buttonNext[a?"removeClass":"addClass"](this.className("jcarousel-next-disabled")).attr("disabled",a?!1:!0),this.options.buttonNextCallback!==null&&this.buttonNext.data("jcarouselstate")!=a&&this.buttonNext.each(function(){b.options.buttonNextCallback(b,this,a)}).data("jcarouselstate",a)):this.options.buttonNextCallback!==null&&this.buttonNextState!=a&&this.options.buttonNextCallback(b,null,a);this.buttonPrev.size()>0?(this.buttonPrev.unbind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev), c&&this.buttonPrev.bind(this.options.buttonPrevEvent+".jcarousel",this.funcPrev),this.buttonPrev[c?"removeClass":"addClass"](this.className("jcarousel-prev-disabled")).attr("disabled",c?!1:!0),this.options.buttonPrevCallback!==null&&this.buttonPrev.data("jcarouselstate")!=c&&this.buttonPrev.each(function(){b.options.buttonPrevCallback(b,this,c)}).data("jcarouselstate",c)):this.options.buttonPrevCallback!==null&&this.buttonPrevState!=c&&this.options.buttonPrevCallback(b,null,c);this.buttonNextState= a;this.buttonPrevState=c},notify:function(a){var c=this.prevFirst===null?"init":this.prevFirst<this.first?"next":"prev";this.callback("itemLoadCallback",a,c);this.prevFirst!==this.first&&(this.callback("itemFirstInCallback",a,c,this.first),this.callback("itemFirstOutCallback",a,c,this.prevFirst));this.prevLast!==this.last&&(this.callback("itemLastInCallback",a,c,this.last),this.callback("itemLastOutCallback",a,c,this.prevLast));this.callback("itemVisibleInCallback",a,c,this.first,this.last,this.prevFirst, this.prevLast);this.callback("itemVisibleOutCallback",a,c,this.prevFirst,this.prevLast,this.first,this.last)},callback:function(a,c,b,d,f,j,e){if(!(this.options[a]==null||typeof this.options[a]!="object"&&c!="onAfterAnimation")){var h=typeof this.options[a]=="object"?this.options[a][c]:this.options[a];if(g.isFunction(h)){var i=this;if(d===void 0)h(i,b,c);else if(f===void 0)this.get(d).each(function(){h(i,this,d,b,c)});else for(var a=function(a){i.get(a).each(function(){h(i,this,a,b,c)})},k=d;k<=f;k++)k!== null&&!(k>=j&&k<=e)&&a(k)}}},create:function(a){return this.format("<li></li>",a)},format:function(a,c){for(var a=g(a),b=a.get(0).className.split(" "),d=0;d<b.length;d++)b[d].indexOf("jcarousel-")!=-1&&a.removeClass(b[d]);a.addClass(this.className("jcarousel-item")).addClass(this.className("jcarousel-item-"+c)).css({"float":this.options.rtl?"right":"left","list-style":"none"}).attr("jcarouselindex",c);return a},className:function(a){return a+" "+a+(!this.options.vertical?"-horizontal":"-vertical")}, dimension:function(a,c){var b=g(a);if(c==null)return!this.options.vertical?b.outerWidth(!0)||f.intval(this.options.itemFallbackDimension):b.outerHeight(!0)||f.intval(this.options.itemFallbackDimension);else{var d=!this.options.vertical?c-f.intval(b.css("marginLeft"))-f.intval(b.css("marginRight")):c-f.intval(b.css("marginTop"))-f.intval(b.css("marginBottom"));g(b).css(this.wh,d+"px");return this.dimension(b)}},clipping:function(){return!this.options.vertical?this.clip[0].offsetWidth-f.intval(this.clip.css("borderLeftWidth"))- f.intval(this.clip.css("borderRightWidth")):this.clip[0].offsetHeight-f.intval(this.clip.css("borderTopWidth"))-f.intval(this.clip.css("borderBottomWidth"))},index:function(a,c){if(c==null)c=this.options.size;return Math.round(((a-1)/c-Math.floor((a-1)/c))*c)+1}});f.extend({defaults:function(a){return g.extend(q,a||{})},intval:function(a){a=parseInt(a,10);return isNaN(a)?0:a},windowLoaded:function(){m=!0}});g.fn.jcarousel=function(a){if(typeof a=="string"){var c=g(this).data("jcarousel"),b=Array.prototype.slice.call(arguments, 1);return c[a].apply(c,b)}else return this.each(function(){var b=g(this).data("jcarousel");b?(a&&g.extend(b.options,a),b.reload()):g(this).data("jcarousel",new f(this,a))})}})(jQuery); | |
//END JCAROUSEL PLUGIN | |
//START JCAROUSEL LITE | |
(function($){$.fn.jCarouselLite=function(o){o=$.extend({btnPrev:null,btnNext:null,btnGo:null,mouseWheel:false,auto:null,speed:200,easing:null,vertical:false,circular:true,visible:3,start:0,scroll:1,beforeStart:null,afterEnd:null},o||{});return this.each(function(){var b=false,animCss=o.vertical?"top":"left",sizeCss=o.vertical?"height":"width";var c=$(this),ul=$("ul",c),tLi=$("li",ul),tl=tLi.size(),v=o.visible;if(o.circular){ul.prepend(tLi.slice(tl-v-1+1).clone()).append(tLi.slice(0,v).clone());o.start+=v}var f=$("li",ul),itemLength=f.size(),curr=o.start;c.css("visibility","visible");f.css({/*overflow:"hidden", - tweaked: not needed */float:o.vertical?"none":"left"});ul.css({margin:"0",padding:"0",position:"relative","list-style-type":"none","z-index":"1"});c.css({overflow:"hidden",position:"relative","z-index":"2",left:"50%"});var g=o.vertical?height(f):width(f);var h=g*itemLength;var j=g*v;f.css({width:f.width(),height:f.height()});ul.css(sizeCss,h+"px").css(animCss,-(curr*g));c.css(sizeCss,j+"px");if(o.btnPrev)$(o.btnPrev).click(function(){return go(curr-o.scroll)});if(o.btnNext)$(o.btnNext).click(function(){return go(curr+o.scroll)});if(o.btnGo)$.each(o.btnGo,function(i,a){$(a).click(function(){return go(o.circular?o.visible+i:i)})});if(o.mouseWheel&&c.mousewheel)c.mousewheel(function(e,d){return d>0?go(curr-o.scroll):go(curr+o.scroll)});if(o.auto)setInterval(function(){go(curr+o.scroll)},o.auto+o.speed);function vis(){return f.slice(curr).slice(0,v)};function go(a){if(!b){if(o.beforeStart)o.beforeStart.call(this,vis());if(o.circular){if(a<=o.start-v-1){ul.css(animCss,-((itemLength-(v*2))*g)+"px");curr=a==o.start-v-1?itemLength-(v*2)-1:itemLength-(v*2)-o.scroll}else if(a>=itemLength-v+1){ul.css(animCss,-((v)*g)+"px");curr=a==itemLength-v+1?v+1:v+o.scroll}else curr=a}else{if(a<0||a>itemLength-v)return;else curr=a}b=true;ul.animate(animCss=="left"?{left:-(curr*g)}:{top:-(curr*g)},o.speed,o.easing,function(){if(o.afterEnd)o.afterEnd.call(this,vis());b=false});if(!o.circular){$(o.btnPrev+","+o.btnNext).removeClass("disabled");$((curr-o.scroll<0&&o.btnPrev)||(curr+o.scroll>itemLength-v&&o.btnNext)||[]).addClass("disabled")}}return false}})};function css(a,b){return parseInt($.css(a[0],b))||0};function width(a){return a[0].offsetWidth+css(a,'marginLeft')+css(a,'marginRight')};function height(a){return a[0].offsetHeight+css(a,'marginTop')+css(a,'marginBottom')}})(jQuery); | |
//END JCAROUSEL LITE | |
//START CLOUDZOOM JQUERY PLUGIN | |
////////////////////////////////////////////////////////////////////////////////// | |
// Cloud Zoom V1.0.2 | |
// (c) 2010 by R Cecco. <http://www.professorcloud.com> | |
// MIT License | |
// | |
// Please retain this copyright header in all versions of the software | |
////////////////////////////////////////////////////////////////////////////////// | |
(function($){$(document).ready(function(){$('.cloud-zoom, .cloud-zoom-gallery').CloudZoom()});function format(str){for(var i=1;i<arguments.length;i++){str=str.replace('%'+(i-1),arguments[i])}return str}function CloudZoom(jWin,opts){var sImg=$('img',jWin);var img1;var img2;var zoomDiv=null;var $mouseTrap=null;var lens=null;var $tint=null;var softFocus=null;var $ie6Fix=null;var zoomImage;var controlTimer=0;var cw,ch;var destU=0;var destV=0;var currV=0;var currU=0;var filesLoaded=0;var mx,my;var ctx=this,zw;setTimeout(function(){if($mouseTrap===null){var w=jWin.width();jWin.parent().append(format('<div style="width:%0px;position:absolute;top:75%;left:%1px;text-align:center" class="cloud-zoom-loading" >Loading...</div>',w/3,(w/2)-(w/6))).find(':last').css('opacity',0.5)}},200);var ie6FixRemove=function(){if($ie6Fix!==null){$ie6Fix.remove();$ie6Fix=null}};this.removeBits=function(){if(lens){lens.remove();lens=null}if($tint){$tint.remove();$tint=null}if(softFocus){softFocus.remove();softFocus=null}ie6FixRemove();$('.cloud-zoom-loading',jWin.parent()).remove()};this.destroy=function(){jWin.data('zoom',null);if($mouseTrap){$mouseTrap.unbind();$mouseTrap.remove();$mouseTrap=null}if(zoomDiv){zoomDiv.remove();zoomDiv=null}this.removeBits()};this.fadedOut=function(){if(zoomDiv){zoomDiv.remove();zoomDiv=null}this.removeBits()};this.controlLoop=function(){if(lens){var x=(mx-sImg.offset().left-(cw*0.5))>>0;var y=(my-sImg.offset().top-(ch*0.5))>>0;if(x<0){x=0}else if(x>(sImg.outerWidth()-cw)){x=(sImg.outerWidth()-cw)}if(y<0){y=0}else if(y>(sImg.outerHeight()-ch)){y=(sImg.outerHeight()-ch)}lens.css({left:x,top:y});lens.css('background-position',(-x)+'px '+(-y)+'px');destU=(((x)/sImg.outerWidth())*zoomImage.width)>>0;destV=(((y)/sImg.outerHeight())*zoomImage.height)>>0;currU+=(destU-currU)/opts.smoothMove;currV+=(destV-currV)/opts.smoothMove;zoomDiv.css('background-position',(-(currU>>0)+'px ')+(-(currV>>0)+'px'))}controlTimer=setTimeout(function(){ctx.controlLoop()},30)};this.init2=function(img,id){filesLoaded++;if(id===1){zoomImage=img}if(filesLoaded===2){this.init()}};this.init=function(){$('.cloud-zoom-loading',jWin.parent()).remove();$mouseTrap=jWin.parent().append(format("<div class='mousetrap' style='background-image:url(\".\");z-index:999;position:absolute;width:%0px;height:%1px;left:%2px;top:%3px;\'></div>",sImg.outerWidth(),sImg.outerHeight(),0,0)).find(':last');$mouseTrap.bind('mousemove',this,function(event){mx=event.pageX;my=event.pageY});$mouseTrap.bind('mouseleave',this,function(event){clearTimeout(controlTimer);if(lens){lens.fadeOut(299)}if($tint){$tint.fadeOut(299)}if(softFocus){softFocus.fadeOut(299)}zoomDiv.fadeOut(300,function(){ctx.fadedOut()});return false});$mouseTrap.bind('mouseenter',this,function(event){mx=event.pageX;my=event.pageY;zw=event.data;if(zoomDiv){zoomDiv.stop(true,false);zoomDiv.remove()}var xPos=opts.adjustX,yPos=opts.adjustY;var siw=sImg.outerWidth();var sih=sImg.outerHeight();var w=opts.zoomWidth;var h=opts.zoomHeight;if(opts.zoomWidth=='auto'){w=siw}if(opts.zoomHeight=='auto'){h=sih}var appendTo=jWin.parent();switch(opts.position){case'top':yPos-=h;break;case'right':xPos+=siw;break;case'bottom':yPos+=sih;break;case'left':xPos-=w;break;case'inside':w=siw;h=sih;break;default:appendTo=$('#'+opts.position);if(!appendTo.length){appendTo=jWin;xPos+=siw;yPos+=sih}else{w=appendTo.innerWidth();h=appendTo.innerHeight()}}zoomDiv=appendTo.append(format('<div id="cloud-zoom-big" class="cloud-zoom-big" style="display:none;position:absolute;left:%0px;top:%1px;width:%2px;height:%3px;background-image:url(\'%4\');z-index:99;"></div>',xPos,yPos,w,h,zoomImage.src)).find(':last');if(sImg.attr('title')&&opts.showTitle){zoomDiv.append(format('<div class="cloud-zoom-title">%0</div>',sImg.attr('title'))).find(':last').css('opacity',opts.titleOpacity)}if($.browser.msie&&$.browser.version<7){$ie6Fix=$('<iframe frameborder="0" src="#"></iframe>').css({position:"absolute",left:xPos,top:yPos,zIndex:99,width:w,height:h}).insertBefore(zoomDiv)}zoomDiv.fadeIn(500);if(lens){lens.remove();lens=null}cw=(sImg.outerWidth()/zoomImage.width)*zoomDiv.width();ch=(sImg.outerHeight()/zoomImage.height)*zoomDiv.height();lens=jWin.append(format("<div class = 'cloud-zoom-lens' style='display:none;z-index:98;position:absolute;width:%0px;height:%1px;'></div>",cw,ch)).find(':last');$mouseTrap.css('cursor',lens.css('cursor'));var noTrans=false;if(opts.tint){lens.css('background','url("'+sImg.attr('src')+'")');$tint=jWin.append(format('<div style="display:none;position:absolute; left:0px; top:0px; width:%0px; height:%1px; background-color:%2;" />',sImg.outerWidth(),sImg.outerHeight(),opts.tint)).find(':last');$tint.css('opacity',opts.tintOpacity);noTrans=true;$tint.fadeIn(500)}if(opts.softFocus){lens.css('background','url("'+sImg.attr('src')+'")');softFocus=jWin.append(format('<div style="position:absolute;display:none;top:2px; left:2px; width:%0px; height:%1px;" />',sImg.outerWidth()-2,sImg.outerHeight()-2,opts.tint)).find(':last');softFocus.css('background','url("'+sImg.attr('src')+'")');softFocus.css('opacity',0.5);noTrans=true;softFocus.fadeIn(500)}if(!noTrans){lens.css('opacity',opts.lensOpacity)}if(opts.position!=='inside'){lens.fadeIn(500)}zw.controlLoop();return})};img1=new Image();$(img1).load(function(){ctx.init2(this,0)});img1.src=sImg.attr('src');img2=new Image();$(img2).load(function(){ctx.init2(this,1)});img2.src=jWin.attr('href')}$.fn.CloudZoom=function(options){try{document.execCommand("BackgroundImageCache",false,true)}catch(e){}this.each(function(){var relOpts,opts;eval('var a = {'+$(this).attr('rel')+'}');relOpts=a;if($(this).is('.cloud-zoom')){$(this).css({'position':'relative','display':'block'});$('img',$(this)).css({'display':'block'});if($(this).parent().attr('id')!='wrap'){$(this).wrap('<div id="wrap" style="top:0px;z-index:9999;position:relative;"></div>')}opts=$.extend({},$.fn.CloudZoom.defaults,options);opts=$.extend({},opts,relOpts);$(this).data('zoom',new CloudZoom($(this),opts))}else if($(this).is('.cloud-zoom-gallery')){opts=$.extend({},relOpts,options);$(this).data('relOpts',opts);$(this).bind('click',$(this),function(event){var data=event.data.data('relOpts');$('#'+data.useZoom).data('zoom').destroy();$('#'+data.useZoom).attr('href',event.data.attr('href'));$('#'+data.useZoom+' img').attr('src',event.data.data('relOpts').smallImage);$('#'+event.data.data('relOpts').useZoom).CloudZoom();return false})}});return this};$.fn.CloudZoom.defaults={zoomWidth:'auto',zoomHeight:'auto',position:'right',tint:false,tintOpacity:0.5,lensOpacity:0.5,softFocus:false,smoothMove:3,showTitle:true,titleOpacity:0.5,adjustX:0,adjustY:0}})(jQuery); | |
//END CLOUDZOOM JQUERY PLUGIN | |
//START FANCYBOX PLUGIN | |
/* | |
* FancyBox - jQuery Plugin | |
* Simple and fancy lightbox alternative | |
* | |
* Examples and documentation at: http://fancybox.net | |
* | |
* Copyright (c) 2008 - 2010 Janis Skarnelis | |
* That said, it is hardly a one-person project. Many people have submitted bugs, code, and offered their advice freely. Their support is greatly appreciated. | |
* | |
* Version: 1.3.4 (11/11/2010) | |
* Requires: jQuery v1.3+ | |
* | |
* Dual licensed under the MIT and GPL licenses: | |
* http://www.opensource.org/licenses/mit-license.php | |
* http://www.gnu.org/licenses/gpl.html | |
*/ | |
;(function(b){var m,t,u,f,D,j,E,n,z,A,q=0,e={},o=[],p=0,d={},l=[],G=null,v=new Image,J=/\.(jpg|gif|png|bmp|jpeg)(.*)?$/i,W=/[^\.]\.(swf)\s*$/i,K,L=1,y=0,s="",r,i,h=false,B=b.extend(b("<div/>")[0],{prop:0}),M=b.browser.msie&&b.browser.version<7&&!window.XMLHttpRequest,N=function(){t.hide();v.onerror=v.onload=null;G&&G.abort();m.empty()},O=function(){if(false===e.onError(o,q,e)){t.hide();h=false}else{e.titleShow=false;e.width="auto";e.height="auto";m.html('<p id="fancybox-error">The requested content cannot be loaded.<br />Please try again later.</p>'); | |
F()}},I=function(){var a=o[q],c,g,k,C,P,w;N();e=b.extend({},b.fn.fancybox.defaults,typeof b(a).data("fancybox")=="undefined"?e:b(a).data("fancybox"));w=e.onStart(o,q,e);if(w===false)h=false;else{if(typeof w=="object")e=b.extend(e,w);k=e.title||(a.nodeName?b(a).attr("title"):a.title)||"";if(a.nodeName&&!e.orig)e.orig=b(a).children("img:first").length?b(a).children("img:first"):b(a);if(k===""&&e.orig&&e.titleFromAlt)k=e.orig.attr("alt");c=e.href||(a.nodeName?b(a).attr("href"):a.href)||null;if(/^(?:javascript)/i.test(c)|| | |
c=="#")c=null;if(e.type){g=e.type;if(!c)c=e.content}else if(e.content)g="html";else if(c)g=c.match(J)?"image":c.match(W)?"swf":b(a).hasClass("iframe")?"iframe":c.indexOf("#")===0?"inline":"ajax";if(g){if(g=="inline"){a=c.substr(c.indexOf("#"));g=b(a).length>0?"inline":"ajax"}e.type=g;e.href=c;e.title=k;if(e.autoDimensions)if(e.type=="html"||e.type=="inline"||e.type=="ajax"){e.width="auto";e.height="auto"}else e.autoDimensions=false;if(e.modal){e.overlayShow=true;e.hideOnOverlayClick=false;e.hideOnContentClick= | |
false;e.enableEscapeButton=false;e.showCloseButton=false}e.padding=parseInt(e.padding,10);e.margin=parseInt(e.margin,10);m.css("padding",e.padding+e.margin);b(".fancybox-inline-tmp").unbind("fancybox-cancel").bind("fancybox-change",function(){b(this).replaceWith(j.children())});switch(g){case "html":m.html(e.content);F();break;case "inline":if(b(a).parent().is("#fancybox-content")===true){h=false;break}b('<div class="fancybox-inline-tmp" />').hide().insertBefore(b(a)).bind("fancybox-cleanup",function(){b(this).replaceWith(j.children())}).bind("fancybox-cancel", | |
function(){b(this).replaceWith(m.children())});b(a).appendTo(m);F();break;case "image":h=false;b.fancybox.showActivity();v=new Image;v.onerror=function(){O()};v.onload=function(){h=true;v.onerror=v.onload=null;e.width=v.width;e.height=v.height;b("<img />").attr({id:"fancybox-img",src:v.src,alt:e.title}).appendTo(m);Q()};v.src=c;break;case "swf":e.scrolling="no";C='<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+e.width+'" height="'+e.height+'"><param name="movie" value="'+c+ | |
'"></param>';P="";b.each(e.swf,function(x,H){C+='<param name="'+x+'" value="'+H+'"></param>';P+=" "+x+'="'+H+'"'});C+='<embed src="'+c+'" type="application/x-shockwave-flash" width="'+e.width+'" height="'+e.height+'"'+P+"></embed></object>";m.html(C);F();break;case "ajax":h=false;b.fancybox.showActivity();e.ajax.win=e.ajax.success;G=b.ajax(b.extend({},e.ajax,{url:c,data:e.ajax.data||{},error:function(x){x.status>0&&O()},success:function(x,H,R){if((typeof R=="object"?R:G).status==200){if(typeof e.ajax.win== | |
"function"){w=e.ajax.win(c,x,H,R);if(w===false){t.hide();return}else if(typeof w=="string"||typeof w=="object")x=w}m.html(x);F()}}}));break;case "iframe":Q()}}else O()}},F=function(){var a=e.width,c=e.height;a=a.toString().indexOf("%")>-1?parseInt((b(window).width()-e.margin*2)*parseFloat(a)/100,10)+"px":a=="auto"?"auto":a+"px";c=c.toString().indexOf("%")>-1?parseInt((b(window).height()-e.margin*2)*parseFloat(c)/100,10)+"px":c=="auto"?"auto":c+"px";m.wrapInner('<div style="width:'+a+";height:"+c+ | |
";overflow: "+(e.scrolling=="auto"?"auto":e.scrolling=="yes"?"scroll":"hidden")+';position:relative;"></div>');e.width=m.width();e.height=m.height();Q()},Q=function(){var a,c;t.hide();if(f.is(":visible")&&false===d.onCleanup(l,p,d)){b.event.trigger("fancybox-cancel");h=false}else{h=true;b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");f.is(":visible")&&d.titlePosition!=="outside"&&f.css("height",f.height());l=o;p=q;d=e;if(d.overlayShow){u.css({"background-color":d.overlayColor, | |
opacity:d.overlayOpacity,cursor:d.hideOnOverlayClick?"pointer":"auto",height:b(document).height()});if(!u.is(":visible")){M&&b("select:not(#fancybox-tmp select)").filter(function(){return this.style.visibility!=="hidden"}).css({visibility:"hidden"}).one("fancybox-cleanup",function(){this.style.visibility="inherit"});u.show()}}else u.hide();i=X();s=d.title||"";y=0;n.empty().removeAttr("style").removeClass();if(d.titleShow!==false){if(b.isFunction(d.titleFormat))a=d.titleFormat(s,l,p,d);else a=s&&s.length? | |
d.titlePosition=="float"?'<table id="fancybox-title-float-wrap" cellpadding="0" cellspacing="0"><tr><td id="fancybox-title-float-left"></td><td id="fancybox-title-float-main">'+s+'</td><td id="fancybox-title-float-right"></td></tr></table>':'<div id="fancybox-title-'+d.titlePosition+'">'+s+"</div>":false;s=a;if(!(!s||s==="")){n.addClass("fancybox-title-"+d.titlePosition).html(s).appendTo("body").show();switch(d.titlePosition){case "inside":n.css({width:i.width-d.padding*2,marginLeft:d.padding,marginRight:d.padding}); | |
y=n.outerHeight(true);n.appendTo(D);i.height+=y;break;case "over":n.css({marginLeft:d.padding,width:i.width-d.padding*2,bottom:d.padding}).appendTo(D);break;case "float":n.css("left",parseInt((n.width()-i.width-40)/2,10)*-1).appendTo(f);break;default:n.css({width:i.width-d.padding*2,paddingLeft:d.padding,paddingRight:d.padding}).appendTo(f)}}}n.hide();if(f.is(":visible")){b(E.add(z).add(A)).hide();a=f.position();r={top:a.top,left:a.left,width:f.width(),height:f.height()};c=r.width==i.width&&r.height== | |
i.height;j.fadeTo(d.changeFade,0.3,function(){var g=function(){j.html(m.contents()).fadeTo(d.changeFade,1,S)};b.event.trigger("fancybox-change");j.empty().removeAttr("filter").css({"border-width":d.padding,width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2});if(c)g();else{B.prop=0;b(B).animate({prop:1},{duration:d.changeSpeed,easing:d.easingChange,step:T,complete:g})}})}else{f.removeAttr("style");j.css("border-width",d.padding);if(d.transitionIn=="elastic"){r=V();j.html(m.contents()); | |
f.show();if(d.opacity)i.opacity=0;B.prop=0;b(B).animate({prop:1},{duration:d.speedIn,easing:d.easingIn,step:T,complete:S})}else{d.titlePosition=="inside"&&y>0&&n.show();j.css({width:i.width-d.padding*2,height:e.autoDimensions?"auto":i.height-y-d.padding*2}).html(m.contents());f.css(i).fadeIn(d.transitionIn=="none"?0:d.speedIn,S)}}}},Y=function(){if(d.enableEscapeButton||d.enableKeyboardNav)b(document).bind("keydown.fb",function(a){if(a.keyCode==27&&d.enableEscapeButton){a.preventDefault();b.fancybox.close()}else if((a.keyCode== | |
37||a.keyCode==39)&&d.enableKeyboardNav&&a.target.tagName!=="INPUT"&&a.target.tagName!=="TEXTAREA"&&a.target.tagName!=="SELECT"){a.preventDefault();b.fancybox[a.keyCode==37?"prev":"next"]()}});if(d.showNavArrows){if(d.cyclic&&l.length>1||p!==0)z.show();if(d.cyclic&&l.length>1||p!=l.length-1)A.show()}else{z.hide();A.hide()}},S=function(){if(!b.support.opacity){j.get(0).style.removeAttribute("filter");f.get(0).style.removeAttribute("filter")}e.autoDimensions&&j.css("height","auto");f.css("height","auto"); | |
s&&s.length&&n.show();d.showCloseButton&&E.show();Y();d.hideOnContentClick&&j.bind("click",b.fancybox.close);d.hideOnOverlayClick&&u.bind("click",b.fancybox.close);b(window).bind("resize.fb",b.fancybox.resize);d.centerOnScroll&&b(window).bind("scroll.fb",b.fancybox.center);if(d.type=="iframe")b('<iframe id="fancybox-frame" name="fancybox-frame'+(new Date).getTime()+'" frameborder="0" hspace="0" '+(b.browser.msie?'allowtransparency="true""':"")+' scrolling="'+e.scrolling+'" src="'+d.href+'"></iframe>').appendTo(j); | |
f.show();h=false;b.fancybox.center();d.onComplete(l,p,d);var a,c;if(l.length-1>p){a=l[p+1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}if(p>0){a=l[p-1].href;if(typeof a!=="undefined"&&a.match(J)){c=new Image;c.src=a}}},T=function(a){var c={width:parseInt(r.width+(i.width-r.width)*a,10),height:parseInt(r.height+(i.height-r.height)*a,10),top:parseInt(r.top+(i.top-r.top)*a,10),left:parseInt(r.left+(i.left-r.left)*a,10)};if(typeof i.opacity!=="undefined")c.opacity=a<0.5?0.5:a;f.css(c); | |
j.css({width:c.width-d.padding*2,height:c.height-y*a-d.padding*2})},U=function(){return[b(window).width()-d.margin*2,b(window).height()-d.margin*2,b(document).scrollLeft()+d.margin,b(document).scrollTop()+d.margin]},X=function(){var a=U(),c={},g=d.autoScale,k=d.padding*2;c.width=d.width.toString().indexOf("%")>-1?parseInt(a[0]*parseFloat(d.width)/100,10):d.width+k;c.height=d.height.toString().indexOf("%")>-1?parseInt(a[1]*parseFloat(d.height)/100,10):d.height+k;if(g&&(c.width>a[0]||c.height>a[1]))if(e.type== | |
"image"||e.type=="swf"){g=d.width/d.height;if(c.width>a[0]){c.width=a[0];c.height=parseInt((c.width-k)/g+k,10)}if(c.height>a[1]){c.height=a[1];c.width=parseInt((c.height-k)*g+k,10)}}else{c.width=Math.min(c.width,a[0]);c.height=Math.min(c.height,a[1])}c.top=parseInt(Math.max(a[3]-20,a[3]+(a[1]-c.height-40)*0.5),10);c.left=parseInt(Math.max(a[2]-20,a[2]+(a[0]-c.width-40)*0.5),10);return c},V=function(){var a=e.orig?b(e.orig):false,c={};if(a&&a.length){c=a.offset();c.top+=parseInt(a.css("paddingTop"), | |
10)||0;c.left+=parseInt(a.css("paddingLeft"),10)||0;c.top+=parseInt(a.css("border-top-width"),10)||0;c.left+=parseInt(a.css("border-left-width"),10)||0;c.width=a.width();c.height=a.height();c={width:c.width+d.padding*2,height:c.height+d.padding*2,top:c.top-d.padding-20,left:c.left-d.padding-20}}else{a=U();c={width:d.padding*2,height:d.padding*2,top:parseInt(a[3]+a[1]*0.5,10),left:parseInt(a[2]+a[0]*0.5,10)}}return c},Z=function(){if(t.is(":visible")){b("div",t).css("top",L*-40+"px");L=(L+1)%12}else clearInterval(K)}; | |
b.fn.fancybox=function(a){if(!b(this).length)return this;b(this).data("fancybox",b.extend({},a,b.metadata?b(this).metadata():{})).unbind("click.fb").bind("click.fb",function(c){c.preventDefault();if(!h){h=true;b(this).blur();o=[];q=0;c=b(this).attr("rel")||"";if(!c||c==""||c==="nofollow")o.push(this);else{o=b("a[rel="+c+"], area[rel="+c+"]");q=o.index(this)}I()}});return this};b.fancybox=function(a,c){var g;if(!h){h=true;g=typeof c!=="undefined"?c:{};o=[];q=parseInt(g.index,10)||0;if(b.isArray(a)){for(var k= | |
0,C=a.length;k<C;k++)if(typeof a[k]=="object")b(a[k]).data("fancybox",b.extend({},g,a[k]));else a[k]=b({}).data("fancybox",b.extend({content:a[k]},g));o=jQuery.merge(o,a)}else{if(typeof a=="object")b(a).data("fancybox",b.extend({},g,a));else a=b({}).data("fancybox",b.extend({content:a},g));o.push(a)}if(q>o.length||q<0)q=0;I()}};b.fancybox.showActivity=function(){clearInterval(K);t.show();K=setInterval(Z,66)};b.fancybox.hideActivity=function(){t.hide()};b.fancybox.next=function(){return b.fancybox.pos(p+ | |
1)};b.fancybox.prev=function(){return b.fancybox.pos(p-1)};b.fancybox.pos=function(a){if(!h){a=parseInt(a);o=l;if(a>-1&&a<l.length){q=a;I()}else if(d.cyclic&&l.length>1){q=a>=l.length?0:l.length-1;I()}}};b.fancybox.cancel=function(){if(!h){h=true;b.event.trigger("fancybox-cancel");N();e.onCancel(o,q,e);h=false}};b.fancybox.close=function(){function a(){u.fadeOut("fast");n.empty().hide();f.hide();b.event.trigger("fancybox-cleanup");j.empty();d.onClosed(l,p,d);l=e=[];p=q=0;d=e={};h=false}if(!(h||f.is(":hidden"))){h= | |
true;if(d&&false===d.onCleanup(l,p,d))h=false;else{N();b(E.add(z).add(A)).hide();b(j.add(u)).unbind();b(window).unbind("resize.fb scroll.fb");b(document).unbind("keydown.fb");j.find("iframe").attr("src",M&&/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank");d.titlePosition!=="inside"&&n.empty();f.stop();if(d.transitionOut=="elastic"){r=V();var c=f.position();i={top:c.top,left:c.left,width:f.width(),height:f.height()};if(d.opacity)i.opacity=1;n.empty().hide();B.prop=1; | |
b(B).animate({prop:0},{duration:d.speedOut,easing:d.easingOut,step:T,complete:a})}else f.fadeOut(d.transitionOut=="none"?0:d.speedOut,a)}}};b.fancybox.resize=function(){u.is(":visible")&&u.css("height",b(document).height());b.fancybox.center(true)};b.fancybox.center=function(a){var c,g;if(!h){g=a===true?1:0;c=U();!g&&(f.width()>c[0]||f.height()>c[1])||f.stop().animate({top:parseInt(Math.max(c[3]-20,c[3]+(c[1]-j.height()-40)*0.5-d.padding)),left:parseInt(Math.max(c[2]-20,c[2]+(c[0]-j.width()-40)*0.5- | |
d.padding))},typeof a=="number"?a:200)}};b.fancybox.init=function(){if(!b("#fancybox-wrap").length){b("body").append(m=b('<div id="fancybox-tmp"></div>'),t=b('<div id="fancybox-loading"><div></div></div>'),u=b('<div id="fancybox-overlay"></div>'),f=b('<div id="fancybox-wrap"></div>'));D=b('<div id="fancybox-outer"></div>').append('<div class="fancybox-bg" id="fancybox-bg-n"></div><div class="fancybox-bg" id="fancybox-bg-ne"></div><div class="fancybox-bg" id="fancybox-bg-e"></div><div class="fancybox-bg" id="fancybox-bg-se"></div><div class="fancybox-bg" id="fancybox-bg-s"></div><div class="fancybox-bg" id="fancybox-bg-sw"></div><div class="fancybox-bg" id="fancybox-bg-w"></div><div class="fancybox-bg" id="fancybox-bg-nw"></div>').appendTo(f); | |
D.append(j=b('<div id="fancybox-content"></div>'),E=b('<a id="fancybox-close"></a>'),n=b('<div id="fancybox-title"></div>'),z=b('<a href="javascript:;" id="fancybox-left"><span class="fancy-ico" id="fancybox-left-ico"></span></a>'),A=b('<a href="javascript:;" id="fancybox-right"><span class="fancy-ico" id="fancybox-right-ico"></span></a>'));E.click(b.fancybox.close);t.click(b.fancybox.cancel);z.click(function(a){a.preventDefault();b.fancybox.prev()});A.click(function(a){a.preventDefault();b.fancybox.next()}); | |
b.fn.mousewheel&&f.bind("mousewheel.fb",function(a,c){if(h)a.preventDefault();else if(b(a.target).get(0).clientHeight==0||b(a.target).get(0).scrollHeight===b(a.target).get(0).clientHeight){a.preventDefault();b.fancybox[c>0?"prev":"next"]()}});b.support.opacity||f.addClass("fancybox-ie");if(M){t.addClass("fancybox-ie6");f.addClass("fancybox-ie6");b('<iframe id="fancybox-hide-sel-frame" src="'+(/^https/i.test(window.location.href||"")?"javascript:void(false)":"about:blank")+'" scrolling="no" border="0" frameborder="0" tabindex="-1"></iframe>').prependTo(D)}}}; | |
b.fn.fancybox.defaults={padding:10,margin:40,opacity:false,modal:false,cyclic:false,scrolling:"auto",width:560,height:340,autoScale:true,autoDimensions:true,centerOnScroll:false,ajax:{},swf:{wmode:"transparent"},hideOnOverlayClick:true,hideOnContentClick:false,overlayShow:true,overlayOpacity:0.7,overlayColor:"#777",titleShow:true,titlePosition:"float",titleFormat:null,titleFromAlt:false,transitionIn:"fade",transitionOut:"fade",speedIn:300,speedOut:300,changeSpeed:300,changeFade:"fast",easingIn:"swing", | |
easingOut:"swing",showCloseButton:true,showNavArrows:true,enableEscapeButton:true,enableKeyboardNav:true,onStart:function(){},onCancel:function(){},onComplete:function(){},onCleanup:function(){},onClosed:function(){},onError:function(){}};b(document).ready(function(){b.fancybox.init()})})(jQuery); | |
//END FANCYBOX PLUGIN | |
//START JQUERY ACCORDION | |
/*! | |
* jQuery UI Accordion 1.8.21 | |
* | |
* Copyright 2012, AUTHORS.txt (http://jqueryui.com/about) | |
* Dual licensed under the MIT or GPL Version 2 licenses. | |
* http://jquery.org/license | |
* | |
* http://docs.jquery.com/UI/Accordion | |
* | |
* Depends: | |
* jquery.ui.core.js | |
* jquery.ui.widget.js | |
*/ | |
(function( $, undefined ) { | |
$.widget( "ui.accordion", { | |
options: { | |
active: 0, | |
animated: "slide", | |
autoHeight: true, | |
clearStyle: false, | |
collapsible: false, | |
event: "click", | |
fillSpace: false, | |
header: "> li > :first-child,> :not(li):even", | |
icons: { | |
header: "ui-icon-triangle-1-e", | |
headerSelected: "ui-icon-triangle-1-s" | |
}, | |
navigation: false, | |
navigationFilter: function() { | |
return this.href.toLowerCase() === location.href.toLowerCase(); | |
} | |
}, | |
_create: function() { | |
var self = this, | |
options = self.options; | |
self.running = 0; | |
self.element | |
.addClass( "ui-accordion ui-widget ui-helper-reset" ) | |
// in lack of child-selectors in CSS | |
// we need to mark top-LIs in a UL-accordion for some IE-fix | |
.children( "li" ) | |
.addClass( "ui-accordion-li-fix" ); | |
self.headers = self.element.find( options.header ) | |
.addClass( "ui-accordion-header ui-helper-reset ui-state-default ui-corner-all" ) | |
.bind( "mouseenter.accordion", function() { | |
if ( options.disabled ) { | |
return; | |
} | |
$( this ).addClass( "ui-state-hover" ); | |
}) | |
.bind( "mouseleave.accordion", function() { | |
if ( options.disabled ) { | |
return; | |
} | |
$( this ).removeClass( "ui-state-hover" ); | |
}) | |
.bind( "focus.accordion", function() { | |
if ( options.disabled ) { | |
return; | |
} | |
$( this ).addClass( "ui-state-focus" ); | |
}) | |
.bind( "blur.accordion", function() { | |
if ( options.disabled ) { | |
return; | |
} | |
$( this ).removeClass( "ui-state-focus" ); | |
}); | |
self.headers.next() | |
.addClass( "ui-accordion-content ui-helper-reset ui-widget-content ui-corner-bottom" ); | |
if ( options.navigation ) { | |
var current = self.element.find( "a" ).filter( options.navigationFilter ).eq( 0 ); | |
if ( current.length ) { | |
var header = current.closest( ".ui-accordion-header" ); | |
if ( header.length ) { | |
// anchor within header | |
self.active = header; | |
} else { | |
// anchor within content | |
self.active = current.closest( ".ui-accordion-content" ).prev(); | |
} | |
} | |
} | |
self.active = self._findActive( self.active || options.active ) | |
.addClass( "ui-state-default ui-state-active" ) | |
.toggleClass( "ui-corner-all" ) | |
.toggleClass( "ui-corner-top" ); | |
self.active.next().addClass( "ui-accordion-content-active" ); | |
self._createIcons(); | |
self.resize(); | |
// ARIA | |
self.element.attr( "role", "tablist" ); | |
self.headers | |
.attr( "role", "tab" ) | |
.bind( "keydown.accordion", function( event ) { | |
return self._keydown( event ); | |
}) | |
.next() | |
.attr( "role", "tabpanel" ); | |
self.headers | |
.not( self.active || "" ) | |
.attr({ | |
"aria-expanded": "false", | |
"aria-selected": "false", | |
tabIndex: -1 | |
}) | |
.next() | |
.hide(); | |
// make sure at least one header is in the tab order | |
if ( !self.active.length ) { | |
self.headers.eq( 0 ).attr( "tabIndex", 0 ); | |
} else { | |
self.active | |
.attr({ | |
"aria-expanded": "true", | |
"aria-selected": "true", | |
tabIndex: 0 | |
}); | |
} | |
// only need links in tab order for Safari | |
if ( !$.browser.safari ) { | |
self.headers.find( "a" ).attr( "tabIndex", -1 ); | |
} | |
if ( options.event ) { | |
self.headers.bind( options.event.split(" ").join(".accordion ") + ".accordion", function(event) { | |
self._clickHandler.call( self, event, this ); | |
event.preventDefault(); | |
}); | |
} | |
}, | |
_createIcons: function() { | |
var options = this.options; | |
if ( options.icons ) { | |
$( "<span></span>" ) | |
.addClass( "ui-icon " + options.icons.header ) | |
.prependTo( this.headers ); | |
this.active.children( ".ui-icon" ) | |
.toggleClass(options.icons.header) | |
.toggleClass(options.icons.headerSelected); | |
this.element.addClass( "ui-accordion-icons" ); | |
} | |
}, | |
_destroyIcons: function() { | |
this.headers.children( ".ui-icon" ).remove(); | |
this.element.removeClass( "ui-accordion-icons" ); | |
}, | |
destroy: function() { | |
var options = this.options; | |
this.element | |
.removeClass( "ui-accordion ui-widget ui-helper-reset" ) | |
.removeAttr( "role" ); | |
this.headers | |
.unbind( ".accordion" ) | |
.removeClass( "ui-accordion-header ui-accordion-disabled ui-helper-reset ui-state-default ui-corner-all ui-state-active ui-state-disabled ui-corner-top" ) | |
.removeAttr( "role" ) | |
.removeAttr( "aria-expanded" ) | |
.removeAttr( "aria-selected" ) | |
.removeAttr( "tabIndex" ); | |
this.headers.find( "a" ).removeAttr( "tabIndex" ); | |
this._destroyIcons(); | |
var contents = this.headers.next() | |
.css( "display", "" ) | |
.removeAttr( "role" ) | |
.removeClass( "ui-helper-reset ui-widget-content ui-corner-bottom ui-accordion-content ui-accordion-content-active ui-accordion-disabled ui-state-disabled" ); | |
if ( options.autoHeight || options.fillHeight ) { | |
contents.css( "height", "" ); | |
} | |
return $.Widget.prototype.destroy.call( this ); | |
}, | |
_setOption: function( key, value ) { | |
$.Widget.prototype._setOption.apply( this, arguments ); | |
if ( key == "active" ) { | |
this.activate( value ); | |
} | |
if ( key == "icons" ) { | |
this._destroyIcons(); | |
if ( value ) { | |
this._createIcons(); | |
} | |
} | |
// #5332 - opacity doesn't cascade to positioned elements in IE | |
// so we need to add the disabled class to the headers and panels | |
if ( key == "disabled" ) { | |
this.headers.add(this.headers.next()) | |
[ value ? "addClass" : "removeClass" ]( | |
"ui-accordion-disabled ui-state-disabled" ); | |
} | |
}, | |
_keydown: function( event ) { | |
if ( this.options.disabled || event.altKey || event.ctrlKey ) { | |
return; | |
} | |
var keyCode = $.ui.keyCode, | |
length = this.headers.length, | |
currentIndex = this.headers.index( event.target ), | |
toFocus = false; | |
switch ( event.keyCode ) { | |
case keyCode.RIGHT: | |
case keyCode.DOWN: | |
toFocus = this.headers[ ( currentIndex + 1 ) % length ]; | |
break; | |
case keyCode.LEFT: | |
case keyCode.UP: | |
toFocus = this.headers[ ( currentIndex - 1 + length ) % length ]; | |
break; | |
case keyCode.SPACE: | |
case keyCode.ENTER: | |
this._clickHandler( { target: event.target }, event.target ); | |
event.preventDefault(); | |
} | |
if ( toFocus ) { | |
$( event.target ).attr( "tabIndex", -1 ); | |
$( toFocus ).attr( "tabIndex", 0 ); | |
toFocus.focus(); | |
return false; | |
} | |
return true; | |
}, | |
resize: function() { | |
var options = this.options, | |
maxHeight; | |
if ( options.fillSpace ) { | |
if ( $.browser.msie ) { | |
var defOverflow = this.element.parent().css( "overflow" ); | |
this.element.parent().css( "overflow", "hidden"); | |
} | |
maxHeight = this.element.parent().height(); | |
if ($.browser.msie) { | |
this.element.parent().css( "overflow", defOverflow ); | |
} | |
this.headers.each(function() { | |
maxHeight -= $( this ).outerHeight( true ); | |
}); | |
this.headers.next() | |
.each(function() { | |
$( this ).height( Math.max( 0, maxHeight - | |
$( this ).innerHeight() + $( this ).height() ) ); | |
}) | |
.css( "overflow", "auto" ); | |
} else if ( options.autoHeight ) { | |
maxHeight = 0; | |
this.headers.next() | |
.each(function() { | |
maxHeight = Math.max( maxHeight, $( this ).height( "" ).height() ); | |
}) | |
.height( maxHeight ); | |
} | |
return this; | |
}, | |
activate: function( index ) { | |
// TODO this gets called on init, changing the option without an explicit call for that | |
this.options.active = index; | |
// call clickHandler with custom event | |
var active = this._findActive( index )[ 0 ]; | |
this._clickHandler( { target: active }, active ); | |
return this; | |
}, | |
_findActive: function( selector ) { | |
return selector | |
? typeof selector === "number" | |
? this.headers.filter( ":eq(" + selector + ")" ) | |
: this.headers.not( this.headers.not( selector ) ) | |
: selector === false | |
? $( [] ) | |
: this.headers.filter( ":eq(0)" ); | |
}, | |
// TODO isn't event.target enough? why the separate target argument? | |
_clickHandler: function( event, target ) { | |
var options = this.options; | |
if ( options.disabled ) { | |
return; | |
} | |
// called only when using activate(false) to close all parts programmatically | |
if ( !event.target ) { | |
if ( !options.collapsible ) { | |
return; | |
} | |
this.active | |
.removeClass( "ui-state-active ui-corner-top" ) | |
.addClass( "ui-state-default ui-corner-all" ) | |
.children( ".ui-icon" ) | |
.removeClass( options.icons.headerSelected ) | |
.addClass( options.icons.header ); | |
this.active.next().addClass( "ui-accordion-content-active" ); | |
var toHide = this.active.next(), | |
data = { | |
options: options, | |
newHeader: $( [] ), | |
oldHeader: options.active, | |
newContent: $( [] ), | |
oldContent: toHide | |
}, | |
toShow = ( this.active = $( [] ) ); | |
this._toggle( toShow, toHide, data ); | |
return; | |
} | |
// get the click target | |
var clicked = $( event.currentTarget || target ), | |
clickedIsActive = clicked[0] === this.active[0]; | |
// TODO the option is changed, is that correct? | |
// TODO if it is correct, shouldn't that happen after determining that the click is valid? | |
options.active = options.collapsible && clickedIsActive ? | |
false : | |
this.headers.index( clicked ); | |
// if animations are still active, or the active header is the target, ignore click | |
if ( this.running || ( !options.collapsible && clickedIsActive ) ) { | |
return; | |
} | |
// find elements to show and hide | |
var active = this.active, | |
toShow = clicked.next(), | |
toHide = this.active.next(), | |
data = { | |
options: options, | |
newHeader: clickedIsActive && options.collapsible ? $([]) : clicked, | |
oldHeader: this.active, | |
newContent: clickedIsActive && options.collapsible ? $([]) : toShow, | |
oldContent: toHide | |
}, | |
down = this.headers.index( this.active[0] ) > this.headers.index( clicked[0] ); | |
// when the call to ._toggle() comes after the class changes | |
// it causes a very odd bug in IE 8 (see #6720) | |
this.active = clickedIsActive ? $([]) : clicked; | |
this._toggle( toShow, toHide, data, clickedIsActive, down ); | |
// switch classes | |
active | |
.removeClass( "ui-state-active ui-corner-top" ) | |
.addClass( "ui-state-default ui-corner-all" ) | |
.children( ".ui-icon" ) | |
.removeClass( options.icons.headerSelected ) | |
.addClass( options.icons.header ); | |
if ( !clickedIsActive ) { | |
clicked | |
.removeClass( "ui-state-default ui-corner-all" ) | |
.addClass( "ui-state-active ui-corner-top" ) | |
.children( ".ui-icon" ) | |
.removeClass( options.icons.header ) | |
.addClass( options.icons.headerSelected ); | |
clicked | |
.next() | |
.addClass( "ui-accordion-content-active" ); | |
} | |
return; | |
}, | |
_toggle: function( toShow, toHide, data, clickedIsActive, down ) { | |
var self = this, | |
options = self.options; | |
self.toShow = toShow; | |
self.toHide = toHide; | |
self.data = data; | |
var complete = function() { | |
if ( !self ) { | |
return; | |
} | |
return self._completed.apply( self, arguments ); | |
}; | |
// trigger changestart event | |
self._trigger( "changestart", null, self.data ); | |
// count elements to animate | |
self.running = toHide.size() === 0 ? toShow.size() : toHide.size(); | |
if ( options.animated ) { | |
var animOptions = {}; | |
if ( options.collapsible && clickedIsActive ) { | |
animOptions = { | |
toShow: $( [] ), | |
toHide: toHide, | |
complete: complete, | |
down: down, | |
autoHeight: options.autoHeight || options.fillSpace | |
}; | |
} else { | |
animOptions = { | |
toShow: toShow, | |
toHide: toHide, | |
complete: complete, | |
down: down, | |
autoHeight: options.autoHeight || options.fillSpace | |
}; | |
} | |
if ( !options.proxied ) { | |
options.proxied = options.animated; | |
} | |
if ( !options.proxiedDuration ) { | |
options.proxiedDuration = options.duration; | |
} | |
options.animated = $.isFunction( options.proxied ) ? | |
options.proxied( animOptions ) : | |
options.proxied; | |
options.duration = $.isFunction( options.proxiedDuration ) ? | |
options.proxiedDuration( animOptions ) : | |
options.proxiedDuration; | |
var animations = $.ui.accordion.animations, | |
duration = options.duration, | |
easing = options.animated; | |
if ( easing && !animations[ easing ] && !$.easing[ easing ] ) { | |
easing = "slide"; | |
} | |
if ( !animations[ easing ] ) { | |
animations[ easing ] = function( options ) { | |
this.slide( options, { | |
easing: easing, | |
duration: duration || 700 | |
}); | |
}; | |
} | |
animations[ easing ]( animOptions ); | |
} else { | |
if ( options.collapsible && clickedIsActive ) { | |
toShow.toggle(); | |
} else { | |
toHide.hide(); | |
toShow.show(); | |
} | |
complete( true ); | |
} | |
// TODO assert that the blur and focus triggers are really necessary, remove otherwise | |
toHide.prev() | |
.attr({ | |
"aria-expanded": "false", | |
"aria-selected": "false", | |
tabIndex: -1 | |
}) | |
.blur(); | |
toShow.prev() | |
.attr({ | |
"aria-expanded": "true", | |
"aria-selected": "true", | |
tabIndex: 0 | |
}) | |
.focus(); | |
}, | |
_completed: function( cancel ) { | |
this.running = cancel ? 0 : --this.running; | |
if ( this.running ) { | |
return; | |
} | |
if ( this.options.clearStyle ) { | |
this.toShow.add( this.toHide ).css({ | |
height: "", | |
overflow: "" | |
}); | |
} | |
// other classes are removed before the animation; this one needs to stay until completed | |
this.toHide.removeClass( "ui-accordion-content-active" ); | |
// Work around for rendering bug in IE (#5421) | |
if ( this.toHide.length ) { | |
this.toHide.parent()[0].className = this.toHide.parent()[0].className; | |
} | |
this._trigger( "change", null, this.data ); | |
} | |
}); | |
$.extend( $.ui.accordion, { | |
version: "1.8.21", | |
animations: { | |
slide: function( options, additions ) { | |
options = $.extend({ | |
easing: "swing", | |
duration: 300 | |
}, options, additions ); | |
if ( !options.toHide.size() ) { | |
options.toShow.animate({ | |
height: "show", | |
paddingTop: "show", | |
paddingBottom: "show" | |
}, options ); | |
return; | |
} | |
if ( !options.toShow.size() ) { | |
options.toHide.animate({ | |
height: "hide", | |
paddingTop: "hide", | |
paddingBottom: "hide" | |
}, options ); | |
return; | |
} | |
var overflow = options.toShow.css( "overflow" ), | |
percentDone = 0, | |
showProps = {}, | |
hideProps = {}, | |
fxAttrs = [ "height", "paddingTop", "paddingBottom" ], | |
originalWidth; | |
// fix width before calculating height of hidden element | |
var s = options.toShow; | |
originalWidth = s[0].style.width; | |
s.width( s.parent().width() | |
- parseFloat( s.css( "paddingLeft" ) ) | |
- parseFloat( s.css( "paddingRight" ) ) | |
- ( parseFloat( s.css( "borderLeftWidth" ) ) || 0 ) | |
- ( parseFloat( s.css( "borderRightWidth" ) ) || 0 ) ); | |
$.each( fxAttrs, function( i, prop ) { | |
hideProps[ prop ] = "hide"; | |
var parts = ( "" + $.css( options.toShow[0], prop ) ).match( /^([\d+-.]+)(.*)$/ ); | |
showProps[ prop ] = { | |
value: parts[ 1 ], | |
unit: parts[ 2 ] || "px" | |
}; | |
}); | |
options.toShow.css({ height: 0, overflow: "hidden" }).show(); | |
options.toHide | |
.filter( ":hidden" ) | |
.each( options.complete ) | |
.end() | |
.filter( ":visible" ) | |
.animate( hideProps, { | |
step: function( now, settings ) { | |
// only calculate the percent when animating height | |
// IE gets very inconsistent results when animating elements | |
// with small values, which is common for padding | |
if ( settings.prop == "height" ) { | |
percentDone = ( settings.end - settings.start === 0 ) ? 0 : | |
( settings.now - settings.start ) / ( settings.end - settings.start ); | |
} | |
options.toShow[ 0 ].style[ settings.prop ] = | |
( percentDone * showProps[ settings.prop ].value ) | |
+ showProps[ settings.prop ].unit; | |
}, | |
duration: options.duration, | |
easing: options.easing, | |
complete: function() { | |
if ( !options.autoHeight ) { | |
options.toShow.css( "height", "" ); | |
} | |
options.toShow.css({ | |
width: originalWidth, | |
overflow: overflow | |
}); | |
options.complete(); | |
} | |
}); | |
}, | |
bounceslide: function( options ) { | |
this.slide( options, { | |
easing: options.down ? "easeOutBounce" : "swing", | |
duration: options.down ? 1000 : 200 | |
}); | |
} | |
} | |
}); | |
})( jQuery ); | |
//END JQUERY ACCORDION | |
//START TWITTER JS | |
function twitterCallback2(twitters) { | |
var statusHTML = []; | |
for (var i=0; i<twitters.length; i++){ | |
var username = twitters[i].user.screen_name; | |
var status = twitters[i].text.replace(/((https?|s?ftp|ssh)\:\/\/[^"\s\<\>]*[^.,;'">\:\s\<\>\)\]\!])/g, function(url) { | |
return '<a href="'+url+'">'+url+'</a>'; | |
}).replace(/\B@([_a-z0-9]+)/ig, function(reply) { | |
return reply.charAt(0)+'<a href="http://twitter.com/'+reply.substring(1)+'">'+reply.substring(1)+'</a>'; | |
}); | |
statusHTML.push('<li><span>'+status+'</span> <a href="http://twitter.com/'+username+'/statuses/'+twitters[i].id_str+'">'+relative_time(twitters[i].created_at)+'</a></li>'); | |
} | |
document.getElementById('twitter_update_list').innerHTML = statusHTML.join(''); | |
} | |
function relative_time(time_value) { | |
var values = time_value.split(" "); | |
time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3]; | |
var parsed_date = Date.parse(time_value); | |
var relative_to = (arguments.length > 1) ? arguments[1] : new Date(); | |
var delta = parseInt((relative_to.getTime() - parsed_date) / 1000); | |
delta = delta + (relative_to.getTimezoneOffset() * 60); | |
if (delta < 60) { | |
return 'less than a minute ago'; | |
} else if(delta < 120) { | |
return 'about a minute ago'; | |
} else if(delta < (60*60)) { | |
return (parseInt(delta / 60)).toString() + ' minutes ago'; | |
} else if(delta < (120*60)) { | |
return 'about an hour ago'; | |
} else if(delta < (24*60*60)) { | |
return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago'; | |
} else if(delta < (48*60*60)) { | |
return '1 day ago'; | |
} else { | |
return (parseInt(delta / 86400)).toString() + ' days ago'; | |
} | |
} | |
//END TWITTER JS | |
//START RATING PLUGIN | |
/* | |
### jQuery Star Rating Plugin v3.14 - 2012-01-26 ### | |
* Home: http://www.fyneworks.com/jquery/star-rating/ | |
* Code: http://code.google.com/p/jquery-star-rating-plugin/ | |
* | |
* Dual licensed under the MIT and GPL licenses: | |
* http://www.opensource.org/licenses/mit-license.php | |
* http://www.gnu.org/licenses/gpl.html | |
### | |
*/ | |
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}(';5(1W.1z)(7($){5($.21.1Y)1X{1u.1Q("1P",M,t)}1O(e){};$.n.3=7(i){5(4.S==0)l 4;5(H Q[0]==\'1s\'){5(4.S>1){8 j=Q;l 4.11(7(){$.n.3.G($(4),j)})};$.n.3[Q[0]].G(4,$.20(Q).1T(1)||[]);l 4};8 i=$.U({},$.n.3.1k,i||{});$.n.3.O++;4.1K(\'.k-3-1j\').p(\'k-3-1j\').11(7(){8 a,9=$(4);8 b=(4.28||\'26-3\').1g(/\\[|\\]/g,\'10\').1g(/^\\10+|\\10+$/g,\'\');8 c=$(4.1N||1u.1B);8 d=c.6(\'3\');5(!d||d.1d!=$.n.3.O)d={B:0,1d:$.n.3.O};8 e=d[b];5(e)a=e.6(\'3\');5(e&&a)a.B++;C{a=$.U({},i||{},($.1c?9.1c():($.1C?9.6():u))||{},{B:0,F:[],v:[]});a.w=d.B++;e=$(\'<23 14="k-3-1I"/>\');9.1M(e);e.p(\'3-18-19-1a\');5(9.T(\'J\')||9.12(\'J\'))a.m=t;5(9.12(\'Y\'))a.Y=t;e.1o(a.D=$(\'<L 14="3-D"><a 13="\'+a.D+\'">\'+a.1e+\'</a></L>\').1f(7(){$(4).3(\'R\');$(4).p(\'k-3-P\')}).1h(7(){$(4).3(\'x\');$(4).E(\'k-3-P\')}).1i(7(){$(4).3(\'r\')}).6(\'3\',a))};8 f=$(\'<L 14="k-3 q-\'+a.w+\'"><a 13="\'+(4.13||4.1l)+\'">\'+4.1l+\'</a></L>\');e.1o(f);5(4.17)f.T(\'17\',4.17);5(4.1m)f.p(4.1m);5(a.1Z)a.s=2;5(H a.s==\'1n\'&&a.s>0){8 g=($.n.Z?f.Z():0)||a.1p;8 h=(a.B%a.s),W=1D.1E(g/a.s);f.Z(W).1F(\'a\').1G({\'1H-1A\':\'-\'+(h*W)+\'1J\'})};5(a.m)f.p(\'k-3-1q\');C f.p(\'k-3-1L\').1f(7(){$(4).3(\'1r\');$(4).3(\'I\')}).1h(7(){$(4).3(\'x\');$(4).3(\'z\')}).1i(7(){$(4).3(\'r\')});5(4.N)a.o=f;5(4.1R=="A"){5($(4).12(\'1S\'))a.o=f};9.1t();9.1U(7(){$(4).3(\'r\')});f.6(\'3.9\',9.6(\'3.k\',f));a.F[a.F.S]=f[0];a.v[a.v.S]=9[0];a.q=d[b]=e;a.1V=c;9.6(\'3\',a);e.6(\'3\',a);f.6(\'3\',a);c.6(\'3\',d)});$(\'.3-18-19-1a\').3(\'x\').E(\'3-18-19-1a\');l 4};$.U($.n.3,{O:0,I:7(){8 a=4.6(\'3\');5(!a)l 4;5(!a.I)l 4;8 b=$(4).6(\'3.9\')||$(4.V==\'15\'?4:u);5(a.I)a.I.G(b[0],[b.K(),$(\'a\',b.6(\'3.k\'))[0]])},z:7(){8 a=4.6(\'3\');5(!a)l 4;5(!a.z)l 4;8 b=$(4).6(\'3.9\')||$(4.V==\'15\'?4:u);5(a.z)a.z.G(b[0],[b.K(),$(\'a\',b.6(\'3.k\'))[0]])},1r:7(){8 a=4.6(\'3\');5(!a)l 4;5(a.m)l;4.3(\'R\');4.1v().1w().X(\'.q-\'+a.w).p(\'k-3-P\')},R:7(){8 a=4.6(\'3\');5(!a)l 4;5(a.m)l;a.q.22().X(\'.q-\'+a.w).E(\'k-3-1x\').E(\'k-3-P\')},x:7(){8 a=4.6(\'3\');5(!a)l 4;4.3(\'R\');5(a.o){a.o.6(\'3.9\').T(\'N\',\'N\');a.o.1v().1w().X(\'.q-\'+a.w).p(\'k-3-1x\')}C $(a.v).1y(\'N\');a.D[a.m||a.Y?\'1t\':\'24\']();4.25()[a.m?\'p\':\'E\'](\'k-3-1q\')},r:7(a,b){8 c=4.6(\'3\');5(!c)l 4;5(c.m)l;c.o=u;5(H a!=\'y\'){5(H a==\'1n\')l $(c.F[a]).3(\'r\',y,b);5(H a==\'1s\')$.11(c.F,7(){5($(4).6(\'3.9\').K()==a)$(4).3(\'r\',y,b)})}C c.o=4[0].V==\'15\'?4.6(\'3.k\'):(4.27(\'.q-\'+c.w)?4:u);4.6(\'3\',c);4.3(\'x\');8 d=$(c.o?c.o.6(\'3.9\'):u);5((b||b==y)&&c.1b)c.1b.G(d[0],[d.K(),$(\'a\',c.o)[0]])},m:7(a,b){8 c=4.6(\'3\');5(!c)l 4;c.m=a||a==y?t:M;5(b)$(c.v).T("J","J");C $(c.v).1y("J");4.6(\'3\',c);4.3(\'x\')},29:7(){4.3(\'m\',t,t)},2a:7(){4.3(\'m\',M,M)}});$.n.3.1k={D:\'2b 2c\',1e:\'\',s:0,1p:16};$(7(){$(\'9[2d=2e].k\').3()})})(1z);',62,139,'|||rating|this|if|data|function|var|input|||||||||||star|return|readOnly|fn|current|addClass|rater|select|split|true|null|inputs|serial|draw|undefined|blur||count|else|cancel|removeClass|stars|apply|typeof|focus|disabled|val|div|false|checked|calls|hover|arguments|drain|length|attr|extend|tagName|spw|filter|required|width|_|each|hasClass|title|class|INPUT||id|to|be|drawn|callback|metadata|call|cancelValue|mouseover|replace|mouseout|click|applied|options|value|className|number|append|starWidth|readonly|fill|string|hide|document|prevAll|andSelf|on|removeAttr|jQuery|left|body|meta|Math|floor|find|css|margin|control|px|not|live|before|form|catch|BackgroundImageCache|execCommand|nodeName|selected|slice|change|context|window|try|msie|half|makeArray|browser|children|span|show|siblings|unnamed|is|name|disable|enable|Cancel|Rating|type|radio'.split('|'),0,{})) | |
//END STAR RATING PLUGIN | |
/* -------------- START CUSTOM JAVASCRIPT BLOCK -------------- */ | |
$(window).load(function() { | |
$("body").removeClass("hideall"); | |
//CUFON REPLACEMENT | |
Cufon.replace('.feature span.heading', {hover: true}); | |
Cufon.replace('.post-col .txtb h1', {hover: true}); | |
Cufon.replace('.accordin-panel h5', {hover: true, | |
hoverables: { h5: true } | |
}); | |
Cufon.replace('.accordin-panel h5.ui-state-active a', {hover: true}); | |
Cufon.replace('h3:not(.nocufon)', { fontFamily: 'Open Sans' }); | |
Cufon.replace('#navigation ul:first-child > li', {hover: true, | |
hoverables: { li: true }, | |
ignore: { ul: true }, | |
textless: { li: true } | |
}); | |
Cufon.replace('.pro-left h4 a', {hover: true}); | |
Cufon.set('fontFamily', 'Open Sans').replace('h1')('h2')('h4')('h5')('h6')('.feature span.heading')('.button-cart')('#navigation ul:first-child > li > a')('.gallery .price')('#rightcol h3')('.category h3')('#footer-bottom .copyright')('.cart-button')('.detail-button')('.button-default')('.slider-wrapper-cycle ul li span.thumb-arrow')('submit-review')('.ui-tabs li a')('.shopping .left .labeltop span')('.submit-review a')('table th')('.contact h4 span')('.404'); | |
//END CUFON REPLACEMENT | |
// LAZY LOAD CODE | |
(function() { | |
var lis = $('span.lazy img').hide(); | |
var lis2 = $('span.lazy'); | |
var i = 0; | |
(function displayImages() { | |
lis2.eq(i).removeClass('lazy'); | |
lis.eq(i++).fadeIn(500, displayImages); | |
})(); | |
})(); | |
// END LAZY LOAD CODE | |
// NIVO SLIDER | |
$('#slider').nivoSlider({ | |
effect: 'random', // Specify sets like: 'fold,fade,sliceDown' | |
slices: 15, // For slice animations | |
boxCols: 8, // For box animations | |
boxRows: 4, // For box animations | |
animSpeed: 500, // Slide transition speed | |
pauseTime: 8000, // How long each slide will show | |
startSlide: 0, // Set starting Slide (0 index) | |
directionNav: false, // Next & Prev navigation | |
directionNavHide: false, // Only show on hover | |
keyboardNav: true, // Use left & right arrowss | |
pauseOnHover: true, // Stop animation while hovering | |
manualAdvance: false, // Force manual transitions | |
}); | |
// END NIVO SLIDER | |
// JCAROUSEL SLIDER | |
$(".slider-wrapper-cycle").jCarouselLite({ | |
wrap:"circular", | |
visible:3, | |
start:0, | |
speed:1000, // Slide transition speed | |
auto:8000, // How long each slide will show | |
btnNext: ".navbuttons a.last-child", | |
btnPrev: ".navbuttons a:first-child" | |
}); | |
// END JCAROUSEL SLIDER | |
// SLIDER NAVBAR POSITIONING AT THE CENTER OF THE PAGE BELOW THE SLIDER | |
var navbarwidth = $('.nivo-controlNav').outerWidth(); | |
var margin_navbar = (954 - navbarwidth)/2; | |
$('.nivo-controlNav').css('margin-left', margin_navbar); | |
// END SLIDER NAVBAR POSITIONING | |
}); | |
$(document).ready(function() { | |
// LAVALAMP CODE | |
$('.topnav ul.lava ul li').addClass('noLava'); | |
$(function() { $('.topnav ul.lava').lavaLamp({ fx: "backout", speed: 400 })}); | |
// END LAVALAMP CODE | |
// SUPERFISH MENU | |
$("ul.sf-menu").superfish({ | |
autoArrows: false, | |
delay: 200, // one second delay on mouseout | |
animation:{opacity:'show',height:'show'}, // fade-in and slide-down animation | |
speed: 'fast' | |
}); | |
// END SUPERFISH MENU | |
// BACK TO TOP FUNCTION | |
$(window).scroll(function () { | |
if ( $(window).width() > 300 || !isiOS ) { | |
if ($(window).scrollTop() > 100) { | |
$('#top-link').fadeIn('fast'); | |
} else { | |
$('#top-link').fadeOut('fast'); | |
} | |
} | |
}); | |
$(window).scroll(); | |
$('#top-link').click(function(){ | |
$('html, body').animate({scrollTop:0}, 700); | |
}); | |
// END BACK TO TOP FUNCTION | |
// START GENERAL IMAGES THUMBNAIL FADE IN | |
$('.fadeable').mouseenter(function(e) { | |
$(this).children('img').fadeTo(300, 0.5); //for standard images - 0.5 = OPACITY LEVEL; 300 = time in ms | |
$(this).children('span.light-background').fadeIn(300); //for the small arrow with the light background - 300 = time in ms | |
}).mouseleave(function(e) { | |
$(this).children('img').fadeTo(300, 1); //for standard images - 300 = time in ms | |
$(this).children('span.light-background').fadeOut(300); //for the small arrow with the light background - 300 = time in ms | |
}); | |
// END GENERAL IMAGES THUMBNAIL FADE IN | |
// START GENERAL IMAGES THUMBNAIL FADE IN INVERSE. IE: index | |
$('.fadeable-inverse').mouseenter(function(e) { | |
$(this).children('img').fadeTo(300, 1); //300 = time in ms | |
}).mouseleave(function(e) { | |
$(this).children('img').fadeTo(300, 0.50); //0.5 = OPACITY LEVEL; 300 = time in ms | |
}); | |
// END GENERAL IMAGES THUMBNAIL FADE IN INVERSE | |
//STAR RATING PLUGIN | |
$('#review :radio.star').rating(); | |
//END STAR RATING PLUGIN | |
// PRODUCT BUTTONS EFFECTS ON HOVER | |
$('.gallery li .js-button').mouseover( | |
function() { | |
$(this).children('a').stop().animate({"marginTop":"32px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('a').attr("easeOutExpo") | |
}) | |
$(this).children('a.hov').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('a').attr("easeOutExpo") | |
}) | |
}).mouseout(function(){ | |
$(this).children('a').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('a').attr("easeInExpo") | |
}) | |
$(this).children('a.hov').stop().animate({"marginTop":"-32px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('a').attr("easeInExpo") | |
}) | |
}); | |
// PRODUCT BUTTONS EFFECTS END | |
// DEFAULT BUTTONS EFFECTS ON HOVER | |
$('.button-default.cart').mouseover( | |
function() { | |
$(this).children('span').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('span').attr("easeOutExpo") | |
}) | |
$(this).children('span.hover').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('span').attr("easeOutExpo") | |
}) | |
}).mouseout(function(){ | |
$(this).children('span').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('span').attr("easeInExpo") | |
}) | |
$(this).children('span.hover').stop().animate({"marginTop":"-33px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('span').attr("easeInExpo") | |
}) | |
}); | |
// DEFAULT BUTTONS EFFECTS END | |
// DEFAULT INPUT BUTTONS EFFECTS ON HOVER | |
$('.submit-review').mouseover( | |
function() { | |
$(this).children('.submit-review a').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('.submit-review a').attr("easeOutExpo") | |
}) | |
$(this).children('.submit-review a.sub-hover').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('.submit-review a').attr("easeOutExpo") | |
}) | |
}).mouseout(function(){ | |
$(this).children('.submit-review a').stop().animate({"marginTop":"0px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('.submit-review a').attr("easeInExpo") | |
}) | |
$(this).children('.submit-review a.sub-hover').stop().animate({"marginTop":"-30px"}, | |
{ | |
duration: 200, | |
easing: $(this).children('.submit-review a').attr("easeInExpo") | |
}) | |
}); | |
// DEFAULT INPUT BUTTONS EFFECTS END | |
// FADED HOVER SIDEBAR AND CART BOX PRODUCTS | |
//get the current colors to use theme for the hovering effects | |
var hovercolor = $('.cart-box span a').css("color"); | |
var normalcolor = $('.cart h6 a').css("color"); | |
var textcolor = $('.search .input').css("color"); | |
var text2color = $('#footer-bottom .copyright').css("color"); | |
var title2color = $('.tb-right .language li a').css("color"); | |
$(".subnav ul li").mouseenter( | |
function() { | |
$(this).children('a.subnav-link').animate({color: hovercolor},{duration:200,queue:false}, 'easeOutSine'); | |
}); | |
$(".subnav ul li").mouseleave( | |
function() { | |
$(this).children('a.subnav-link').animate({color: normalcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
$("ul.sub li ul li").mouseenter( | |
function() { | |
$(this).children('a').animate({color: hovercolor},{duration:200,queue:false}, 'easeOutSine'); | |
}); | |
$("ul.sub li ul li").mouseleave( | |
function() { | |
$(this).children('a').animate({color: normalcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
$("#navigation ul li ul.sub2 li a").mouseenter( | |
function() { | |
$(this).animate({color: hovercolor},{duration:200,queue:false}, 'easeOutSine'); | |
}); | |
$("#navigation ul li ul.sub2 li a").mouseleave( | |
function() { | |
$(this).animate({color: normalcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
$(".offer li .txtb .title a").hover( | |
function() { | |
$(this).animate({color: hovercolor},{duration:200,queue:false}, 'easeOutSine'); | |
},function(){ | |
$(this).animate({color: normalcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
$("#cart-content ul li .txtb .title a").hover( | |
function() { | |
$(this).animate({color: hovercolor},{duration:200,queue:false}, 'easeOutSine'); | |
},function(){ | |
$(this).animate({color: normalcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
$(".subnav li ul li a").hover( | |
function() { | |
$(this).animate({color: normalcolor},{duration:200,queue:false}, 'easeOutSine'); | |
},function(){ | |
$(this).animate({color: textcolor},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
//END HOVER SIDEBAR | |
// FADED HOVER FOOTER | |
$("#footer .list li a").hover( | |
function() { | |
$(this).animate({color: text2color},{duration:200,queue:false}, 'easeOutSine'); | |
},function(){ | |
$(this).animate({color: title2color},{duration:300,queue:false}, 'easeOutSine'); | |
}); | |
// END HOVER FOOTER | |
//JQUERY TABS | |
$( "#tabs" ).tabs(); | |
//END JQUERY TABS | |
//FANCYBOX | |
$(".fancy-img").fancybox({ | |
'transitionIn' : 'elastic', | |
'transitionOut' : 'elastic', | |
'speedIn' : 600, | |
'speedOut' : 200, | |
'overlayShow' : false | |
}); | |
//END FANCYBOX | |
// JCAROUSEL EFFECT | |
jQuery('.partner ul#mycarousel').jcarousel(); | |
jQuery('.gallery ul#mycarousel2').jcarousel(); | |
// END JCAROUSEL EFFECT | |
//START CART TAB | |
$(".step-toggle div.toggeable").hide(); | |
$('.step-toggle').click(function(){ | |
$(this).find('input[name=radio].radio').attr('checked', true); | |
$('.step-toggle').not(this).find('input[name=radio].radio').attr('checked', false); | |
$('.step-toggle').not(this).find('div.toggeable').slideUp("slow"); | |
$(this).children('div.toggeable').slideDown("slow"); | |
return false; | |
}); | |
//END CART TAB | |
//CHECKOUT ACCORDION | |
$( ".accordin-div" ).accordion({ | |
autoHeight: false, | |
navigation: true | |
}); | |
$(".accordin-panel h5").click( | |
function () { | |
Cufon.refresh('.accordin-panel h5'); | |
}); | |
$(".accordin-panel h4").click( | |
function () { | |
Cufon.refresh('.accordin-panel h5'); | |
}); | |
//END CHECKOUT ACCORDION | |
}); | |
/* -------------- END CUSTOM JAVASCRIPT BLOCK -------------- */ | |
//START JQUERY SELECTBOX PLUGIN | |
/** | |
* jQuery custom selectboxes | |
* | |
* Copyright (c) 2008 Krzysztof Suszyński (suszynski.org) | |
* Licensed under the MIT License: | |
* http://www.opensource.org/licenses/mit-license.php | |
* | |
* @version 0.6.1 | |
* @category visual | |
* @package jquery | |
* @subpakage ui.selectbox | |
* @author Krzysztof Suszyński <[email protected]> | |
**/ | |
jQuery.fn.selectbox = function(options){ | |
/* Default settings */ | |
var settings = { | |
className: 'jquery-selectbox', | |
animationSpeed: 1, | |
listboxMaxSize: 10, | |
replaceInvisible: false | |
}; | |
var commonClass = 'jquery-custom-selectboxes-replaced'; | |
var listOpen = false; | |
var showList = function(listObj) { | |
var selectbox = listObj.parents('.' + settings.className + ''); | |
listObj.slideDown(settings.animationSpeed, function(){ | |
listOpen = true; | |
}); | |
selectbox.addClass('selecthover'); | |
jQuery(document).bind('mouseover', onBlurList); //tweaked: it was "click" | |
return listObj; | |
} | |
var hideList = function(listObj) { | |
var selectbox = listObj.parents('.' + settings.className + ''); | |
listObj.slideUp(settings.animationSpeed, function(){ | |
listOpen = false; | |
jQuery(this).parents('.' + settings.className + '').removeClass('selecthover'); | |
}); | |
jQuery(document).unbind('mouseover', onBlurList); //tweaked: it was "click" | |
return listObj; | |
} | |
var onBlurList = function(e) { | |
var trgt = e.target; | |
var currentListElements = jQuery('.' + settings.className + '-list:visible').parent().find('*').andSelf(); | |
if(jQuery.inArray(trgt, currentListElements)<0 && listOpen) { | |
hideList( jQuery('.' + commonClass + '-list') ); | |
} | |
return false; | |
} | |
/* Processing settings */ | |
settings = jQuery.extend(settings, options || {}); | |
/* Wrapping all passed elements */ | |
return this.each(function() { | |
var _this = jQuery(this); | |
if(_this.filter(':visible').length == 0 && !settings.replaceInvisible) | |
return; | |
var replacement = jQuery( | |
'<div class="' + settings.className + ' ' + commonClass + '">' + | |
'<span>'+ //tweaked: added span tag | |
'<div class="' + settings.className + '-moreButton" />' + | |
'<div class="' + settings.className + '-list ' + commonClass + '-list" />' + | |
'<span class="' + settings.className + '-currentItem" />' + | |
'</span>'+ //tweaked: added span tag | |
'</div>' | |
); | |
jQuery('option', _this).each(function(k,v){ | |
var v = jQuery(v); | |
var listElement = jQuery('<span class="' + settings.className + '-item value-'+v.val()+' item-'+k+'">' + v.text() + '</span>'); | |
listElement.click(function(){ | |
var thisListElement = jQuery(this); | |
var thisReplacment = thisListElement.parents('.'+settings.className); | |
var thisIndex = thisListElement[0].className.split(' '); | |
for( k1 in thisIndex ) { | |
if(/^item-[0-9]+$/.test(thisIndex[k1])) { | |
thisIndex = parseInt(thisIndex[k1].replace('item-',''), 10); | |
break; | |
} | |
}; | |
var thisValue = thisListElement[0].className.split(' '); | |
for( k1 in thisValue ) { | |
if(/^value-.+$/.test(thisValue[k1])) { | |
thisValue = thisValue[k1].replace('value-',''); | |
break; | |
} | |
}; | |
thisReplacment | |
.find('.' + settings.className + '-currentItem') | |
.text(thisListElement.text()); | |
thisReplacment | |
.find('select') | |
.val(thisValue) | |
.triggerHandler('change'); | |
var thisSublist = thisReplacment.find('.' + settings.className + '-list'); | |
if(thisSublist.filter(":visible").length > 0) { | |
hideList( thisSublist ); | |
}else{ | |
showList( thisSublist ); | |
} | |
}).bind('mouseenter',function(){ | |
jQuery(this).addClass('listelementhover'); | |
}).bind('mouseleave',function(){ | |
jQuery(this).removeClass('listelementhover'); | |
}); | |
jQuery('.' + settings.className + '-list', replacement).append(listElement); | |
if(v.filter(':selected').length > 0) { | |
jQuery('.'+settings.className + '-currentItem', replacement).text(v.text()); | |
} | |
}); | |
replacement.find('.' + settings.className + '-moreButton').mouseover(function(){ //tweaked: it was "click" | |
var thisMoreButton = jQuery(this); | |
var otherLists = jQuery('.' + settings.className + '-list') | |
.not(thisMoreButton.siblings('.' + settings.className + '-list')); | |
hideList( otherLists ); | |
var thisList = thisMoreButton.siblings('.' + settings.className + '-list'); | |
if(thisList.filter(":visible").length > 0) { | |
hideList( thisList ); | |
}else{ | |
showList( thisList ); | |
} | |
}).bind('mouseenter',function(){ | |
jQuery(this).addClass('morebuttonhover'); | |
}).bind('mouseleave',function(){ | |
jQuery(this).removeClass('morebuttonhover'); | |
}); | |
_this.hide().replaceWith(replacement).appendTo(replacement); | |
var thisListBox = replacement.find('.' + settings.className + '-list'); | |
var thisListBoxSize = thisListBox.find('.' + settings.className + '-item').length; | |
if(thisListBoxSize > settings.listboxMaxSize) | |
thisListBoxSize = settings.listboxMaxSize; | |
if(thisListBoxSize == 0) | |
thisListBoxSize = 1; | |
var thisListBoxWidth = Math.round(_this.width() - 4); //tweaked: it was "+5" | |
if(jQuery.browser.safari) | |
thisListBoxWidth = thisListBoxWidth * 0.94; | |
replacement.css('width', thisListBoxWidth + 'px'); | |
thisListBox.css({ | |
width: Math.round(thisListBoxWidth) + 'px', //tweaked: it was "-5" | |
//tweaked - removed: height: thisListBoxSize + 'em' | |
}); | |
}); | |
} | |
jQuery.fn.unselectbox = function(){ | |
var commonClass = 'jquery-custom-selectboxes-replaced'; | |
return this.each(function() { | |
var selectToRemove = jQuery(this).filter('.' + commonClass); | |
selectToRemove.replaceWith(selectToRemove.find('select').show()); | |
}); | |
} | |
//END JQUERY SELECTBOX PLUGIN |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment