// Defines browser type ////////////////////////////////////////////////////////////////////////////////
var browserName=navigator.appName;

// Create array of all objects /////////////////////////////////////////////////////////////////////////
var objectList = new Array();
objectList[0] = 'opacityLayer';
objectList[1] = 'hmContent';
objectList[2] = 'currentHomes';
objectList[3] = 'homesForm';
objectList[4] = 'picturesList';

// Initial function that sets everything up ////////////////////////////////////////////////////////////
function init(message){
	// change the page title
	document.getElementById('pgTitle').innerHTML = "Administration Home";
	
	// show home content, hide all others
	showElement('hmContent');
	
	// call to load neighborhoods select menu
	loadCurrentHomes_request();
}


////////////////////////////////////////////////////////////////////////////////////////////////////////



// Universal functions /////////////////////////////////////////////////////////////////////////////////
function showElement(objectName){
	// loop thru each object in the object list array
	for (var i=0; i < objectList.length; i++){
		
		// check if currect objectList element matches the object name passed in
		if (objectList[i] == objectName){
			// if yes, then show object on page
			document.getElementById(objectName).style.display = 'block';
		}
		
		// if objects do not match
		else {
			// hide object on page
			document.getElementById(objectList[i]).style.display = 'none';
		}
		
	}
}

// Load current homes list /////////////////////////////////////////////////////////////////////////////
function loadCurrentHomes_request(){
	// update page title
	document.getElementById('pgTitle').innerHTML = "Currently Available Homes";
	
	// show home content, hide all others
	showElement('currentHomes');
	
	// call cfc to get all available homes
	http("GET", "index.cfc?method=getHomes", loadCurrentHomes_response);
}
function loadCurrentHomes_response(obj){
	// if IE
	if (browserName == "Microsoft Internet Explorer"){
		
		// get current num of rows in the results table
		var currentNumofRows = loadCurrentHomes.rows.length;
		
		// delete the current rows from the results table
		for(var z=0; z < currentNumofRows; z++) {loadCurrentHomes.deleteRow(0);}
		
		// insert 1st HR row and label cells
		var hrRow1 = loadCurrentHomes.insertRow(-1);
		var hrCell1 = hrRow1.insertCell(-1);
		hrCell1.colSpan = 6;
		hrCell1.innerHTML = '<hr>';
		
		// insert new header row and label cells
		var headerRow = loadCurrentHomes.insertRow(-1);
		
		// insert floor plan cell in header row
		var addressHeader = headerRow.insertCell(-1);
		addressHeader.className = "tableTitle";
		addressHeader.innerHTML = 'Address';
		
		// insert neighborhood cell in header row
		var priceHeader = headerRow.insertCell(-1);
		priceHeader.className = "tableTitle";
		priceHeader.innerHTML = 'Price';
		
		// insert address cell in header row
		var sqftHeader = headerRow.insertCell(-1);
		sqftHeader.className = "tableTitle";
		sqftHeader.innerHTML = 'Sq. Ft.';
		
		// insert size cell in header row
		var bedHeader = headerRow.insertCell(-1);
		bedHeader.className = "tableTitle";
		bedHeader.innerHTML = 'Bed / Bath';
		
		// insert price cell in header row
		var nbhHeader = headerRow.insertCell(-1);
		nbhHeader.className = "tableTitle";
		nbhHeader.innerHTML = 'Neighborhood';

		// insert options cell in header row
		var optionsHeader = headerRow.insertCell(-1);
		optionsHeader.className = "tableTitle";
		optionsHeader.innerHTML = 'Options';
		
		// insert 2nd HR row and label cells
		var hrRow2 = loadCurrentHomes.insertRow(-1);
		var hrCell2 = hrRow2.insertCell(-1);
		hrCell2.colSpan = 6;
		hrCell2.innerHTML = '<hr>';
		
		// loop thru object length according to obj rows returned
		for(var i=0; i < obj.length; i++) {
			
			// insert new rows according to number of rows returned
			var newRow = loadCurrentHomes.insertRow(-1);
			newRow.className = "roHighlight";
			
			// loop thru 2nd level array elements
			for (var j=0; j < 6; j++){
				
				// insert new cells in new row
				var newCell = newRow.insertCell(-1);
				
				// add CSS class to each cell
				newCell.className = "tableLabel";
				
				// add options links
				if (j == 5){
					newCell.innerHTML = 
						"<u onclick='loadHomeUpdateInfo_request("+obj[i][5]+");' style='color:blue'>Update</u> &nbsp;|&nbsp; "+
						"<a href='pictures.cfm?action=add&picID=&homeID="+obj[i][5]+"' style='color:blue'>Add Pics</a> &nbsp;|&nbsp; "+
						"<u onclick='loadPicList_request("+obj[i][5]+");' style='color:blue'>Edit Pics</u> &nbsp;|&nbsp; "+
						"<u onclick='deleteHome_request("+obj[i][5]+");' style='color:blue'>Delete</u>";
				}
				
				// if not options, add raw data
				else {newCell.innerHTML = obj[i][j];}
			}
		}
		
	}
	
	// if Not IE
	else {document.getElementById('loadCurrentHomes').innerHTML = obj;}
}

