/***************************
Author: Sherwin Sena Aborot
Date: 10/18/2008
Purpose:
	To perform dynamic functionality require by the Product Selector Page
***************************/

var currentResidence = 1;
var currentView = 1;
var currentPopUpImage = "";
var photoTourImgCtr = 0;
var slideShowIntervalId = 0;
var isPhotoTour = false;

function switchResidence(residenceId) {
	try {
		offset = window.location.href.indexOf('?');
		if ( offset >= 0 ) {
			if ( offset == (window.location.href.length-1) ) {
				basicURL = window.location.href.substring(0,offset);
				window.location = basicURL  + "?cid=" + residenceId;
			} else {
				basicURL = window.location.href;
				window.location = basicURL  + "&cid=" + residenceId;
			}
		} else {
			basicURL = window.location.href;
			window.location = basicURL  + "?cid=" + residenceId;
		}
	} catch(Exception) {
		alert("Switch Residence: " + Exception);
	}
	return false;
}

function swapPhotos(residenceId) {
	try {
		var descriptionItems = document.getElementById( 'descriptionContainer' ).getElementsByTagName('DIV');
		var targetDescription = document.getElementById( 'description'+residenceId );
		var interiorItems = document.getElementById( 'interiorContainer' ).getElementsByTagName('DIV');
		var targetInterior = document.getElementById( 'interiorImage'+residenceId );
		var exteriorItems = document.getElementById( 'exteriorContainer' ).getElementsByTagName('DIV');
		var targetExterior = document.getElementById( 'exteriorImage'+residenceId );
		
		// HIDE ALL TEXT DESCRIPTION
		for ( x=0;x<descriptionItems.length;x++ ) {
			descriptionItems[x].className = "description";
		}			
		
		// HIDE ALL INTERIOR PHOTOS
		for ( x=0;x<interiorItems.length;x++ ) {
			if ( interiorItems[x].className != "clearBox" ) {
				interiorItems[x].className = "interior";
			}
		}	
		
		// HIDE ALL EXTERIOR PHOTOS
		for ( x=0;x<exteriorItems.length;x++ ) {
			if ( exteriorItems[x].className != "clearBox" ) {
				exteriorItems[x].className = "exterior";
			}
		}		
		
		// SHOW ALL CONTENTS FOR SELECTED RESIDENCE
		targetDescription.className = "activeDescription";	
		targetInterior.className = "activeInterior";
		targetExterior.className = "activeExterior";
		var t=setTimeout("showLargePhoto();",1);	
	} catch(Exception) {
		alert("Swap Photos: " + Exception);
	}
	return false;
}

function showLargePhoto() {
	try {
		var targetInterior = document.getElementById( 'interiorImage'+currentResidence );
		var targetExterior = document.getElementById( 'exteriorImage'+currentResidence );
		var interiorFirstImage = targetInterior.getElementsByTagName( 'IMG' )[0];
		var exteriorFirstImage = targetExterior.getElementsByTagName( 'IMG' )[0];
		var interiorLargeImage = document.getElementById( 'interiorLargeImage' );
		var exteriorLargeImage = document.getElementById( 'exteriorLargeImage' );
		var interiorDescription = document.getElementById( 'interiorImageDesc' );
		var exteriorDescription = document.getElementById( 'exteriorImageDesc' );
		
		// SET IMAGE SOURCE AND DESCRIPTION
		interiorLargeImage.src = interiorFirstImage.src;
		exteriorLargeImage.src = exteriorFirstImage.src;
		interiorDescription.innerHTML = interiorFirstImage.getAttribute( 'ALT' );
		exteriorDescription.innerHTML = exteriorFirstImage.getAttribute( 'ALT' );
	}catch(Exception) {
		alert("Show Large Photo: " + Exception);
	}
	return false;
}

function swapContent(residenceId) {
	try {
		var descriptionItems = document.getElementById( 'descriptionContainer' ).getElementsByTagName('DIV');
		var targetDescription = document.getElementById( 'description'+residenceId );			
		var floorPlanItems = document.getElementById( 'floorPlanContainer' ).getElementsByTagName('DIV');
		var targetFloorPlan = document.getElementById( 'floorPlan'+residenceId );					
		var elevationItems = document.getElementById( 'elevationContainer' ).getElementsByTagName('DIV');
		var targetElevation = document.getElementById( 'elevation'+residenceId );				

		// HIDE ALL TEXT DESCRIPTION
		for ( x=0;x<descriptionItems.length;x++ ) {
			descriptionItems[x].className = "description";
		}
		// HIDE ALL FLOOR PLANS
		for ( x=0;x<floorPlanItems.length;x++ ) {
			floorPlanItems[x].className = "floorPlan";
		}
		// HIDE ALL ELEVATIONS
		for ( x=0;x<elevationItems.length;x++ ) {
			elevationItems[x].className = "elevation";
		}
		
		// SHOW ALL CONTENTS FOR SELECTED RESIDENCE
		targetDescription.className = "activedescription";			
		targetFloorPlan.className = "activeFloorPlan";
		targetElevation.className = "activeElevation";
	} catch(Exception) {
		alert("Swap Content: " + Exception);
	}
	return false;
}

