$(document).ready(function(){
	init_sliderGrid(".slider", {numItems: 1, itemWidth: 530, animationSpeed: 1000});
	init_sliderGrid(".pp_slider", {numItems: 6, itemWidth: 116, animationSpeed: 500});
	init_contactUs();
	init_photography();
});


/* ########################################################################### *
/* ##### SLIDER PHOTOGRAPHY
/* ########################################################################### */


	function init_photography(){
				$("a[rel^='prettyPhoto']").prettyPhoto({allowresize: false, showTitle: false, theme: 'dark_square'});
				$("a.zoom").append("<span></span>");
				$("a.zoom span").css("opacity", .65);
				$("ul#nav ul").css("opacity", .85);
				$('ul#nav > li').hover(
					function() { $('ul', this).css('display', 'block'); },
					function() { $('ul', this).css('display', 'none'); 
				});
				$("#photos a").hover(function(){
					$("img", this).fadeTo(.2, .70, function() { $(this).fadeTo("normal", 1); });
				}, function(){
				});
				$("#commentLink").click(function(){
					$("#image-navigate").slideToggle();
					return false;
				});
				$("#closecomments").click(function(){
					$("#image-navigate").slideUp();
					return false;
				});
			}


/* ########################################################################### *
/* ##### SLIDER GRID
/* ########################################################################### */

function init_sliderGrid(containerClass, SLIDER_OPTIONS){
	$(containerClass).each(function(){
		var container = $(this);
		
		if($(container).find("ul.sliderGrid").length>0){
			$(container).find("ul.sliderGrid").each(function(){
				var widthMultiplier = $(this).parent().find("ul.sliderGrid > li").length;
				var ulWidth = widthMultiplier * SLIDER_OPTIONS.itemWidth;
				
				var gridItem = $(this).get(0);
				$.data(gridItem, "items", widthMultiplier);
				$.data(gridItem, "currentPos", 0);
				
				$(this).css({width: ulWidth, overflow: "hidden"});
			});
			
			$(container).find(".actions_sliderGrid_next").each(function(){
				$(this).click(function(){
					var grid = $(this).parents(containerClass).find("ul.sliderGrid");
					var gridItem = $(grid).get(0);
					
					if($.data(gridItem, "disabled")!=true){
						var numItems = $.data(gridItem, "items");
						var currentPos = $.data(gridItem, "currentPos");
						
						var nextPos = (currentPos + 1 >= numItems - (SLIDER_OPTIONS.numItems-1)) ? 0 : currentPos + 1;
						
						$.data(gridItem, "currentPos", nextPos);
						$.data(gridItem, "disabled", true);
						
						var nextMargin = -(nextPos * SLIDER_OPTIONS.itemWidth);
						
						$(grid).animate({"marginLeft": nextMargin}, SLIDER_OPTIONS.animationSpeed, function(){
							$.data(gridItem, "disabled", false);												   
						});
					}
					
					return false;
				});
			});
			
			$(container).find(".actions_sliderGrid_previous").each(function(){
				$(this).click(function(){
					var grid = $(this).parents(containerClass).find("ul.sliderGrid");
					var gridItem = $(grid).get(0);
					
					if($.data(gridItem, "disabled")!=true){
						var numItems = $.data(gridItem, "items");
						var currentPos = $.data(gridItem, "currentPos");
						
						var nextPos = (currentPos - 1 < 0) ? numItems - (SLIDER_OPTIONS.numItems) : currentPos - 1;
						
						$.data(gridItem, "currentPos", nextPos);
						$.data(gridItem, "disabled", true);
						
						var nextMargin = -(nextPos * SLIDER_OPTIONS.itemWidth);
						
						$(grid).animate({"marginLeft": nextMargin}, SLIDER_OPTIONS.animationSpeed, function(){
							$.data(gridItem, "disabled", false);												   
						});
					}
					
					return false;
				});
			});
		}
	});
}	



/* ########################################################################### *
/* ##### HELPER FUNCTIONS
/* ########################################################################### */

