/*Plug in for zip code. and provider.*/
var zipOkShow = false;
var identityOkShow = false;
$(document).ready(function(){
	$("#zipCode").blur(function(event){
		var F = jQuery("#integratedRegForm");
    	$(".providerListDiv").hide();
    	$(".zipCodeMsg").hide();
    	if($(".zipCodeSelectProvider").css("display") == 'inline'
    		|| $(".zipCodeSelectProvider").css("display") == 'block')
    	{
    		$(".zipCodeProviderMsg").show();
    	}
    	if((isBlank(F.find("#zipCode").val()) || F.find("#zipCode").val().length < 1) && !zipOkShow){
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeProviderOk").hide();
    		$(".zipCodeError").hide();
    		$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeError").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    	}else if((isBlank(F.find("#zipCode").val()) || F.find("#zipCode").val().length < 1) && zipOkShow){
    		$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeMsg").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    		$(".zipCodeProviderOk").hide();
    	}else if(!isBlank(F.find("#zipCode").val()) && isNaN(F.find("#zipCode").val())){
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeProviderOk").hide();
    		$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeError").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    	}
    });
	
	$("#zipCode").keypress(function(event){
		var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
		var F = jQuery("#integratedRegForm");
		if(!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5 &&
    			isNaN(F.find("#zipCode").val())){
			$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeMsg").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    		$(".zipCodeProviderOk").hide();
    	}
		else if(!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5){
    		checkZipCodeProvider(this);
    	}
    	else if(((!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5) 
    			|| (!isBlank(F.find("#zipCode").val()) && isNaN(F.find("#zipCode").val()))) || (F.find("#zipCode").val().length < 5 && zipOkShow)){
    		$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeMsg").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    		$(".zipCodeProviderOk").hide();
    	}
    });
	
	
	$("#zipCode").keyup(function(event){
		var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
		var F = jQuery("#integratedRegForm");
		if(!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5 &&
    			isNaN(F.find("#zipCode").val())){
			$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeMsg").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    		$(".zipCodeProviderOk").hide();
    	}
		else if(!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5){
    		checkZipCodeProvider(this);
    	}
    	else if(((!isBlank(F.find("#zipCode").val()) && F.find("#zipCode").val().length == 5) 
    			|| (!isBlank(F.find("#zipCode").val()) && isNaN(F.find("#zipCode").val()))) || (F.find("#zipCode").val().length < 5 && zipOkShow)){
    		$(".zipCodeOk").hide();
    		$(".providerName").hide();
    		$(".zipCodeMsg").hide();
    		$(".zipCodeProvidersAni").hide();
    		$(".zipCodeSelectProvider").hide();
    		$(".zipCodeProviderMsg").hide();
    		$(".zipCodeRequired").show();
    		$(".providerListDiv").hide();
    		$(".zipCodeError").show();
    		$(".zipCodeProviderOk").hide();
    	}
    });
	$("#zipCode").focus (function (){

		$(".providerListDiv").hide();
		getFocusShowMessage();
		});
	
	$("#zipCode").click(function(event){
		$(".providerListDiv").hide();
		var F = jQuery("#integratedRegForm");
		getFocusShowMessage();
    });
	
	$("#providerName").click(function(event){
		$(".zipCodeProviderMsg").hide();
		$(".zipCodeProviderOk").hide();
		$(".zipCodeProvidersAni").hide();
		$(".providerListDiv").show();
    });
	
	$("#zipCodeSelectProvider").click(function(event){
		$(".zipCodeProviderMsg").hide();
		$(".zipCodeProvidersAni").hide();
		$(".providerListDiv").show();
    });
	
    $("#email").blur(function(event){
    	var F = jQuery("#integratedRegForm");
    	isValidEmail(this);
    	$("#emailMsg").hide();
    });
    
    $("#email").click(function(event){
    	var F = jQuery("#integratedRegForm");
    	isValidEmail(this);
    });
    
    /*If we add this event two request go to server on every click.
     * $("#email").keypress(function(event){
    	var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
    	var F = jQuery("#integratedRegForm");
    	isValidEmail(this);
    });*/
    
    $("#email").keyup(function(event){
    	var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
		var isDelPressed =false;
		if(code == 8 || code == 46)
		{
			isDelPressed =true;
		}
    	var F = jQuery("#integratedRegForm");
    	isValidEmail(this, isDelPressed);
    });
    $("#psydonym").blur(function(event){
	    var F = jQuery("#integretedRegForm");
		psydonymNameField(this, true);
		//$("#identityMsg1").hide();
    });
    $("#psydonym").click(function(event){
	    var F = jQuery("#integretedRegForm");
		psydonymNameField(this, false);
    });
    $("#psydonym").keypress(function(event){
    	var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
	    var F = jQuery("#integretedRegForm");
		psydonymNameField(this, false);
    });
    $("#psydonym").keyup(function(event){
    	var code;
		if (!event) var event = window.event;
		if (event.keyCode) code = event.keyCode;
		else if (event.which) code = event.which;
		else return true;
		if(code == 13 || code == 3)
		{
			return false;
		}
	    var F = jQuery("#integretedRegForm");
		psydonymNameField(this, false);
    });
    
    $("#password").blur(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#password").passwordField();
		$("#passwordMsg").hide();
    }); 
    
    $("#firstName").blur(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#firstName").nameField();
    });
     
    $("#lastName").blur(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#lastName").nameField();
    });
    
    $("#password").click(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#password").passwordField();
    }); 
    
    $("#firstName").click(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#firstName").nameField();
    });

    $("#lastName").click(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#lastName").nameField();
    });
    
    $("#password").keyup(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#password").passwordField();
    });//passwordField
    
    $("#firstName").keyup(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#firstName").nameField();
    });
    //nameField
    $("#lastName").keyup(function(event){
	    var F = jQuery("#integretedRegForm");
		F.find("#lastName").nameField();
    });
    checkAll();
});

