var swfu;
var propertyId = 0;
var incidentId = 0;
var inspectionId = 0;

function confirmIfClosedAndBlankReportSentTime(form) {
	if (getRadioValue(form.elements["incidentOpenOrClosed"]) == "1" && form.elements["reportSentTime"].value == "") {
		if (confirm("Report email will be sent to Property Manager.  Are you sure you want to continue?")) {
			form.submit();
			return false;
		}
	} else {
		form.submit();
		return false;
	}
	return false;
}

function confirmIfBlankReportSentTime(form) {
	if (form.elements["reportSentTime"].value == "") {
		if (confirm("Report email will be sent to Property Manager.  Are you sure you want to continue?")) {
			form.submit();
			return false;
		}
	} else {
		form.submit();
		return false;
	}
	return false;
}

function getRadioValue(radiosElement) {
	var val = "";
	for (i = 0; i < radiosElement.length; i++ ) {
		if (radiosElement[i].checked == true) {
			val = radiosElement[i].value;
		}
	}
	return val;
}

function addConfirmation(str) {
	var c = document.getElementById("feedback-container");
	var html = "<div id=\"confirmations-container\">";
	html += 	"<ul id=\"confirmations\">";
	html += 		"<li>"+ str +"</li>";
	html += 	"</ul>";
	html += "</div>";
	if (c) {
		c.innerHTML = html;
		window.scrollTo(0, 0);
		hideConfirmations();
	}
}

function setPrimaryAttachment(attachmentId) {
	var request = YAHOO.util.Connect.asyncRequest('GET', webPagesRoot +"attachments/attachment?attachmentId="+ attachmentId +"&format=setPrimary", {
		success: 
			function (o) {
				refreshAttachmentsTable(propertyId);
				addConfirmation("Set primary attachment.");
			}
		, failure: 
			function (o) {
				log("Error setting primary attachment.");
			}
		});
	return false;
}

function deleteAttachment(attachmentId) {
	if (confirm("Are you sure you want to delete?")) {
		var request = YAHOO.util.Connect.asyncRequest('GET', webPagesRoot +"attachments/attachment?attachmentId="+ attachmentId +"&format=delete", {
			success: 
				function (o) {
					refreshAttachmentsTable(propertyId, incidentId, inspectionId);
				}
			, failure: 
				function (o) {
					log("Error deleting attachment.");
				}
			});
	}
	return false;
}

function refreshAttachmentsTable(propertyId, incidentId, inspectionId) {
	if (propertyId == undefined) {
		propertyId = 0;
	}
	if (incidentId == undefined) {
		incidentId = 0;
	}
	if (inspectionId == undefined) {
		inspectionId = 0;
	}
	var request = YAHOO.util.Connect.asyncRequest('GET', webPagesRoot +"attachments/table?propertyId="+ propertyId +"&incidentId="+ incidentId +"&inspectionId="+ inspectionId, {
		success: 
			function (o) {
				if (propertyId != undefined && propertyId > 0) {
					refreshPrimaryAttachment(propertyId);
				}
				document.getElementById("attachments-container").innerHTML = o.responseText;
			}
		, failure: 
			function (o) {
				log("Error refreshing table.");
			}
		});
	return false;
}

function refreshPrimaryAttachment(propertyId) {
	var request = YAHOO.util.Connect.asyncRequest('GET', webPagesRoot +"attachments/primaryAttachmentImage?propertyId="+ propertyId, {
		success: 
			function (o) {
				document.getElementById("primary-attachment-container").innerHTML = o.responseText;
			}
		, failure: 
			function (o) {
				log("Error refreshing primary attachment.");
			}
		});
	return false;
}

