

var $fl = jQuery.noConflict();

$fl(function() {
	
	
	var offset = $fl("#FL_sidebar").offset();
    var topPadding = 150;
	
	
	$fl(window).scroll(function() {
    
		
		if ($fl(window).scrollTop() > offset.top) {
        
		
            $fl("#FL_sidebar").stop().animate({
            
			 top: $fl(window).scrollTop() - offset.top + topPadding
					
            });
        
		
        }else {
        
            $fl("#FL_sidebar").stop().animate({
            
                top: "95"
            
            });
        
        }
		
		
		
		
	});
	

});






var $j = jQuery.noConflict();



$j(function() {



	// comment next lines to disable features

	

	slideshow(); // homepage slideshow

	lightBox(); // initialize & configure lightbox script

	mainmenu(); // menu scripts for drop-down functionality

	

	$j(".tabbox ul li").click(function() {

		openTab($j(this));

		return false;

	});

	$j(".tabbox ul li:eq("+currentTab+")").click();



	if ($j("form#contact").length > 0) contactForm(); // initialize javascript validators for the contact form



	if ($j("#slides img").length > 1) setInterval("slides()", getMeta("pandora.1")); // slide timer



	if ($j("#newsline").length > 0) setInterval("newsline()", getMeta("pandora.2")); // news timer



	if ($j("#folio").length > 0) folio(500, 0.6); // portfolio sleek image shade (timer, opacity)



	if ($j("div.item p.tags a", "#folio").length > 0) folioFilter(); // portfolio item filter



});





// functions



var currentTab = 0; 

function openTab(clickedTab) {

	var thisTab = $j(".tabbox ul li").index(clickedTab);

	$j(".tabbox ul li").removeClass("selected");

	$j(".tabbox ul li:eq("+thisTab+")").addClass("selected");

	$j("#tab-widget .widget-content.tab_content").hide();

	$j("#tab-widget .widget-content.tab_content:eq("+thisTab+")").show();

	currentTab = thisTab;

}





function getMeta($name) {

	return $j("meta[name=" + $name + "]").attr('content');

}



function contactForm() {



	$j(".input", "form#contact").blur(function() { validateInput($j(this)); }); // validate when unfocus



	$j("#submit", "form#contact").click(function() { // validate on submit

		$j(".input", "form#contact").each(function() { validateInput($j(this)); })

		if (!isFormValid())

			return false;

	});



}



function isFormValid() {



	return $j(".input.incorrect", "form#contact").length > 0 ? false : true;



}



function validateInput(obj) {



	var id = obj.attr("id");

	var correct = false;



	if (id == "email") { // email validator

		if (obj.val().match(/^[a-zA-Z0-9_\.\-]+\@([a-zA-Z0-9\-]+\.)+[a-zA-Z0-9]{2,4}$/))

			correct = true;

	}

	else if (id == "message") { // message validator

		if (obj.val().replace(/(^\s+)|(\s+$)/g, "") != "")

			correct = true;

	}



	obj.removeClass("correct incorrect"); // clearing

	if (correct) {

		obj.addClass("correct");

	}

	else {

		obj.addClass("incorrect");

	}



}



//

function mainmenu(){

	$j("ul#nav li").hover(function(){

		$j(this).addClass('active');

		$j(this).find('ul').find('li').removeClass('active');

		$j(this).find('ul:first').css({visibility: "visible",display: "none"}).fadeIn(400);

	}, function() {

		$j(this).removeClass('active');

		$j(this).find('ul:first').css({visibility: "hidden"});

	});

}

//



function lightBox() {

	$j("a[rel^='lightbox']").prettyPhoto({

		animationSpeed: 'fast', /* fast/slow/normal */

		padding: 40, /* padding for each side of the picture */

		opacity: 0.5, /* Value betwee 0 and 1 */

		showTitle: true, /* true/false */

		allowresize: true, /* true/false */

		counter_separator_label: '/', /* The separator for the gallery counter 1 "of" 2 */

		theme: 'dark_rounded', /* light_rounded / dark_rounded / light_square / dark_square */

		callback: function() { }

	});

}



// Slideshow

function slideshow() {

	$j(".slidenav").hover(function(){$j(this).addClass('over');},function(){$j(this).removeClass('over');});

	$j('#slideshow').cycle({ 

	    fx:     'scrollHorz', 

	    speed:  1000, 

	    timeout: 3000,

	    pager: '#slideshow-nav',

	    before:  onBefore, 

		after:   onAfter,

		end: onEnd,

		nowrap:1,

		pause:1,

		prev: '#slidenav-prev',

        next: '#slidenav-next',

		easing: 'easeInOutQuart',
		cleartypeNoBg: true

	});

	function onEnd() {

		$j('#slideshow').cycle(0);

	}

	function onBefore() { 

		var slide_num = $j('.ss-slide').index(this);

	} 

	function onAfter() {

	}	 

}



