var adviser_messages = new Array();

function checkValidCitizen() {
    var name = $j('input#citizen_name').val();
    if(name!='') {
        jQuery.getJSON('/citizen/validate/name/'+name, function(data) {
			if(data['response']==2 || data['response']==3) {
				$j('span#error_for_citizen_name').html('Invalid citizen name');
            	$j('span#error_for_citizen_name').css('display', 'block');
			}
            else if(data['response']==1) {
               $j('span#error_for_citizen_name').html('Name already exists');
               $j('span#error_for_citizen_name').css('display', 'block');
            }
            else {
                $j('span#error_for_citizen_name').css('display', 'none');
				return data['response'];
            }
            return false;
        });
    }
	else
		return false;
}

function checkValidEmail(email) {
	var at="@"
	var dot="."
	var lat=email.indexOf(at)
	var lstr=email.length
	var ldot=email.indexOf(dot)
	if (email.indexOf(at)==-1)
	   return false

	if (email.indexOf(at)==-1 || email.indexOf(at)==0 || email.indexOf(at)==lstr)
	   return false

	if (email.indexOf(dot)==-1 || email.indexOf(dot)==0 || email.indexOf(dot)==lstr)
		return false

	 if (email.indexOf(at,(lat+1))!=-1)
		return false

	 if (email.substring(lat-1,lat)==dot || email.substring(lat+1,lat+2)==dot)
		return false

	 if (email.indexOf(dot,(lat+2))==-1)
		return false

	 if (email.indexOf(" ")!=-1)
		return false

	 return true
}

function setAdviserMessage(message_id, opts) {
	if(adviser_messages.length > 0 && adviser_messages[message_id]) {
		if(opts.length > 0) {
			$j.each(opts, function(kk, vv) {
				$j.each(vv, function(k, v) {
						adviser_messages[message_id] = adviser_messages[message_id].replace(k, v);
					});
				});
		}
		$j('div.adviser_bubble table tbody tr td').html(adviser_messages[message_id]);
	}
	else {
		jQuery.getJSON('/en/speak', function(data) {
				$j.each(data, function(key, value) {
					adviser_messages[key] = '';
					adviser_messages[key] = value['message'];
					})
				$j('div.adviser_bubble table tbody tr td').html(adviser_messages[message_id]);
			});
	}
}

function countNextErrors() {
	if($j('form#register').valid() && $j('input#country_selected_id').val() != 0 && $j('input#region_selected_id').val() != 0) {
		if($j('#next_screen').hasClass('disabled'))
			$j('#next_screen').removeClass('disabled');
	}
	else
		$j('#next_screen').addClass('disabled');
}

function countFinishErrors() {
	if($j('form#register').valid() && $j('input#citizen_password').val() !='') {
		if($j('#finish_screen2').hasClass('.disabled'))
			$j('#finish_screen2').removeClass('disabled');
	}
	else
		$j('#finish_screen2').addClass('disabled');
}

function countCaptchaErrors() {
	if($j('form#register').valid()) {
		if($j('#finish_screen').hasClass('.disabled'))
			$j('#finish_screen').removeClass('disabled');
	}
	else {
		$j('#finish_screen').addClass('disabled');
	}
}

function citizenNameValidation() {
  $j('form#register').validate();
  $j('input#citizen_name').rules("add", {
    required: true,
    minlength: 4,
    maxlength: 30,
    startEnd: "^[a-zA-Z0-9](.*[a-zA-Z0-9])?$",
    regex: "^([a-zA-Z0-9'\.]+ ?)*$",
    messages: {
      required: 'Required Input',
      minlength: "Name too short",
      maxlength: "Name too long",
      startEnd: "Name must begin and end with a letter or digit",
      regex: "Invalid name format"
    }
  });
}

function citizenEmailValidation() {
  $j('form#register').validate();
  $j('input#citizen_email').rules("add", {
    required: true,
    regex: "^([a-zA-Z0-9_.-])+@(([a-zA-Z0-9-])+.)+([a-zA-Z0-9]{2,4})+$",
	no_yahoo: $j(this),
	no_gmail: $j(this),
	normal_email: $j(this),
    messages: {
      required: 'Required Input',
      regex: "Invalid email format"
    }
  });
}


