//Regular Expressions
var GLOBAL_regEx_AlphaNum = /^([\w\d\s])+$/	 	//letters/numbers/spaces
var GLOBAL_regEx_AlphaNumOpt = /^([\w\d\s])*$/	//optional l/n/s
var GLOBAL_regEx_State = /^[a-zA-Z]{2}$/		//2 letters
var GLOBAL_regEx_Email =/^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/
var GLOBAL_regEx_Zipcode = /^[0-9]{5}$/
var GLOBAL_regEx_Date = /^((0)?[1-9]|1[012])[-\/.]((0)?[1-9]|[12][0-9]|3[01])[-\/.](19|20)\d\d$/ //regular expression - date
var GLOBAL_regEx_Time = /^([0-9]|[0-1][0-9]|2[0-3]):([0-5][0-9])(\s)?(am|Am|AM|pm|Pm|PM)?$/ //regular expression - time

//Arrays
var GLOBAL_Days_of_Week = ["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"];
var GLOBAL_Months = ["January","February","March","April","May","June","July","August","September",
				 	 "October","November","December"];

//Creates the XML Http Request object
function createXHR() {
	if (typeof XMLHttpRequest != "undefined") {
		return new XMLHttpRequest();
	} else if (window.ActiveXObject) {
		var aVersions = [ "MSXML2.XMLHttp.6.0", "MSXML2.XMLHttp.3.0" ];
		
		for (var i=0; i<aVersions.length; i++) {
			try {
				var oXHR = new ActiveXObject(aVersions[i]);
				return oXHR;
			} catch(oError) {
				//Do nothing
			}
		}
	}
	throw new Error("XMLHttp object could not be created.");
}//end createXHR

//Sets the location of window based on passed variable
function navClick(strLocation) {
	switch(strLocation) {
		case "Home":
			location="/index.php";
			break;
		case "Profile":
			location="/user/profile.php";
			break;
		case "Blog":
			location="/blog/display.php";
			break;
		case "Photos":
			alert("Photo Album Coming Soon!");
			break;
		case "BlogEntry":
			location="/blog/blogEntry.php";
			break;
		case "UsageLog":
			location="/usageLog.php";
			break;
		default:
			alert("Page does not exist.");
			break;
	}//end switch
}//end navClick()

function logUsage(strAction, strDetail) {
	var sBody = "Action=" + encodeURIComponent(strAction);
	if (strDetail != null)
		sBody += "&Detail=" + encodeURIComponent(strDetail);

	var oXHR = createXHR();
	oXHR.open("post", "/include/ajax/usageLogCreate.php");
	oXHR.setRequestHeader("Content-Type", "application/x-www-form-urlencoded"); 
	oXHR.setRequestHeader("Content-length", sBody.length);
	oXHR.setRequestHeader("Connection", "close"); 
	oXHR.send(sBody);
}

/**** USER BANNER ******/
function displayUserBanner(userID) {
	//Get banner container and remove existing nodes
	var divUserBanner = document.getElementById("divUserBanner");
	while (divUserBanner.firstChild) {
		divUserBanner.removeChild(divUserBanner.firstChild);
	}

	//Add site name on left
	var divUserBannerLeft = document.createElement("div");
	divUserBannerLeft.id = "divUserBannerLeft";
	divUserBannerLeft.className = "UserBannerLeft";
	divUserBanner.appendChild(divUserBannerLeft);
	
	var divUserBannerSite = document.createElement("div");
	divUserBannerSite.id = "divUserBannerSite";
	divUserBannerSite.className = "UserBannerSite";
	divUserBannerSite.innerHTML = "brianzimmel.com";
	divUserBannerSite.onclick = function() {
		navClick("Home");
	};
	divUserBannerLeft.appendChild(divUserBannerSite);

	//Add right and bottom
	var divUserBannerRight = document.createElement("div");
	divUserBannerRight.id = "divUserBannerRight";
	divUserBannerRight.className = "UserBannerRight";
	divUserBanner.appendChild(divUserBannerRight);
	
	var divUserBannerBottom = document.createElement("div");
	divUserBannerBottom.id = "divUserBannerBottom";
	divUserBannerBottom.className = "UserBannerBottom";
	divUserBanner.appendChild(divUserBannerBottom);

	var divSpacer = document.createElement("div");
	divSpacer.className = "spacer";
	divSpacer.innerHTML = "&nbsp;";
	divUserBanner.appendChild(divSpacer);

	if ((userID == null) || (userID <= 0))
		displayUserBannerNoUser();
	else
		displayUserBannerUser();
}

