$(document).ready(function(){
	initMenu();
	registerMenuListeners();
	$.historyInit(pageload);
	
	$("#submitLogin_id").click(function() {
		checkLogin();
		return false;  
	});
	$("#loginButton_id").click(function() {
		checkLogin();
		return false;  
	});
	$("#username_id").click(function() {
		checkLogin();
		return false;  
	});
	$("#password_id").click(function() {
		checkLogin();
		return false;  
	});
	$("#message_id").click(function() {
		$("#loginMessage_id").fadeOut("normal",showLogin);
		return false;  
	});
});
function pageload(hash) {
	var json;
	if(hash) {
		postjson(hash, 
			"",
		  	function(){
		
		  			$("#loader_id").css("display","block");
		  			$("#content_id").css("opacity","0");
		  			$("#content_id").css("-ms-filter","progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"); // first!
					$("#content_id").css("filter"," alpha(opacity=0)");					// second!
		  			
		  			$("#loader_id").flash({
		  			src: 'media/swf/loading.swf',
    				width: 560,
   	 				height: 250,
   	 				wmode: 'transparent'
   	 				}
		  			);},
		  	function(json) {
		  		switch(json.banner){
		  			case null:
		  				$("#other_banner_id").html('');
		  				loadDefaultBanner();
		  				break;
		    		case "":
		    			$("#other_banner_id").html('');
		    			loadDefaultBanner();
		    			break;
		    		default:
		    			hideDefaultBanner();
		    			$("#other_banner_id").html('<img src="' + json.banner + '" />');
		    			break;
		      	}
		      	hitMenu($("a[href='#"+hash+"'][rel='leftMenuLink']"),'#'+hash);
		      	$("#loader_id").css("display","none");
		      	$("#loader_id").html('');
		      	$("#content_id").html(json.content);
		      	$("#content_id").css("opacity","1");
		      	$("#content_id").css("-ms-filter","progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"); // first!
				$("#content_id").css("filter"," alpha(opacity=100)");					// second!
                try {
                    pageTracker._trackPageview("/" + hash);
				} catch(err) {}
		  	},
		  	function() {
		  		$("#content_id").html(json);
		  	}
		);
	} else {
		$("a[@href='#index.php?home']").click();
	}
}

function deregisterMenuListeners(){
	$("a[@rel='leftMenuLink']").unbind("click");
}
function deregisterMenuLinkListeners(){
	$("a[@rel='MenuLink']").unbind("click");
}
function deregisterListeners(){
	$("a[@rel='pageLink']").unbind("click");
}

