
/*


	# -------------------------------------------------------------------------------------------- #
	#																			#
	# SpinalEngine.class.js															#
	#																			#
	# MySpinalCord.com																#
	# Copyright 2011 Thommy Morgan													#
	# All Rights Reserved															#
	#																			#
	# -------------------------------------------------------------------------------------------- #


		
	
*/
 

	/*
 	# -------------------------------------------------------------------------------------------- #
 	# Define the SpinalEngine Object									 				#
	# -------------------------------------------------------------------------------------------- #*/
	
	
	var SpinalEngine = {

		
		/*
	 	# ----------------------------------------------------------------------------- #
	 	# Page Animations											 		#
		# ----------------------------------------------------------------------------- #*/
		
		
		formAnim: {

			// Define Form Objects
			
			loginDialog: 				null,
			forgotDialog:				null,
			signupDialog_1: 			null,
			signupDialog_2:			null,
			signupDialog_3:			null,
			askDialog: 				null,
			feedBackDialog:			null,
			activateDialog:			null,
			iFrameDialog:				null,
			
			currentViewableDialog: 		null,
			
			formControl: {
				
				frameSetDidBecomeVisible: function(frameSet) {
					var a = SpinalEngine.formAnim;
					a.currentViewableDialog 	= frameSet;
				},
				
				frameSetDidBecomeInvisible: function(frameSet) {
					var a = SpinalEngine.formAnim;
					a.currentViewableDialog = null;
				},
				
			},
			
			
			minimizeAllDialogs: function() {
				DC.FrameSet.minimizeAllDialogs();
			},
			
			
			showLoginDialog: function(email) {
				SpinalEngine.formAnim.resetSignupVars();
				if(!email) email = "";
				requireScript("js/desktop/req/dialog_anim/forms/show_login_dialog.js?email=" + email);
			},
			
			
			showForgotDialog: function() {
				SpinalEngine.formAnim.resetSignupVars();
				requireScript("js/desktop/req/dialog_anim/forms/show_forgot_dialog.js");
			},
			
	
			showSignupDialog: function(step) {
				if(SpinalEngine.signup.signupComplete) return;
				if(
					SpinalEngine.signup.suActive 		&& 
					SpinalEngine.signup.step != null 	&&
					step == SpinalEngine.signup.step
				) return;
				requireScript("js/desktop/req/dialog_anim/forms/show_signup_dialog.js?step=" + step);
			},
			
			
			resetSignupVars: function() {
				SpinalEngine.signup.suActive = NO;
				SpinalEngine.signup.step = null;
			},
			
			
			showAskDialog: function() {
				SpinalEngine.formAnim.resetSignupVars();
				requireScript("js/desktop/req/dialog_anim/forms/show_ask_dialog.js");
			},

			iFrameActivate: function() {
				SpinalEngine.formAnim.resetSignupVars();
				SpinalEngine.formAnim.iFrameDialog = new DC.FrameSet(
					"Activate You Email",
					"<iframe src='http://www.gmail.com' width='100%' height='300'></iframe>",
					new CGDim(650, 400),
					TransitionTypeFadeIn,
					TransitionTypeFadeOut
				)
				SpinalEngine.formAnim.iFrameDialog.show();
			}
			
		},

		
		/*
	 	# ----------------------------------------------------------------------------- #
	 	# User Actions												 		#
		# ----------------------------------------------------------------------------- #*/
		
		
		encryptKey: null,
		
		login: function(aForm) {
						SpinalEngine.formAnim.minimizeAllDialogs();
			with(aForm) {
				var e = email.value;
				var p = password.value;
				var r = stayloggedin.value;
				SpinalEngine.encryptKey = null;
				requireScript("js/desktop/req/user_mgt/encrypt_login.js?email=" + e);
				wait_for(SpinalEngine.encryptKey != null, function() {
					p = md5(md5(p) + SpinalEngine.encryptKey);
					SpinalEngine.encryptKey = null;
					requireScript("js/desktop/req/user_mgt/login.js?email=" + e + "&password=" + p + "&stayloggedin=" + r);
				}, 300);
			}
					},
		
		
		resendVerificationEmail: function(e) {
			requireScript("js/desktop/req/user_mgt/verify_email.js?email=" + e);
			DC.FrameSet.minimizeAllDialogs();
			DC.FrameSet.displayMessage(
				"A new verification email has been sent to " + e + ". Please makes sure to check your junk folder and add <a href=\"mailto:support@myspinalcord.com\">support@myspinalcord.com</a> to your address book or white list.",
				"Verification Email Sent!"
			);
		},
		
		
		logout: function() {
						SpinalEngine.formAnim.minimizeAllDialogs();
			requireScript("js/desktop/req/user_mgt/logout.js");
					},
		
		
		requestPasswordChange: function(aForm) {
						
					},
		
		
		signup: {
						suActive:		NO,
			step:		null,
			pending:		NO,
			condition: 	null,
			fname:		null,
			lname:		null,
			dname:		null,
			email:		null,
			password:		null,
			repassword:	null,
			lastStep:		function() {
				SpinalEngine.formAnim.minimizeAllDialogs();
				SpinalEngine.formAnim.showSignupDialog(SpinalEngine.signup.step - 1);
			},
			nextStep:		function(aForm) {
				var currentStep = SpinalEngine.signup.step;
				if(!tryout(function() {
					var stepString = "step=" + SpinalEngine.signup.step;
					switch(SpinalEngine.signup.step) {
						case 1:
							stepString += "&cond=" + SpinalEngine.signup.condition;
							$("signup_1;submit").value = "Loading...";
							$("signup_1;submit").disabled = true;
							SpinalEngine.signup.pending = YES;
							wait_for(SpinalEngine.signup.pending == NO,
								function() {
									if(currentStep == SpinalEngine.signup.step) {
										$("signup_1;submit").value = "Next";
										$("signup_1;submit").disabled = false;
									}
								},
								-1
							);
							break;
						case 2:
							with(aForm) {
								stepString += "&email=" 	+ email.value;
								stepString += "&pass="	+ password.value;
								stepString += "&rpass="	+ repassword.value;
							}
							$("signup_2;submit").value = "Loading...";
							$("signup_2;submit").disabled = true;
							SpinalEngine.signup.pending = YES;
							wait_for(SpinalEngine.signup.pending == NO,
								function() {
									if(currentStep == SpinalEngine.signup.step) {
										$("signup_2;submit").value = "Next";
										$("signup_2;submit").disabled = false;
									}
								},
								-1
							);
							break;
						case 3:
							with(aForm) {
								stepString += "&fname=" + fname.value;
								stepString += "&lname=" + lname.value;
								stepString += "&dname=" + dname.value;
							}
							$("signup_3;submit").value = "Loading...";
							$("signup_3;submit").disabled = true;
							SpinalEngine.signup.pending = YES;
							wait_for(SpinalEngine.signup.pending == NO,
								function() {
									if(currentStep == SpinalEngine.signup.step) {
										$("signup_3;submit").value = "Complete Signup";
										$("signup_3;submit").disabled = false;
									}
								},
								-1
							);
							break;
						case 4:
							with(SpinalEngine.signup) {
								stepString += "&cond="	+ condition;
								stepString += "&email=" 	+ email;
								stepString += "&pass="	+ password;
								stepString += "&fname=" 	+ fname;
								stepString += "&lname=" 	+ lname;
								stepString += "&dname=" 	+ dname;
							}
							break;
						case 5:
							// do nothing
							break;
						default:
							return ERROR;
					}
					requireScript("js/desktop/req/user_mgt/su_next_step.js?" + stepString);
				})) return ERROR;
			},
			signupComplete:	NO,
					},
		
		
	}
