// JavaScript Document
$(function(){
	var baseURL = "http://www.housing.usu.edu/htm/housing-finder";
	var tourData = "";
	var assetdir = "/files/uploads/tour/";
	var imagedir = "/files/uploads/tour/images/";
	var stuType = null;
	var buildingName = null;
	var pricePer = "Semester";

	$(".warning").remove();
	
	$('a[rel*=facebox]').facebox();
	
// Get the XML
	$.get(assetdir+"housing-data.xml", function( xmlData ) {
		tourData = $( xmlData );
		getStyleList();
		$("#studentType").show();
		$("#2").hide();
		$("#3").hide();
		
		$("#studentType a").click(function() {
			stuType = $(this).attr("href");
			stuType = stuType.slice(1);
			getHousingList(stuType);
			$("#studentType").slideUp();
			$("#2").slideDown();
			return false;
		});
		$("#studentType em").each(function(){
			var txt = $(this).parent().text();
			$(this).text(txt);
		})
		$("#studentType a").parent().hover(function() {
			var stuType = $(this).find("a").attr("href")
			stuType = stuType.slice(1)
			$(this).find("em").animate({opacity: "show", top: "0"}, "slow");
			$(".arrow").animate({opacity: "hide"}, "fast", function() {
				$(this).remove();
				});
			$("<div></div>").addClass("arrow").css("background-image", "url("+assetdir+"images/arrow-"+stuType+"_375x50.gif)").appendTo("#studentType ul").animate({opacity: "show"}, "fast");
			},
			function () {
			$(this).find("em").animate({opacity: "hide", top: "10"}, "fast");
			}
		);

// Back button handler
		$(".back").click(function() {
			$("#viewer").empty();
			$(this).parent().slideUp();
			$(this).parent().prev().slideDown();
		});

// Referral handler
		var strHref = window.location.href;
		if (strHref.indexOf("#") == strHref.length-1) {
			strHref = strHref.substring(0, strHref.length - 1);
			}
		if (strHref.indexOf("stuType.") >-1) {
			var nStart = strHref.indexOf("stuType.") + 8;
			if (strHref.indexOf("/", nStart) >-1) {
				var nStop = strHref.indexOf("/", nStart);
				stuType = strHref.substring(nStart, nStop);
			}
			else {
				stuType = strHref.substring(nStart);
			}
		}
		if (strHref.indexOf("buildingName.") >-1) {
			var nStart = strHref.indexOf("buildingName.") + 13;
			if (strHref.indexOf("/", nStart) >-1) {
				var nStop = strHref.indexOf("/", nStart);
				buildingName = strHref.substring(nStart, nStop);
			}
			else {
				buildingName = strHref.substring(nStart);
			}
		}
		if (buildingName!=null && stuType!=null) {
			buildingName = buildingName.replace(/%20/g," ");
			stuType = stuType.replace(/%20/g," ");
			var x = tourData.find("name:contains("+buildingName+")").parent();
			getHousingList(stuType);
			getDetails(x);
			$("#studentType").hide();
			$("#3").show();
		}

//Build list of styles
		function getStyleList() {
			var selectedStyle = "none";
			tourData.find("style").each(function () {
				var styleName = $(this).find('name').text();
				var styleTitle = $(this).find('title').text();
				var styleInfo = $(this).find('description').text();
				function styleHousingList() {
					$("#styleInfo").html("<p>" + styleInfo + "</p>");
					$("#buildings > p").find("a").removeClass("selectedlist");
					$("."+styleName).find("a").addClass("selectedlist");
				};
				$("<h2>" + styleTitle + "</h2>")
						.appendTo("#styleList")
						.click(function() {
							styleHousingList();
							$(this).siblings().removeClass("highlightStyle").css("color", "#4A5EA2");
							$(this).addClass("highlightStyle").css("color", "#ffffff");
							selectedStyle = $(this);
						})// close click
						.mouseover(function(){
							$(this).siblings().removeClass("highlightStyle").css("color", "#4A5EA2");
							$(this).addClass("highlightStyle").css("color", "#ffffff");
							//record settings
						})
						.mouseout(function(){
							$(this).removeClass("highlightStyle").css("color", "#4A5EA2");
							$(selectedStyle).addClass("highlightStyle").css("color", "#ffffff");
							//restore settings
						});
			});//close each
		}; //close getStyleList
		
		function getHousingList(stuType) {
			$("#buildings").empty();
			pricePer = tourData.find(stuType).attr("pricePer");
			tourData.find(stuType).find("area").each(function() {
				var areaName = $(this).attr("title");
				$("#buildings").append("<h3>" + areaName + "</h3>");
				$(this).find("building").each(function() {
					var buildingType = $(this).attr("type");
					var buildingName = $(this).find("name").text();
					var buildingData = $(this);
					$("<p class="+buildingType+"><a href=\"#\">"+buildingName+"</a></p>")
						.appendTo("#buildings")
						.find("a")
						.mouseover(function(){
							//$(this).css("color", "#8095D1");
						})
						.mouseout(function(){
							//$(this).css("color", "#555555");
						})
						.click(function () {
							$("#2").slideUp();
							$("#3").slideDown();
							getDetails(buildingData);
							return false;
						});
				});
			});
		};

		function getDetails(buildingData) {
			var buildingName = buildingData.find("name").text();
			var buildingDescription = buildingData.find("description").text();
			var shareURL = baseURL+"/buildingName."+buildingName+"/stuType."+stuType;
			$("#share").attr("href", shareURL);
			$("#title").html(buildingName);
			$("#description").html(buildingDescription);
			$("#thumbnails").empty();
			$("#pricing").text("Price Per " + pricePer);
			buildingData.find("price").each(function(){
				var name = $(this).attr("name");
				var value = $(this).attr("value");
				$("#pricing").append("<br />"+name+": "+value);
			});
			if (buildingName == "Mobile Home Park"){
				$("#pricing").html("Price Per Month:<br/> Pad Fees (student owned) <br/> Older Lots: $284 <br/> Newer Lots: $313 <br/><br/> Rental Fees (USU owned, includes pad) <br/> Less than 600 Sq. Ft: $382 <br/> 601-750 Sq. Ft: $438 <br/>751-800 Sq. Ft: $470 <br/> 801-950 Sq. Ft: $501 <br/> More than 951 Sq. Ft: $563");
			}
			buildingData.find("media").each(function(){
				var title = $(this).attr("title");
				var src = assetdir+$(this).attr("src").replace(/xml_file=/, "xml_file="+assetdir).replace(/panoName=/, "panoName="+assetdir);
				var thumbnail = assetdir+$(this).attr("thumbnail");
				$('<a href="'+src+'"><span>'+title+"</span></a>")
					.appendTo("#thumbnails")
					.addClass("media")
					.css("background-image", "url("+thumbnail+")")
					.click(function(){
						$(this).siblings().removeClass("highlightMedia");
						$(this).addClass("highlightMedia");
						selectedMedia = $(this);
						$("#viewer").empty();
						var file = $(this).attr('href')
						//alert(file);
						if (file.match(".jpg"||".gif"||".png")) {
							$('<a href="'+file+'" rel="facebook"><img src=\"'+file+'\" /></a>').appendTo("#viewer");
							$("#viewer img").load(function(){
								var width = $("#viewer img").width();
								var height = $("#viewer img").height();
								var maxWidth = $("#viewer").width();
								var maxHeight = $("#viewer").height();
								if (width > maxWidth || height > maxHeight) {
									//alert("image is too large");
									if (width > height) {
										$("#viewer img").width(maxWidth);
									} else {
										$("#viewer img").height(maxHeight);
									}
								}
								$("#viewer a")
									.facebox()
									.prepend("<div>Click to enlarge</div>");
								$("#viewer div").css({
										 backgroundColor:"#ffffff",
										 position:"absolute",
										 margin:".25em",
										 padding:".25em"
										 });
								$("#viewer img").css("border", "0px");
								$("#viewer").height($("#viewer img").height());
							})
						}
						else {
							$(this)
							.clone()
							.empty()
							.appendTo("#viewer")
							.removeClass(".media")
							.media({width:390, height:245});
							$("#viewer").height(245);
					}
						return false;
					})
					.hover(
						function() {
							$(this).siblings().removeClass("highlightMedia");
							$(this).addClass("highlightMedia");
						},
						function() {
							$(this).removeClass("highlightMedia");
							$(selectedMedia).addClass("highlightMedia");
						}
					);
			});
			$("#viewer").empty();
			selectedMedia = $("#thumbnails a:first");
			selectedMedia
				.addClass("highlightMedia")
				.clone()
				.empty()
				.appendTo("#viewer")
				.removeClass(".media")
				.media({width:390, height:245});
			
		};

	// End get xml
	});
	
// End jquery functions
	
}); 
