/**
* Copyright (c) 2006 Brandon Aaron (brandon.aaron@gmail.com || http://brandonaaron.net)
* Dual licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
* and GPL (http://www.opensource.org/licenses/gpl-license.php) licenses.
* Thanks to: http://adomas.org/javascript-mouse-wheel/ for some pointers.
* Thanks to: Mathias Bank(http://www.mathias-bank.de) for a scope bug fix.
*
*/

jQuery.preloadImages = function()
{
  for(var i = 0; i<arguments.length; i++)
  {
    jQuery("<img>").attr("src", arguments[i]);
  }
}

$.preloadImages("/images/Landing.png", "/images/bg_nav.png","/images/linkedin.png","/images/fb.png","/images/bg_inside.jpg");

(function($) {

$.event.special.mousewheel = {
setup: function() {
var handler = $.event.special.mousewheel.handler;

// Fix pageX, pageY, clientX and clientY for mozilla
if ( $.browser.mozilla )
$(this).bind('mousemove.mousewheel', function(event) {
$.data(this, 'mwcursorposdata', {
pageX: event.pageX,
pageY: event.pageY,
clientX: event.clientX,
clientY: event.clientY
});
});

if ( this.addEventListener )
this.addEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
else
this.onmousewheel = handler;
},

teardown: function() {
var handler = $.event.special.mousewheel.handler;

$(this).unbind('mousemove.mousewheel');

if ( this.removeEventListener )
this.removeEventListener( ($.browser.mozilla ? 'DOMMouseScroll' : 'mousewheel'), handler, false);
else
this.onmousewheel = function(){};

$.removeData(this, 'mwcursorposdata');
},

handler: function(event) {
var args = Array.prototype.slice.call( arguments, 1 );

event = $.event.fix(event || window.event);
// Get correct pageX, pageY, clientX and clientY for mozilla
$.extend( event, $.data(this, 'mwcursorposdata') || {} );
var delta = 0, returnValue = true;

if ( event.wheelDelta ) delta = event.wheelDelta/120;
if ( event.detail     ) delta = -event.detail/3;
if ( $.browser.opera  ) delta = -event.wheelDelta;

event.data  = event.data || {};
event.type  = "mousewheel";

// Add delta to the front of the arguments
args.unshift(delta);
// Add event to the front of the arguments
args.unshift(event);

return $.event.handle.apply(this, args);
}
};

$.fn.extend({
mousewheel: function(fn) {
return fn ? this.bind("mousewheel", fn) : this.trigger("mousewheel");
},

unmousewheel: function(fn) {
return this.unbind("mousewheel", fn);
}
});

})(jQuery);

