var $ = jQuery.noConflict();

$(document).ready(function() {		
				      
	/* Hover image opacity */
	$("a[data-rel^='fadeimg'] img").hover(function() {
		$(this).stop().fadeTo("fast", 0.5); 
	},function(){
		$(this).stop().fadeTo("fast", 1.0); 
	});
	$(".fromportfolio li img").hover(function() {
		$(this).stop().fadeTo("fast", 0.5); 
	},function(){
		$(this).stop().fadeTo("fast", 1.0); 
	});
	$(".scrollable .items div a img").hover(function() {
		$(this).stop().fadeTo("fast", 0.5); 
	},function(){
		$(this).stop().fadeTo("fast", 1.0); 
	});
	
	/* Background Nav Hover */
	$("#navigation").fadeTo("slow", 0.5);
	$("#navigation").hover(function() {
		$(this).stop().fadeTo("fast", 1); 
	},function(){
		$(this).stop().fadeTo("fast", 0.5); 
	});
	
	/* Link Smooth Hover */
	$("a").not(".pagination a, .portfoliofilter a, .postinfo a, a.buttondark, a.buttonlight, .ddsmoothmenu a, .blogpages a").hover(function() { 
		$(this).stop().animate({ color: "#999"}, 150); 
	},function() { 
		$(this).stop().animate({ color: "#fff" }, 200); 
	});
	$(".pagination a").hover(function() { 
		$(this).stop().animate({ color: "#aaa"}, 150); 
	},function() { 
		$(this).stop().animate({ color: "#fff" }, 200); 
	});
	
	/* Menu */
	ddsmoothmenu.init({
		mainmenuid: "smoothmenu1", //menu DIV id
		orientation: 'v', //Horizontal or vertical menu: Set to "h" or "v"
		classname: 'ddsmoothmenu', //class added to menu's outer DIV
		contentsource: "markup" //"markup" or ["container_id", "path_to_menu_file"]
	});
	
	/* Social Tooltip */
	$('#footersocial img[title]').tooltip({opacity: 1, effect: 'slide', delay: 0});
	
	/* Gallery Slier */
	$(".scrollable").scrollable();
	
	/* Contact Form */
	if($('#contactform').length != 0){
		addForm('#contactform');
	}
	
	/* Newsletter Subscription */
	if($('#newsletterform').length != 0){
		addForm('#newsletterform');
	}
	
	/* Blog Comments */
	if($('#replyform').length != 0){
		addForm('#replyform');
	}
	
	/* PrettyPhoto */
	addPrettyPhoto();
	
	/* Portfolio Quicksand */
	addPortfolio('1');
	addPortfolio('4');
	addPortfolio('3');
	addPortfolio('2');
	
	/* Tweet List */
	if($('#tweets').length != 0){
		$.ajaxSetup({ cache: true });
		$.getJSON("http://twitter.com/status/user_timeline/envato.json?count=2&callback=?", function(data){
			$.each(data, function(index, item){
					$(".tweetlist").append("<li>" + item.text.linkify() + "<p>" + relative_time(item.created_at) + "</p></li>");
			});
		});
	}
});

$(window).load(function() {
						
	/* Blog & Portfolio Social Sharing */
	addFacebook();
	addTwitter();
	addGoogleplus();

	/* Nivo Slider */
	if($('#nivoSlider').length != 0){
		$('#nivoSlider').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:3000, // How long each slide will show
			startSlide:0, // Set starting Slide (0 index)
			directionNav:true, // Next & Prev navigation
			directionNavHide:false, // Only show on hover
			controlNav:false, // 1,2,3... navigation
			controlNavThumbs:false, // 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:1, // Universal caption opacity
			prevText: '', // Prev directionNav text
			nextText: '', // Next directionNav text
			beforeChange: function(){}, // Triggers before a slide transition
			afterChange: function(){}, // Triggers after a slide transition
			slideshowEnd: function(){}, // Triggers after all slides have been shown
			lastSlide: function(){}, // Triggers when last slide is shown
			afterLoad: function(){} // Triggers when slider has loaded
		});
	}
	
	/* Google Maps */
	loadGoogleMaps();
	
	/* Piecemaker Slider */
	addPiecemaker();
	
});

/* Linkify and Relative Time functions by Ralph Whitbeck http://ralphwhitbeck.com/2007/11/20/PullingTwitterUpdatesWithJSONAndJQuery.aspx */
String.prototype.linkify = function() {
        return this.replace(/[A-Za-z]+:\/\/[A-Za-z0-9-_]+\.[A-Za-z0-9-_:%&\?\/.=]+/, function(m) {
                return m.link(m);
        });
};

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);

  var r = '';
  if (delta < 60) {
        r = 'a minute ago';
  } else if(delta < 120) {
        r = 'couple of minutes ago';
  } else if(delta < (45*60)) {
        r = (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (90*60)) {
        r = 'an hour ago';
  } else if(delta < (24*60*60)) {
        r = '' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
        r = '1 day ago';
  } else {
        r = (parseInt(delta / 86400)).toString() + ' days ago';
  }
  
  return r;
}

function addPiecemaker(){
	/* 3D Slider */
	if($('#piecemaker').length != 0){
		$("head").append('<script>swfobject.embedSWF("images/piecemaker2/piecemaker.swf" , "piecemaker", "730", "335", "10", null, flashvars, params, null)</script>');
	}
}

function addPrettyPhoto() {
	/* PrettyPhoto init */
	$("a[data-rel^='prettyPhoto']").prettyPhoto({
		overlay_gallery: false,
		show_title: false,
		hideflash: true
	});
	
	/* PrettyPhoto hover image opacity */
	$("a[data-rel^='prettyPhoto'] img").hover(function() {
		$(this).stop().fadeTo("fast", 0.5); 
	},function(){
		$(this).stop().fadeTo("fast", 1.0); 
	});	
}

