/**
 * ping.js
 * Author: sunsuron
 * Email: vmxbmx@yahoo.com
 */
;(function($) {
	$.PingClass = function() {
		this.construct();
	},
	
	$.extend($.PingClass.prototype, {
		construct: function() {
			$('span#ajaxloader').hide();
			$('span#register_ajaxloader').hide();
			this.attach();
			this.validate();
		},
		
		attach: function() {
			
			$('a[rel=external]').attr('target','_blank');
			$('a').css('outline', 'none');
		},
		
		url: function(value) {
			return /^(https?|ftp):\/\/(((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:)*@)?(((\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5])\.(\d|[1-9]\d|1\d\d|2[0-4]\d|25[0-5]))|((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?)(:\d*)?)(\/((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)+(\/(([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)*)*)?)?(\?((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|[\uE000-\uF8FF]|\/|\?)*)?(\#((([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(%[\da-f]{2})|[!\$&'\(\)\*\+,;=]|:|@)|\/|\?)*)?$/i.test(value);
		},
		
		email: function(value) {
			return /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i.test(value);
		},
		
		validate: function() {
			var Me = this;
			$('input[name=rpc_submit]:first').unbind().click(function() {
				var rpc_blogurl  = $.trim($('input[name=rpc_blogurl]:first').val());
				var isEmpty = false;
				
				$('span#errors').empty();
				$('span#rpc_blogurl_error').empty();
				
				if (!rpc_blogurl) {
					$('span#rpc_blogurl_error').html('&laquo; blog url cannot be empty!');
					isEmpty = true;
				}
				
				if (isEmpty) {
					if (!rpc_blogurl)
						$('input[name=rpc_blogurl]:first').focus();
					return false;
				}
				
				if (rpc_blogurl) {
					
					/**
					 * client validation
					 */
					
					var isUrl = true;
					
					if (!Me.url(rpc_blogurl)) {
						$('span#rpc_blogurl_error').html('&laquo; blog url doesn\'t seem to be a valid url!');
						isUrl = false;
					}
					
					if (!isUrl) {
						if (!Me.url(rpc_blogurl))
							$('input[name=rpc_blogurl]:first').focus();
						return false;
					}
					
					/**
					 * hide/show/disable elements/empty
					 */
					
					$('input[name=rpc_blogurl]:first').attr('disabled', true);
					$('input[name=rpc_submit]:first').attr('disabled', true);
					$('span#ajaxloader').show();
					
					/**
					 * Send for server side validation
					 */
					
					rpc_blogurl  = encodeURIComponent(rpc_blogurl);
					
					$.post('/Giuk_Manual_Ping_Request.php', {blogurl:rpc_blogurl}, function(data) {
						if (data.fault == 0) {
							$('span#ajaxloader').hide();
							$('input[name=rpc_submit]:first').attr('disabled', false);
							$('input[name=rpc_blogurl]:first').attr('disabled', false);
							
							var msg = '<span style="color: green; font-weight: 700;">Your article was added into queue. Please wait up to 10 minutes for it to appear here.</span>';
							$('span#errors').html(msg);
							
							$('input[name=rpc_blogurl]:first').val('');
						}
						else {
							
							$('span#ajaxloader').hide();
							$('input[name=rpc_submit]:first').attr('disabled', false);
							$('input[name=rpc_blogurl]:first').attr('disabled', false);
							
							var msg = '<span style="color: red; font-weight: 700;">'+ data.msg +'</span>';
							$('span#errors').html(msg);
							
						}
					}, 'json');
				}
			});
			
			$('input[name=register_submit]:first').unbind().click(function() {
				var register_email = $.trim($('input[name=register_email]:first').val());
				var register_blogurl = $.trim($('input[name=register_blogurl]:first').val());

				var isEmpty = false;
				var isUrl = true;
				var isEmail = true;
				
				$('span#register_email_error').html('&nbsp;');
				$('span#register_blogurl_error').html('&nbsp;');
				
				if ( ! register_email ) {
					$('span#register_email_error').html('&laquo; email cannot be empty!');
					isEmpty = true;
				}
				
				if ( ! register_blogurl ) {
					$('span#register_blogurl_error').html('&laquo; blog url cannot be empty!');
					isEmpty = true;
				}
				
				if (isEmpty) {
					if ( ! register_email ) {
						$('input[name=register_email]:first').focus();
						return false;
					}
					if ( ! register_blogurl ) {
						$('input[name=register_blogurl]:first').focus();
						return false;
					}
				}
				
				if ( ! Me.email( register_email )) {
					$('span#register_email_error').html('&laquo; Invalid email address!');
					isEmail = false;
				}
				
				if ( ! Me.url( register_blogurl )) {
					$('span#register_blogurl_error').html('&laquo; Invalid url!');
					isUrl = false;
				}
				
				if ( ! isEmail ) {
					$('input[name=register_email]:first').focus();
					return false;
				}
				
				if ( ! isUrl ) {
					$('input[name=register_blogurl]:first').focus();
					return false;
				}
				
				$(this).attr('disabled', true);
				$('input[name=register_email]:first').attr('disabled', true);
				$('input[name=register_blogurl]:first').attr('disabled', true);
				$('span#register_ajaxloader').show();
				
				register_email   = encodeURIComponent(register_email);
				register_blogurl = encodeURIComponent(register_blogurl);
				
				$.post(location.href, {register_email:register_email, register_blogurl:register_blogurl}, function(data) {
					if (data.fault == 0) {
						$('input[name=register_email]:first').val('');
						$('input[name=register_blogurl]:first').val('');
						
						$('input[name=register_submit]:first').attr('disabled', false);
						$('input[name=register_email]:first').attr('disabled', false);
						$('input[name=register_blogurl]:first').attr('disabled', false);
						$('span#register_ajaxloader').hide();
						
						alert('Thank you!\nAn email containing the final step has been sent to your email.\nPlease check your email and follow the remaining instruction.');
						
						$("#panel").slideToggle("slow");
						$(".btn-slide").toggleClass("active");
						
					}
					else {
					    $('input[name=register_submit]:first').attr('disabled', false);
						$('input[name=register_email]:first').attr('disabled', false);
						$('input[name=register_blogurl]:first').attr('disabled', false);
						$('span#register_ajaxloader').hide();
						alert(data.msg);
					}
				},'json');
				
				return false;
				
			});
		}
	});
	
	$(document).ready(function() {
		if (typeof $.Ping === 'undefined')
			$.Ping = new $.PingClass();
	});
})(jQuery)