function initUpload(phpsessid, propertyId, incidentId, inspectionId) {
	if (BrowserDetect.browser == "Explorer" && BrowserDetect.version == "6") {
		return false;
	} else {
		var a = document.getElementById("swfobject-buttons");
		var b = document.getElementById("formupload-buttons");
		if (a && b) {
			b.style.display = "none";
			a.style.display = "block";
		}
	}
	if (propertyId == undefined) {
		propertyId = 0;
	}
	if (incidentId == undefined) {
		incidentId = 0;
	}
	if (inspectionId == undefined) {
		inspectionId = 0;
	}
	// upload_url is Relative to the SWF file
	var settings = {
		flash_url : "../swfupload/swfupload_f9.swf",
		upload_url: "../attachments/upload.php",
		post_params: {"PHPSESSID" : phpsessid, "propertyId" : propertyId, "incidentId" : incidentId, "inspectionId" : inspectionId},
		file_size_limit : "100 MB",
		file_types : "*.*",
		file_types_description : "All Files",
		file_upload_limit : 100,
		file_queue_limit : 0,
		custom_settings : {
			progressTarget : "fsUploadProgress",
			cancelButtonId : "btnCancel"
		},
		debug: false,

		// The event handler functions are defined in handlers.js
		file_queued_handler : fileQueued,
		file_queue_error_handler : fileQueueError,
		file_dialog_complete_handler : fileDialogComplete,
		upload_start_handler : uploadStart,
		upload_progress_handler : uploadProgress,
		upload_error_handler : uploadError,
		upload_success_handler : uploadSuccess,
		upload_complete_handler : uploadComplete,
		queue_complete_handler : queueComplete	// Queue plugin event
	};

	swfu = new SWFUpload(settings);
};

function setDate(str) {

	var eventdate = new Date(str)	 //Your date should be in this format (MONTH DAY, YEAR)
	var now = new Date();

	count=Math.floor((now.getTime()-eventdate.getTime())/1000);

	var secs = count%60;
	count = Math.floor(count/60);
	var mins = count%60;
	count = Math.floor(count/60);
	var hours = count%24;
	count = Math.floor(count/24);
	if (count >= 365) {
		var days = count - 365*Math.floor(count/365);
	} else {
		var days = count;
	}
	count=Math.floor(count/365);
	var years = count;

	hour = new Number(hours);
	min = new Number(mins);
	sec = new Number(secs);
	day = new Number(days);
	year = new Number(years);
	timer();

}

function timer() {

	if ((min < 10) && (min != "00")){
			dismin = "0" + min;
	}
	else{
			dismin = min;
	}

	if ((hour < 10) && (hour != "00")){
			dishour = "0" + hour;
	}
	else{
			dishour = hour;
	}

	dissec = (sec < 10) ? sec = "0" + sec : sec;
	var secs = dissec;
	var mins = dismin;
	var hours = dishour;
	var days = day;
	var years = year;

	if (sec < 59){
		sec++
	}

	else{
		sec = "0"
		min++
		if (min > 59){
			min = "00"
			hour++
			if (hour > 23){
				hour = "0"
				day++
				if (day >364){
					day = "0"
					year++
				}
			}
		}

	}

	if (days < 10 && days > 0) {
		days = days.toString().replace(/0/, "");
	}
	if (hours < 10 && hours > 0) {
		hours = hours.toString().replace(/0/, "");
	}
	if (mins < 10 && mins > 0) {
		mins = mins.toString().replace(/0/, "");
	}
	if (secs < 10) {
		secs = secs.toString().replace(/0/, "");
	}

	str = hours +" hours "+ mins +" minutes "+ secs +" seconds";
	if (days > 0) {
		str = days +" days "+ str;
	}
	document.getElementById("timer-bucket").innerHTML = str;

	window.setTimeout("timer()",1000)
}

function toggleOffDuty(check) {
	var forms = getElementsByClassName("edit", "form", document.getElementById("content"));
	for (i = 0; i < forms.length; i++) {
		var trs = getElementsByClassName(" off-duty", "tr", forms[i]);
		for (j = 0; j < trs.length; j++) {
			if (check.checked) {
				if (BrowserDetect.browser == "Explorer") {
					trs[j].style.display = "";
				} else {
					trs[j].style.display = "table-row";
				}
			} else {
				trs[j].style.display = "none";
			}
		}
		var trs = getElementsByClassName("alt off-duty", "tr", forms[i]);
		for (j = 0; j < trs.length; j++) {
			if (check.checked) {
				if (BrowserDetect.browser == "Explorer") {
					trs[j].style.display = "";
				} else {
					trs[j].style.display = "table-row";
				}
			} else {
				trs[j].style.display = "none";
			}
		}
	}
}

