var jlib = {};
/************************************************************
* open link from dropdown
*/
jlib.dropdownLink = function () {
$('select').change(function () {
var select = $(this), href = select.val();
if (href == '') {
return;
}
if (select.hasClass('openNewWindow')) {
window.open(href);
}
else if (select.hasClass('openCurrentWindow')) {
window.location.href = href;
}
});
};
/************************************************************
* generate dropdown list from ul>li
*/
jlib.generateDropdown = function (sel) {
$(sel).each(function () {
var el = $(this),
items = el.children(),
buf = ['');
el.replaceWith(buf.join(''));
el = items = buf = null;
});
};
/************************************************************
* open link in new window
*/
jlib.openNewWindow = function () {
var rel,
href;
$("a").click(function (e) {
rel = $(this).attr('rel');
href = $(this).attr('href');
if (rel.indexOf('external') > -1) {
e.preventDefault();
window.open(href);
}
});
}
/************************************************************
* show / hide content from dropdown
*/
jlib.showHideContent = function (sel) {
$(sel).each(function () {
var cur;
$(this).children().each(function () {
if (!this.value) {
return;
}
this.div = $(this.value.match(/#\w+$/)[0]);
})
.end()
.change(function () {
var o = this.options[this.selectedIndex];
if (cur == o || !o.div) {
return;
}
if (cur) {
cur.div.addClass('hidden');
}
o.div.removeClass('hidden');
cur = o;
})
.change();
});
};
/************************************************************
* home page images and tabs
*/
jlib.home = function () {
var homeImages = [
{
src: '/images/Mosaic-OldLady-1.jpg',
alt: 'Together we can chart a brighter future shared by millions of faces.'
},
{
src: '/images/Handwriting-Man-2.jpg',
alt: 'We are working together to ensure the future is written your way.'
},
{
src: '/images/Thumbprint-Girl-3.jpg',
alt: 'We are here to create a lasting impression for you and your loved ones.'
}
],
curImg = 0,
imgCount = 0,
PI = Math.PI,
duration = 1000,
delay = 4000,
imgs, curTab;
if (!$('body').hasClass('home')) {
return;
}
// images
// from http://www.robertpenner.com/easing/
// t - current time (from 0)
// b - start value (begin)
// c - end value - start value (change)
// d - duration
function easeInOutSine(t, b, c, d) {
return -c/2 * (Math.cos(PI * t / d) - 1) + b;
}
function fadeIn() {
var cur = imgs[curImg], start = (new Date()).getTime(), d = duration;
cur.css({
opacity: '0',
zIndex: '1',
visibility: 'visible'
});
(function () {
var t = (new Date()).getTime() - start;
if (t >= d) {
initFadeOut();
return;
}
cur.css('opacity', easeInOutSine(t, 0, 1, d));
setTimeout(arguments.callee, 0);
})();
}
function initFadeOut() {
var cur = imgs[curImg], next = imgs[(curImg + 1) % imgCount];
cur.css({
visibility: 'visible',
zIndex: '1',
opacity: '1'
});
next.css({
visibility: 'visible',
zIndex: '',
opacity: '1'
});
// "fix" white dots
if ($.browser.msie) {
cur[0].style.removeAttribute('filter');
next[0].style.removeAttribute('filter');
}
setTimeout(fadeOut, delay);
}
function fadeOut() {
var cur = imgs[curImg], start = (new Date()).getTime(), d = duration;
(function () {
var t = (new Date()).getTime() - start, nextImg;
if (t >= d) {
nextImg = (curImg + 1) % imgCount;
imgs[nextImg].css('z-index', '1');
cur.css({
visibility: 'hidden',
zIndex: '',
opacity: '1'
});
curImg = nextImg;
initFadeOut();
return;
}
cur.css('opacity', easeInOutSine(t, 1, -1, d));
setTimeout(arguments.callee, 0);
})();
}
imgs = $.map(homeImages, function (o) {
return $('
')
.load(function () {
$(this).unbind('load', arguments.callee);
imgCount++;
if (imgCount == homeImages.length) {
fadeIn();
}
})
.css('visibility', 'hidden')
.attr(o);
});
$('div.fadeimgs').append($.map(imgs, function (o) { return o[0]; }));
// tabs
$('ul.tabs a').each(function () {
this.img = $(this).find('img')[0];
this.div = $(this.hash);
})
.click(function (e) {
e.preventDefault();
if (curTab == this) {
return;
}
if (curTab) {
curTab.img.src = curTab.img.src.replace(/_(?:current|on)\./, '_off.');
curTab.div.addClass('hidden');
}
this.img.src = this.img.src.replace(/_(?:off|on)\./, '_current.');
this.div.removeClass('hidden');
curTab = this;
})
.eq(0).click();
};
/************************************************************
* show random div
*/
jlib.random = function () {
$('div.hasRandom').each(function () {
var items = $(this).find('div.random'), l = items.length;
if (l == 0) {
return;
}
items.eq(Math.floor(Math.random() * l)).addClass('randomShow');
});
};
/************************************************************
* onload, onunload
*/
$(function () {
var body = $('body'), countries, p;
if (!window.swfobj || !swfobj.hasFlashPlayerVersion('9.0.28')) {
body.addClass('noflash');
}
jlib.home();
jlib.random();
jlib.generateDropdown('ul.selectMenu');
jlib.dropdownLink();
jlib.showHideContent('select.showHideContent');
jlib.openNewWindow();
// image rollovers
$('img.rollover')
.mouseover(function () { this.src = this.src.replace(/_off\./, '_on.'); })
.mouseout(function () { this.src = this.src.replace(/_on\./, '_off.'); });
body = null;
});