jQuery.noConflict();
jQuery(document).ready(function() {

	/* ------------------------------------------------
	   Set some css properties (javascript fallback)
	------------------------------------------------ */
	jQuery('#wrap-header').css('position', 'fixed');
	jQuery('#wrap-slider').css({
			'height': '594px',
			'marginTop': '100px'
		});
	jQuery('.nivoSlider img').css('display', 'none');

	/* ------------------------------------------------
	   Hide last navigation arrow
	------------------------------------------------ */
	jQuery('.down:last').css('display', 'none');

	/* ------------------------------------------------
	   Set min-height property (portfolio section)
	------------------------------------------------ */
	var portfolioHeight = jQuery('#portfolio').height();
	jQuery('#portfolio').css('min-height', portfolioHeight + 'px');

	/* ------------------------------------------------
	   Initialize anchor scroll
	------------------------------------------------ */
	jQuery.localScroll({
		offset: -100
	});

	/* ------------------------------------------------
	   Initialize Prettyphoto lightbox
	------------------------------------------------ */
	jQuery("a[rel^='prettyPhoto']").prettyPhoto();

	/* ------------------------------------------------
	   Initialize portfolio thumbs hover
	------------------------------------------------ */
	jQuery('#list a[rel^="prettyPhoto"]').cepreuPortfolioThumbsHover({
		defaultOpacity: 1,
		onMouseOverOpacity: 0.2,
		speed: 300,
		zoomImg: 'zoom.png',
		show_title: false, /* true/false */

	});

	/* ------------------------------------------------
	   Add additional portfolio elements
	------------------------------------------------ */
	jQuery('#list a[rel^="prettyPhoto"]').append('<span class="thumbPortfolio"></span>');

	/* ------------------------------------------------
	   Sort portfolio (Quicksand plugin) onClick
	------------------------------------------------ */
	var $preferences = {
		duration: 800,
		easing: 'easeInOutQuad',

		/* Adjusts the height of container to fit all the items, 'auto' for automatically adjusting before or after the animation (determined automatically), 
		   'dynamic' for height adjustment animation, false for keeping the height constant. */
		adjustHeight: false,
		attribute: 'id',	// Attribute used to match items in collections. You can provide custom function to extract unique values.

		/* If you wish to integrate their visual enhancements (eg. font replacement), specify a function that refreshes or re-applies enhancement to 
		   an item during the animation. */
		enhancement: 	function() {},

		/* Use scaling (CSS3 transform) animation. Requires to include this plugin - http://www.zachstronaut.com/posts/2009/08/07/jquery-animate-css-rotate-scale.html 
		   to your project. Turned off automatically if you did not. */
		useScaling: true
	};

	var $list = jQuery('#list');
	var $data = $list.clone();

	var $controls = jQuery('#filter');

	$controls.each(function(i) {

		var $control = jQuery(this);
		var $buttons = $control.find('a');

		// onClick handler
		$buttons.bind('click', function(e) {
			var $button = jQuery(this);
			var $button_container = $button.parent();
			var button_properties = $button_container.attr('class');
			var selected = button_properties.selected;

			if (!selected) {
				$buttons.parent().removeClass('selected');
				$button_container.addClass('selected');

				var sorting = $button.attr('class');

				if (sorting == 'all') {
					var $filtered_data = $data.find('li');
				} else {
					var $filtered_data = $data.find('li.' + sorting);
				}

				// call quicksand
				$list.quicksand($filtered_data, $preferences, function() {	
					// callback
					jQuery("a[rel^='prettyPhoto']").prettyPhoto();
					jQuery('#list a[rel^="prettyPhoto"]').cepreuPortfolioThumbsHover();
					jQuery('#list').height(''); // portfolio section layout fix
				});
			}
			e.preventDefault();
		});

	});

	/* ------------------------------------------------
	   Initialize Portfolio layout switcher
	------------------------------------------------ */
	jQuery('#layoutSwitcher a').cepreuPortfolioLayoutSwitcher({
		show_switcher: true,
		full_width_layout: true // set 'true' if you want full-width layout
	});

	


	/* ------------------------------------------------
	   Initialize Nivo slider
	------------------------------------------------ */
	jQuery('#slider').nivoSlider({
		effect: 'random', // Specify sets like: 'fold, fade, sliceDown'
		slices: 20,
		animSpeed: 800,
		pauseTime: 3000,
		startSlide: 0, // Set starting Slide (0 index)
		directionNav: true, // Next & Prev
		directionNavHide: true, // Only show on hover
		controlNav: true, // 1,2,3...
		controlNavThumbs: true, // Use thumbnails for Control Nav
		controlNavThumbsFromRel: false, // Use image rel for thumbs
		controlNavThumbsSearch: '.jpg', // Replace this with...
		controlNavThumbsReplace: '_thumb.jpg', // ...this in thumb Image src
		keyboardNav: true, // Use left & right arrows
		pauseOnHover: true, // Stop animation while hovering
		manualAdvance: false, // Force manual transitions
		captionOpacity: 0.8, // Universal caption opacity
		beforeChange: function(){},
		afterChange: function(){
			// callback
			thumbsPanelSlider();
		},
		slideshowEnd: function(){} // Triggers after all slides have been shown
	}, 2000);

	// Nivo thumbs panel slider
	thumbsPanelSlider = function() {
		var $thumb = jQuery('.nivo-controlNavSpan a');
		var $thumbActive = jQuery('.nivo-controlNavSpan a.active');
		var $thumbFirst = jQuery('.nivo-controlNavSpan a:first');
		var $thumbLast = jQuery('.nivo-controlNavSpan a:last');
		var $thumbsPanel = jQuery('.nivo-controlNavSpan');

		var thIndex = $thumb.index($thumbActive);
		var thIndexFirst = $thumbFirst.index();
		var thIndexLast = $thumbLast.index();

		var numberOfThumbs = $thumb.length;
		var thumbWidth = $thumb.innerWidth();
		var p = 0;

		if (numberOfThumbs <= 8 && numberOfThumbs > 4) {
			if (thIndex == 4) {
				p = '-' + thumbWidth * (numberOfThumbs - 4);
				slideThumbsPanel($thumbsPanel, p);
			}
			if (thIndex == (numberOfThumbs - 5)) {
				slideThumbsPanel($thumbsPanel, p);
			}
			if (thIndex == thIndexLast) {
				p = '-' + thumbWidth * (numberOfThumbs - 4);
				slideThumbsPanel($thumbsPanel, p);
			}
			if (thIndex == thIndexFirst) {
				slideThumbsPanel($thumbsPanel, p);
			}
		};

		// Animation
		function slideThumbsPanel($target, x, preferences) {
			$target.animate({'left': x + 'px'}, 1000, 'easeInOutQuad');
		};
	};

});