function initPropertiesAutocomplete() {
	YAHOO.example.ACFlatData = new function(){
		// Define a custom formatter function
	    this.fnCustomFormatter = function(oResultItem, sQuery) {
			return oResultItem;
	    };

		this.fnDoBeforeExpandContainer = function (arg0, arg1, arg2) {
			document.getElementById("ajax-bucket").innerHTML = arg1[2];
			document.getElementById("clear-search").style.display = "inline";
			return true;
		}
		
		// Instantiate one XHR DataSource and define schema as an array:
		//     ["Record Delimiter",
		//     "Field Delimiter"]
		this.oACDS = new YAHOO.widget.DS_XHR("ajax-properties.php", ["$#@"]);
		this.oACDS.responseType = YAHOO.widget.DS_XHR.TYPE_FLAT;
	    this.oACDS.maxCacheEntries = 0;
	    this.oACDS.queryMatchSubset = false;
		
		// Instantiate second AutoComplete
		this.oAutoComp1 = new YAHOO.widget.AutoComplete('search-box','ajax-bucket', this.oACDS);
		this.oAutoComp1.formatResult = this.fnCustomFormatter;
		this.oAutoComp1.delimChar = "$@#";
		this.oAutoComp1.alwaysShowContainer = true;
		this.oAutoComp1.maxResultsDisplayed = 1;
		this.oAutoComp1.dataReturnEvent.subscribe(this.fnDoBeforeExpandContainer);
	};
}

function setTechnician(element) {
	if (element) {
		var form = element.parentNode.parentNode.parentNode.parentNode;
		if (form) {
			var prefix = form.id.replace(/_form/, "_");
			var value = element.value;
			var request = YAHOO.util.Connect.asyncRequest('GET', webJsonRoot +"technician?technicianId="+ value, {
				success: 
					function (o) {
						var p = eval("("+ o.responseText +")");
						if (p) {
							form.elements["dispatchedTechnicianName"].value = p["name"];
							form.elements["dispatchedTechnicianEmployeeNumber"].value = p["employeeNumber"];
							form.elements["dispatchedTechnicianCell"].value = p["cell"];
							form.elements["dispatchedTechnicianEmail"].value = p["email"];
							document.getElementById(prefix +"dispatchedTechnicianName").innerHTML = p["name"];
							document.getElementById(prefix +"dispatchedTechnicianEmployeeNumber").innerHTML = p["employeeNumber"];
							document.getElementById(prefix +"dispatchedTechnicianCell").innerHTML = p["cell"];
							document.getElementById(prefix +"dispatchedTechnicianEmail").innerHTML = p["email"];
						}
					}
				, failure: 
					function (o) {
						log("Error accessing "+ webJsonRoot +"technician?technicianId="+ value);
					}
				});
		} else {
			log("Form not found.");
		}
	} else {
		log("Element not set.");
	}
}

function setProperty(element) {
	if (element) {
		var form = element.parentNode.parentNode.parentNode.parentNode;
		if (form) {
			var prefix = form.id.replace(/_form/, "_");
			var value = element.value;
			var request = YAHOO.util.Connect.asyncRequest('GET', webJsonRoot +"property?propertyId="+ value, {
				success: 
					function (o) {
						var p = eval("("+ o.responseText +")");
						if (p) {
							form.elements["propertyName"].value = p["name"];
							form.elements["propertyAddress"].value = p["address"];
							form.elements["propertyCity"].value = p["city"];
							form.elements["propertyState"].value = p["state"];
							form.elements["propertyZip"].value = p["zip"];
							form.elements["propertyCrossStreets"].value = p["primaryCrossStreets"];
							form.elements["propertyType"].value = p["propertyType"];
							form.elements["propertyZoneId"].value = p["zoneId"];
							form.elements["propertyZoneName"].value = p["zoneId->name"];
							//form.elements["propertyPrimaryAttachmentId"].value = p["primaryAttachmentId"];
							document.getElementById(prefix +"propertyName").innerHTML = p["name"];
							document.getElementById(prefix +"propertyAddress").innerHTML = p["address"];
							document.getElementById(prefix +"propertyCity").innerHTML = p["city"];
							document.getElementById(prefix +"propertyState").innerHTML = p["state"];
							document.getElementById(prefix +"propertyZip").innerHTML = p["zip"];
							document.getElementById(prefix +"propertyCrossStreets").innerHTML = p["primaryCrossStreets"];
							document.getElementById(prefix +"propertyType").innerHTML = p["propertyType"];
							document.getElementById(prefix +"propertyZoneName").innerHTML = p["zoneId->name"];
							//document.getElementById(prefix +"propertyPrimaryAttachmentId").innerHTML = p["primaryAttachmentId"];
							if (form.elements["managerId"]) {
								form.elements["managerId"].value = p["managerId"];
							}
							if (form.elements["managerName"]) {
								form.elements["managerName"].value = p["managerId->name"];
								document.getElementById(prefix +"managerName").innerHTML = p["managerId->name"];
							}
						}
					}
				, failure: 
					function (o) {
						log("Error accessing "+ webJsonRoot +"property?propertyId="+ value);
					}
				});
		} else {
			log("Form not found.");
		}
	} else {
		log("Element not set.");
	}
}