//plug in for zip and provider
function checkZipCodeProvider(t) {
	//var t = this; 
   // if (t.value != t.lastValue ) {
		    	$(".zipCodeMsg").hide();
		    	$(".zipCodeProviderOk").hide();
		    	if (t.timer) clearTimeout(t.timer);
		    	/* a call for validateZipCode*/
			    t.timer = setTimeout(function () {validateZipCode(t.value)}, 500);
			    t.lastValue = t.value;
		    	$(".zipCodeProvidersAni").hide();
		    	$(".zipCodeProvidersAni").css("display","none");
		    	$(".providerName").hide();
		    	checkAll();
    //}
};

function getFocusShowMessage(){
	if($(".zipCodeSelectProvider").css("display") == 'inline'
		|| $(".zipCodeSelectProvider").css("display") == 'block')
	{
		$(".zipCodeProviderMsg").show();
	}
	if($(".zipCodeOk").css("display") == 'block' || $(".zipCodeOk").css("display") == 'inline'){
	}
	else if($(".zipCodeError").css("display") == 'block' || $(".zipCodeError").css("display") == 'inline'){
	}
	else
	{
		$(".zipCodeMsg").show();
		$(".zipCodeOk").hide();
		$(".zipCodeError").hide();
	}
}
// plug-in definition for email
function isValidEmail (tmp, isDelPressed) {
	F = jQuery("#integratedRegForm");
	var V = F.find("#email");
	var F = $("#checkEmail");
	//var Ok = $("#emailOk");
	var E = $("#emailMsg");
	var Ck = $("#checkingEmail");
	var Er = $("#emailError1");
	var X = $("#emailAvailable");
	var W = $("#emailNotAvailable");
	var t = tmp; 
	//var C = /.+@.+\..+/;
	var C=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	var I = V.val();
	/* We add this isDelPressed code because this.lastValue not update in some cases.
	 	A simple Case: 
	 			Click abc@sofmen.com then back space 'm' then  back space 'o' then type 'o' 
	    in this case this validation(t.value != t.lastValue) return 
	    false because last value was 'co' not 'c'.
	    so if back space or delete button is pressed we update t.lastValue*/ 
	if(isDelPressed){
		/* In case of Delete or Backspace is pressed updating last value.*/
		 t.lastValue = ' ';
	}
	if (I.match(C)) {
		L();
	}else {
		Err();
	}
	function Err(){
		if(I.length <= 0)
		{
			E.show();
			Er.hide();
		}
		else{
			Er.show();
			E.hide();
		}
		Ck.hide();
		X.hide();
		W.hide();
	}
	function C(){
		Er.hide();
		E.hide();
		Ck.show();
		X.hide();
		W.hide();		
	}
	function Err2(){
		Er.show();
		E.hide();
		Ck.hide();
		X.hide();
		W.hide();		
	}
	
	function B(){
		Er.hide();
		E.show();
		Ck.hide();
		X.hide();
		W.hide();
	}
	function Y(){
		Er.hide();
		E.hide();
		Ck.hide();
		X.show();
		W.hide();
		checkAll();
	}
	function Z(){
		Er.hide();
		E.hide();
		Ck.hide();
		X.hide();
		W.show();
	}
	function L(){
	    if (t.value != t.lastValue  && V.val().match(C)) {
	      if (t.timer) clearTimeout(t.timer);
	      t.timer = setTimeout(function () {
	    	  $.ajax({
				    type:   'GET',
				    url:    'userAvailable.html?email='+V.val(),
				    error: function() {
				    	Z();
				    },
				    success:  function(J) {
				        document.getElementById('checkEmail').innerHTML = J;
				        if(document.getElementById('checkEmail1') == null)
						 {
				        	Err2();
						 }
					     else if(document.getElementById('checkEmail1').innerHTML == 'Available')
						 {
					    	 Y();
						 }
						else if(document.getElementById('checkEmail1').innerHTML == 'Not Available'|| 
								document.getElementById('checkEmail1').innerHTML == 'Please enter User ID')
						{
							Z();
						}
				    },
				    complete:  function() {
				    	checkAll();
				    }
				});
	    	  }, 500);
	      	  t.lastValue = t.value;
	    }
	}
	checkAll();
};

