/* ////////////////////////////////////////////////////////

   JAVASCRIPT FUNCTIONS
   General functions for client-side JavaScript.

//////////////////////////////////////////////////////// */

// COOKIE SET FUNCTION FROM http://webreference.com/js/column8/functions.html
function setCookie(name, value, expires, path, domain, secure) {
  var curCookie = name + "=" + escape(value) +
      ((expires) ? "; expires=" + expires.toGMTString() : "") +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      ((secure) ? "; secure" : "");
  document.cookie = curCookie;
}

// COOKIE GET FUNCTION FROM http://webreference.com/js/column8/functions.html
function getCookie(name) {
  var dc = document.cookie;
  var prefix = name + "=";
  var begin = dc.indexOf("; " + prefix);
  if (begin == -1) {
    begin = dc.indexOf(prefix);
    if (begin != 0) return null;
  } else
    begin += 2;
  var end = document.cookie.indexOf(";", begin);
  if (end == -1)
    end = dc.length;
  return unescape(dc.substring(begin + prefix.length, end));
}

// COOKIE DELETE FUNCTION FROM http://webreference.com/js/column8/functions.html
function deleteCookie(name, path, domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") +
    "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

// TEST BROWSER SOFTWARE FOR SITE COMPATIBILITY
function browserTest() {
	// Test for cookies turned off -- on home page only, to keep from infinitely repeating dialog box
	if ((location.pathname == "/" || location.pathname == "/index.php") && !navigator.cookieEnabled) {
		if (confirm("You appear to have cookies turned off in your web browser. Parts of this site require cookies to function properly. Would you like to view the Help pages for more information?")) {
			location.href = "/help.php";
		}
	}
	// Test for unsupported browser -- only if not already tested
	if (!getCookie("browser-tested") && !document.getElementById) {
		if (confirm("You appear to be using an unsupported browser. This site may not function properly with your current web browser software. Would you like to view the system requirements page?")) {
			setCookie("browser-tested",true);
			location.href = "/sysreq.php";
		}
	}
	setCookie("browser-tested",true);
}

// GENERAL PURPOSE CONFIRMATION MESSAGE BEFORE PROCEEDING TO COMMIT ACTION (url)
function confirmAction(url) {
	if (confirm("Are you sure?\nThis action cannot be undone.")) {
		location.href = url;
	}
	else {
		return false;
	}
}

// GENERAL PURPOSE CONFIRMATION MESSAGE BEFORE PROCEEDING TO SUBMIT A DELETE REQUEST
function confirmDelete(f) {
	var cnf = confirm("Are you sure you wish to delete the checked items?\nThis action cannot be undone.");
	if (cnf) {
		if (f.process) { f.process.value = "false"; }
		if (f.mode) { f.mode.value = "delete"; }
		f.submit();
	}
	else {
		return false;
	}
}

// STANDARD MESSAGE TO APPLY TO ANY FEATURES NOT IMPLEMENTED ON A DEMO SITE
function demoAlert() {
	alert("This feature is not available in the demo version.");
	return false;
}

// TARGET A LINK BACK TO PARENT WINDOW FROM A POP-UP
function fixTarget(ln) {
	if (window.opener) {
		ln.target = "_blank";
	}
}

// FORM RESET ON PAGE LOAD - SAFARI ONLY
function formReset() {
	if (navigator.userAgent.indexOf("Safari") != -1) {
		for (i = 0; i <= document.forms.length; i++) {
			if (document.forms[i]) {
				document.forms[i].reset();
			} 
		}
	}
}

// TURN A NUMBER INTO A PRICE
function numToPrice(num,sym) {
	if (!sym) { sym = "$"; }
	var out = sym;
	// Round to two decimal places
	num = String((Math.round(num*100))/100);
	// Convert to string
	if (num.indexOf(".") == -1) {
		out += num + ".00";
	}
	else if (num.substr(num.indexOf(".")).length == 2) {
		out += num + "0";
	}
	else {
		out += num;
	}
	return out;
}

// STANDARD POP-UP WINDOW
var newWindow;
var newWindowName = "PopUp" + Math.round(Math.random()*10000);
function popUp(url,xsize,ysize) {
	if (!xsize) { xsize = 400; }
	if (!ysize) { ysize = 300; }
	var xpos = 50;
	var ypos = 50;
	// Center pop-up over current window, if possible
	if (window.screenX && window.outerWidth) {
		xpos = window.screenX + ((window.outerWidth - xsize) / 2);
	}
	if (window.screenY && window.outerHeight) {
		ypos = window.screenY + ((window.outerHeight - ysize) / 2);
	}
	if (newWindow) {
		newWindow.close();
	}
	newWindow = window.open(url,newWindowName,"width=" + xsize + ",height=" + ysize + ",screenX=" + xpos + ",screenY=" + ypos + ",directories=no,location=no,menubar=no,resizeable=no,scrollbars=yes,toolbar=no");
}

// TURN A DIV ON OR OFF AND ADJUST A TOGGLE IMAGE ACCORDINGLY
function toggler(div_id,img_name,img_folder,img_opened,img_closed,passfield) {
	var elem = "";
	if (document.getElementById) {
		elem = document.getElementById(div_id);
	}
	else if (document.all) {
		elem = document.all.div_id;
	}
	else if (document.layers) {
		elem = document.div_id;
	}
	if (elem.style.display == "block") {
		elem.style.display = "none";
		if (img_name) { img_name.src = img_folder + img_closed; }
		if (passfield) {
			passfield.value = "none";
		}
	}
	else {
		elem.style.display = "block";
		if (img_name) { img_name.src = img_folder + img_opened; }
		if (passfield) {
			passfield.value = "block";
		}
	}
}

// HIDE A DIV (GOOD FOR "PROCESSING... PLEASE WAIT..." MESSAGES)
function hideDiv(div_id) {
	if (document.getElementById) {
		elem = document.getElementById(div_id);
	}
	else if (document.all) {
		elem = document.all.div_id;
	}
	else if (document.layers) {
		elem = document.div_id;
	}
	elem.style.display = "none";
}

// TRIM SPACES FROM BEGINNING AND END OF A STRING
function trim(s) {
	// Remove leading spaces and carriage returns
	while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r')) {
		s = s.substring(1,s.length);
	}
	// Remove trailing spaces and carriage returns
	while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r')) {
		s = s.substring(0,s.length-1);
	}
	return s;
}