function confirmDelete(form) {
	if (confirm("Are you sure you want to delete?")) {
		form.submit();
		return false;
	}
	return false;
}

function hideConfirmations() {
	var ul = document.getElementById("confirmations-container");
	if (ul) {
		window.setTimeout(function () { hideAnimate(ul); }, 2000);
	}
}

function hideAnimate(obj) {
	if (YAHOO) {
		var attributes = {
			width: { to: 0 }
		};
		var anim = new YAHOO.util.Anim(obj, attributes, .5, YAHOO.util.Easing.easeOut);
		anim.onComplete.subscribe(function () {
			//obj.style.display = "none";
			var attributes2 = {
				height: { to: 0 }
			};
			var anim2 = new YAHOO.util.Anim(obj, attributes2, .5, YAHOO.util.Easing.easeOut);
			anim2.onComplete.subscribe(function () {
				obj.style.display = "none";
			});
			anim2.animate();
		});
		anim.animate();
	}
}

function initEditForms() {
	var forms = getElementsByClassName("edit", "form", document.getElementById("content"));
	for (i = 0; i < forms.length; i++) {
		var fields = getElementsByClassName("fields", "div", forms[i]);
		for (j = 0; j < fields.length; j++) {
			fields[j].style.display = "none";
		}
		var values = getElementsByClassName("fields values", "div", forms[i]);
		for (j = 0; j < values.length; j++) {
			values[j].style.display = "block";
			if (YAHOO) {
				YAHOO.util.Event.addListener(values[j], "mouseup", function (e, obj) {
					processEditFormClick(e, obj);
				}, values[j]);
			}
		}
		var editButtons = getElementsByClassName("editButton", "input", forms[i]);
		for (j = 0; j < editButtons.length; j++) {
			editButtons[j].style.display = "block";
		}
	}
	var deleteForms = getElementsByClassName("delete", "form", document.getElementById("content"));
	for (i = 0; i < deleteForms.length; i++) {
		var deleteButtons = getElementsByClassName("deleteEditButton", "input", deleteForms[i]);
		for (j = 0; j < deleteButtons.length; j++) {
			deleteButtons[j].style.display = "none";
		}
	}
	return false;
}

function processEditFormClick(e, div) {
	YAHOO.util.Event.preventDefault(e);
	editForm(div.parentNode.parentNode.parentNode, false);
	var id = div.id.replace(/_values/, "");
	var field = document.getElementById(id +"_fields").firstChild;
	if (field.type == "text" || field.type == "textarea") {
		field.focus();
		var temptext = field.value;
		field.value = "";
		field.value = temptext;
	}
	return false;
}