function displayUserBannerNoUser() {
	var divUserBannerRight = document.getElementById("divUserBannerRight");

	//Login
	var divUserBannerLoginBox = document.createElement("div");
	divUserBannerLoginBox.className = "UserBannerLoginBox";
	divUserBannerRight.appendChild(divUserBannerLoginBox);

	var divUserBannerLogin = document.createElement("div");
	divUserBannerLogin.className = "UserBannerLogin";
	divUserBannerLogin.innerHTML = "Login";
	divUserBannerLogin.onclick = function() {
		displayLogin();
	};
	divUserBannerLoginBox.appendChild(divUserBannerLogin);	
	
	//Create Account
	var divUserBannerCreateAcctBox = document.createElement("div");
	divUserBannerCreateAcctBox.className = "UserBannerCreateAcctBox";
	divUserBannerRight.appendChild(divUserBannerCreateAcctBox);
	
	var divUserBannerCreateAcct = document.createElement("div");
	divUserBannerCreateAcct.className = "UserBannerCreateAcct";
	divUserBannerCreateAcct.innerHTML = "Create Account";
	divUserBannerCreateAcct.onclick = function() {
		navClick('Profile');
	};
	divUserBannerCreateAcctBox.appendChild(divUserBannerCreateAcct);

	//Create welcome message if name passed
	var divUserBannerWelcome = document.createElement("div");
	divUserBannerWelcome.id = "divUserBannerWelcome"
	divUserBannerWelcome.className = "UserBannerWelcome";
	divUserBannerRight.appendChild(divUserBannerWelcome);
} //end displayUserBannerNoUser()

function displayUserBannerUser(displayName) {
	var divUserBannerRight = document.getElementById("divUserBannerRight");

	//Logout
	var divUserBannerLogoutBox = document.createElement("div");
	divUserBannerLogoutBox.className = "UserBannerLogoutBox";
	divUserBannerRight.appendChild(divUserBannerLogoutBox);

	var divUserBannerLogout = document.createElement("div");
	divUserBannerLogout.className = "UserBannerLogout";
	divUserBannerLogout.innerHTML = "Logout";
	divUserBannerLogout.onclick = function() {
		userLogout();
	};
	divUserBannerLogoutBox.appendChild(divUserBannerLogout);	
	
	//Profile
	var divUserBannerProfileBox = document.createElement("div");
	divUserBannerProfileBox.className = "UserBannerProfileBox";
	divUserBannerRight.appendChild(divUserBannerProfileBox);
	
	var divUserBannerProfile = document.createElement("div");
	divUserBannerProfile.className = "UserBannerProfile";
	divUserBannerProfile.innerHTML = "Profile";
	divUserBannerProfile.onclick = function() {
		navClick('Profile');
	};
	divUserBannerProfileBox.appendChild(divUserBannerProfile);

	//Create welcome message if name passed
	var divUserBannerWelcome = document.createElement("div");
	divUserBannerWelcome.id = "divUserBannerWelcome"
	divUserBannerWelcome.className = "UserBannerWelcome";
	divUserBannerRight.appendChild(divUserBannerWelcome);
}//end displayUserBannerUser()

function displayLogin() {
	//Get right side of banner and remove nodes
	var divUserBannerRight = document.getElementById("divUserBannerRight");
	while (divUserBannerRight.firstChild) {
		divUserBannerRight.removeChild(divUserBannerRight.firstChild);
	}

	//Submit
	var divUserBannerSubmitBox = document.createElement("div");
	divUserBannerSubmitBox.id = "divUserBannerSubmitBox";
	divUserBannerSubmitBox.className = "UserBannerSubmitBox";
	divUserBannerRight.appendChild(divUserBannerSubmitBox);

	var divUserBannerSubmit = document.createElement("div");
	divUserBannerSubmit.className = "UserBannerSubmit";
	divUserBannerSubmit.innerHTML = "Submit";
	divUserBannerSubmit.onclick = function() {
		userLogin();
	};
	divUserBannerSubmitBox.appendChild(divUserBannerSubmit);	
	
	//Password
	var divUserBannerPasswordBox = document.createElement("div");
	divUserBannerPasswordBox.className = "UserBannerPasswordBox";
	divUserBannerRight.appendChild(divUserBannerPasswordBox);
	
	var divUserBannerPasswordLabel = document.createElement("div");
	divUserBannerPasswordLabel.className = "UserBannerPasswordLabel";
	divUserBannerPasswordLabel.innerHTML = "Password:";
	divUserBannerPasswordBox.appendChild(divUserBannerPasswordLabel);

	var divUserBannerPasswordText = document.createElement("div");
	divUserBannerPasswordText.className = "UserBannerPasswordText";
	divUserBannerPasswordBox.appendChild(divUserBannerPasswordText);
	
	var txtUserBannerPassword = document.createElement("input");
	txtUserBannerPassword.id = "txtUserBannerPassword";
	txtUserBannerPassword.type = "password";
	txtUserBannerPassword.className = "txtUserBannerPassword";
	txtUserBannerPassword.tabIndex = 2;
	txtUserBannerPassword.onkeyup = function(e) {
		e = e || window.event; //Get the Firefox event (e) or IE window.event
		if (e.keyCode == 13)
			userLogin();
	};
	divUserBannerPasswordBox.appendChild(txtUserBannerPassword);	

	//Email (Username entry)
	var divUserBannerEmailBox = document.createElement("div");
	divUserBannerEmailBox.className = "UserBannerEmailBox";
	divUserBannerRight.appendChild(divUserBannerEmailBox);

	var divUserBannerEmailLabel = document.createElement("div");
	divUserBannerEmailLabel.className = "UserBannerEmailLabel";
	divUserBannerEmailLabel.innerHTML = "Email:";
	divUserBannerEmailBox.appendChild(divUserBannerEmailLabel);
	
	var divUserBannerEmailText = document.createElement("div");
	divUserBannerEmailText.className = "UserBannerEmailText";
	divUserBannerEmailBox.appendChild(divUserBannerEmailText);

	var txtUserBannerEmail = document.createElement("input");
	txtUserBannerEmail.id = "txtUserBannerEmail";
	txtUserBannerEmail.type = "text";
	txtUserBannerEmail.tabIndex = 1;
	txtUserBannerEmail.className = "txtUserBannerEmail";
	divUserBannerEmailBox.appendChild(txtUserBannerEmail);	
	txtUserBannerEmail.focus();
	txtUserBannerEmail.select();
} //end displayLogin()

