//define vars
var isLoading = false;
var currentPage;

//on page load
$("document").ready(function() {
	initLinks("body");
	initTabs();
	
	selectors = [];
	
	setInterval("checkBackLink()", 1000);
});

//ajaxize links
function initLinks(where) {
	$(where+" a").each(function() {
		if(this.href.indexOf("#") > 0) {
			$(this).click(function() {
				var page = this.href.split("#")[1];
				loadPage(page);
				this.blur();
			});
		}
	});
}

//tab hover functions
function initTabs() {
	$(".tab img").hover(function() {
		this.src = this.src.replace("_up", "_over");
	},
	function() {
		this.src = this.src.replace("_over", "_up");
	});
}

//darken input border on focus
function initForms() {
	$("input").focus(function() {
		$(this).addClass("input-focus");
	});
	$("input").blur(function() {
		$(this).removeClass("input-focus");
	});
	$("input").change(function() {
		var inputID = $(this).attr("id");
		if(inputID) {
			validateInput(inputID);
		}
	});
}

//validate user input
function validateInput(inputID) {
	var inputName = $("#"+inputID).attr("name");
	var inputType = $("#"+inputID).attr("type");
	switch(inputType) {
		case 'text':
			var inputValue = $("#"+inputID).attr("value");
		break;
		
		case 'password':
			if(inputName == "confirmPassword") {
				var inputValue = $("#password").attr("value")+"-"+$("#"+inputID).attr("value");
			} else {
				var inputValue = $("#"+inputID).attr("value");
			}
		break;
		
		case 'checkbox':
			var inputValue = $("#"+inputID).attr("checked");
		break;
		
		default:
			var inputValue = $("#"+inputID).attr("value");
		break;
	}
	queryServer("validate", "rule:"+inputName+";value:"+inputValue, function(response) {
		if(response.sucsess) {
			console.log("valid: "+response.data.valid);
			for(var i in response.data.issues) {
				console.log("-"+response.data.issues[i]);
			}
			if(response.data.valid) {
				$("#"+inputID).removeClass("input-error");
				$("#"+inputID+" ~ .input-message").html("");
				return true;
			} else {
				$("#"+inputID).addClass("input-error");
				var first = true;
				for(var i in response.data.issues) {
					if(first) {
						var message = response.data.issues[i];
						first = false;
					} else {
						message += "<br />"+response.data.issues[i];
					}
				}
				$("#"+inputID+" ~ .input-message").html(message);
				return false;
			}
		} else {
			console.log(response.error);
			return true;
		}
	});
}

function validateForm() {
	console.log("submit");
	var i = true;
	if(i) {
		return true;
	} else {
		return false;
	}
}

//custom select input class
function initSelector(divID) {
	if($("#"+divID).length > 0) {
		selectors[divID] = [];
		$("#"+divID+" li").click(selectorClick(divID));
	}
}

function selectorClick(selectID) {
	
}

//ajax load page function
function loadPage(page) {
	if(!isLoading && currentPage != page) {
		isLoading = true;
		$("#content").html("<div class='loading'></div>");
		$("#content").load(page, null, function(responce, success) {
			if(success == "success") {
				currentPage = page;
				isLoading = false;
				$(".tab img").each(function() {
					this.src = this.src.replace("_down", "_up");
				});
				var tabID = page.split(".")[0];
				var imgID = "#"+tabID+" img";
				$(imgID).each(function() {
					this.src = this.src.replace("_up", "_down");
					this.src = this.src.replace("_over", "_down");
				});
				initLinks("#content");
			}
		});
	}
}

//check to make sure the back button wasn't pressed (Firefox Only)
function checkBackLink() {
	if(!isLoading && window.location.hash) {
		var page = window.location.hash.split("#")[1];
		if(page && page != currentPage) {
			loadPage(page);
		}
	}
}

//test ajax connection
function testServer(testString) {
	queryServer("test", "string:"+testString, function(response) {
		if(response.sucsess) {
			console.log("Sucsess: "+response.data.newString);
		} else {
			console.log("Error: "+response.error);
		}
	});
}