function captchaValidation() {
	$j('form#register').validate();
	$j('input#recaptcha_response_field').rules(
		'add', {
			required: false,
			messages: {
				required: 'Captcha is required'
			}
		}
	);
}

function citizenPasswordValidation() {
  $j('form#register').validate();
  $j('input#citizen_password').rules("add", {
    required: true,
    regex: "^.{6,}$",
    messages: {
      required: 'Required Input',
      regex: "The password must have at least six characters."
    }
  });
}

/**
 *
 * @access public
 * @return void
 **/
function email_exists(){
	var email = $j('input#citizen_email');
	if(checkValidEmail(email.val())) {
		var email_value = email.val();
			jQuery.getJSON('/citizen/validate/email/'+email_value, function(data) {
				if(data['response']==2) {
					$j('span#error_for_citizen_email').html('Invalid email');
					$j('span#error_for_citizen_email').css('display', 'block');
					return 2;
				}
				else if(data['response']==1) {
					$j('span#error_for_citizen_email').html('Email already exists');
					$j('span#error_for_citizen_email').css('display', 'block');
					return 1;
				}
				else {
					$j('span#error_for_citizen_email').css('display', 'none');
					return 0;
				}
			});
	}
}

function goAway(url, name, width, height) {
	var isResizeAble = false;
	var left = Math.round((screen.width - width) / 2);
	var itop = Math.round((screen.height - height) / 2);
	var styleStr = "";
	styleStr += 'height=' + height+','+'width=' + width;
	styleStr += 'toolbar=no,location=no,directories=no,status=no,menuBar=no,scrollbars=yes';
	styleStr += ',resizable=' + (isResizeAble ? 'yes' : 'no');

	styleStr += ',left=' + left + ',top=' + itop;
	//styleStr += ',screenX=' + left + ',screenY=' + itop;
	try {
		var res = window.open(url, name, styleStr);
		res.focus();
		window.childW = res;
	}
	catch(e) {alert(e);}
	return res;
}

function registerWith(client_name) {
	var url = '/en/main/oauth/'+client_name.toLowerCase()+'/register';
	try {
		childW.close();
	}
	catch(e){;}
	try {
			var x = 600;
			var y = 550;
			if(client_name.toLowerCase() == "msn") {
				x += 350;
				y += 50;
			}
			goAway(url, "Oauth_login", x, y);
	}
	catch(e){;}
}

returnToMain = function(type, displayMsg) {
	if(type == 'register') {
		try {
			childW.close();
			window.location.reload();
		}
		catch(e) {}
	}
};

returnToMainNoRefresh = function(name, email) {
	try {
		$j('span#error_for_citizen_name').hide();
		$j('span#error_for_citizen_email').hide();
		if(!$j('input#citizen_name').val()) {
			$j('input#citizen_name').val(name);
		}
		$j('input#citizen_email').val(email);
		$j('input#citizen_email').attr('readonly', 'readonly');
		$j('#finish_screen2').removeClass('yahoo');
		$j('#finish_screen2').removeClass('gmail');
		$j('#finish_screen2').removeClass('disabled');
		$j('#finish_screen2').removeClass('orange');
		childW.close();
	}
	catch(e) {}
};

returnToMainNoRefreshWithError = function(error) {
	try {
		$j('span#error_for_citizen_name').hide();
		$j('span#error_for_citizen_email').hide();
		if(!$j('span#error_for_citizen_name').html()) {
			$j('span#error_for_citizen_name').html(error);
			$j('span#error_for_citizen_name').show();
		}
		if(!$j('span#error_for_citizen_email').html()) {
			$j('span#error_for_citizen_email').html(error);
			$j('span#error_for_citizen_email').show();
		}
		childW.close();
	}
	catch(e) {}
};

