/**
 * Actonjs Library v. 1.0
 * Author: Actonbit.gr < sales@actonbit.gr >
 * Copyrights: Actonbit.gr < sales@actonbit.gr >
 */

Actonjs.namespace("Actonjs.app");

Actonjs.app = function () {
	
	var server_name;

	function reset() {
		server_name  = window.location.protocol + '//' + window.location.hostname;
	}
	
	function logout() {
		var con = Actonjs.AJAX();
		if (con.init()) {
			con.request({
				url:'/Login/Logout/',
				params: 'r=r',
				method:'POST',
				success:function() {
					var response=con.getResponse();
					var redirect = response.redirect;
					window.location = redirect;
				}
			});
		}
	}
	
	function login() {
		var email = Actonjs.get('login_uname').value;
		var passwd = Actonjs.get('login_passwd').value;
		var redir = Actonjs.get('login_redir').value;
		var email_label = Actonjs.get('uname_label');
		var passwd_label = Actonjs.get('passwd_label');
		var error_div = Actonjs.get('login_error_msg');
		var error_msg = '';
		
		error_div.style.display = 'none';
		email_label.style.color = '#222233';
		passwd_label.style.color = '#222233';
		if (!Actonjs.validator.isEmail(email)) {
			email_label.style.color = '#FF0000';
			error_msg = 'Μή έγκυρο email χρήστη.<br style="margin-bottom:10px;">';
		}
		if (!Actonjs.validator.isEnglish(passwd) || passwd.length < 6 || passwd.length > 12) {
			passwd_label.style.color = '#FF0000';
			error_msg += 'Κωδικός χρήστη: Λατινικοί χαρακτήρες (6 - 12).<br style="margin-bottom:10px;">';
		}
		if (error_msg != '') {
			error_div.innerHTML = error_msg;
			error_div.style.display = 'block';
		}
		else {
			var login_btn = Actonjs.get('login_btn');
			login_btn.disabled = true;
			login_btn.value = 'Περιμένετε ...';
			var con = Actonjs.AJAX();
			if (con.init()) {
				con.request({
					url:'/Login/Login/',
					params: 'e='+email+'&p='+passwd+'&r='+redir,
					method:'POST',
					success:function() {
						var response=con.getResponse();
						var status = response.status;
						if (status==1) { // Ola epituxos
							login_btn.value = 'Σύνδεση';
							login_btn.disabled = false;
							window.location = response.redirect;
						}
						else { // Egine sfalma
							login_btn.value = 'Σύνδεση';
							login_btn.disabled = false;
							error_msg = 'Δε βρέθηκε χρήστης εγγεγραμμένος στο σύστημα με αυτό το email και κωδικό.';
							error_div.innerHTML = error_msg;
							error_div.style.display = 'block';
						}
					},
					failure: function() {
						login_btn.value = 'Σύνδεση';
						login_btn.disabled = false;
						error_msg = 'Δεν είναι δυνατή η σύνδεσή σας στο σύστημα αυτή τη στιγμή, δοκιμάστε αργότερα.';
						error_div.innerHTML = error_msg;
						error_div.style.display = 'block';
					}
				});
			}
		}
	}
	
	function addComment() {
		var btn = Actonjs.get('co_btn');
		btn.value = 'Περιμένετε ...';
		btn.disabled = true;
		var n_f = Actonjs.get('co_n');
		var n = Actonjs.trim(n_f.value);
		var e_f = Actonjs.get('co_e');
		var e = Actonjs.trim(e_f.value);
		var t_f = Actonjs.get('co_t');
		var t = Actonjs.trim(t_f.value);
		var c_f = Actonjs.get('co_c');
		var c = Actonjs.trim(c_f.value);
		var type = Actonjs.get('co_type').value;
		var pid = Actonjs.get('co_pid').value;
		var i = false;
		var email = false;
		if (Actonjs.validator.hasIllegalChars(n) || Actonjs.validator.hasIllegalChars(t) || Actonjs.validator.hasIllegalChars(c)) {
			i=true;
		}
		if (Actonjs.validator.isEmail(e) || e.length==0) {email=true;}
		
		if (n.length==0) {
			alert('Θα θέλαμε να μας δώσετε το όνομά σας για να επικοινωνήσουμε μαζί σας.');
			btn.value = 'Αποστολή';
			btn.disabled = false;
			return;
		}
		
		if (t.length==0) {
			alert('Θα θέλαμε να μας δώσετε το τηλέφωνό σας για να επικοινωνήσουμε μαζί σας.');
			btn.value = 'Αποστολή';
			btn.disabled = false;
			return;
		}
		
		if (c.length==0) {
			alert('Το σχόλιό σας πρέπει να περιέχει κάποιο κείμενο.');
			btn.value = 'Αποστολή';
			btn.disabled = false;
			return;
		}
		
		if (!email) {
			alert('Αυτή η διεύθυνση δεν είναι έγκυρη διεύθυνση ηλεκτρονικής αλληλογραφίας.');
			btn.value = 'Αποστολή';
			btn.disabled = false;
			return;
		}
		else if (i) {
			alert('Δεν επιτρέπεται η χρήση των χαρακτήρων [>|<|#].');
			btn.value = 'Αποστολή';
			btn.disabled = false;
			return;
		}
		else {
			var con = Actonjs.AJAX();
			if (con.init()) {
				var en_n = Actonjs.utf8encode(n);
				var en_e = Actonjs.utf8encode(e);
				var en_t = Actonjs.utf8encode(t);
				var en_c = Actonjs.utf8encode(c);
				con.request({
					url:'/message/save/',
					params: 'n='+en_n+'&e='+en_e+'&t='+en_t+'&c='+en_c+'&type='+type+'&pid='+pid,
					method:'POST',
					success:function() {
						var response=con.getResponse();
						var success = response.s;
						if (success==1) {
							alert('Το σχόλιό σας αποθηκεύτηκε επιτυχώς, θα επικοινωνήσουμε μαζί σας το συντομότερο δυνατό.');
							cancelComment();
							btn.value = 'Αποστολή';
							btn.disabled = false;
						}
						else {
							alert('Παρουσιάστηκε κάποιο σφάλμα κατά την αποθήκευση του σχολίου, παρακαλώ δοκιμάστε αργότερα.');
							btn.value = 'Αποστολή';
							btn.disabled = false;
						}
					},
					failure:function() {
						alert('Παρουσιάστηκε κάποιο σφάλμα κατά την αποθήκευση του σχολίου, παρακαλώ δοκιμάστε αργότερα.');
						btn.value = 'Αποστολή';
						btn.disabled = false;
					}
				});
			}
		}
	}
	
	function cancelComment() {
		Actonjs.get('co_n').value='';
		Actonjs.get('co_e').value='';
		Actonjs.get('co_t').value='';
		Actonjs.get('co_c').value='';
	}
	
	function saveEmail() {
		var e = Actonjs.get('right_newsletter_text').value;
		var msg_field = Actonjs.get('right_newsletter_msg');
		msg_field.style.display = 'none';
		var btn = Actonjs.get('right_newsletter_save');
		btn.disabled = true;
		btn.value = 'Περιμένετε ...';
		
		if (!Actonjs.validator.isEmail(e) || Actonjs.trim(e) == 'onoma@onoma.gr') {
			msg_field.style.color = 'rgb(128,0,0)';
			msg_field.innerHTML = 'Μή έγκυρο email!';
			Effect.Appear('right_newsletter_msg', {duration:.3});
			btn.disabled = false;
			btn.value = 'Αποθήκευση';
		}
		else {
			var con = Actonjs.AJAX();
			if (con.init()) {
				con.request({
					url:'/email/save/',
					params: 'e='+e,
					method:'POST',
					success:function() {
						var response=con.getResponse();
						var status = response.s;
						if (status==1) { // Ola epituxos
							msg_field.style.display = 'none';
							msg_field.style.color = 'rgb(0,128,0)';
							msg_field.innerHTML = 'Αποθηκεύτηκε επιτυχώς!';
							Effect.Appear('right_newsletter_msg', {duration:.3});
						}
						else if (status==0) {
							msg_field.style.display = 'none';
							msg_field.style.color = 'rgb(128,0,0)';
							msg_field.innerHTML = 'Δοκιμάστε ξανά αργότερα!';
							Effect.Appear('right_newsletter_msg', {duration:.3});
						}
						btn.value = 'Αποθήκευση';
						btn.disabled = false;
					},
					failure: function() {
						msg_field.style.display = 'none';
						btn.value = 'Αποθήκευση';
						btn.disabled = false;
						msg_field.style.color = 'rgb(128,0,0)';
						msg_field.innerHTML = 'Δοκιμάστε ξανά αργότερα!';
						Effect.Appear('right_newsletter_msg', {duration:.3});
					}
				});
			}
		}
	}
	
	function navigateTo() {
		var e = Actonjs.get('right_have_the_code_text').value;
		var msg_field = Actonjs.get('right_have_the_code_msg');
		msg_field.style.display = 'none';
		var btn = Actonjs.get('right_have_the_code_btn');
		btn.disabled = true;
		btn.value = 'Περιμένετε ...';
		
		if (Actonjs.trim(e) == '123456-321') {
			msg_field.style.color = 'rgb(128,0,0)';
			msg_field.innerHTML = 'Μή έγκυρος κωδικός!';
			Effect.Appear('right_have_the_code_msg', {duration:.3});
			btn.disabled = false;
			btn.value = 'Μετάβαση';
		}
		else {
			var con = Actonjs.AJAX();
			if (con.init()) {
				con.request({
					url:'/navigate/to/',
					params: 'e='+e,
					method:'POST',
					success:function() {
						var response=con.getResponse();
						var id = response.id;
						if (id>0) { // Ola epituxos
							var r = response.r;
							window.location = r;
						}
						else if (id==0) {
							msg_field.style.display = 'none';
							msg_field.style.color = 'rgb(128,0,0)';
							msg_field.innerHTML = 'Μή έγκυρος κωδικός!';
							Effect.Appear('right_have_the_code_msg', {duration:.3});
						}
						btn.value = 'Αποθήκευση';
						btn.disabled = false;
					},
					failure: function() {
						msg_field.style.display = 'none';
						btn.value = 'Αποθήκευση';
						btn.disabled = false;
						msg_field.style.color = 'rgb(128,0,0)';
						msg_field.innerHTML = 'Δοκιμάστε ξανά αργότερα!';
						Effect.Appear('right_have_the_code_msg', {duration:.3});
					}
				});
			}
		}
	}
	
	return {
		init:	function() {
			reset();
		},
		login:			function() { login(); },
		logout:			function() { logout(); },
		saveEmail:		function() { saveEmail(); },
		cancelComment:	function() { cancelComment(); },
		sendComment:	function() { addComment(); },
		navigateTo:		function() { navigateTo(); }
	}
}();

Actonjs.onReady(Actonjs.app.init);
