function addLoadEvent(func) {
  var oldonload = window.onload;
  if (typeof window.onload != 'function') {
    window.onload = func;
  } else {
    window.onload = function() {
      oldonload();
      func();
    }
  }
}
function toggleVis(elementId){
	var el=document.getElementById(elementId);
	if (el.style.display=="block"){
		el.style.display="none";
		}
	else {
		el.style.display="block";
		}
	}
function toggleVisInline(elementId){
	var el=document.getElementById(elementId);
	if (el.style.display=="inline"){
		el.style.display="none";
		}
	else {
		el.style.display="inline";
		}
	}



// the following function is for the text
// 'Change my Suite Selection to Suite ###'
// the html for that should only shows up in a preassignment scenario.
// <p id="changeMyRoomToParagraph" style="display:none;">
// If you are happy with
// <strong>Suite <span id="newRoomSpan">210</span></strong>, click
// "continue".</p>
// which is why the function tests to see if that paragraph
// exists before continuing.
function changeMyRoomSelectionTo(newRoom) {
	if (!document.getElementById("changeMyRoomToParagraph")) return false;
	var newRoom = document.getElementById(newRoom);
	var roomRel = newRoom.getAttribute("rel");

	var roomChangePara = document.getElementById("changeMyRoomToParagraph");
	var newRoomSpan = document.getElementById("newRoomSpan");
	
	var newRoomSpan2 = document.getElementById("newRoomSpan2");
	
	roomChangePara.style.display = "block";
	newRoomSpan.firstChild.nodeValue = roomRel;
	newRoomSpan2.firstChild.nodeValue = roomRel;
	
}

// the following function is for the text
// 'Change my Suite Selection to Suite ###'
// the html for that should only shows up in a NO preassignment scenario.
// <p id="changeMyRoomToParagraphNoPre" style="display:none;">
// If you are happy with
// <strong>Suite <span id="newRoomSpan">210</span></strong>, click
// "continue".</p>
// which is why the function tests to see if that paragraph
// exists before continuing.
// If a user makes a room selection then changes floors, the html should
// reflect "display:block;" for this statement by default, showing their
// latest room selection.
function changeMyRoomSelectionToNoPre(newRoom) {
	if (!document.getElementById("changeMyRoomToParagraphNoPre")) return false;
	var newRoom = document.getElementById(newRoom);
	var roomRel = newRoom.getAttribute("rel");

	var roomChangePara = document.getElementById("changeMyRoomToParagraphNoPre");
	var newRoomSpan = document.getElementById("newRoomSpan");
	
	roomChangePara.style.display = "block";
	newRoomSpan.firstChild.nodeValue = roomRel;
	
}




function clearPops() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (var i=0;i<rooms.length;i++) {
		if (rooms[i].className == "onPop") {
			rooms[i].className = "on";
		}
		if (rooms[i].className == "availPop") {
			rooms[i].className = "avail";
		}
	}
}
function preparePops() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (i = 0; i < rooms.length; i++) {
		rooms[i].onclick = function() {
			if (this.className == "onPop") {
				return false;
			}
			if (this.className == "availPop") {
				return false;
			}
			if (this.className == "on") {
				clearPops();
				this.className = "onPop";
				imageCycler2(this);
				return false;
			}
			if (this.className == "avail") {
				clearPops();
				this.className = "availPop";
				imageCycler2(this);
				return false;
			}
			if (this.className == "closeAvailPop") {
				this.className = "avail";
				return false;
			}
			if (this.className == "closeOnPop") {
				this.className = "on";
				return false;
			}
		}
	}
}
addLoadEvent(preparePops);

function prepareClose() {
	var plan = document.getElementById("plan");
	var imgs = plan.getElementsByTagName("img");
	for (i = 0; i < imgs.length; i++) {
		if (imgs[i].className == "closePop") {
			imgs[i].onclick = function() {
				var atag = this.parentNode.parentNode;
				if (atag.className == "onPop") {
					if (window.event && !window.event.cancelBubble) {
						atag.className = "on";
						window.event.cancelBubble = "true";
					} else {
						atag.className = "closeOnPop";
					}
				}
				if (atag.className == "availPop") {
					atag.className = "closeAvailPop";
				}
			}
		}
	}
}
addLoadEvent(prepareClose);



function makeAvailableRoomsViewable() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (var i=0;i<rooms.length;i++) {
		if (rooms[i].className == "avail") {
			rooms[i].style.display = "block";
		}
	}
}
function makeAvailableRoomsUnViewable() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (var i=0;i<rooms.length;i++) {
		if (rooms[i].className == "availPop") {
			rooms[i].className = "avail";
		}
		if (rooms[i].className == "avail") {
			rooms[i].style.display = "none";
		}
	}
}
function prepareShowingAvailableRooms() {
	if (!document.getElementById("statementShowLink")) return false;
	var showLink = document.getElementById("statementShowLink");
	showLink.onclick = function() {
		toggleVis("statementShow");
		toggleVis("alternateRooms");
		toggleVis("changeMyRoomToParagraph");
		return false;
	}
	var hideLink = document.getElementById("statementHideLink");
	hideLink.onclick = function() {
		makeAvailableRoomsUnViewable();
		document.getElementById("statementShow").style.display = "block";
		document.getElementById("alternateRooms").style.display = "none";
		document.getElementById("changeMyRoomToParagraph").style.display = "none";
		document.getElementById("ulFloor2").style.display = "none";
		document.getElementById("deactivateThisFloorSpan").style.display = "none";
		document.getElementById("activateThisFloorSpan").style.display = "inline";
		return false;
	}
}
addLoadEvent(prepareShowingAvailableRooms);