// DETERMINE IF A STRING IS A VALID EMAIL ADDRESS
function validEmail(email) {
	// Email cannot be null or empty
	if (!email || email == "") {
		return false;
	}
	// Email address must be at least 5 characters long
	else if (email.length < 5) {
		return false;
	}
	// Spaces and commas are explicitly disallowed (other disallowed characters are not checked)
	else if (email.indexOf(" ") > -1 || email.indexOf(",") > -1) {
		return false;
	}
	// @ must appear once and be in at least the second position
	else if (email.indexOf("@") != email.lastIndexOf("@") || email.indexOf("@") < 1) {
		return false;
	}
	// . must appear at least 1 character after @ and must be at least 2 characters from end
	else if (email.lastIndexOf(".") <= (email.lastIndexOf("@") + 1) || email.lastIndexOf(".") >= email.length - 2) {
		return false;
	}
	else {
		return true;
	}
}

// PRELOAD BUTTON ICONS
var btn_book_0 = new Image();
	btn_book_0.src = "/common/images/button_icons/book.gif";
var btn_book_1 = new Image();
	btn_book_1.src = "/common/images/button_icons/book_hover.gif";
var btn_bug_0 = new Image();
	btn_bug_0.src = "/common/images/button_icons/bug.gif";
var btn_bug_1 = new Image();
	btn_bug_1.src = "/common/images/button_icons/bug_hover.gif";
var btn_calendar_0 = new Image();
	btn_calendar_0.src = "/common/images/button_icons/calendar.gif";
var btn_calendar_1 = new Image();
	btn_calendar_1.src = "/common/images/button_icons/calendar_hover.gif";
var btn_close_0 = new Image();
	btn_close_0.src = "/common/images/button_icons/close.gif";
var btn_close_1 = new Image();
	btn_close_1.src = "/common/images/button_icons/close_hover.gif";
var btn_delete_0 = new Image();
	btn_delete_0.src = "/common/images/button_icons/delete.gif";
var btn_delete_1 = new Image();
	btn_delete_1.src = "/common/images/button_icons/delete_hover.gif";
var btn_download_0 = new Image();
	btn_download_0.src = "/common/images/button_icons/download.gif";
var btn_download_1 = new Image();
	btn_download_1.src = "/common/images/button_icons/download_hover.gif";
var btn_edit_0 = new Image();
	btn_edit_0.src = "/common/images/button_icons/edit.gif";
var btn_edit_1 = new Image();
	btn_edit_1.src = "/common/images/button_icons/edit_hover.gif";
var btn_help_0 = new Image();
	btn_help_0.src = "/common/images/button_icons/help.gif";
var btn_help_1 = new Image();
	btn_help_1.src = "/common/images/button_icons/help_hover.gif";
var btn_insert_0 = new Image();
	btn_insert_0.src = "/common/images/button_icons/insert.gif";
var btn_insert_1 = new Image();
	btn_insert_1.src = "/common/images/button_icons/insert_hover.gif";
var btn_movedown_0 = new Image();
	btn_movedown_0.src = "/common/images/button_icons/movedown.gif";
var btn_movedown_1 = new Image();
	btn_movedown_1.src = "/common/images/button_icons/movedown_hover.gif";
var btn_moveup_0 = new Image();
	btn_moveup_0.src = "/common/images/button_icons/moveup.gif";
var btn_moveup_1 = new Image();
	btn_moveup_1.src = "/common/images/button_icons/moveup_hover.gif";
var btn_new_0 = new Image();
	btn_new_0.src = "/common/images/button_icons/new.gif";
var btn_new_1 = new Image();
	btn_new_1.src = "/common/images/button_icons/new_hover.gif";
var btn_note_0 = new Image();
	btn_note_0.src = "/common/images/button_icons/note.gif";
var btn_note_1 = new Image();
	btn_note_1.src = "/common/images/button_icons/note_hover.gif";
var btn_replace_0 = new Image();
	btn_replace_0.src = "/common/images/button_icons/replace.gif";
var btn_replace_1 = new Image();
	btn_replace_1.src = "/common/images/button_icons/replace_hover.gif";
var btn_save_0 = new Image();
	btn_save_0.src = "/common/images/button_icons/save.gif";
var btn_save_1 = new Image();
	btn_save_1.src = "/common/images/button_icons/save_hover.gif";
var btn_search_0 = new Image();
	btn_search_0.src = "/common/images/button_icons/search.gif";
var btn_search_1 = new Image();
	btn_search_1.src = "/common/images/button_icons/search_hover.gif";
var btn_view_0 = new Image();
	btn_view_0.src = "/common/images/button_icons/view.gif";
var btn_view_1 = new Image();
	btn_view_1.src = "/common/images/button_icons/view_hover.gif";
	