function isIE(num){
	if (jQuery.browser.msie) {
		if(num==null){
			return true;	
		} else {
			if(parseInt(jQuery.browser.version) == num) {
				return true;
			}
		}
	}
	
	return false;
}



/* ########################################################################### *
/* ##### CONTACT US
/* ########################################################################### */


function init_contactUs(){
	if($("form.frm_ajaxSubmit").length>0){
		$("form.frm_ajaxSubmit").each(function(){
			var form = $(this);
			var formStatus = $(form).find(".contactStatus");
			var action = $(this).attr("action");
			var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
			var phoneReg = /(^1300\d{6}$)|(^1800|1900|1902\d{6}$)|(^0[2|3|7|8]{1}[0-9]{8}$)|(^13\d{4}$)|(^04\d{2,3}\d{6}$)/;
			
			$(this).find(".btn_submit").click(function(){
				var hasError = false;
				var errorList = "";
				
				$(form).find(".ctrlHolder input, .ctrlHolder textarea").each(function(){
					var label = $(this).parents(".ctrlHolder").find("label").text();
					
					if($(this).hasClass("validation_required")){
						if($(this).val()==""){
							hasError = true;
							errorList += "<li><em>"+label+"</em> is required.</li>";
						}
					}
					
					if($(this).hasClass("validation_email")){
						if(!emailReg.test($(this).val())){
							hasError = true;
							errorList += "<li><em>"+label+"</em> is not a valid email address.</li>";
						}
					}
				});
				
				$(form).find(".ctrlHolder select").each(function(){
					var label = $(this).parents(".ctrlHolder").find("label").text();
					
					if($(this).hasClass("validation_required")){
						if($(this).val()=="null"){
							hasError = true;
							errorList += "<li><em>"+label+"</em> is required.</li>";
						}
					}
				});
				
				if(hasError){
					displayFormStatusMessage(formStatus, "<div class=\"status error\"><ul>"+errorList+"</ul></div>");
				} else {
					displayFormStatusMessage(formStatus, "<div class=\"status loading\">Sending message...</div>", function(){
						if(action=="#"){
							var success = "<div class=\"status success\"><em>Thank you.</em> Your message has been sent.</div>";
							displayFormStatusMessage(formStatus, success, function(){
								clearForm(form, formStatus);
							});
						} else {
							$.post(action, $(form).serialize(), function(data){
								if(data.status=="success"){
									displayFormStatusMessage(formStatus, "<div class=\"status success\">"+data.message+"</div>", function(){
										clearForm(form, formStatus);
									});
								} else {
									displayFormStatusMessage(formStatus, "<div class=\"status error\">"+data.message+"</div>");	
								}
							}, "json");
						}
					});
				}
				
				return false;
			});
		});
	}
}

function displayFormStatusMessage(formStatus, message, callback){
	if($(formStatus).css("display") == "none"){
		$(formStatus).animate({opacity: 0}, 0).html(message).slideDown(500, function(){
			$(formStatus).animate({opacity: 1}, 500, function(){
				if(typeof callback=="function"){
					callback();	
				}
			});
		});
	} else {
		$(formStatus).animate({opacity: 0}, 500, function(){
			$(formStatus).slideUp(500, function(){
				$(formStatus).html(message).slideDown(500, function(){
					$(formStatus).animate({opacity: 1}, 500, function(){
						if(typeof callback=="function"){
							callback();	
						}												  
					});
				});
			});															   
		});
	}		
}

function clearForm(form, formStatus){
	$(form).find(".ctrlHolder input, .ctrlHolder textarea").each(function(){
		$(this).val("");											  
	});
	
	$(form).find(".ctrlHolder select").each(function(){
		$(this).val("null");				 
	});
	
	setTimeout(function(){
		$(formStatus).animate({opacity: 0}, 500, function(){
			$(formStatus).slideUp(500, function(){
				$(formStatus).html("");							
			});
		});
	}, 5000);
}

