YAHOO.namespace("ccpphoto.proofs.index");

function clearElement(e) {
	while (e != null && e.hasChildNodes()) {
		e.removeChild(e.firstChild);
	}
};

function echeck(str) {

		var at="@"
		var dot="."
		var lat=str.indexOf(at)
		var lstr=str.length
		var ldot=str.indexOf(dot)
		if (str.indexOf(at)==-1){
		   return false
		}

		if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
		   return false
		}

		if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
		    return false
		}

		 if (str.indexOf(at,(lat+1))!=-1){
		    return false
		 }

		 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
		    return false
		 }

		 if (str.indexOf(dot,(lat+2))==-1){
		    return false
		 }
		
		 if (str.indexOf(" ")!=-1){
		    return false
		 }

 		 return true					
	}

function init() {
	var handleCancel = function() { 
		this.cancel(); 
	};
	
	var handleSubmit = function() {
		this.submit();
	};
	
	var onFailure = function(o) {
		alert("Failure: " + o.statusText);
	};
	
	var onSuccess = function(o) {
		alert("Success: " + o.statusText);
	};
	
	var hideDlg = function(o) {
		this.hide();
	};
	
	dlg = new YAHOO.widget.SimpleDialog("dlg",
	{ width: "30em",
	  fixedcenter: true,
	  modal: true,
	  close: false,
	  draggable: false,
	  visible: false,
	  effect: {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.3},
	  buttons: [{text: "OK", handler: hideDlg, isDefault: true }] });
	
	var onSentPassword = function(o) {
		var response = YAHOO.lang.JSON.parse(o.responseText);
		dlg.setHeader(response['status']);
		dlg.setBody(response['message']);
		dlg.render(document.body);
		dlg.show();
	};
	
	// Make buttons
	new YAHOO.widget.Button("submit");
	new YAHOO.widget.Button("clear");
		
	// Instantiate the "Send password" dialog
	YAHOO.ccpphoto.proofs.index.spdialog = new YAHOO.widget.Dialog(
		"spdialog",
		{ width : "30em",
		  fixedcenter : true,
		  visible : false,
		  modal : true,
		  close : false,
		  draggable : false,
		  effect: {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.3},
		  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
		  			  { text:"Cancel", handler:handleCancel } ]
		});
		
	YAHOO.ccpphoto.proofs.index.spdialog.render();
	YAHOO.ccpphoto.proofs.index.spdialog.callback.failure = onFailure;
	YAHOO.ccpphoto.proofs.index.spdialog.callback.success = onSentPassword;
	
	YAHOO.util.Event.addListener("sendpassword", "click", 
		YAHOO.ccpphoto.proofs.index.spdialog.show, 
		YAHOO.ccpphoto.proofs.index.spdialog, true);
		
	// Instantiate the "New account" dialog
	YAHOO.ccpphoto.proofs.index.nadialog = new YAHOO.widget.Dialog(
		"nadialog",
		{ width : "500px",
		  fixedcenter : true,
		  visible : false,
		  modal : true,
		  close : false,
		  effect: {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.3},
		  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
		  		 	  { text:"Cancel", handler:handleCancel } ]
	});
	YAHOO.ccpphoto.proofs.index.nadialog.validate = function() {
		var data = this.getData();
		var valid = true;
		
		var el = document.getElementById('fnameerror');
		clearElement(el);
		
		if (data.fname == "") {
			var msg = document.createTextNode("Required");
			el.appendChild(msg);
			valid = false;
		}

		el = document.getElementById('lnameerror');
		clearElement(el);
		
		if (data.lname == "") {
			var msg = document.createTextNode("Required");
			el.appendChild(msg);
			valid = false;
		}
		
		el = document.getElementById('emailerror');
		clearElement(el);
		
		if (data.email == "") {
			var msg = document.createTextNode("Required");
			el.appendChild(msg);
			valid = false;
		} else if (echeck(data.email) == false) {
			var msg = document.createTextNode("Invalid address");
			el.appendChild(msg);
			valid = false;
		}

		el = document.getElementById('passworderror');
		clearElement(el);
		
		if (data.password == "") {
			var msg = document.createTextNode("Must enter a password");
			el.appendChild(msg);
			valid = false;
		}

		el = document.getElementById('retypeerror');
		clearElement(el);
		
		if (data.password != data.retype) {
			var msg = document.createTextNode("Passwords must match");
			el.appendChild(msg);
			valid = false;
		}
		
		return valid;
	};
	YAHOO.ccpphoto.proofs.index.nadialog.render();
	YAHOO.ccpphoto.proofs.index.nadialog.callback.failure = onFailure;
	YAHOO.ccpphoto.proofs.index.nadialog.callback.success = onSentPassword;
	
	YAHOO.util.Event.addListener("newaccount", "click",
		YAHOO.ccpphoto.proofs.index.nadialog.show,
		YAHOO.ccpphoto.proofs.index.nadialog, true);
		
	// Instantiate the Validate dialog
	YAHOO.ccpphoto.proofs.index.valdialog = new YAHOO.widget.Dialog(
		"valdialog",
		{ width : "35em",
		  fixedcenter : true,
		  visible : false,
		  modal : true,
		  close : false,
		  draggable : false,
		  effect : {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.3},
		  buttons : [ { text:"Submit", handler:handleSubmit, isDefault:true },
		  			  { text:"Cancel", handler:handleCancel } ]
		});
		
	YAHOO.ccpphoto.proofs.index.valdialog.render();
	YAHOO.ccpphoto.proofs.index.valdialog.callback.failure = onFailure;
	YAHOO.ccpphoto.proofs.index.valdialog.callback.success = onSentPassword;
	
	YAHOO.ccpphoto.proofs.index.valdialog.validate = function() {
		var data = this.getData();
		var valid = true;
		
		var el = document.getElementById('valemailerror');
		clearElement(el);
		
		if (data.email == "") {
			var msg = document.createTextNode("Required");
			el.appendChild(msg);
			valid = false;
		} else if (echeck(data.email) == false) {
			var msg = document.createTextNode("Invalid address");
			el.appendChild(msg);
			valid = false;
		}
		
		el = document.getElementById('codeerror');
		clearElement(el);
		
		if (data.code == "") {
			var msg = document.createTextNode("Required");
			el.appendChild(msg);
			valid = false;
		}
		
		return valid;
	}
	
	YAHOO.util.Event.addListener("validate", "click",
		YAHOO.ccpphoto.proofs.index.valdialog.show,
		YAHOO.ccpphoto.proofs.index.valdialog, true);
		
	//
	// Set up the login form
	//
	var loginForm = document.getElementById('loginform');
	loginForm.onsubmit = function() { return false; }
	
	var loginCallback = {
		success: function(o) {
			var response = YAHOO.lang.JSON.parse(o.responseText);
			if (response.success == false) {
				dlg.setHeader(response.status);
				dlg.setBody(response.message);
				dlg.render(document.body);
				dlg.show();
			} else {
				location = response.location;
			}
		},
		
	failure: function(o) {
			dlg.setHeader("Error " + o.status);
			dlg.setBody(o.statusText);
			dlg.render(document.body);
			dlg.show();
		}
	}
	
	var submitLogin = function () {
		var el = document.getElementById("code");
		var code = el.value;
		
		el = document.getElementById("email");
		var email = el.value;
		
		el = document.getElementById("password");
		var password = el.value;
		
		var params = "code=" + code + "&email=" + encodeURIComponent(email)
			+ "&password=" + encodeURIComponent(password);
		var request = YAHOO.util.Connect.asyncRequest('POST',
			"login.php", loginCallback, params);
	}
	
	var submitButton = document.getElementById('submit');
	submitButton.onclick = submitLogin;
	
	
		
}

YAHOO.util.Event.onDOMReady(init);