function userLogout() {
	var divUserBannerBottom = document.getElementById("divUserBannerBottom");
		
	var oXHR = createXHR();
	oXHR.open("post", "/user/userLogout.php", true);
	oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
	oXHR.setRequestHeader("Content-length", "0");
	oXHR.setRequestHeader("Connection", "close"); 
	
	oXHR.onreadystatechange = function() {
		if (oXHR.readyState < 4)
			divUserBannerBottom.innerHTML = "Logging out...";
		else if (oXHR.readyState == 4) {
			if (oXHR.status == 200) {
				divUserBannerBottom.innerHTML = "";
				//If error display message otherwise check for success message, if there redirect home
				var xmlrows = oXHR.responseXML.getElementsByTagName("Error");
				if (xmlrows.length > 0) {
					var xmlcells = xmlrows[0].getElementsByTagName("Message");
					for (var i=0; i<xmlcells.length; i++) {
						if (xmlcells[i].firstChild == null) {
							cur_alert = divUserBannerBottom.innerHTML;
							divUserBannerBottom.innerHTML= cur_alert + "An error occurred while logging out.";
						} else {
							cur_alert = divUserBannerBottom.innerHTML;
							divUserBannerBottom.innerHTML= cur_alert + xmlcells[i].firstChild.data;
						}
					}
				} else {
					var xmlSuccess = oXHR.responseXML.getElementsByTagName("Success");
					if ((xmlSuccess.length> 0) && (xmlSuccess[0].firstChild != null)) {
						if (xmlSuccess[0].firstChild.data == "1")
							window.location.reload();
					}
				}				
			} else {
				divUserBannerBottom.innerHTML= "Error with php page call. status: "+oXHR.status;
			}
		}
	};
	//Send the request
	oXHR.send(null);

}//userLogout()

function userLogin() {
	var divUserBannerBottom = document.getElementById("divUserBannerBottom");

	//validate
	if (!GLOBAL_regEx_Email.test(document.getElementById("txtUserBannerEmail").value))
		divUserBannerBottom.innerHTML = "Email has an invalid entry.";
	else if (document.getElementById("txtUserBannerPassword").value == "")
		divUserBannerBottom.innerHTML = "Password required.";
	else {	
		var sBody = "&Email=" + encodeURIComponent(document.getElementById("txtUserBannerEmail").value);
		sBody += "&Password=" + encodeURIComponent(document.getElementById("txtUserBannerPassword").value);
			
		var oXHR = createXHR();
		oXHR.open("post", "/user/userLogin.php", true);
		oXHR.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
		oXHR.setRequestHeader("Content-length", sBody.length);
		oXHR.setRequestHeader("Connection", "close"); 
		
		oXHR.onreadystatechange = function() {
			if (oXHR.readyState < 4)
				divUserBannerBottom.innerHTML = "Logging in...";
			else if (oXHR.readyState == 4) {
				if (oXHR.status == 200) {
					divUserBannerBottom.innerHTML = "";
					//If no error redisplay User Banner passing UserID
					var xmlrows = oXHR.responseXML.getElementsByTagName("Error");
					if (xmlrows.length > 0) {
						var xmlcells = xmlrows[0].getElementsByTagName("Message");
						for (var i=0; i<xmlcells.length; i++) {
							if (xmlcells[i].firstChild == null) {
								cur_alert = divUserBannerBottom.innerHTML;
								divUserBannerBottom.innerHTML= cur_alert + "An error occurred while logging in.<br />";
							} else {
								cur_alert = divUserBannerBottom.innerHTML;
								divUserBannerBottom.innerHTML= cur_alert + xmlcells[i].firstChild.data;
							}
						}
					} else {
						window.location.reload();
					}				
				} else {
					divUserBannerBottom.innerHTML= "Error with php page call. status: "+oXHR.status+ " <BR />";
				}
			}
		};
		//Send the request
		oXHR.send(sBody);
	}//validate
}//userLogout()