/* ------------------------------------------------
   Portfolio thumbs hover  
------------------------------------------------ */
(function($) {
$.fn.cepreuPortfolioThumbsHover = function(options) {

	// Default options
	options = $.extend({
		defaultOpacity: 1,
		onMouseOverOpacity: 0.2,
		speed: 300,
		zoomImg: 'zoom.png'
	}, options);

	var $target = $(this);

	$target.hover(function() {
		var $thumb = $(this).find('img');
		var $thumbZoom = $(this).find('span');

		$thumb.animate({
			opacity: options.onMouseOverOpacity
		}, options.speed);

		$thumbZoom.append('<img src="images/' + options.zoomImg + '" />');

	}, function() {
		var $thumb = $(this).find('img');
		var $thumbZoom = $(this).find('span');

		$thumb.animate({
			opacity: options.defaultOpacity
		}, options.speed);

		$thumbZoom.html('');
	});

};
})(jQuery);

/* ------------------------------------------------
   Portfolio layout switcher 
------------------------------------------------ */
(function($) {
$.fn.cepreuPortfolioLayoutSwitcher = function(options) {

	// Default options
	options = $.extend({
		show_switcher: true,
		full_width_layout: false
	}, options);

	var $switcher = $(this);
	var $target = $('.image-grid');

	if (!options.show_switcher) {
		$(this).css('display', 'none');
	};

	if (options.full_width_layout) {

		$switcher.addClass('full-width');
		$target.addClass('full-width');

		$switcher.toggle(function(){
			$('#list').height(''); // portfolio section layout fix

			$(this).removeClass('full-width');
			$target.fadeOut('fast', function() {
				$(this).fadeIn('fast').removeClass('full-width');
			});
		}, function () {
			$('#list').height('');

			$(this).addClass('full-width');
			$target.fadeOut('fast', function() {
				$(this).fadeIn('fast').addClass('full-width');
			});
		});

	} else {

		$switcher.toggle(function(){
			$('#list').height('');

			$(this).addClass('full-width');
			$target.fadeOut('fast', function() {
				$(this).fadeIn('fast').addClass('full-width');
			});
		}, function () {
			$('#list').height('');

			$(this).removeClass('full-width');
			$target.fadeOut('fast', function() {
				$(this).fadeIn('fast').removeClass('full-width');
			});
		});

	};

};
})(jQuery);