function registerMenuListeners(){
	$("a[@rel='leftMenuLink']").click(function(){
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
		$.historyLoad(hash,this);
		return false;
	});
}
function registerMenuLinkListeners(){
	$("a[@rel='MenuLink']").click(function(){
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
		$.historyLoad(hash,this);
		return false;
	});
}
function registerListeners(){
	$("a[@rel='pageLink']").click(function(){
		var hash = this.href;
		hash = hash.replace(/^.*#/, '');
		$.historyLoad(hash,this);
		return false;
	});
}

function checkLogin(){
  var name = $("input#userName_id").val();
  var dataString = "name=" + name + "&password=" + $("input#userPassword_id").val();
  postjson("index.php?login", dataString,
  	"",
  	function(json) {
  		var val = json.user;
  		switch(val){
    		case "invalid":
    			hideLogin(showBadLogin);
    			break;
    		default:
    			/* Temp commented until login functioning
    			$("#loginName_id").html("Welcome<br />"+val);
    			$("#menuDiv").html(json.menu);
    			initMenu();
    			registerMenuListeners();
    			hideLogin(showUserControl);
    			*/
    			hideLogin(showBadLogin);
    			break;
      	}
  	},
  	function() {
  		$("#login_id").html("Error");
  	});
} 
function showUserControl(){
	$("#loginPanel_id").fadeIn("slow",showUserHome);
	$("#loginPanel_id").css("display","block");
}
function showBadLogin(){
	$("#loginMessage_id").fadeIn("slow");
}
function hideLogin(nextEvent){
	$("#username_id").fadeOut("slow");
	$("#password_id").fadeOut("slow");
	$("#loginButton_id").fadeOut("slow",nextEvent);
}
function showLogin(){
	$("#username_id").fadeIn("slow");
    $("#password_id").fadeIn("slow");
    $("#loginButton_id").fadeIn("slow");
}
function postjson(url, data, beforeSend, success, error) {
	$.ajax({
		type: "POST",
		url: url,
		data: data,
		dataType: "json",
		beforeSend: beforeSend,
		success: success,
		error: error
	});		
}
function showUserHome(){
	// TODO:: ie 7 bug- have to use absolute path to target object
	$("a[@href='http://localhost/#index.php?home']").click();
	$("a[@href='#index.php?home']").click();
}
function hideDefaultBanner() {
	//$("#default_banner_id").hide();
	//$("#other_banner_id").show();
	$("#default_banner_id").css("display","none");
	$("#other_banner_id").css("display","block");
}
function loadDefaultBanner() {
	$("#default_banner_id").css("display","block");
	$("#other_banner_id").css("display","none");
	//$("#default_banner_id").show();
	//$("#other_banner_id").hide();
}

function submitSearch() {
	var validFormat = /^\d{2}\/\d{2}\/\d{4}$/;
	var domain = $("input#domain").val();
	var county = $("#county").val();
	var location = $("#location").val();
	var course = $("#course").val();
	var start_date = $("#dateFrom_id").val();
	var end_date = $("#dateTo_id").val();
	
	var start_md = start_date.split("/");
	var end_md = end_date.split("/");
	var valid = true;
	var msg = "";
	if(!validFormat.test(start_date)) {
		msg += "Please enter a vaild begin date. \n";
		valid = false;
	}
	if(!validFormat.test(end_date)) {
		msg += "Please enter a vaild end date. \n";
		valid = false;
	}
	if(parseInt(start_md[0]) > 12) {
		msg += "Begin month must be less than or equal to 12. \n";
		valid = false;
	}
	if(parseInt(end_md[0]) > 12) {
		msg += "End month must be less than or equal to 12. \n";
		valid = false;
	}
	if(parseInt(start_md[1]) > 31) {
		msg += "Begin day must be less than or equal to 31. \n";
		valid = false;
	}
	if(parseInt(end_md[1]) > 31) {
		msg += "End day must be less than or equal to 31. \n";
		valid = false;
	}
	
	if(valid == false) {
		alert(msg);
	} else {
	
	var dataString = "domain=" + domain + '&county=' + county;
	if(course) {
		dataString = dataString + '&course=' + course.replace('&','%26');
	}
	dataString = dataString + '&location=' + location + '&start_date=' + start_date + '&end_date=' + end_date;
	postjson("index.php?branch/searchCourses", dataString,
			function(){
			
				$("#loader_id").css("display","block");
				$("#content_id").css("opacity","0");
				$("#content_id").css("-ms-filter","progid:DXImageTransform.Microsoft.Alpha(Opacity=0)"); // first!
				$("#content_id").css("filter"," alpha(opacity=0)");					// second!
			
				$("#loader_id").flash({
					src: 'media/swf/loading.swf',
					width: 560,
					height: 250,
					wmode: 'transparent'
				}
			);},
	  	function(json) {
	  		$("#content_id").html(json.content);
	  		$("#loader_id").css("display","none");
	      	$("#loader_id").html('');
	      	$("#content_id").html(json.content);
	      	$("#content_id").css("opacity","1");
	      	$("#content_id").css("-ms-filter","progid:DXImageTransform.Microsoft.Alpha(Opacity=100)"); // first!
			$("#content_id").css("filter"," alpha(opacity=100)");					// second!
	  	},
	  	function() {
	  		$("#login_id").html("Error");
	  	});
	}
}