(function ($) {
$.fn.emailReg = function(options) {
	var opts = $.extend({}, $.fn.emailReg.defaults, options);
	return this.each(function(){

		postForm = function() {
			var fields = '';
		 	fields = $('#regForm_Email').serialize();
			fields += '&postMethod=ajax';
			
			// Set the AJAX icon
			var reg_button = $("#reg_button");
			opts.reg_button_src = reg_button.attr('src');
			reg_button.attr('src', opts.ajax_loader_src);
			
			$.post('/user_email_reg_confirm.php',fields,function(data) {
				processResponce(data);
				reg_button.attr('src', opts.reg_button_src);
			});
		};

		function processResponce (data) {
			var rtnMsg = data.substr(data.indexOf('|') + 1);
			var msgLevel = '1';
			var email = '', a = [];
			if (data.match(/Success/)) {
				$('#regForm_Email input:text,#regForm_Email input:password').each(function(index) {
					if ($(this).attr('name') == 'reg_email')
						 email = $(this).val();

					$(this).val($(this).attr('def_val'));
				});
				a = data.split('|');
				$(this).openJoinNow({returnTo:'index.php',
									 title: _VARS.processResponce.title,
									 obj:'register_signin',
									 openSign:false,
									 callBack:null,
									 currEmail:email,
									 uid:a[2],
									 backLink:'hide',
									 upSellTxt:'show'});
				return true;
			}
			MessageBoxShow(rtnMsg,msgLevel);
			return true;
		}

		function GMapResponse(response) {
    	    if (response.Status.code == '602') {
    	    	MessageBoxShow(_VARS.GMapResponse.zip,'1');
				return;
    	    }

			if (response.Placemark.length == 1 ) {
				place = response.Placemark[0];
				if (place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality) {
					$('#reg_city').val(place.AddressDetails.Country.AdministrativeArea.SubAdministrativeArea.Locality.LocalityName);
				}
				else
					$('#reg_city').val('');
					
				$('#reg_locationlatlong').val(place.Point.coordinates[0] + ',' + place.Point.coordinates[1]);
			}
    	}

		function validateForm(el) {
			var fieldName = el.attr('name');
			var fieldDefVal = el.attr('def_val');
			var fieldVal  = el.val();
			var errMsg = "";

			switch (fieldName) {
				case 'reg_fname':
					if (fieldVal == '' || fieldVal == fieldDefVal)
						errMsg += _VARS.email_reg.first_name_required;
					break;
				case 'reg_lname':
					if (fieldVal == '' || fieldVal == fieldDefVal)
						errMsg += _VARS.email_reg.last_name_required;
					break;
				case 'reg_email':
					if (fieldVal == '' || fieldVal == fieldDefVal)
						errMsg += _VARS.email_reg.email_required;
					else 
					if (!validateValidEmail(fieldVal))
						errMsg += _VARS.email_reg.email_format;
					var checkEmail = el.attr('rt_checkEmail');
					checkEmail = true;
					if ($('#emailChecked').val() != fieldVal && checkEmail) {
						$('#emailChecked').val(fieldVal);
						$.get('/user_register_check.php',"e=" + fieldVal + "&checkfield=true",function(data) {
							if (data.match(/SUCCESS/) && (data.indexOf(1) > 0)) {
								displayMessage(_VARS.email_reg.email + fieldVal + _VARS.email_reg.already_registered,'1');
								return false;
							}
						});
					}
					break;
				case 'reg_zipcode':
					if (fieldVal == '' || fieldVal == fieldDefVal)
						errMsg += _VARS.email_reg.zip_required;
					else
					if (!validateZIP(fieldVal))
						errMsg += _VARS.email_reg.zip_format;
					break;
				case 'reg_mobile':
					if ($('#reg_txtmsg').attr('checked') == true && (fieldVal == "" || fieldVal == fieldDefVal))
						errMsg += _VARS.email_reg.mobile_required;
					else
					if (fieldVal != "" && fieldVal != fieldDefVal) { 
						if (fieldVal.search(/\d{3}\-\d{3}\-\d{4}/)==-1)
							errMsg += _VARS.email_reg.mobile_format;
					}
					break;
				default:
					break;
			}

			if (errMsg !== '') {
				displayMessage(errMsg,'1');
				return false;
			}
			else 
				return true;
		}
		
		function displayMessage(msg, lvl) {
			MessageBoxShow(msg,lvl);
			return true;
		}

		this.init = function() {
			$('#' + opts.submitBtn).click(function(){
				var pass = false;
				$('#regForm_Email input:text').each(function() {
					if (!validateForm($(this))) {
						pass = false;
						return false;
					}
					else pass = true; 
				});
				if (pass)
					postForm();
				return false;
			});

			$('#reg_email').blur(function (){
				val = $(this).val();
				if (val == '' || val == $(this).attr('def_val')) {
					displayMessage(_VARS.email_reg.email_required,'1');
					return false;
				}

				if (!validateValidEmail(val)) {
					displayMessage(_VARS.email_reg.email_format,'1');
					return false;
				}
				var checkEmail = $(this).attr('rt_checkEmail');
				checkEmail = true;
				if ($('#emailChecked').val() != val && checkEmail) {
					$('#emailChecked').val(val);
					$.get('/user_register_check.php',"e=" + val + "&checkfield=true",function(data) {
						if (data.match(/SUCCESS/) && (data.indexOf(1) > 0)) {
							displayMessage(_VARS.email_reg.email + val + _VARS.email_reg.already_registered,'1');
							return false;
						}
					});
				}
				return true;
			});

			$('#reg_zipcode').blur(function (){
				val = $(this).val();
				if (opts.mapObj && (val != "" && val != $(this).attr('def_val'))) {
					if (!validateZIP(val)) {
						displayMessage(_VARS.email_reg.zip_format,'1');
						return false;
					}
					opts.mapObj.getLocations(val,GMapResponse);
		    	}
			});
			$('#reg_txtmsg').change(function(){
				if ($(this).attr('checked') == false) return true;
				fieldVal = $('#reg_mobile').val();
				if (fieldVal == "" || fieldVal == $('#reg_mobile').attr('def_val'))
					displayMessage(_VARS.email_reg.mobile_required,'1');
				return false;
			});

			$(this).keypress(function(ev) {
				if (ev.which == 13) {
					$('#' + opts.submitBtn).click();
					return false;
				}
			});
		}
		this.init();
	});	
};

$.fn.emailReg.defaults = {
    mapObj: null,
    submitBtn: 'submit',
    reg_button_src: '/img/button-circle-dark.gif',
    ajax_loader_src: '/img/ajax-loader.gif'
};
})(jQuery); 
		