/*User Functions ----------------------------------------------------------   */

var User = function(navigator, landingPage, processingPage, divID, options){
	//this.uProfile = new Array();
	this.navigator = navigator;
	this.landingPage = landingPage || "data/index.php";
	this.processPage = processingPage || "php/user.php";
	this.destinationDiv = divID || "Content";
	this.options = options || {};

	var container = document.createElement('div');
	this.form = document.createElement('form');
	var progress = document.createElement('span');
	var self = this;

	this.resetFunction = function()
	{
		this.onComplete = function(msg) {};
		this.onLogin = function(msg) {};
	}

	this.setOption = function(name, value){
		this.options[name] = Array(value, false);
  };
  
	this.login = function(tlandingPage)	{
		var self = this;

		var hndler = function(data){
						if(data.substring(0, 4) !== "True"){
							progress.innerHTML = data;							
						}
						else
						{
							progress.innerHTML = "";
							self.onLogin(data);
							self.navigator.loadPage(self.landingPage);
							self.navigator.loadMenu();
						}
			};
			
		this.navigator.postForm(this.processPage, this.form, hndler);
	};
  
	this.Special = function()	{
		var self = this;

		var hndler = function(data){
						if(data.substring(0, 2) === "In" || data === ""){
							progress.innerHTML = data;
						}
						else
						{
							self.onComplete(data);
						}
			};
		Navigator.postForm(this.processPage, this.form, hndler)
	};

	this.BuildLogin = function(loc, id){
		this.buildTable(id);
		this.clearTable();
		container.appendChild(this.form);
		container.appendChild(progress);
		container.style.display = "block";
		document.getElementById(loc).appendChild(container);
	};

	this.clearTable = function()
	{
			while(container.hasChildern)
			{
				container.deleteChild(container.childNode[0]);
			}
	};
	
	this.buildTable = function (id) {
		this.form.setAttribute('name', 'iForm');
		
		var table = document.createElement('table');
		this.form.appendChild(table);
		table.appendChild(document.createElement('tbody'));
		table.className = 'login';
		
		var tr = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr);
		var utd = document.createElement('td');
		utd.innerHTML = "<p>User</p><input name='UserID' type='text'>";
		tr.appendChild(utd);

		var tr2 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr2);
		var ptd = document.createElement('td');
		ptd.innerHTML = "<p>Password</p><input name='Password' type='password'>";
		tr2.appendChild(ptd);
                addEvent(ptd.getElementsByTagName('input')[0], "keypress", function(e) {KeyCheck(e, function() { self.login();})});

		var tr3 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr3);
		var htd = document.createElement('td');
		htd.innerHTML = "<input name='id' type='hidden' value='"+id+"'><input name='type' type='hidden' value='login'>";
		var btnImages = Array({'url': 'skins/default/image/btnLogin.gif', 'name':'First'}, {'url': 'skins/default/image/btnLoginPress.gif', 'name':'Down'}, {'url': 'skins/default/image/btnLoginHoover.gif', 'name':'Hover'});
		Navigator.addBtn("Login", "Login", function() { self.login();}, htd, btnImages);

		tr3.appendChild(htd);
		
		if(this.options.ResetPassword !== undefined){
			var tr4 = document.createElement('tr');
			table.getElementsByTagName('tbody')[0].appendChild(tr4);
			var rptd = document.createElement('td');
			rptd.innerHTML = "Forgot your password? Click Here";
			rptd.style.cursor = "pointer";
			addEvent(rptd, "click", function() { self.ResetPassword();});
			tr4.appendChild(rptd);
		}
		if(this.options.Signup !== undefined){
			var tr5 = document.createElement('tr');
			table.getElementsByTagName('tbody')[0].appendChild(tr5);
			var std = document.createElement('td');
			std.innerHTML = "Sign Up";
			std.style.cursor = "pointer";
			addEvent(std, "click", function() { self.SignUp();});
			tr5.appendChild(std);
		}			
	};
  
	this.ResetPassword = function() {
		//output reset password into the inner div
		if(this.form.elements.UserID === ""){
			progress.innerHTML = "Please enter a user id to reset.";
			exit;
		}
		table.deleteChild(table.getElementsByTagName('tbody')[0]);
		table.appendChild(document.createElement('tbody'));

		var tr = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr);
		var utd = document.createElement('td');
		utd.innerHTML = "<p>User</p><input name='UserID' type='text'>";
		tr.appendChild(utd);
		
		var tr = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr);
		var utd = document.createElement('td');
		utd.innerHTML = "<input name='type' type='hidden' value='reset'>";
		tr.appendChild(utd);
		
		var tr3 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr3);
		var htd = document.createElement('td');
		htd.innerHTML = "<input name='id' type='hidden' value='"+id+"'><input name='type' type='hidden' value='login'>";
		var btnImages = Array({'url': 'skins/default/image/btnReset.gif', 'name':'First'}, {'url': 'skins/default/image/btnResetPress.gif', 'name':'Down'}, {'url': 'skins/default/image/btnResetHoover.gif', 'name':'Hover'});
		Navigator.addBtn("Login", "Reset Password", function() { self.special();}, htd, btnImages);
		
	};
	
	this.ChangePassword = function() {
		if(this.form.elements.UserID === ""){
			progress.innerHTML = "Please enter a user id to reset.";
			exit;
		}
		var self = this;
				table.deleteChild(table.getElementsByTagName('tbody')[0]);
		table.appendChild(document.createElement('tbody'));

		var tr = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr);
		tr.appendChild(document.createElement('td'));
		tr.lastChild.innerHTML = "<p>User</p>";
		tr.appendChild(document.createElement('td'));
		tr.lastChild.innerHTML = "<input name='UserID' type='text'>";
		
		var tr1 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr1);
		tr1.appendChild(document.createElement('td'));
		tr1.lastChild.innerHTML = "<p>Old Password</p>";
		tr1.appendChild(document.createElement('td'));
		tr1.lastChild.innerHTML = "<input name='OldPass' type='Password'>";
		
		var tr2 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr2);
		tr2.appendChild(document.createElement('td'));
		tr2.lastChild.innerHTML = "<p>New Password</p>";
		tr2.appendChild(document.createElement('td'));
		tr2.lastChild.innerHTML = "<input name='NewPass' type='Password'>";

		var tr3 = document.createElement('tr');
		table.getElementsByTagName('tbody')[0].appendChild(tr3);
		tr3.appendChild(document.createElement('td'));
		tr3.lastChild.innerHTML = "<p>Confirm</p>";
		tr3.appendChild(document.createElement('td'));
		tr3.lastChild.innerHTML = "<input name='Confirm' type='Password'>><input name='type' type='hidden' value='change'>";

		var btnImages = Array({'url': 'skins/default/image/btnChange.gif', 'name':'First'}, {'url': 'skins/default/image/btnChangePress.gif', 'name':'Down'}, {'url': 'skins/default/image/btnChangeHoover.gif', 'name':'Hover'});
		Navigator.addBtn("Login", "Change Password", function() { self.special();}, htd, btnImages);
	};
	
	this.SignUp = function() {
		//output signup into the inner div
		var y = new AlertBox("Loading...");
		var self = this;
		var a = new sack();
		a.requestFile = this.processPage;
		a.setVar("type", "signupdisplay");
		a.onCompletion = function(){ 
						y.Close();
						if( a.response.substring(0, 2) === "In"){
							progress.innerHTML = a.response;
						}
						else
						{
							self.form.innerHTML = a.response;
							progress.innerHTML = "";
						}
			};
		a.onError = function(){
					y.Close();
					progress.innerHTML = "Error loading the signup form. " + a.response;
			}; 
		a.runAJAX();		
	}; 
  
  this.ClearDiv = function() {
		this.buildTable();
		progress.innerHTML = "";  	
	};
  
	this.addJavascript = function (jsname,pos) {
		var th = document.getElementsByTagName(pos)[0];
		var s = document.createElement('script');
		s.setAttribute('type','text/javascript');
		s.setAttribute('src',jsname);
		th.appendChild(s);
	};
	
	this.logout = function(land) {
  	var a = new sack();
 		a.requestFile = this.processPage;
		a.setVar("type", "logout");
		a.onCompletion = function(){ 
						var data = a.response;
						if(data.substring(0, 2) === "In"){
							document.getElementById('logProgress').innerHTML = data;
						}
						else
						{
							window.location = land;
						}
			};
		a.runAJAX();
	};
	
	this.resetFunction();
};