// Add new home functions //////////////////////////////////////////////////////////////////////////////
function addHome_call(){
	// show bg layer
	showElement('opacityLayer');
	
	// show avail home form
	document.getElementById('homesForm').style.display = 'block';
	
	// change form submit button text to add
	document.getElementById('addHome').style.display = 'inline';
	document.getElementById('updateHome').style.display = 'none';
	
	// change form title
	document.getElementById('homeFormTitle').innerHTML = 'Add a New Home:';
	
	// set all form elements to defaults
	document.getElementById('id').value = '';
	document.getElementById('price').value = '';
	document.getElementById('address').value = '';
	document.getElementById('sqft').value = '';
	document.getElementById('bedrooms').value = '';
	document.getElementById('bathrooms').value = '';
	document.getElementById('garagesize').value = '';
	document.getElementById('neighborhood').value = '';
	document.getElementById('comments').value = '';
}
function addHome_request(form){
	
	// setup vars for sending to cfc and error msgs
	var allFormVars = '';
	var alertMsg = "";
	
	// if price field is blank, alert user
	if (form.price.value == ''){alertMsg = alertMsg+'The price field is blank.\n';}
	else {allFormVars = allFormVars+'&price='+form.price.value;}
	
	// check if address is blank
	if (form.address.value == ''){alertMsg = alertMsg+'The address field is blank.\n';}
	else {allFormVars = allFormVars+'&address='+form.address.value;}
	
	// check if neighborhood is blank
	if (form.neighborhood.value == ''){alertMsg = alertMsg+'The neighborhood field is blank.\n';}
	else {allFormVars = allFormVars+'&neighborhood='+form.neighborhood.value;}
	
	// if sqft is blank
	if (form.sqft.value == ''){alertMsg = alertMsg+'The square feet field is blank.\n';}
	else {allFormVars = allFormVars+'&sqft='+form.sqft.value;}
	
	// if bedrooms is blank
	if (form.bedrooms.value == ''){alertMsg = alertMsg+'The bedrooms field is blank.\n';}
	else {allFormVars = allFormVars+'&bedrooms='+form.bedrooms.value;}
	
	// if bathrooms is blank
	if (form.bathrooms.value == ''){alertMsg = alertMsg+'The bathrooms field is blank.\n';}
	else {allFormVars = allFormVars+'&bathrooms='+form.bathrooms.value;}
	
	// if garagesize is blank
	if (form.garagesize.value == ''){alertMsg = alertMsg+'The garage size field is blank.\n';}
	else {allFormVars = allFormVars+'&garagesize='+form.garagesize.value;}
	
	// if comments is blank
	if (form.comments.value == ''){alertMsg = alertMsg+'The comments field is blank.\n';}
	else {allFormVars = allFormVars+'&comments='+form.comments.value;}
	
	
	// if no blank fields
	if (alertMsg == ""){
			
		// call cfc to add home
		http("GET", "index.cfc?method=addHomeCFC", addHome_response, allFormVars);
	}
	
	// if some blank, confirm before submit
	else {
		
		// ask to verify submit
		var answer = confirm(alertMsg+'\nDo you still want to add this home?');
		
		// if user confirms update with blank fields
		if (answer){
			
			// call cfc to update home
			http("GET", "index.cfc?method=addHomeCFC", addHome_response, allFormVars);
		}
	}
	
}
function addHome_response(obj){
	// alert with message returned from CFC
	alert(obj);
	
	// hide home form and opacity layer
	document.getElementById('opacityLayer').style.display = 'none';
	document.getElementById('homesForm').style.display = 'none';
	
	// reload homes list
	loadCurrentHomes_request();
}

