﻿YUI().use("node", "io-form", "json-parse", function(Y) {
	var onReqComplete = function(id, o, args){ 
		var feedback = Y.JSON.parse(o.responseText); 
		switch (feedback.action) {
			case "registration":
				var thisForm = Y.one("#regform");
				if (feedback.result == 'false') {
					Y.one("#"+feedback.alert_id).set("innerHTML", feedback.error);
				}
				else {
					Y.one("#form_fieldset").set("style.display", "none");
 					Y.one("#form_alert").set("style.color", "#013696");
 					Y.one("#welcome").set("innerHTML", "Welcome "+feedback.user_name+"! Thank you for signing up!");
 					Y.one("#form_alert").set("style.display", "inline");
 					setTimeout("window.location = 'index.php';", 10000);
				}
				break;
			case "comment":
				if (feedback.result === 'true') {
 					Y.one("#thank_you").set("style.display", "inline-block");
 					Y.one("#sorry").set("style.display", "none");
					Y.one("#form_inputs").set("style.display", "none");
					setTimeout("window.location = 'index.php';", 10000);
				}
				else {
					if (feedback.captcha_error === "none") {
 						Y.one("#sorry").set("style.display", "inline");
						Recaptcha.reload();
					}
					else {
						Recaptcha.reload();
						Y.one("#captcha_error").set("style.display", "inline");
					}
				}
				break;
			case "user_table_update":
				Y.all("input").each(function(obj) {
					obj.set("value", "");
				});
				if (feedback.result === 'true') {
					Y.one("#result_msg").set("style.color", "#013696");
					Y.one("#result_msg").set("innerHTML", feedback.message);
					if (feedback.deleted === 'true') {
						var select_box = Y.one("#user_name");
						var i = 0;
						select_box.get("options").each(function(obj) {
							if (obj.get("value") === feedback.user_id) {
							  select_box.set("options."+i, null);  
							}
							i++;
						});
					}				
				}
				else {
					Y.one("#result_msg").set("innerHTML", feedback.error);
				}
				/*
					In case a user was deleted from database we need to remove the name from
					the list
				*/

				break;
			case "update_user":
				if (feedback.result === "true") {
					Y.one("#"+feedback.alert_id).set("style.color", "#013696");
					Y.one("#"+feedback.alert_id).set("innerHTML", feedback.message);
				}
				else {
					Y.one("#"+feedback.alert_id).set("style.color", "red");
					Y.one("#"+feedback.alert_id).set("innerHTML", feedback.error);
				}
				Y.one("#"+feedback.alert_id).set("style.display", "block");
				Y.one("#chng_pswd_form").all("input").each(function(obj) {
					obj.set("value", "");
				});
				break;
		}
	};

	function validate_comments_form () {
		if (Y.one("#send_comment")) {
			var result = 1;
			this.get("form").all(".req").each(function(obj) {
				if (obj.get("value") ===""){
					Y.one("#"+obj.get("id")+"_lbl").set("style.color", "red");
					result = 0;
				}
				else {
					Y.one("#"+obj.get("id")+"_lbl").set("style.color", "#013696");
				}
			});
			if (result === 0) {
				Y.one("#warning_message").set("style.display", "inline");
			}
			else {
				Y.one("#warning_message").set("style.display", "none");
				var uri = "index.php";
				var cfg = { 
					method: 'POST', 
					data: "action=contact_us&function=send_message",
					form: { 
						id: this.get("form"), 
						upload: false 
					} 
				}; 
				var request = Y.io(uri, cfg); 	
			}
		}
	}
	if (Y.one("#send_comment")) {
		Y.on("click", validate_comments_form, Y.one("#send_comment"));
	}
	Y.on('io:complete', onReqComplete, this);

	var timeout	= 500;
	var closetimer	= 0;
	
	// open hidden layer
	function mopen(id)
	{	
		ddmenuitem = this.get("parentNode").get("children.1");
		// close old layer
		mclose();
		// cancel close timer
		mcancelclosetime();
	
	
		// show new layer
		if(ddmenuitem) ddmenuitem.set("style.visibility", "visible");
	
	}
	// close showed layer
	function mclose()
	{	
		Y.all(".submenu").each(function(obj) {
			obj.set("style.visibility", "hidden")
		});
	}
	
	// go close timer
	function mclosetime()
	{
		closetimer = window.setTimeout(mclose, timeout);
	}
	
	// cancel close timer
	function mcancelclosetime()
	{
		if(closetimer)
		{
			window.clearTimeout(closetimer);
			closetimer = null;
		}
	}
	
	// close layer when click-out
	document.onclick = mclose; 
	
	Y.on("mouseover", mopen, Y.all(".menu_item"));
	Y.on("mouseout", mclosetime, Y.all(".menu_item"));
	Y.on("mouseover", mcancelclosetime, Y.all(".submenu"));
	Y.on("mouseout", mclosetime, Y.all(".submenu"));

	function reset_form () {
		thisForm = this.get("form");
		thisForm.reset();
		thisForm.all(".result_msg, .form_validation_error").each(function(obj) {
			obj.set("innerHTML", "");
		});
	}
	if (Y.all(".reset_form")) {
		Y.on("click", reset_form, Y.all(".reset_form"));
	}

	function check_for_valid_password () {
		var result = 1;
		var password = document.getElementById("password").value;
		var chk_password = document.getElementById("re-enter").value;
		if (password.length < 8 || password.length > 12) {
			document.getElementById("password_alert").innerHTML = "Password must be between 8 and 12 characters long!";
			result = 0;
			return false;
		}
		if (password != chk_password) {
			document.getElementById("password_alert").innerHTML = "Please make sure your password matches re-entered password!";
			result = 0;
			return false;
		}
		return result;
	}
	
	
	function validate_form () {
		var validated = 1;
		var message = "";
		var new_password;
		thisForm = this.get("form");
		thisForm.all("input").each(function(obj) {
			if (obj.get("className").match("req")) {
				var id = obj.get("id");
				var fieldName = id.replace("_", " ");
 				var alrtId = id+"_alert";

				if (obj.get("value").match(/^\s*$/)) {
					message = "Error: Please fill in '"+fieldName+"'.";
					validated = 0;
				}
				else if (obj.get("type") === "password") {
					/*
						If this is a new password, save it's value to be compared 
						with the re-entered one.
					*/
					if (obj.get("className").match("new_password")) {
						new_password = obj.get("value");
					}
					
					if (obj.get("value").length < 8) {
						message = "Password must be at least 8 characters long!";
						validated = 0;
					}
					else if (obj.get("className").match("re_enter")) {
						if (obj.get("value") !== new_password) {
							message = "Password and re-entered password don't macth.";
							validated = 0;
						}
					}
				}
				thisForm.one("#"+alrtId).set("innerHTML", message);
				message = "";
			}
		});
		if (validated === 1) {
			if (confirm("Are you sure you want to go through with these changes?")) {
				var data = thisForm.get("action").match(/action.+$/)[0];
				send_form(data, thisForm);
			}
		}
	}
	if (Y.all(".submit_form")) {
		Y.on("click", validate_form, Y.all(".submit_form"));
	}
	
	function send_form (cfg_data, form_id) {
		var uri = "index.php";
		var cfg = { 
			method: 'POST', 
			data: cfg_data,
			form: { 
				id: form_id, 
				upload: false 
			} 
		}; 
		var request = Y.io(uri, cfg); 	
	}
});

function show_login() {
	document.getElementById("menu").style.width = "700px";
	document.getElementById("show_login").style.display = "inline";
	document.getElementById("show_links").style.display = "none";		
}

function cancel_login() {
	document.getElementById("menu").style.width = "850px";
	document.getElementById("show_login").style.display = "none";
	document.getElementById("show_links").style.display = "inline";		
}