/**
* jquery.scrollable 0.11. Making HTML elements scroll.
* 
* http://flowplayer.org/tools/scrollable.html
*
* Copyright (c) 2008 Tero Piirainen (tero@flowplayer.org)
*
* Released under the MIT License:
* http://www.opensource.org/licenses/mit-license.php
*
*/
(function($) {

// plugin initialization
$.fn.extend({
scrollable: function(arg1, arg2, arg3) {   
return this.each(function() {
if (typeof arg1 == "string") {
var el = $.data(this, "scrollable");
el[arg1].apply(el, [arg2, arg3]);

} else { 
new $.scrollable(this, arg1, arg2);
}
});
} 
});

// constructor
$.scrollable = function(el, opts) {   

// store this instance
$.data(el, "scrollable", this);

this.init(el, opts); 
};

// methods
$.extend($.scrollable.prototype, { 

init: function(el, config)  {

// current instance
var self = this;  

var opts = {    
size: 5,
horizontal:false,  
activeClass:'active',
speed: 300,
onSeek: null,

// jquery selectors
items: '.items',
prev:'.prev',
next:'.next',
navi:'.navi',
naviItem:'span'
}; 

this.opts = $.extend(opts, config);   

// root / itemRoot
var root = this.root = $(el);  
var itemRoot = $(opts.items, root);  
if (!itemRoot.length) itemRoot = root;  

// wrap itemRoot.children() inside container
itemRoot.css({position:'relative', overflow:'hidden', visibility:'visible'});
itemRoot.children().wrapAll('<div class="__scrollable" style="position:relative"/>');

this.wrap = itemRoot.children(":first");
this.wrap.css(opts.horizontal ? "width" : "height", "200000em").after('<br clear="all"/>');  
this.items = this.wrap.children();
this.index = 0;


// set height based on size
if (opts.horizontal) {
//itemRoot.width(opts.size * (this.items.eq(1).offset().left - this.items.eq(0).offset().left) -2);
itemRoot.width(opts.size * (this.items.eq(1).offset().left - this.items.eq(0).offset().left));
} else {
//itemRoot.height(opts.size * (this.items.eq(1).offset().top - this.items.eq(0).offset().top) -2);
itemRoot.height(opts.size * (this.items.eq(1).offset().top - this.items.eq(0).offset().top)); 
} 

// mousewheel
if ($.isFunction($.fn.mousewheel)) { 
root.bind("mousewheel.scrollable", function(event, delta)  { 
self.move(-delta, 50); 
return false;
});
} 

// keyboard
$(window).bind("keypress.scrollable", function(evt) {

if ($(evt.target).parents(".__scrollable").length) {

if (opts.horizontal && (evt.keyCode == 37 || evt.keyCode == 39)) {
self.move(evt.keyCode == 37 ? -1 : 1);
return false;
} 

if (!opts.horizontal && (evt.keyCode == 38 || evt.keyCode == 40)) {
self.move(evt.keyCode == 38 ? -1 : 1);
return false;
}
}

return true;

}); 


// item.click()
this.items.each(function(index, arg) {
$(this).bind("click.scrollable", function() {
self.click(index);
// ALTERACAO
return false;
});
});

this.activeIndex = 0;

// prev
$(opts.prev, root).click(function() {
self.prev();
// ALTERACAO
return false;
});


// next
$(opts.next, root).click(function() {
self.next();
// ALTERACAO
return false;
});


// navi   
$(opts.navi, root).each(function() {   
var navi = $(this);

var status = self.getStatus();

// generate new entries
if (navi.is(":empty")) {
for (var i = 0; i < status.pages; i++) { 

var item = $("<" + opts.naviItem + "/>").attr("page", i).click(function() {    
var el = $(this);
el.parent().children().removeClass(opts.activeClass);
el.addClass(opts.activeClass);
self.setPage(el.attr("page"));

});

if (i == 0) item.addClass(opts.activeClass);
navi.append(item);   
}

// assign onClick events to existing entries
} else {

navi.children().each(function(i)  {
var item = $(this);
item.attr("page", i);
if (i == 0) item.addClass(opts.activeClass);

item.click(function() {
item.parent().children().removeClass(opts.activeClass);
item.addClass(opts.activeClass);
self.setPage(item.attr("page"));
});

});
}

});  

},


click: function(index) {

var item = this.items.eq(index);
var klass = this.opts.activeClass;

if (!item.hasClass(klass) && (index >= 0 || index < this.items.size())) { 

var prev = this.items.eq(this.activeIndex).removeClass(klass);
item.addClass(klass);   

this.seekTo(index - Math.floor(this.opts.size / 2));
this.activeIndex = index;
}  
},

getStatus: function() {
var len =  this.items.size();
var s = {
length: len, 
index: this.index, 
size: this.opts.size,
pages: Math.floor(len / this.opts.size),
page: Math.floor(this.index / this.opts.size)
};

return s;
}, 


// all other seeking functions depend on this generic seeking function 
seekTo: function(index, time) {

if (index < 0) index = 0;  
index = Math.min(index, this.items.length - this.opts.size);  

var item = this.items.eq(index);  
if (item.size() == 0) return false;   
this.index = index;


if (this.opts.horizontal) {
var left = this.wrap.offset().left - item.offset().left;  
this.wrap.animate({left: left}, time || this.opts.speed);

} else {
var top = this.wrap.offset().top - item.offset().top;
this.wrap.animate({top: top}, time || this.opts.speed);    
}

// custom onSeek callback
if ($.isFunction(this.opts.onSeek)) {
this.opts.onSeek.call(this.getStatus());
}

// navi status update
var navi = $(this.opts.navi, this.root);

if (navi.length) {
var klass = this.opts.activeClass;
var page = Math.round(index / this.opts.size);
navi.children().removeClass(klass).eq(page).addClass(klass);
}


return true; 
},


move: function(offset, time) {
this.seekTo(this.index + offset, time);

// ALTERACAO

if(this.index == 0) {
$(this.root).find(this.opts.prev).addClass('off');
} else {
$(this.root).find(this.opts.prev).removeClass('off');
}

if(this.index == this.items.size() - this.opts.size){
$(this.root).find(this.opts.next).addClass('off');
} else {
$(this.root).find(this.opts.next).removeClass('off');
}

},

next: function(time) {
this.move(1, time);
},

prev: function(time) {
this.move(-1, time); 
},

movePage: function(offset, time) {
this.move(this.opts.size * offset, time); 
},

setPage: function(index, time) {
this.seekTo(this.opts.size * index, time);
},

prevPage: function(time) {
var page = Math.floor(this.index / this.opts.size);
this.seekTo(this.opts.size * (page-1), time);
},  

nextPage: function(time) {
var page = Math.floor(this.index / this.opts.size);
this.seekTo(this.opts.size * (page+1), time);
}, 

begin: function(time) {
this.seekTo(0, time);
},

end: function(time) {
this.seekTo(this.items.size() - this.opts.size, time);  
}


});  

})(jQuery);