//Plug-in for Identity
function psydonymNameField (tmp, status){
			F2 = jQuery("#integratedRegForm");
			var M = F2.find("#psydonym");
			//var F = $("#checkEmail");
			var E = $("#identityMsg1");
			var D = $("#identityMsg2");
			var X = $("#identityAvailable");
			var W = $("#identityNotAvailable");
			var SS = $("#invalidIdentity");
			var SSS = $("#invalidIdentity1");
			var O;
			var C;
			var I;
			var N = M.val();
			var G = N;
			var H = N != "";
			var Q = /[a-zA-Z0-9_]/;
			function K() {
				if (H) {
					F.html(M.val())
				}
			}
			P();
			function L() {
				E.hide();
				X.hide();
				W.hide();
				D.show();
				SS.hide();
				SSS.hide();
			}
			function B() {
				E.show();
				D.hide();
				X.hide();
				W.hide();
				SS.hide();
				SSS.hide();
			}
			function Y(){
				X.show();
				E.hide();
				D.hide();
				W.hide();
				SS.hide();
				identityOkShow = true;
			}
			function Z(){
				W.show();
				X.hide();
				E.hide();
				D.hide();
				SS.hide();
				SSS.hide();
			}
			function SS1(){
				W.hide();
				X.hide();
				E.hide();
				D.hide();
				SS.show();
				SSS.hide();
			}
			function P() {
				if(M.val().length > 0 )
				{
					 var t = tmp;
					    if (t.value != t.lastValue && M.val().length > 0) {
					      if (t.timer) clearTimeout(t.timer);
					      t.timer = setTimeout(function () {
					        $.ajax({
					        	type:   'GET',
							    url:    'userAvailable.html?userId='+escape(t.value),
							    beforeSend:  function() {
									L();
							    },
							    error: function() {
							    	Z();
							    },
							    success:  function(J) {
							        document.getElementById('checkUser').innerHTML = J;
							        if(document.getElementById('checkUser1') == null)
									 {
							        	B();
									 }
								     else if(document.getElementById('checkUser1').innerHTML == 'Available')
									 {
								    	 Y();
									 }
								     else if(document.getElementById('checkUser1').innerHTML == 'Invalid')
									 {
								    	 SS1();
									 }
									else if(document.getElementById('checkUser1').innerHTML == 'Not Available' || 
											document.getElementById('checkUser1').innerHTML == 'Please enter User ID')
									{
										Z();
									}
							    },
							    complete:  function() {
							    }
					        });
					      }, 500);
					      t.lastValue = t.value;
					    } 
				}
				else{
					B();
				}
			}
			if(status && identityOkShow)
			{
				//alert(M.val().length);
				if(M.val().length == 0)
				{	
					E.hide();
					SSS.show();
				}
			}
			else if (status)
			{
				if(M.val().length == 0)
				{	
					B();
				}
			}
			checkAll();
};//(jQuery);

//Plug-in for name
$.fn.nameField = function() {
	F = $("#integratedRegForm");
	var FN = F.find("#firstName");
	var LN = F.find("#lastName");
	var NOk = $("#fullNameOk");
	var Nmsg = $("#fullNameMsg");
	var NEr  = $("#fullNameError");
	
	function M(){
		NOk.hide();
		Nmsg.show();
		NEr.hide();
	}
	
	if(isBlank(FN.val()) && isBlank(LN.val())){
		M();
	}
	else if((LN.val().length > 0 && isBlank(FN.val())) || (isBlank(LN.val()) && FN.length > 0)){
		NOk.hide();
		Nmsg.hide();
		NEr.show();
	}else
	{
		NOk.show();
		Nmsg.hide();
		NEr.hide();
	}
	checkAll();
};