// Update home functions ///////////////////////////////////////////////////////////////////////////////
function loadHomeUpdateInfo_request(id){
	// show bg layer
	showElement('opacityLayer');
	
	// show avail home form
	document.getElementById('homesForm').style.display = 'block';
	
	// change form submit button text to add
	document.getElementById('addHome').style.display = 'none';
	document.getElementById('updateHome').style.display = 'inline';
	
	// change form title
	document.getElementById('homeFormTitle').innerHTML = 'Update this Home:';
	
	// call cfc to get home info
	http("GET", "index.cfc?method=getHomeInfo", loadHomeUpdateInfo_response, 'id='+id);
}
function loadHomeUpdateInfo_response(obj){
	
	// populate forms
	document.getElementById('id').value = obj.id;
	document.getElementById('price').value = obj.price;
	document.getElementById('address').value = obj.address;
	document.getElementById('sqft').value = obj.sqft;
	document.getElementById('bedrooms').value = obj.bedrooms;
	document.getElementById('bathrooms').value = obj.bathrooms;
	document.getElementById('garagesize').value = obj.garagesize;
	document.getElementById('neighborhood').value = obj.neighborhood;
	document.getElementById('comments').value = obj.comments;
	
}
function updateHome_request(form){
	
	// setup vars for sending to cfc and error msgs
	var allFormVars = 'id='+form.id.value;
	var alertMsg = "";
	
	// if price field is blank, alert user
	if (form.price.value == ''){alertMsg = alertMsg+'The price field is blank.\n';}
	else {allFormVars = allFormVars+'&price='+form.price.value;}
	
	// check if address is blank
	if (form.address.value == ''){alertMsg = alertMsg+'The address field is blank.\n';}
	else {allFormVars = allFormVars+'&address='+form.address.value;}
	
	// check if neighborhood is blank
	if (form.neighborhood.value == ''){alertMsg = alertMsg+'The neighborhood field is blank.\n';}
	else {allFormVars = allFormVars+'&neighborhood='+form.neighborhood.value;}
	
	// if sqft is blank
	if (form.sqft.value == ''){alertMsg = alertMsg+'The square feet field is blank.\n';}
	else {allFormVars = allFormVars+'&sqft='+form.sqft.value;}
	
	// if bedrooms is blank
	if (form.bedrooms.value == ''){alertMsg = alertMsg+'The bedrooms field is blank.\n';}
	else {allFormVars = allFormVars+'&bedrooms='+form.bedrooms.value;}
	
	// if bathrooms is blank
	if (form.bathrooms.value == ''){alertMsg = alertMsg+'The bathrooms field is blank.\n';}
	else {allFormVars = allFormVars+'&bathrooms='+form.bathrooms.value;}
	
	// if garagesize is blank
	if (form.garagesize.value == ''){alertMsg = alertMsg+'The garage size field is blank.\n';}
	else {allFormVars = allFormVars+'&garagesize='+form.garagesize.value;}
	
	// if comments is blank
	if (form.comments.value == ''){alertMsg = alertMsg+'The comments field is blank.\n';}
	else {allFormVars = allFormVars+'&comments='+form.comments.value;}
	
	
	// if no blank fields
	if (alertMsg == ""){
			
		// call cfc to add home
		http("GET", "index.cfc?method=updateHomeCFC", updateHome_response, allFormVars);
	}
	
	// if some blank, confirm before submit
	else {
		
		// ask to verify submit
		var answer = confirm(alertMsg+'\nDo you still want to update this home?');
		
		// if user confirms update with blank fields
		if (answer){
			
			// call cfc to update home
			http("GET", "index.cfc?method=updateHomeCFC", updateHome_response, allFormVars);
		}
	}
	
}
function updateHome_response(obj){
	// alert with message returned from CFC
	alert(obj);
	
	// hide home form and opacity layer
	document.getElementById('opacityLayer').style.display = 'none';
	document.getElementById('homesForm').style.display = 'none';
	
	// reload homes list
	loadCurrentHomes_request();
}