/*
* FancyBox - simple jQuery plugin for fancy image zooming
* Examples and documentation at: http://fancy.klade.lv/
* Version: 1.0.0 (29/04/2008)
* Copyright (c) 2008 Janis Skarnelis
* Licensed under the MIT License: http://www.opensource.org/licenses/mit-license.php
* Requires: jQuery v1.2.1 or later
*/

(function($) {
var opts = {}, 
imgPreloader = new Image, imgTypes = ['png', 'jpg', 'jpeg', 'gif'], 
loadingTimer, loadingFrame = 1;
$.fn.fancybox = function(settings) {
opts.settings = $.extend({}, $.fn.fancybox.defaults, settings);
$.fn.fancybox.init();
return this.each(function() {
var $this = $(this);
var o = $.metadata ? $.extend({}, opts.settings, $this.metadata()) : opts.settings;
$this.unbind('click').click(function() {
$.fn.fancybox.start(this, o); return false;
});
});
};
$.fn.fancybox.start = function(el, o) {
if (opts.animating) return false;
if (o.overlayShow) {
$("#fancy_wrap").prepend('<div id="fancy_overlay"></div>');
$("#fancy_overlay").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': o.overlayOpacity});
if ($.browser.msie) {
$("#fancy_wrap").prepend('<iframe id="fancy_bigIframe" scrolling="no" frameborder="0"></iframe>');
$("#fancy_bigIframe").css({'width': $(window).width(), 'height': $(document).height(), 'opacity': 0});
}
$("#fancy_overlay").click($.fn.fancybox.close);
}
opts.itemArray = [];
opts.itemNum = 0;
if (jQuery.isFunction(o.itemLoadCallback)) {
o.itemLoadCallback.apply(this, [opts]);
var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
var tmp = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
for (var i = 0; i < opts.itemArray.length; i++) {
opts.itemArray[i].o = $.extend({}, o, opts.itemArray[i].o);
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
opts.itemArray[i].orig = tmp;
}
}
} else {
if (!el.rel || el.rel == '') {
var item = {url: el.href, title: el.title, o: o};
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
var c = $(el).children("img:first").length ? $(el).children("img:first") : $(el);
item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
}
opts.itemArray.push(item);
} else {
var arr = $("a[@rel=" + el.rel + "]").get();
for (var i = 0; i < arr.length; i++) {
var tmp = $.metadata ? $.extend({}, o, $(arr[i]).metadata()) : o;
var item = {url: arr[i].href, title: arr[i].title, o: tmp};
if (o.zoomSpeedIn > 0 || o.zoomSpeedOut > 0) {
var c = $(arr[i]).children("img:first").length ? $(arr[i]).children("img:first") : $(el);
item.orig = {'width': c.width(), 'height': c.height(), 'pos': $.fn.fancybox.getPosition(c)}
}
if (arr[i].href == el.href) opts.itemNum = i;
opts.itemArray.push(item);
}
}
}
$.fn.fancybox.changeItem(opts.itemNum);
};
$.fn.fancybox.changeItem = function(n) {
$.fn.fancybox.showLoading();
opts.itemNum = n;
$("#fancy_nav").empty();
$("#fancy_outer").stop();
$("#fancy_title").hide();
$(document).unbind("keydown");
imgRegExp = imgTypes.join('|');
imgRegExp = new RegExp('\.' + imgRegExp + '$', 'i');
var url = opts.itemArray[n].url;
if (url.match(/#/)) {
var target = window.location.href.split('#')[0]; target = url.replace(target,'');
$.fn.fancybox.showItem('<div id="fancy_div">' + $(target).html() + '</div>');
$("#fancy_loading").hide();
} else if (url.match(imgRegExp)) {
$(imgPreloader).unbind('load').bind('load', function() {
$("#fancy_loading").hide();
opts.itemArray[n].o.frameWidth = imgPreloader.width;
opts.itemArray[n].o.frameHeight = imgPreloader.height;
$.fn.fancybox.showItem('<img id="fancy_img" src="' + imgPreloader.src + '" />');
}).attr('src', url + '?rand=' + Math.floor(Math.random() * 999999999) );
} else {
$.fn.fancybox.showItem('<iframe id="fancy_frame" onload="$.fn.fancybox.showIframe()" name="fancy_iframe' + Math.round(Math.random()*1000) + '" frameborder="0" hspace="0" src="' + url + '"></iframe>');
}
};
$.fn.fancybox.showIframe = function() {
$("#fancy_loading").hide();
$("#fancy_frame").show();
};
$.fn.fancybox.showItem = function(val) {
$.fn.fancybox.preloadNeighborImages();
var viewportPos = $.fn.fancybox.getViewport();
var itemSize = $.fn.fancybox.getMaxSize(viewportPos[0] - 50, viewportPos[1] - 100, opts.itemArray[opts.itemNum].o.frameWidth, opts.itemArray[opts.itemNum].o.frameHeight);
var itemLeft = viewportPos[2] + Math.round((viewportPos[0] - itemSize[0]) / 2) - 20;
var itemTop = viewportPos[3] + Math.round((viewportPos[1] - itemSize[1]) / 2) - 40;
var itemOpts = {
'left': itemLeft, 
'top': itemTop, 
'width': itemSize[0] + 'px', 
'height': itemSize[1] + 'px' 
}
if (opts.active) {
$('#fancy_content').fadeOut("normal", function() {
$("#fancy_content").empty();
$("#fancy_outer").animate(itemOpts, "normal", function() {
$("#fancy_content").append($(val)).fadeIn("normal");
$.fn.fancybox.updateDetails();
});
});
} else {
opts.active = true;
$("#fancy_content").empty();
if ($("#fancy_content").is(":animated")) {
console.info('animated!');
}
if (opts.itemArray[opts.itemNum].o.zoomSpeedIn > 0) {
opts.animating = true;
itemOpts.opacity = "show";
$("#fancy_outer").css({
'top': opts.itemArray[opts.itemNum].orig.pos.top - 18,
'left': opts.itemArray[opts.itemNum].orig.pos.left - 18,
'height': opts.itemArray[opts.itemNum].orig.height,
'width': opts.itemArray[opts.itemNum].orig.width
});
$("#fancy_content").append($(val)).show();
$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedIn, function() {
opts.animating = false;
$.fn.fancybox.updateDetails();
});
} else {
$("#fancy_content").append($(val)).show();
$("#fancy_outer").css(itemOpts).show();
$.fn.fancybox.updateDetails();
}
}
};
$.fn.fancybox.updateDetails = function() {
$("#fancy_bg,#fancy_close").show();
if (opts.itemArray[opts.itemNum].title !== undefined && opts.itemArray[opts.itemNum].title !== '') {
$('#fancy_title div').html(opts.itemArray[opts.itemNum].title);
$('#fancy_title').show();
}
if (opts.itemArray[opts.itemNum].o.hideOnContentClick) {
$("#fancy_content").click($.fn.fancybox.close);
} else {
$("#fancy_content").unbind('click');
}
if (opts.itemNum != 0) {
$("#fancy_nav").append('<a id="fancy_left" href="javascript:;"></a>');
$('#fancy_left').click(function() {
$.fn.fancybox.changeItem(opts.itemNum - 1); return false;
});
}
if (opts.itemNum != (opts.itemArray.length - 1)) {
$("#fancy_nav").append('<a id="fancy_right" href="javascript:;"></a>');
$('#fancy_right').click(function(){
$.fn.fancybox.changeItem(opts.itemNum + 1); return false;
});
}
$(document).keydown(function(event) {
if (event.keyCode == 27) {
$.fn.fancybox.close();
} else if(event.keyCode == 37 && opts.itemNum != 0) {
$.fn.fancybox.changeItem(opts.itemNum - 1);

} else if(event.keyCode == 39 && opts.itemNum != (opts.itemArray.length - 1)) {
$.fn.fancybox.changeItem(opts.itemNum + 1);
}
});
};
$.fn.fancybox.preloadNeighborImages = function() {
if ((opts.itemArray.length - 1) > opts.itemNum) {
preloadNextImage = new Image();
preloadNextImage.src = opts.itemArray[opts.itemNum + 1].url;
}
if (opts.itemNum > 0) {
preloadPrevImage = new Image();
preloadPrevImage.src = opts.itemArray[opts.itemNum - 1].url;
}
};
$.fn.fancybox.close = function() {
if (opts.animating) return false;
$(imgPreloader).unbind('load');
$(document).unbind("keydown");
$("#fancy_loading,#fancy_title,#fancy_close,#fancy_bg").hide();
$("#fancy_nav").empty();
opts.active = false;
if (opts.itemArray[opts.itemNum].o.zoomSpeedOut > 0) {
var itemOpts = {
'top': opts.itemArray[opts.itemNum].orig.pos.top - 18,
'left': opts.itemArray[opts.itemNum].orig.pos.left - 18,
'height': opts.itemArray[opts.itemNum].orig.height,
'width': opts.itemArray[opts.itemNum].orig.width,
'opacity': 'hide'
};
opts.animating = true;
$("#fancy_outer").animate(itemOpts, opts.itemArray[opts.itemNum].o.zoomSpeedOut, function() {
$("#fancy_content").hide().empty();
$("#fancy_overlay,#fancy_bigIframe").remove();
opts.animating = false;
});
} else {
$("#fancy_outer").hide();
$("#fancy_content").hide().empty();
$("#fancy_overlay,#fancy_bigIframe").fadeOut("fast").remove();
}
};
$.fn.fancybox.showLoading = function() {
clearInterval(loadingTimer);
var pos = $.fn.fancybox.getViewport();
$("#fancy_loading").css({'left': ((pos[0] - 40) / 2 + pos[2]), 'top': ((pos[1] - 40) / 2 + pos[3])}).show();
$("#fancy_loading").bind('click', $.fn.fancybox.close);
loadingTimer = setInterval($.fn.fancybox.animateLoading, 66);
};
$.fn.fancybox.animateLoading = function(el, o) {
if (!$("#fancy_loading").is(':visible')){
clearInterval(loadingTimer);
return;
}
$("#fancy_loading > div").css('top', (loadingFrame * -40) + 'px');
loadingFrame = (loadingFrame + 1) % 12;
};
$.fn.fancybox.init = function() {
if (!$('#fancy_wrap').length) {
$('<div id="fancy_wrap"><div id="fancy_loading"><div></div></div><div id="fancy_outer"><div id="fancy_inner"><div id="fancy_nav"></div><div id="fancy_close"></div><div id="fancy_content"></div><div id="fancy_title"></div></div></div></div>').appendTo("body");
$('<div id="fancy_bg"></div>').prependTo("#fancy_inner");  
$('<div id="fancy_title_main"><div>').appendTo('#fancy_title');
}
if ($.browser.msie) {
$("#fancy_inner").prepend('<iframe id="fancy_freeIframe" scrolling="no" frameborder="0"></iframe>');
}
if (jQuery.fn.pngFix) $(document).pngFix();
$("#fancy_close").click($.fn.fancybox.close);
};
$.fn.fancybox.getPosition = function(el) {
var pos = el.offset();
pos.top += $.fn.fancybox.num(el, 'paddingTop');
pos.top += $.fn.fancybox.num(el, 'borderTopWidth');
pos.left += $.fn.fancybox.num(el, 'paddingLeft');
pos.left += $.fn.fancybox.num(el, 'borderLeftWidth');
return pos;
};
$.fn.fancybox.num = function (el, prop) {
return parseInt($.curCSS(el.jquery?el[0]:el,prop,true))||0;
};
$.fn.fancybox.getPageScroll = function() {
var xScroll, yScroll;
if (self.pageYOffset) {
yScroll = self.pageYOffset;
xScroll = self.pageXOffset;
} else if (document.documentElement && document.documentElement.scrollTop) {
yScroll = document.documentElement.scrollTop;
xScroll = document.documentElement.scrollLeft;
} else if (document.body) {
yScroll = document.body.scrollTop;
xScroll = document.body.scrollLeft; 
}
return [xScroll, yScroll]; 
};
$.fn.fancybox.getViewport = function() {
var scroll = $.fn.fancybox.getPageScroll();
return [$(window).width(), $(window).height(), scroll[0], scroll[1]];
};
$.fn.fancybox.getMaxSize = function(maxWidth, maxHeight, imageWidth, imageHeight) {
var r = Math.min(Math.min(maxWidth, imageWidth) / imageWidth, Math.min(maxHeight, imageHeight) / imageHeight);
return [Math.round(r * imageWidth), Math.round(r * imageHeight)];
};
$.fn.fancybox.defaults = {
hideOnContentClick: false,
zoomSpeedIn: 500,
zoomSpeedOut: 500,
frameWidth:  600,
frameHeight: 400,
overlayShow: false,
overlayOpacity: 0.4,
itemLoadCallback: null
};
})(jQuery);