function prepareFloors() {
	if (!document.getElementById("activateThisFloor")) return false;
	var floorLink = document.getElementById("activateThisFloor");
	floorLink.onclick = function() {
		makeAvailableRoomsViewable();
		toggleVis("ulFloor2");
		toggleVisInline("deactivateThisFloorSpan");
		toggleVisInline("activateThisFloorSpan");
		return false;
	}
}
addLoadEvent(prepareFloors);

function turnOtherOnRoomsToAvail() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (var i=0;i<rooms.length;i++) {
		if (rooms[i].className == "on") {
			rooms[i].className = "avail";
			rooms[i].style.display = "block";
		}
	}
}
function changeRooms() {
	var plan = document.getElementById("plan");
	var rooms = plan.getElementsByTagName("a");
	for (i = 0; i < rooms.length; i++) {
		var spans = rooms[i].getElementsByTagName("span");
		for (j = 0; j < spans.length; j++) {
			if (spans[j].className == "switchRoom") {
				spans[j].onclick = function() {
					turnOtherOnRoomsToAvail();
					selectTheRoomRadio(this);
					this.parentNode.parentNode.className = "on";
				}
			}
		}
	}
}
addLoadEvent(changeRooms);



/* for image cycler */
/* this needs some major help */
/* ============================================================== */
// imgCycle
// imgprev
// roomImgCurrentNum
// totalImages
// imgnext

function imageCycler2(room) {
	var room = document.getElementById(room.getAttribute("id"));
	var spans = room.getElementsByTagName("span");
	for (i = 0; i < spans.length; i++) {
		if(spans[i].className == "imgCycle") {
			var imgCycle = spans[i];
		}
		if(spans[i].className == "imgprev") {
			var imgprev = spans[i];
		}
		if(spans[i].className == "roomImgCurrentNum") {
			var roomImgCurrentNum = spans[i];
		}
		if(spans[i].className == "totalImages") {
			var totalImages = spans[i];
		}
		if(spans[i].className == "imgnext") {
			var imgnext = spans[i];
		}
	}
	var imgs = room.getElementsByTagName("img");
	for (k = 0; k < imgs.length; k++) {
		if (imgs[k].className == "roomImg") {
			var roomImg = imgs[k];
		}
	}
	
	var roomImages = Array(2);
	roomImages[0] = "images/roomtype01.jpg";
	roomImages[1] = "images/roomtype02.jpg";

	// set the 'total' part in the html
	totalImages.firstChild.nodeValue = roomImages.length;
	
	// set the default picture to be the first one in the array
	var counter = 0;
	roomImg.setAttribute("src",roomImages[counter]);
	roomImgCurrentNum.firstChild.nodeValue = counter+1;
	
	// remove the 'previous' link by default
	imgprev.style.display = "none";
		
	// if there is only one picture, remove the 'next' link by default
	if (roomImages.length == 1) imgnext.style.display = "none";
	if (roomImages.length > 1) imgnext.style.display = "inline";
	
	imgnext.onclick = function() {
		counter = counter + 1;
		if (counter == roomImages.length-1) {
			imgnext.style.display = "none";
		}
		roomImg.setAttribute("src",roomImages[counter]);
		imgprev.style.display = "inline";
		roomImgCurrentNum.firstChild.nodeValue = counter+1;
	}
	imgprev.onclick = function() {
		counter = counter - 1;
		if (counter == 0) {
			imgprev.style.display = "none";
		}
		roomImg.setAttribute("src",roomImages[counter]);
		imgnext.style.display = "inline";
		roomImgCurrentNum.firstChild.nodeValue = counter+1;
	}
}



/* Interaction with left side radio list and right side floorplan */
/* ============================================================== */
function selectTheRoomRadio(roomswitchspan) {
	var roomID = roomswitchspan.parentNode.parentNode.getAttribute("id");
	var radioList = document.getElementById("roomRadioList");
	var radios = radioList.getElementsByTagName("input");
	for (i = 0; i < radios.length; i++) {
		if (radios[i].className == roomID) {
			radios[i].checked = true;
		}
	}
	changeMyRoomSelectionTo(roomID);
	changeMyRoomSelectionToNoPre(roomID);
}
function prepareRadios() {
	var radioList = document.getElementById("roomRadioList");
	var radios = radioList.getElementsByTagName("input");
	for (i = 0; i < radios.length; i++) {
		radios[i].onclick = function () {
			var room = this.className;
			var roomToTurnOn = document.getElementById(room);
			turnOtherOnRoomsToAvail();
			roomToTurnOn.className = "on";
			changeMyRoomSelectionTo(room);
			changeMyRoomSelectionToNoPre(room);
		}
	}
}
addLoadEvent(prepareRadios);



/* clicking the 'view a map of surrounding area' link is a browser popup */
/* ===================================================================== */
function popupMap(winURL) {
	window.open(winURL,"popup","resizable=1,location=0,toolbar=0,scrollbars=1,width=500,height=500");
}
function prepareLinks() {
	if (!document.getElementsByTagName) return false;
	var maplink = document.getElementById("popupMap");
	maplink.onclick = function() {
				popupMap(this.getAttribute("href"));
				return false;
	}
}
addLoadEvent(prepareLinks);