$(function(){

	//Hide (Collapse) the toggle containers on load
	$("#footerLarge").hide(); 

	//Slide up and down on click
	$("#whereToLink").click(function(){
		$("#footerLarge").slideDown("slow");
		var destination = $("#footerLarge").offset().top;
		$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination-20}, 500 );
		$("#footerWrap").addClass("footerWrapLarge");
		return false;
	});
	
	//Home Sublinks: Add hover change to h3 for entire p and click to redirect
	$(".homeSubLink").hover(
		function(){
			$(this).find("h3 a").addClass("altHover");
		},
		function(){
			$(this).find("h3 a").removeClass("altHover");
		}
	).click(function(){
		window.location=$(this).find("a").attr("href"); return false;
	});
	
	
		
	//Add cycle script to macbook on homepage
	if ($("#mbPortfolio").length > 0) {
		$('#mbPortfolio').cycle({
			fx: 'fade',
			speed: 600,
			timeout: 5000,
			pause: 1
		});
	};
		

	//Fade out and back in the portfolio on hover
	// $(".portfolioPanel").hover(function() {
	// 	$(".portfolioPanel").stop().animate({ "opacity" : .7 }, { "duration" : "normal" });
	// 	$(this).stop().animate({ "opacity" : 1 });
	// }, function() {
	// 	$(".portfolioPanel").stop().animate({ "opacity" : 1 });
	// });
	
	
	//Attach fancybox to links in portfolio
	if ($("#portfolioWrap2").length > 0) {
		$(".portfolioPanel a").fancybox({ 
			"overlayOpacity" : .6, 
			"frameWidth" : 800, 
			"frameHeight" : 730, 
			"hideOnContentClick" : false,
			"padding" : 0,
			"centerOnScroll" : false,
			"zoomSpeedIn" : 500,
			"zoomSpeedOut" : 500
		});
	};


	//Attach target="_blank" to links in portfolio
	if ($("#portfolioWrap").length > 0) {
		$(".portfolioPanel a.external").attr("target", "_blank")
		$(".successPanel a.external").attr("target", "_blank")
	};


	//Use AJAX to submit enquiry form
	if($("#enquiryForm1").length > 0) {
	    $('#sideBar label').removeClass("error");
	    $("#sideBar #enquirySubmit").click(function() {

	    	$('#sideBar #enquiryForm input').removeClass("error");
	    	$('#sideBar #enquiryForm textarea').removeClass("error");
			
			var errorCount = 0;
			var sName = $("input#enquiryName").val();
			if (sName == "") {
				$("input#enquiryName").addClass("error");
				if(errorCount == 0) { 
					$("input#enquiryName").focus();
				}
				errorCount ++;
			}
			
			var sEmail = $("input#enquiryEmail").val();
			if (sEmail == "") {
				$("input#enquiryEmail").addClass("error");
				if(errorCount == 0) { 
					$("input#enquiryEmail").focus();
				}
				errorCount ++;
			}
			
			var sPhone = $("input#enquiryPhone").val();
			if (sPhone == "") {
				$("input#enquiryPhone").addClass("error");
				if(errorCount == 0) { 
					$("input#enquiryPhone").focus();
				}
				errorCount ++;
			}

			var sMessage = $("textarea#enquiryMessage").val();
			if (sMessage == "") {
				$("textarea#enquiryMessage").addClass("error");
				if(errorCount == 0) { 
					$("textarea#enquiryMessage").focus();
				}
				errorCount ++;
			}
			
			var sPage = $("textarea#enquiryPage").val();
			if (sMessage == "") {
				$("textarea#enquiryPage").addClass("error");
				if(errorCount == 0) { 
					$("textarea#enquiryPage").focus();
				}
				errorCount ++;
			}
			
			if (errorCount > 0) {
				return false;
			}
			
			
			
			var actionURL = $("#sideBar form").attr("action")
			//alert (actionURL);return false;

			var dataString = 'name='+ sName + '&email=' + sEmail + '&phone=' + sPhone + '&message=' + sMessage + '&page=' + sPage;
			//alert (dataString);return false;

			$('#enquiryForm').html("<div id='enquiryLoading'>Sending Message...</div>")
				.hide()
				.fadeIn(1000);
					
			$.post(actionURL,{
				message: sMessage,
				name: sName,
				phone: sPhone,
				email: sEmail
			}, function(xml) {
				if($("status",xml).text() == "Fail") { 
					alert('Sorry, unexpected error. Please try again later.'); 
				}
				else
				{
					$('#enquiryForm').html("<div id='enquiryResponse'></div>");
					$('#enquiryResponse').html("<h4>Thank you, " + $("name",xml).text() + "!</h4>")
					.append("<p>Your enquiry has been successfully sent to us and we will be in contact with you shortly. If you would like to phone our offices in the meantime, our full contact details can be found <a href='/contact'>here</a>.<br/><br/><em>Web Together Team</em></p>")
					.hide()
					.fadeIn(1000);
					//alert("You sent name = "+$("name",xml).text());
				}
			});

			return false;

		});

  	};


	// Form Behaviour
	// ---------------------------------------------
	if ($(".frmWrap").length > 0){
		
		function checkTextFields(formElement,forceHide){
			if($(formElement).val()==""){
				$(formElement).parent().attr("class","frmElement"); 
			} else {
				$(formElement).parent().attr("class","frmElement frmHasSome"); 
			};
		};
		function checkAllFields(){
			$(".frmText").each(function(){
				checkTextFields($(this),"n");
			});
		};
		
		$(".frmText").change(function(){
			checkTextFields($(this),"n");
		}).keyup(function(){
			checkTextFields($(this),"n");
		});
		
		checkAllFields();
		
		$(".frmHolder").click(function(){
			$(this).parent().find(".frmText").focus();
		});
				
	};


	// send contact form(s) via ajax
	// ==================================================
	if ($(".frmWrap").length > 0) {

		// submit contact form via ajax
		$(".frmSubmit").click(function(){
			
			var thisScrollID = $(this).parent().parent().parent().siblings(".frmHeader").attr("id");
			
			$.ajax({
				type: "POST",
				url: "" + $(".frmWrap").attr("action"),
				data: $(".frmWrap").serialize(),
				dataType: "xml",
				error: function() {
					// an internal error has occurred
					console.log("internal error - please try again later");
				},
				success: function(xml) {

					// get status response
					var statusMsg = $(xml).find("status").text();

					// set response status message
					if (statusMsg == "success") { 
						
						function showSuccessMessage(){
							//$.scrollTo(0,500);
							$.scrollTo('#'+thisScrollID,500);
							$(".frmWrap").slideUp(500,function(){
								//$.scrollTo({top:'-=100px'},500);
								//$(this).remove();
								$(".frmWrap .frmSuccess").removeClass("hide");
								$(".frmWrap fieldset").addClass("hide");
								$(".frmWrap").animate({opacity: 1},400,function(){
									$(".frmWrap").slideDown(500);
								});
							});
						};
						
						// all completed successfully, display the success messages
						if ($("#form_errors").length > 0) {
							$("#form_errors").slideUp(500, function(){
								$("#form_errors").remove();
								showSuccessMessage();
							});
						} else {
							showSuccessMessage();
						};
					} else if (statusMsg == "error") { 

						var errorBox = 'Please correct the following errors: \n\n----------------------------------------------------------\n'
						$(xml).find("error").each(function(){
							errorBox = errorBox + '\n- ' + $(this).find("message").text() + '\n';
						});
						errorBox = errorBox + '';
						
						alert(errorBox);

					};

				}
			});

			return false;

		});
	};


	// load google map
	// ----------------------------------------------
	if ($("#locationMap").length > 0) {
		var MYMAP = {
			map: null,
			bounds: null
		};

		MYMAP.init = function(selector, latLng, zoom) {
			var myOptions = {
				zoom:zoom,
				center: latLng,
				mapTypeId: google.maps.MapTypeId.ROADMAP
			};
			this.map = new google.maps.Map($(selector)[0], myOptions);
			this.bounds = new google.maps.LatLngBounds();
		};

		MYMAP.placeMarkers = function(filename) {
			$.get(filename, function(xml){
				$(xml).find("marker").each(function(){
					var name = $(this).find('name').text();
					var address = $(this).find('address').text();

					// create a new LatLng point for the marker
					var lat = $(this).find('lat').text();
					var lng = $(this).find('lng').text();
					var point = new google.maps.LatLng(parseFloat(lat),parseFloat(lng));

					// extend the bounds to include the new point
					MYMAP.bounds.extend(point);

					var marker = new google.maps.Marker({
						position: point,
						map: MYMAP.map
					});

					var infoWindow = new google.maps.InfoWindow();
					var html='<strong>'+name+'</strong><br />'+address;
					google.maps.event.addListener(marker, 'click', function() {
						infoWindow.setContent(html);
						infoWindow.open(MYMAP.map, marker);
					});
					//MYMAP.map.fitBounds(MYMAP.bounds);
				});
			});
		};
		var myLatLng = new google.maps.LatLng(53.35750, -6.22401);
		MYMAP.init('#locationMap', myLatLng, 11);

		MYMAP.placeMarkers('/themes/site/_xml/markers.xml');
	};
	
	
	
	// send comments forms via ajax
	// ---------------------------------------------
	if ($("#commentsForm").length > 0) {

		// function to add a comment to blog pages
		function addComment(commentName,commentMessage){

			// build comment block to be inserted onto page
			var commentBlock = '<div id="comment-latest" class="commentSingle hide"><div class="commentDetails"><div class="commentGravatar"><img src="http://www.gravatar.com/avatar/ad516503a11cd5ca435acc9bb6523536?s=46" alt="'+ commentName +'" width="46" height="46" /></div><div class="commentAuthor">'+ commentName +'</div><div class="commentDate">Posted just now!</div><div class="clear"></div></div><div class="commentContent">'+ commentMessage +'</div></div>';

			// check if no comments paragraph is there and get rid of it
			if ($("#comments #noComments").length > 0) {
				$("#comments #noComments").slideUp(function(){
					$("#comments #noComments").remove();
					$("#comments").append(commentBlock).animate({opacity: 1}, 300, function(){
						$("#comments #comment-latest").slideDown();
					});
				});
			} else {
				$("#comments").append(commentBlock).animate({opacity: 1}, 300, function(){
					$("#comments #comment-latest").slideDown().removeAttr("id");
				});
			};

			// blank the form fields and lock the submit button
			$("#comment_name").val("");
			$("#comment_email").val("");
			$("#comment_www").val("");
			$("#comment_content").val("");
			$("#commentsSubmit").attr("disabled","disabled").animate({ opacity: 1 }, 5000, function(){
				$("#commentsSubmit").removeAttr("disabled");
			});

		};


		// if the page has just loaded and there are errors on it, scroll to them
		if($("#form_errors").length > 0) {
			$("#form_errors").animate({ opacity: 1 }, 500, function(){
				$.scrollTo('#commentsForm', 800);
			})
		};

		// submit comments form via ajax
		$("#commentsSubmit").click(function(){
			var thisName = $("#comment_name").val();
			var thisEmail = $("#comment_email").val();
			var thisWebsite = $("#comment_www").val();
			var thisComment = $("#comment_content").val();
			var thisRealname = $("#realname").val();

			$.ajax({
				type: "POST",
				url: "" + $("#commentsForm form").attr("action"),
				data: "realname=" + thisRealname + "&comment_name=" + thisName + "&comment_email=" + thisEmail + "&comment_www=" + thisWebsite + "&comment_content=" + thisComment + "",
				dataType: "xml",
				error: function() {
					// an internal error has occurred
					alert("internal error - please try again later");
				},
				success: function(xml) {

					// get status response
					var statusMsg = $(xml).find("status").text();

					// set response status message
					if (statusMsg == "success") { 
						// all completed successfully, display the success messages
						if ($("#form_errors").length > 0) {
							$("#form_errors").slideUp(500, function(){
								$("#form_errors").remove();
								addComment($(xml).find("comment_name").text(),$(xml).find("comment_content").text());
							});
						} else {
							addComment($(xml).find("comment_name").text(),$(xml).find("comment_content").text());
						};
					} else if (statusMsg == "error") { 
						// an error has occurred, display the error messages
						if ($("#form_errors").length > 0) {
							$("#form_errors").slideUp(500, function(){
								$("#form_errors").remove();
								var errorBox = '<div id="form_errors" class="errorWrap hide"><ul>'
								$(xml).find("error").each(function(){
									errorBox = errorBox + '<li>' + $(this).find("message").text() + '</li>';
								});
								errorBox = errorBox + '</ul></div>';
								$("#commentsFormErrorWrap").prepend(errorBox).animate({opacity: 1}, 300, function(){
									$("#form_errors").slideDown(500);
								});
							});
						} else {
							var errorBox = '<div id="form_errors" class="errorWrap hide"><ul>'
							$(xml).find("error").each(function(){
								errorBox = errorBox + '<li>' + $(this).find("message").text() + '</li>';
							});
							errorBox = errorBox + '</ul></div>';
							$("#commentsFormErrorWrap").prepend(errorBox).animate({opacity: 1}, 100, function(){
								$("#form_errors").slideDown(500);
							});
						};
					};
				}
			});

			return false;

		});
	};



	// FLASH message
	// ---------------------------------------------
	$(".flashMessage").hide().fadeIn(200).wait(4000).fadeOut(600);	
	

});