function changeView(viewId) {
	try {
		var view1 = document.getElementById( 'view1' );
		var view2 = document.getElementById( 'view2' );
		var switch1 = "";
		var switch2 = "";	
		
		if ( isPhotoTour ) {
			switch1 = document.getElementById( 'switchInterior' );
			switch2 = document.getElementById( 'switchExterior' );
		} else {
			switch1 = document.getElementById( 'switchFloorPlan' );
			switch2 = document.getElementById( 'switchElevation' );
		}
		
		switch(viewId) {
			case 1: 
				view1.style.display = "block"; 
				view2.style.display = "none"; 
				switch1.className = 'activeSwitch'; 
				switch2.className = ""; 
				expandPopUpContainer();
				currentView = 1;
				if ( isPhotoTour ) {
					photoTourImgCtr = 0;
					setUpPhotoTourSlides(currentResidence,5000);
				}
				break;
			case 2: 
				view2.style.display = "block"; 
				view1.style.display = "none"; 
				switch2.className = 'activeSwitch'; 
				switch1.className = "";
				expandPopUpContainer();
				currentView = 2;
				if ( isPhotoTour ) {
					photoTourImgCtr = 0;
					setUpPhotoTourSlides(currentResidence,5000);
				}
				break;
			default: break;
		}
	} catch(Exception) {
		alert("Change View: " + Exception);
	}
	return false;
}

function formatElevations() {
	var elevationItems = document.getElementById( 'elevationContainer' ).getElementsByTagName( 'DIV' ) || "No Elevations";

	if ( elevationItems != "No Elevations" ) {
		for ( x=0;x<elevationItems.length;x++ ) {
			var elevationImages = elevationItems[x].getElementsByTagName( 'SPAN' ) || "No Elevation Images";
			
			try {
				for ( y=0;y<elevationImages.length;y++ ) {
					var image = elevationImages[y].getElementsByTagName( 'IMG' )[0].src;
					var label = elevationImages[y].getElementsByTagName( 'H3' ) || "";
					var blownUpLabel = "";
					
					if ( label.length > 0 ) {
						label = label[0].innerHTML;
						blownUpLabel = elevationImages[y].getElementsByTagName( 'H3' )[1].innerHTML || "NoElevationLabel";
					} else {
						label = "NoElevationLabel";
					}
					
					var elevationSPAN = document.createElement('SPAN');
					var elevationIMG = document.createElement('IMG');
					var elevationTXT = "";

					if ( label != "NoElevationLabel" ) { elevationTXT = document.createTextNode(label); }
					
					elevationIMG.src = image;
					elevationIMG.id = ''+elevationImages[y].id;
					elevationSPAN.className = "elevationItem";
					elevationSPAN.appendChild(elevationIMG);

					if ( label != "NoElevationLabel" ) { 
						elevationSPAN.appendChild(elevationTXT); 
						setOnClickEvent(document.getElementById(elevationImages[y].id),image,blownUpLabel);
					} else {
						setOnClickEvent(document.getElementById(elevationImages[y].id),image,"");
					}
					elevationImages[y].innerHTML = elevationSPAN.innerHTML;
				}
			} catch(Exception) {
				alert("Format Elevations: " + Exception);
			}
		}
	}
}

function expandPopUpContainer() {
	try {
		var popUpContainer = document.getElementById('popUpContainer');
		var objContainer = document.getElementById('objBody');
		var imgContainer = document.getElementById('imageContainer');
		var cloak = document.getElementById('cloak');
		var height = document.documentElement.clientHeight > objContainer.offsetHeight ? document.documentElement.clientHeight : objContainer.offsetHeight;
		popUpContainer.style.height = height + "px";
		imgContainer.style.height = (height - 20) + "px";
		cloak.style.height = height + "px";
	} catch(Exception) {
		alert("ExpandPopUpContainer: " + Exception);
	}
}