// Cancel homes form ///////////////////////////////////////////////////////////////////////////////////
function cancelHomeForm(){
	// hide eveything and show homes list
	showElement('currentHomes');
}

// Delete a Home ///////////////////////////////////////////////////////////////////////////////////////
function deleteHome_request(id){
	// ask to verify delete
	var answer = confirm('Delete this Home?');
	
	// if confirmed, send to CFC
	if (answer){
		
		// call cfc to delete home
		http("GET", "index.cfc?method=deleteHome", deleteHome_response, 'id='+id);
		
	}
}
function deleteHome_response(obj){
	// alert with message returned from CFC
	alert(obj);
	
	// call to load neighborhoods select menu
	loadCurrentHomes_request();
}


////////////////////////////////////////////////////////////////////////////////////////////////////////



// Load Pictures list //////////////////////////////////////////////////////////////////////////////////
function loadPicList_request(id){
	// update pg title
	document.getElementById('pgTitle').innerHTML = "Home Pictures List";
	
	// show pictures object
	showElement('picturesList');
	
	// call cfc to get all available homes
	http("GET", "index.cfc?method=getPicList", loadPicList_response, 'id='+id);
}
function loadPicList_response(obj){
	// if pics returned for this home
	if (isNaN(obj)){
		
		// show pics list, in IE format
		if (browserName == "Microsoft Internet Explorer"){
			
			// get current num of rows in the results table
			var currentNumofRows = loadPictures.rows.length;
			
			// delete the current rows from the results table
			for(var z=0; z < currentNumofRows; z++) {loadPictures.deleteRow(0);}
			
			// insert 1st HR row and label cells
			var hrRow1 = loadPictures.insertRow(-1);
			var hrCell1 = hrRow1.insertCell(-1);
			hrCell1.colSpan = 4;
			hrCell1.innerHTML = '<hr>';
			
			// insert new header row and label cells
			var headerRow = loadPictures.insertRow(-1);
			
			// insert floor plan cell in header row
			var picHeader = headerRow.insertCell(-1);
			picHeader.className = "tableTitle";
			picHeader.innerHTML = 'Picture';
			
			// insert neighborhood cell in header row
			var typeHeader = headerRow.insertCell(-1);
			typeHeader.className = "tableTitle";
			typeHeader.innerHTML = 'Type';
			
			// insert address cell in header row
			var descHeader = headerRow.insertCell(-1);
			descHeader.className = "tableTitle";
			descHeader.innerHTML = 'Description';
			
			// insert size cell in header row
			var optionsHeader = headerRow.insertCell(-1);
			optionsHeader.className = "tableTitle";
			optionsHeader.innerHTML = 'Options';
			
			// insert 2nd HR row and label cells
			var hrRow2 = loadPictures.insertRow(-1);
			var hrCell2 = hrRow2.insertCell(-1);
			hrCell2.colSpan = 4;
			hrCell2.innerHTML = '<hr>';
			
			// loop thru object length according to obj rows returned
			for(var i=0; i < obj.length; i++) {
				
				// insert new rows according to number of rows returned
				var newRow = loadPictures.insertRow(-1);
				newRow.className = "roHighlight";
				
				// loop thru 2nd level array elements
				for (var j=0; j < 4; j++){
					
					// insert new cells in new row
					var newCell = newRow.insertCell(-1);
					
					// add CSS class to each cell
					newCell.className = "tableLabel";
					
					// add options links
					if (j == 3){
						newCell.innerHTML = 
							"<a href='pictures.cfm?action=edit&picID="+obj[i][3]+"&homeID="+obj[i][4]+"' style='color:blue'>Update</a> &nbsp;|&nbsp; "+
							"<u onclick='deletePic_request("+obj[i][3]+");' style='color:blue'>Delete</u>";
					}
					
					// if pic, add img tag to display pic
					else if (j == 0){newCell.innerHTML = "<img src=/images/"+obj[i][0]+" width='80' />";}
					
					// if not options or pic, add raw data
					else {newCell.innerHTML = obj[i][j];}
				}
			}
			
		}
		
		// show pics list, in non-IE format
		else {document.getElementById('loadPictures').innerHTML = obj;}
	}
	
	// if no pics returned, use the home ID sent to add pics
	else {
		
		// alert user that there are no pictures for this home
		alert('Please add pictures for this home');
		
		// call add pics function
		loadCurrentHomes_request();
	}
}