$j(document).ready(function() {
  $j.validator.addMethod(
        "regex",
        function(value, element, regexp) {
            var check = false;
            var re = new RegExp(regexp);
            return this.optional(element) || re.test(value);
        }
  );

  $j.validator.addMethod(
        "no_yahoo",
        function(value, element) {
			if(element.value.indexOf('@yahoo') != -1 && !$j(element).attr('readonly') && $j('input#facebook_register').val() != 1) {
				$j('#finish_screen2').removeClass('gmail');
				$j('#finish_screen2').addClass('orange');
				$j('#finish_screen2').addClass('yahoo');
				$j('#yahoo_notice').css('display', 'block');
				$j('#gmail_notice').css('display', 'none');
				return true;
			} else {
				return true;
			}
		}
  );

  $j.validator.addMethod(
        "no_gmail",
        function(value, element) {
			if((element.value.indexOf('@gmail') != -1 || element.value.indexOf('@googlemail') != -1) && !$j(element).attr('readonly') && $j('input#facebook_register').val() != 1) {
				$j('#finish_screen2').removeClass('yahoo');
				$j('#finish_screen2').addClass('orange');
				$j('#finish_screen2').addClass('gmail');
				$j('#yahoo_notice').css('display', 'none');
				$j('#gmail_notice').css('display', 'block');
				return true;
			} else {
				return true;
			}
		}
  );
  
  $j.validator.addMethod(
        "normal_email",
        function(value, element) {
        	var isGmail = true;
        	var isYahoo = true;;
			if(element.value.indexOf('@gmail') == -1 && element.value.indexOf('@googlemail') == -1) {
				$j('#finish_screen2').removeClass('gmail');
				isGmail = false;
			} 
			if (element.value.indexOf('@yahoo') == -1) {
				$j('#finish_screen2').removeClass('yahoo');
				isYahoo = false;
			}
			if (!isGmail && !isYahoo) {
				$j('#finish_screen2').removeClass('orange');
			}
			return true;
		}
  );

  $j.validator.addMethod(
        "startEnd",
        function(value, element, regexp) {
            var re = new RegExp(regexp);
            return this.optional(element) || re.test(value);
        }
  );

	var citizen_password = $j('input#citizen_password');
	citizen_password.keyup(function() {
	    citizenPasswordValidation();
			countFinishErrors();
		});
	if(citizen_password.length) {
		jQuery.ajax({
			url: '/password-list',
			dataType: 'json',
			success: function(data) {
				load_pstrength(data, citizen_password);
			}
		});
	}

	$j('input#recaptcha_response_field').keyup(function() {
		captchaValidation();
		countCaptchaErrors();
	});

	setAdviserMessage(0, '');

	var errors = 0;

    var citizen_name = $j('input#citizen_name');
	citizen_name.blur(function() {
	      citizenNameValidation();
				countNextErrors();
	});

	var email = $j('input#citizen_email');
	email.blur(function() {
	    citizenEmailValidation();
			countFinishErrors();
		});

	$j('#modal_yes_region').click(function() {
		$j.unblockUI();
		return false;
	});

	$j('#modal_no_region').click(function() {
		$j.unblockUI();
		setTimeout(function(){ $j('div#region_list .dropfx').click(); }, 100);
		return false;
	});

	$j('#close_modal_region').click(function() {
		$j.unblockUI();
		return false;
	});

	$j('#modal_yes_country').click(function() {
		$j.unblockUI();
		return false;
	});

	$j('#close_modal_country').click(function() {
		$j.unblockUI();
		return false;
	});

	$j('.fakeinput').focus(function() {
		$j(this).parent().addClass("focused");
	});
	$j('.fakeinput').blur(function() {
		$j(this).parent().removeClass("focused");
	});

	$j('div#country_list .droparea .scroll ul li a').click(function (e) {
		$j('div#country_list a.dropfx').html($j(this).html());
		country_id = $j(this).attr("id");
		country_id = country_id.split("_");
		$j('input#country_selected_id').val(country_id[1]);
		$j('input#region_selected_id').val(0);
		populateRegions(country_id[1]);
		if($j('div#region_list a.dropfx').hasClass('.disabled')){
			$j('div#region_list a.dropfx').removeClass('disabled')
//			setTimeout(function(){ $j('div#region_list .dropfx').click(); }, 100);
		}
		countNextErrors();

	});

	if (parseInt($j('#country_selected_id').val()) > 0) {
		$j.each($j('div#country_list .droparea .scroll ul li a'), function(idx, n){
			if (parseInt($j(n).attr("id").split('_')[1]) === parseInt($j('#country_selected_id').val())) {
				$j(n).click();
			}
		});
	}

	$j('#finish_screen').click(function() {
		if(!$j(this).hasClass('.disabled')) {
			challengeField = $j("input#recaptcha_challenge_field").val();
			responseField = $j("input#recaptcha_response_field").val();
			token = $j("input#_token").val();
			var html = $j.ajax({
				type: "POST",
				url: "/ajax_captcha",
				data: "recaptcha_challenge_field=" + challengeField + "&recaptcha_response_field=" + responseField + "&_token=" + token,
				async: false
			}).responseText;
			if(html=='success') {
				$j('form#register').submit();
			}
			else {
				Recaptcha.reload();
				$j('span#error_for_recaptcha_response_field').html(html);
				$j('span#error_for_recaptcha_response_field').css('display', 'block');
			}
		}
	});

	$j('#finish_screen2').click(function() {
	   if(!$j(this).hasClass('.disabled')) {
		    if ($j(this).hasClass('gmail')){ 
		    	registerWith('gmail');	
		    } else if ($j(this).hasClass('yahoo')) {
		    	registerWith('yahoo');
		    } else {
		    $j(this).addClass('disabled');
		   	var email = $j('input#citizen_email');
				if(checkValidEmail(email.val())) {
					var email_value = email.val();
			   		jQuery.getJSON('/citizen/validate/email/'+email_value, function(data) {
						if(data['response']==2) {
							$j('span#error_for_citizen_email').html('Invalid email');
							$j('span#error_for_citizen_email').css('display', 'block');
							$j('#finish_screen2').removeClass('disabled');
							$j('#finish_screen2').addClass('active');
						}
						else if(data['response']==1) {
							$j('span#error_for_citizen_email').html('Email already exists');
							$j('span#error_for_citizen_email').css('display', 'block');
							$j('#finish_screen2').removeClass('disabled');
							$j('#finish_screen2').addClass('active');
						}
						else {
							$j('span#error_for_citizen_email').css('display', 'none');
							$j("#vertical_scroller").animate({top: "-946px"}, { "duration": 300 } );
							setAdviserMessage(2, '');
						}
					});
				}
			}
	    }
    });

	$j('#next_screen').click(function () {
		var name = $j('input#citizen_name').val();
    	if(name!='' && !$j(this).hasClass('.disabled')) {
			$j(this).addClass('disabled');
        	jQuery.getJSON('/citizen/validate/name/'+name, function(data) {
					if(data['response']==0 && $j('input#country_selected_id').val()!=0 && $j('input#region_selected_id').val()!=0) {
						$j('.first_screen').block({ overlayCSS: { backgroundColor: '#162332', opacity: 0.9 }, message: null });
							setTimeout(function() {
								$j.unblockUI({
									onUnblock: function(){
									$j("#vertical_scroller").animate({top: "-473px"}, { "duration": 300 } );
								}
								});
							}, 2000);
						setAdviserMessage(1, [{"_citizen_name_ " : $j('input#citizen_name').val()}]);

						$j('input#country_list').val($j('input#country_selected_id').val());
						$j('input#region_list').val($j('input#region_selected_id').val());
					} else {
						if(data['response']==2 || data['response']==3) {
							$j('span#error_for_citizen_name').html('Invalid citizen name');
							$j('span#error_for_citizen_name').css('display', 'block');
							$j('#next_screen').removeClass('disabled');
							$j('#next_screen').addClass('active');
						}
						else if(data['response']==1) {
						   $j('span#error_for_citizen_name').html('Name already exists');
						   $j('span#error_for_citizen_name').css('display', 'block');
							$j('#next_screen').removeClass('disabled');
							$j('#next_screen').addClass('active');
						}
						else {
							$j('span#error_for_citizen_name').css('display', 'none');
						}
					}
				});
		}
	});

	$j('.dropfx').click(function (e) {
		var $dropper = $j(this).next('.droparea');
		if(!$j(e.target).hasClass('active')) {
			$j('.droparea').removeClass('dropactive').slideUp('fast').prev('.dropfx').removeClass('active');
		}
		if(!$j(this).hasClass('.disabled')) {
			$j(this).addClass('active')
			$dropper.addClass('dropactive').slideDown('fast');
		}
	});
	$j(document).bind('click', function(e) {
		var $clicked = $j(e.target)
		if (!$clicked.next('.droparea').hasClass(".dropactive") && !$clicked.parent().hasClass(".dropfx")) {
			$j('.droparea').removeClass('dropactive').slideUp('fast').prev('.dropfx').removeClass('active');
		}
	});
});