function closePopUp() {
	try {
		var popUpContainer = document.getElementById('popUpContainer');
		var cloak = document.getElementById('cloak');
		popUpContainer.style.display = "none";
		cloak.style.display = "none";
	} catch(Exception) {
		alert("closePopUp: " + Exception);
	}
	return false;
}

function openPopUp(image,label) {
	try {
		var popUpContainer = document.getElementById('popUpContainer');
		var cloak = document.getElementById('cloak');
		var ImageContainer = document.getElementById('popUpImage');
		var labelContainer = document.getElementById('imageLabel');
		var imageBox = document.getElementById('imageBox');
		var imageLabel = label || "No Label";
		var addtMargin = getScrollHeight();
		
		// CENTER IMAGE ON CURRENT PAGE VIEW PERSPECTIVE
		imageBox.style.top = (addtMargin+140) + "px";
		
		ImageContainer.src = image;
		if ( imageLabel != "No Label" ) { 
			labelContainer.style.display = "block"; 
			labelContainer.innerHTML = label; 
		} else { 
			labelContainer.style.display = "none";
		}
		popUpContainer.style.display = "block";
		cloak.style.display = "block";
	} catch(Exception) {
		alert("OpenPopUp: " + Exception);
	}
}

function setOnClickEvent(obj,image,label) {
	try {
		if ( label.length > 0 ) {
			obj.onclick = function() { openPopUp(image,label) }
		} else {
			obj.onclick = function() { openPopUp(image) }
		}
	} catch(Exception) {
		alert("SetOnClickEvent: " + Exception);
	}
	return false;
}

function enlargeImage(imagePath,imageDesc,viewId) {
	try {
		slideShowIntervalId = window.clearInterval(slideShowIntervalId);
		var largeImage = "";
		var largeImageDesc = "";
		switch(viewId) {
			case 1: 
				largeImage = document.getElementById('interiorLargeImage');
				largeImageDesc = document.getElementById('interiorImageDesc');
				largeImage.src = imagePath;
				largeImageDesc.innerHTML = imageDesc;			
				break;
			case 2: 
				largeImage = document.getElementById('exteriorLargeImage');
				largeImageDesc = document.getElementById('exteriorImageDesc');
				largeImage.src = imagePath;
				largeImageDesc.innerHTML = imageDesc;			
				break;
		}
	} catch(Exception) {
		alert("EnlargeImage: " + Exception);
	}
	return false;
}

function startPhotoTourShow() {
	var images = "";
	var slideImage = "";
	try {	
		if ( currentView == 1 ) {
			images = document.getElementById( 'interiorImage'+currentResidence ).getElementsByTagName( 'IMG' );
			slideImage = document.getElementById( 'interiorLargeImage' );
			slideDesc = document.getElementById( 'interiorImageDesc' );
			slideImage.src = images[photoTourImgCtr].src;
			slideDesc.innerHTML = images[photoTourImgCtr].alt;
		} else if ( currentView == 2 ) {
			images = document.getElementById( 'exteriorImage'+currentResidence ).getElementsByTagName( 'IMG' );
			slideImage = document.getElementById( 'exteriorLargeImage' );
			slideDesc = document.getElementById( 'exteriorImageDesc' );
			slideImage.src = images[photoTourImgCtr].src;
			slideDesc.innerHTML = images[photoTourImgCtr].alt;
		}
		if ( photoTourImgCtr < images.length - 1 ) { photoTourImgCtr++; } else { photoTourImgCtr = 0; }	
	} catch (Exception) {
		alert("StartPhotoTourShow: " + Exception);
	}
	return false;
}

function setUpPhotoTourSlides(residence,delayInt) {
	try {
		currentResidence = residence;
		window.clearInterval(slideShowIntervalId);
		slideShowIntervalId = window.setInterval("startPhotoTourShow()",delayInt);
	} catch(Exception) {
		alert("SetUpPhotoTourSlides: " + Exception);
	}
	return false;
}

/*
 Author: Stephen Chalmers 
Website: http://bytes.com/forum/thread555960.html
*/
function getScrollHeight() {
	var maxDisplacement=0;

	if( typeof self.pageYOffset!='undefined' )
	maxDisplacement=self.pageYOffset;
	else
	if( document.compatMode && document.compatMode != 'BackCompat' )
	maxDisplacement=document.documentElement.scrollTop ;
	else
	if( document.body && typeof(document.body.scrollTop)!='undefined' )
	maxDisplacement=document.body.scrollTop;

	return maxDisplacement;
}