//Plug-in for password
$.fn.passwordField = function() {
	F = $("#integratedRegForm");
	var P = F.find("#password");
	var POk = $("#passwordOk");
	var Pmsg = $("#passwordMsg");
	var PEr  = $("#passwordError");
	function M(){
		POk.hide();
		Pmsg.show();
		PEr.hide();
	}
	if(isBlank(P.val()) || P.val().length < 1 ){
		M();
	}
	else if(P.val().length < 6){
		POk.hide();
		Pmsg.hide();
		PEr.show();
		
	}else
	{
		POk.show();
		Pmsg.hide();
		PEr.hide();
	}
	checkAll();
};

function checkAll(isTrue){
	$("#providerListDiv").hide();
	if($(".zipCodeSelectProvider").css("display") == 'inline'
		|| $(".zipCodeSelectProvider").css("display") == 'block')
	{
		$(".zipCodeProviderMsg").show();
	}
	var captchaOk = false;
	if(document.getElementById('recaptcha_response_field')){
		if(!isBlank(document.getElementById('recaptcha_response_field').value) ||
				document.getElementById('recaptcha_response_field').value.length >= 1 ){
			captchaOk = true;
		}
	}
	else{
		captchaOk = true;
	}
	if(($(".passwordOk").css("display") == 'inline' || $(".passwordOk").css("display") == 'block')
		&& ($(".fullNameOk").css("display") == 'inline' || $(".fullNameOk").css("display") == 'block')
		&& ($(".zipCodeOk").css("display") == 'inline' || $(".zipCodeOk").css("display") == 'block')
		&& ($(".zipCodeProviderOk").css("display") == 'inline' || $(".zipCodeProviderOk").css("display") == 'block')
		&& ($(".identityAvailable").css("display") == 'inline' || $(".identityAvailable").css("display") == 'block')
		&& ($(".emailAvailable").css("display") == 'inline' || $(".emailAvailable").css("display") == 'block')
		&& ($(".errorInAvatar").css("display") == 'none' || $(".okAvatar").css("display") =='inline'
			|| $(".okAvatar").css("display") =='block') && captchaOk)
	{
			$("#submitEnable").show();
			$("#submitDisable").hide();
		if(isTrue == 'true')
			submitRegistrationForm();
	}else
	{
		$("#submitEnable").hide();
		$("#submitDisable").show();
		return false;
	}
	return false;
}

function isBlank(A) {
	return A.replace(/\s+/g, "").length == 0;
}

function validZip(){
	/*$(".zipCodeRequired").hide();
	$(".zipCodeSelectProvider").hide();
	$(".zipCodeProvidersAni").css("display","inline");*/
	//setTimeout('$(".zipCodeProvidersAni").css("display","none");$(".zipCodeSelectProvider").css("display","inline");', 2000);
	$(".zipCodeProvidersAni").css("display","none");
	$(".zipCodeSelectProvider").css("display","inline");
	$(".providerName").hide();
	$(".zipCodeOk").show();
	$(".zipCodeError").hide();
	$(".zipCodeProviderMsg").show();
	$(".zipCodeRequired").hide();
	$(".providerListDiv").hide();
	zipOkShow = true;
	//alert(zipOkShow);
	
}

function inValidZip(){
	$(".providerName").hide();
	$(".zipCodeOk").hide();
	$(".zipCodeError").show();
	$(".zipCodeProvidersAni").hide();
	$(".zipCodeSelectProvider").hide();
	$(".zipCodeProviderMsg").hide();
	$(".zipCodeRequired").show();
	$(".providerListDiv").hide();
} 


function validateFile(id)
{
	var fileName = document.getElementById('file').value;
		if(fileName != null && fileName != '')
		{
			var fileName2 = fileName.substring(fileName.lastIndexOf(".")+1)
			if ((fileName2 == "png" || fileName2 == "jpg" || fileName2 == "gif"
				 ||fileName2 == "PNG") || fileName2 == "JPG"  ||  fileName2 == "GIF")
			{
				$(".okAvatar").show();
				$(".errorInAvatar").css("display","none");
			}
			else
			{
				$(".okAvatar").hide();
				$(".errorInAvatar").css("display","inline");
			}
		}
		checkAll();
}