function editForm(form, backToValues) {
	if (form) {
		var fields = getElementsByClassName("fields", "div", form);
		for (j = 0; j < fields.length; j++) {
			if (backToValues == true) {
				fields[j].style.display = "none";
			} else {
				fields[j].style.display = "block";
			}
		}
		var values = getElementsByClassName("fields values", "div", form);
		for (j = 0; j < values.length; j++) {
			if (backToValues == true) {
				values[j].style.display = "block";
			} else {
				values[j].style.display = "none";
			}
		}
		var editButtons = getElementsByClassName("editButton", "input", form);
		for (j = 0; j < editButtons.length; j++) {
			if (backToValues == true) {
				editButtons[j].style.display = "block";
			} else {
				editButtons[j].style.display = "none";
			}
		}
		var cancelEditButtons = getElementsByClassName("cancelEditButton", "input", form);
		for (j = 0; j < cancelEditButtons.length; j++) {
			if (backToValues == true) {
				cancelEditButtons[j].style.display = "none";
			} else {
				cancelEditButtons[j].style.display = "block";
			}
		}
		var id = form.id.replace(/_form/, "");
		var deleteForm = document.getElementById(id +"_delete");
		if (deleteForm) {
			var deleteButtons = getElementsByClassName("deleteEditButton", "input", deleteForm);
			for (j = 0; j < deleteButtons.length; j++) {
				if (backToValues == true) {
					deleteButtons[j].style.display = "none";
				} else {
					deleteButtons[j].style.display = "inline";
				}
			}
		}
	} else {
		log("Error: You must pass a form as the parameter of editForm().");
	}
	return false;
}

function setFocusOn(id) {
	document.getElementById(id).focus();
}

//	Written by Jonathan Snook, http://www.snook.ca/jonathan
//	Add-ons by Robert Nyman, http://www.robertnyman.com
function getElementsByClassName(className, tag, elm) {
	var testClass = new RegExp("(^|\\\\s)" + className + "(\\\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

var BrowserDetect = {
	init: function () {
		this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
		this.version = this.searchVersion(navigator.userAgent)
			|| this.searchVersion(navigator.appVersion)
			|| "an unknown version";
		this.OS = this.searchString(this.dataOS) || "an unknown OS";
	},
	searchString: function (data) {
		for (var i=0;i<data.length;i++)	{
			var dataString = data[i].string;
			var dataProp = data[i].prop;
			this.versionSearchString = data[i].versionSearch || data[i].identity;
			if (dataString) {
				if (dataString.indexOf(data[i].subString) != -1)
					return data[i].identity;
			}
			else if (dataProp)
				return data[i].identity;
		}
	},
	searchVersion: function (dataString) {
		var index = dataString.indexOf(this.versionSearchString);
		if (index == -1) return;
		return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
	},
	dataBrowser: [
		{ 	string: navigator.userAgent,
			subString: "OmniWeb",
			versionSearch: "OmniWeb/",
			identity: "OmniWeb"
		},
		{
			string: navigator.vendor,
			subString: "Apple",
			identity: "Safari"
		},
		{
			prop: window.opera,
			identity: "Opera"
		},
		{
			string: navigator.vendor,
			subString: "iCab",
			identity: "iCab"
		},
		{
			string: navigator.vendor,
			subString: "KDE",
			identity: "Konqueror"
		},
		{
			string: navigator.userAgent,
			subString: "Firefox",
			identity: "Firefox"
		},
		{
			string: navigator.vendor,
			subString: "Camino",
			identity: "Camino"
		},
		{		// for newer Netscapes (6+)
			string: navigator.userAgent,
			subString: "Netscape",
			identity: "Netscape"
		},
		{
			string: navigator.userAgent,
			subString: "MSIE",
			identity: "Explorer",
			versionSearch: "MSIE"
		},
		{
			string: navigator.userAgent,
			subString: "Gecko",
			identity: "Mozilla",
			versionSearch: "rv"
		},
		{ 		// for older Netscapes (4-)
			string: navigator.userAgent,
			subString: "Mozilla",
			identity: "Netscape",
			versionSearch: "Mozilla"
		}
	],
	dataOS : [
		{
			string: navigator.platform,
			subString: "Win",
			identity: "Windows"
		},
		{
			string: navigator.platform,
			subString: "Mac",
			identity: "Mac"
		},
		{
			string: navigator.platform,
			subString: "Linux",
			identity: "Linux"
		}
	]

};
BrowserDetect.init();

function log(s) {
	if (console) {
		console.log(s);
	} else if (window.console) {
		window.console.log(s);
	}
}