/* ------------------------------------------------
   Magnify
------------------------------------------------ */



jQuery(function($) 
{
	$('a[rel*=magnify]').magnify({lensWidth:150, lensHeight:150, link:false, delay:500});
});


/*

CUSTOM FORM ELEMENTS

Created by Ryan Fait
www.ryanfait.com

The only things you may need to change in this file are the following
variables: checkboxHeight, radioHeight and selectWidth (lines 24, 25, 26)

The numbers you set for checkboxHeight and radioHeight should be one quarter
of the total height of the image want to use for checkboxes and radio
buttons. Both images should contain the four stages of both inputs stacked
on top of each other in this order: unchecked, unchecked-clicked, checked,
checked-clicked.

You may need to adjust your images a bit if there is a slight vertical
movement during the different stages of the button activation.

The value of selectWidth should be the width of your select list image.

Visit http://ryanfait.com/ for more information.

*/

var checkboxHeight = "35";
var radioHeight = "25";
var selectWidth = "190";


/* No need to change anything after this */


document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5; } .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>');

var Custom = {
	init: function() {
		var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;
		for(a = 0; a < inputs.length; a++) {
			if((inputs[a].type == "checkbox" || inputs[a].type == "radio") && inputs[a].className == "styled") {
				span[a] = document.createElement("span");
				span[a].className = inputs[a].type;

				if(inputs[a].checked == true) {
					if(inputs[a].type == "checkbox") {
						position = "0 -" + (checkboxHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					} else {
						position = "0 -" + (radioHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					}
				}
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.clear;
				if(!inputs[a].getAttribute("disabled")) {
					span[a].onmousedown = Custom.pushed;
					span[a].onmouseup = Custom.check;
				} else {
					span[a].className = span[a].className += " disabled";
				}
			}
		}
		inputs = document.getElementsByTagName("select");
		for(a = 0; a < inputs.length; a++) {
			if(inputs[a].className == "styled") {
				option = inputs[a].getElementsByTagName("option");
				active = option[0].childNodes[0].nodeValue;
				textnode = document.createTextNode(active);
				for(b = 0; b < option.length; b++) {
					if(option[b].selected == true) {
						textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
				}
				span[a] = document.createElement("span");
				span[a].className = "select";
				span[a].id = "select" + inputs[a].name;
				span[a].appendChild(textnode);
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				if(!inputs[a].getAttribute("disabled")) {
					inputs[a].onchange = Custom.choose;
				} else {
					inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled";
				}
			}
		}
		document.onmouseup = Custom.clear;
	},
	pushed: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
		} else if(element.checked == true && element.type == "radio") {
			this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
		} else if(element.checked != true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
		} else {
			this.style.backgroundPosition = "0 -" + radioHeight + "px";
		}
	},
	check: function() {
		element = this.nextSibling;
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 0";
			element.checked = false;
		} else {
			if(element.type == "checkbox") {
				this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else {
				this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
				group = this.nextSibling.name;
				inputs = document.getElementsByTagName("input");
				for(a = 0; a < inputs.length; a++) {
					if(inputs[a].name == group && inputs[a] != this.nextSibling) {
						inputs[a].previousSibling.style.backgroundPosition = "0 0";
					}
				}
			}
			element.checked = true;
		}
	},
	clear: function() {
		inputs = document.getElementsByTagName("input");
		for(var b = 0; b < inputs.length; b++) {
			if(inputs[b].type == "checkbox" && inputs[b].checked == true && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			} else if(inputs[b].type == "radio" && inputs[b].checked == true && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
			} else if(inputs[b].type == "radio" && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			}
		}
	},
	choose: function() {
		option = this.getElementsByTagName("option");
		for(d = 0; d < option.length; d++) {
			if(option[d].selected == true) {
				document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			}
		}
	}
}
window.onload = Custom.init;