//



function folio(time, opacity) {

	$j("img", "#folio")

		.css("opacity", 1)

		.hover(

			function() {

				$j(this).stop().animate({ opacity: opacity }, time);

			},

			function() {

				$j(this).stop().animate({ opacity: 1 }, time);

			}

		);

}



function folioFilter() {

	var tags = getAllTags();

	var ph = $j(".placeholder", "#filter");

	$j(tags).each(function(i, tag) {

		ph.append(', <a href="#">' + tag + '</a>');

	});



	$j(".placeholder a", "#filter").click(function() {



		$j(".placeholder a.active", "#filter").removeClass("active");

		$j(this).addClass("active");



		folioClick($j(this));

		return false;

	});



	$j("#filter", "#folio").show();



	// select by the #hash in the url

	var hash = trim(window.location.hash.substring(1));

	if (hash.length > 0) {

		$j(".placeholder a:contains('" + hash + "'):first", "#filter").click();

	}

}



{ // folioFilter functions:



	function folioClick(obj) {

		var tag = obj.text();

		var rel = obj.attr("rel");



		folioHideAll();



		if (rel == "Start")

			folioShow();

		else

			folioShow(tag);



		folioClearer();

	}



	function folioClearer() {

		var visibleItems = $j("div.item:visible", "#folio");

		var lastIndex = visibleItems.length - 1;

		visibleItems.each(function(i, item) {

			if (i % 3 == 2 && i != lastIndex) $j('<div class="clear"> </div>').insertAfter(item);

		});

	}



	function folioShow(tag) {

		if (tag)

			$j("div.item:has(p.tags a:contains('" + tag + "'))", "#folio").show();

		else

			$j("div.item", "#folio").show();

	}



	function folioHideAll() {

		$j("div.item", "#folio").hide();

		$j("#folio > div.clear:not(:last)").remove();

	}



	function getAllTags() {

		var tags = [];

		$j("div.item p.tags a", "#folio").each(function() { tags.push(trim($j(this).text())); });

		return tags.unique().sort();

	}



}



//



function slides() {



	if (ie6) {

		return; // ie6 fails to animate overall opacity of the transparent PNGs

	}



	var $active = $j("#slides img.active");



	if ($active.length == 0) {

		$active = $j("#slides img:last");

	}



	var $next = $active.next().length ?

			$active.next() :

			$j("#slides img:first");



	$active.addClass("pre-active");



	$next.

		css({ opacity: 0 }).

		addClass("active").

		animate({ opacity: 1 }, 1000, function() {

			$active.

				removeClass("active pre-active").

				css({ opacity: 0 });

		});



}



//



function newsline() {

	var $ph = $j("#newsline a.ph");



	if ($ph.length == 0) { // prepare basement

		var $first = $j("#newsline a:first");

		$j("#newsline p").append("<br />").append($first.clone());

		$ph = $first.addClass("ph");

	}



	var $active = $j("#newsline a.active");



	if ($active.length == 0) {

		$active = $j("#newsline a:last");

	}



	var $next = $active.next().next().length ?

			$active.next().next() :

			$j("#newsline a:not(.ph):first");



	$next.addClass("active");

	$active.removeClass("active");



	if (ie6) { // bha! another ie6 opacity fail

		$ph.html($next.html());

		$ph.attr("href", $next.attr("href"));

	}

	else {

		$ph.animate({ opacity: 0 }, 500, function() { // hiding

			$ph.html($next.html());

			$ph.attr("href", $next.attr("href"));

			$ph.animate({ opacity: 1 }, 300); // revealing

		});

	}

}



//



var ie6 = jQuery.browser.msie && parseInt(jQuery.browser.version) < 7;



// JS helpers:



{

	function trim(str) {

		return str.replace(/^\s\s*/, '').replace(/\s\s*$/, '');

	}



	// Array.indexOf( value, begin, strict )

	Array.prototype.indexOf = function(v, b, s) {

		for (var i = +b || 0, l = this.length; i < l; i++) {

			if (this[i] === v || s && this[i] == v) { return i; }

		}

		return -1;

	};

	// Array.unique( strict )

	Array.prototype.unique = function(b) {

		var a = [], i, l = this.length;

		for (i = 0; i < l; i++) {

			if (a.indexOf(this[i], 0, b) < 0) { a.push(this[i]); }

		}

		return a;

	};

	// Array1.intersect( Array2 )

	Array.prototype.intersect = function(b) {

		var as, al, a = [];

		if (b.length < this.length) { as = b; al = this }

		else { as = this; al = b }

		$j.each(as, function(i, user) {

			if (al.indexOf(user) >= 0)

				a.push(user);

		});

		return a;

	}

}