// Add a picture to a home /////////////////////////////////////////////////////////////////////////////
function addPics_call(homeID){
	// show pictures form
	showElement('picturesForm');
	
	// change form title
	document.getElementById('picturesFormTitle').innerHTML = 'Add a Home Photo';
	
	// hide update btn, show add btn
	document.getElementById('addPicBtn').style.display = 'inline';
	document.getElementById('updatePicBtn').style.display = 'none';
	
	// set home id value from ID passed in
	document.getElementById('homeID').value = homeID;
}
function addPics_request(form){
	// setup form vars to send
	var homeID = 'homeID='+form.homeID.value;
	var type = '&type='+form.type.value;
	var pic = '&pic='+form.pic.value;
	var description = '&description='+form.description.value;
	
	// compile all vars into one
	var allFormVars = homeID+type+pic+description;
	
	// if all required fields
	if (form.homeID.value !== "" && form.type.value !== "" && form.pic.value !== ""){
		
		// call cfc to add home
		http("GET", "index.cfc?method=addPic", addPics_response, allFormVars);
	}
	
	// if not all req. fields, confirm before submit
	else {
		
		// send error warning and stop the update
		var alertMsg = "";
		if (form.type.value == ""){alertMsg = alertMsg+"Choose the photo type.\n";}
		if (form.pic.value 	== ""){alertMsg = alertMsg+"The type is blank.\n";}
		
	}
	
}
function addPics_response(obj){
	// alert with message returned from CFC
	alert(obj);
	
	// hide home form and opacity layer
	document.getElementById('opacityLayer').style.display = 'none';
	document.getElementById('homesForm').style.display = 'none';
	
	// reload homes list
	loadCurrentHomes_request();
}

// Update a picture ////////////////////////////////////////////////////////////////////////////////////
function updatePic_call(picID){
	// show pictures form
	showElement('picturesForm');
	
	// change form title
	document.getElementById('picturesFormTitle').innerHTML = 'Update this Photo';
	
	// hide update btn, show add btn
	document.getElementById('addPicBtn').style.display = 'none';
	document.getElementById('updatePicBtn').style.display = 'inline';
	
	// set home id value from ID passed in
	document.getElementById('picID').value = picID;
}

// Cancel pictures form ////////////////////////////////////////////////////////////////////////////////
function cancelPicUpdate(form){
	// if a pic add was cancelled
	if (form.picID.value == ""){
		
		// show homes list
		showElement('currentHomes');
	}
	
	// if a pic update was cancelled
	else {
		
		// show pics list
		showElement('picturesList');
	}
}

// Delete Pic //////////////////////////////////////////////////////////////////////////////////////////
function deletePic_request(picID){
	// ask to verify delete
	var answer = confirm('Delete this Picture?');
	
	// if confirmed, send to CFC
	if (answer){
		
		// call cfc to delete pic
		http("GET", "index.cfc?method=deletePic", deletePic_response, 'picID='+picID);
		
	}
}
function deletePic_response(obj){
	// alert with message returned from CFC
	alert(obj);
	
	// call to load neighborhoods select menu
	loadCurrentHomes_request();
}