function addGoogleplus() {
	/* Google Plus One */
	if($('#googleplusone').length != 0){
        $("#googleplusone").append('<g:plusone size="tall"></g:plusone>'); 
		var gpscript = document.createElement('script'); 
		gpscript.type = 'text/javascript'; 
		gpscript.src = 'https://apis.google.com/js/plusone.js'; 
		document.getElementsByTagName('head')[0].appendChild(gpscript);
	}
}

function addFacebook() {
	/* Facebook */
	if($('#facebooklike').length != 0){
		window.fbAsyncInit = function() { 
			$("#facebooklike").append('<fb:like href="" layout="box_count" show_faces="false" colorscheme="light" width="55"></fb:like>'); 
		};
		var fbscript = document.createElement('script'); 
		fbscript.type = 'text/javascript'; 
		fbscript.src = 'http://connect.facebook.net/en_US/all.js#xfbml=1'; 
		document.getElementsByTagName('head')[0].appendChild(fbscript);
	}
}

function addTwitter() {
	/* Twitter */
	if($('#twittertweet').length != 0){
		$("#twittertweet").append('<a href="http://twitter.com/share" class="twitter-share-button" data-url="#" data-text="" data-count="vertical">Tweet</a>'); 
		var twscript = document.createElement('script'); 
		twscript.type = 'text/javascript'; 
		twscript.src = 'http://platform.twitter.com/widgets.js'; 
		document.getElementsByTagName('head')[0].appendChild(twscript);
	}
}

function initGoogleMaps() {
	/* Google Maps Init */
	var myLatlng = new google.maps.LatLng(50.889773,5.635836);
	var myOptions = {
		zoom: 50,
		center: myLatlng,
		popup: true,
		mapTypeId: google.maps.MapTypeId.ROADMAP
	}
	var map = new google.maps.Map(document.getElementById("googlemap"), myOptions);
	
	var marker = new google.maps.Marker({
		position: myLatlng, 
		map: map,
		title:"Our Company Location"
	});
	google.maps.event.addListener(marker, 'click', function() {
		map.setZoom(17);
	});
}
  
function loadGoogleMaps() {
	/* Google Maps Load */
	if($('#googlemap').length != 50.889773,5.635836){
		var script = document.createElement("script");
		script.type = "text/javascript";
		script.src = "http://maps.google.com/maps/api/js?sensor=false&callback=initGoogleMaps";
		document.body.appendChild(script);
	}
}

function addPortfolio(portfolioid) {
	/* Portfolio Quicksand */
	var $list = $('#portfoliolist'+portfolioid+'column');
	
	if($($list).length != 0){
		
		var $data = $list.clone();

		$('.portfoliofilter li').click(function(e) {
	
			$(".portfoliofilter li a").addClass("portfoliobutton_noselect");
			$(".portfoliofilter li a").removeClass("portfoliobutton");	
			$(this).children('a').removeClass("portfoliobutton_noselect");
			$(this).children('a').addClass("portfoliobutton");
			
			var filterVal = jQuery(this).children('a').text().toLowerCase().replace(' ','-'); 

			if(portfolioid==1){
				if (filterVal == 'all') {
					var $filteredData = $data.find('.blogpost');
				} else {
					var $filteredData = $data.find('.blogpost[data-type~=' + filterVal + ']');
				}
			}else{
				if (filterVal == 'all') {
					var $filteredData = $data.find('.portfolioitem' + portfolioid);
				} else {
					var $filteredData = $data.find('.portfolioitem' + portfolioid +'[data-type~=' + filterVal + ']');
				}
			}
			
			$($list).quicksand($filteredData, {
				duration: 500,
				easing: 'swing',
				adjustHeight: 'dynamic',
				enhancement: function() {
					
				}
			}, function(){
				addPrettyPhoto();
			});
			
			return false;
		});
	}
}

/* Contact Form */
function addForm(formtype) {

	var formid = $(formtype);
	var emailsend = false;
	
	formid.find("button[name=send]").click(sendemail);
	
	function validator() {
		
		var emailcheck = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
		var othercheck = /.{4}/;
		var noerror = true;
		
		formid.find(".requiredfield").each(function () {
													 
			var fieldname = $(this).attr('name');
			var value = $(this).val();

			if(fieldname == "email"){
				if (!emailcheck.test(value)) {
					$(this).addClass("formerror");
					noerror = false;
				} else {
					$(this).removeClass("formerror");
				}	
			}else{
				if (!othercheck.test(value)) {
					$(this).addClass("formerror");
					noerror = false;
				} else {
					$(this).removeClass("formerror");
				}	
			}
		})
		
		if(!noerror){
			formid.find(".errormessage").fadeIn();
		}
		
		return noerror;
	}
	
	function resetform() {
		formid.find("input").each(function () {
			$(this).val("");	
		})
		formid.find("textarea").val("");
		emailsend = false;
	}
	
	function sendemail() {
		formid.find(".successmessage").hide();
		var phpfile = "";
		if(formtype=="#contactform"){
			phpfile = "php/contact.php";
		}else if(formtype=="#newsletterform"){
			phpfile = "php/signup.php";
		}else{
			phpfile = "";
		}
		if (validator()) {
			if(!emailsend){
				emailsend = true;
				formid.find(".errormessage").hide();
				formid.find(".sendingmessage").show();
				$.post(phpfile, formid.serialize(), function() {
					formid.find(".sendingmessage").hide();
					formid.find(".successmessage").fadeIn();
					resetform();
				});
			}
		} 
		return false
	}
}
