function formNoRobots(id, method){
	if( method == null){method="POST";}
	document.write('<form method="' + method +'" id="' + id + ' action="/no-robots">');
}

function endForm(){document.write('</form/>');}

function ajaxCheckSession(dialog_id)
{
	var data = {target: 'check'};
	$.ajax( {url:'/api/auth/check/',
		 type:'POST',
		 data: data,
	 	 dataType: 'json',
		 success: function(data){
           console.log('check session success');
   		   userIsAnonymous = (data.status != "user");
   		   if(!userIsAnonymous)
   			   authInitDialog(dialog_id);
		 },
	 	 error: function(a1, a2, a3) {
			        alert(a1+'\n\n'+a2+'\n\n'+a3);
			    }
	 	 }
	);	
}

function socialAuthSignin(service, dialog_id)
{
	var auth_result = false;
	if (window.showModalDialog) {
		auth_result = window.showModalDialog("login-or-register/login/"+service+"/modal/",service,
		"dialogWidth:400px;dialogHeight:550px");
	} else {
		auth_result = window.open("login-or-register/login/"+service+"/modal/",service,
		'height=400,width=550,toolbar=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no ,modal=yes');
	}
	ajaxCheckSession(dialog_id);
}


function showMessage(type, text){
	messagePanel = $('#msg_'+type);
	messagePanel.find("span.message_text").html(text);
	messagePanel.show();
}

function ajaxDialogSubmitAndResetPassword(dialog){
    ajaxDialogSubmitBase(dialog, true);
}

function ajaxDialogSubmitWithAuthentication(dialog){
    ajaxDialogSubmitBase(dialog, false);
}

function ajaxDialogSubmitBase(dialog, verifyEmail){
    var getAjaxData = dialog.data('getAjaxData');
    if(getAjaxData!=null){
        var data = dialog.data('getAjaxData')(dialog);
    }
    else{
        var data = {};
    }
    var dialog_id = dialog.attr('id')
    //var userIsAnonymous = dialog.data(userIsAnonymous);
	console.log(data.target_key);
	var authUserEmailInput = $('#'+dialog_id+'_authUserEmailInput');
    var authUserNameInput = $('#'+dialog_id+'_authUserNameInput');
    console.log(authUserEmailInput);
    console.log('userIsAnonymous'+userIsAnonymous);
    if(userIsAnonymous){
	    data.userEmail = authUserEmailInput.val();
        data.userName = authUserNameInput.val();
        console.log('userEmail: ' + data.userEmail);
        $.cookie('user.email', data.userEmail);
        $.cookie('user.name', data.userName);
        authUserEmailInput.attr("disabled", true);
    }
    else
    {
	    delete data.userEmail;
        delete data.userName;
        dialog.data('mode', '');
    }
	var authSubmitButton = $('#'+dialog_id+'_authSubmitButton');
	authSubmitButton.attr("disabled", true);

	var mode = dialog.data('mode');
    var api_url = dialog.data('api_url');
	
	if(mode=='password-required')
	{
		//data.action = 'sign-in';
        if(verifyEmail){
            data.verifyEmail = 'True';
        }
        else{
            data.userPassword = $('#'+dialog_id+'_authPasswordInput').val();
        }
	}

	$.ajax( {url:api_url,
			 type:'POST',
			 data: data,
		 	 dataType: 'json',
			 success: function(data){
                console.log('POST success');
				var status = data['status'];
                authSubmitButton.removeAttr("disabled");
                authUserEmailInput.removeAttr("disabled");
				if(status=='user-exists')
				{
					dialog.data('mode', 'password-required');
					$('#'+dialog_id+'_authTrPassword').show();
					$('#'+dialog_id+'_authErrorMessages').show();
                    $('#'+dialog_id+'_authUserExistsMessage').show();
					//$("#subscribeEmail").attr("disabled", true);
					$('#'+dialog_id+'_authTrConfirmWillBeSent').hide();
					dialog.height(dialog.height()+100);
					$('#'+dialog_id+'_authPasswordInput').focus();
				}
				else if(status == 'invalid-password')
				{
                    //dialog.data('mode', 'password-required');
                    $('#'+dialog_id+'_authUserExistsMessage').hide();
					$('#'+dialog_id+'_authInvalidPasswordMessage').show();
				}
                else if(status == 'error'){
                    dialog.dialog('close');
                    alert('Error: ' + data['message']);
                }
				else if(status == 'ok'){
			 		dialog.dialog("close");
			 		var successHandler = dialog.data('onSuccess');
			 		if(successHandler!=null)
			 			successHandler(dialog);
                    if(userIsAnonymous){
                        alert('Your request has been successfully saved. Please check your inbox to confirm your email address.');
                    }
                    else{
                        alert('Your request has been successfully submitted.');
                    }
				}
				else{
					alert('Unknown status: ' + status + '.');
				}
			 },
		 	 error: function(a1, a2, a3) {
                        authSubmitButton.removeAttr("disabled");
                        authUserEmailInput.removeAttr("disabled");
				        alert(a1+'\n\n'+a2+'\n\n'+a3);
				    }
		 	 }
	);
}

function authInitDialog(dialog_id, onSuccess)
{
    console.log("authInitDialog(dialog_id="+dialog_id+", userIsAnonymous="+userIsAnonymous+", onSuccess="+onSuccess+")");
    
    var dialog = $("#"+dialog_id);
    
    if(userIsAnonymous){
        console.log('Show dialog for anonymous user.');
        $('#'+dialog_id+'_authTrConfirmWillBeSent').show();
        $('#'+dialog_id+'_authThMyEmailLabel').show();
        $('#'+dialog_id+'_authTdMyEmailInput').show();
        $('#'+dialog_id+'_authTrMyName').show();
        $('#'+dialog_id+'_authTrSN').show();
    }
    else{
        console.log('Show dialog for signed user.');
        if(dialog_signed_height_vals[dialog_id])
        	dialog.height(dialog_signed_height_vals[dialog_id]);
        $('#'+dialog_id+'_authTrConfirmWillBeSent').hide();
        $('#'+dialog_id+'_authThMyEmailLabel').hide();
        $('#'+dialog_id+'_authTdMyEmailInput').hide();
        $('#'+dialog_id+'_authTrMyName').hide();
        $('#'+dialog_id+'_authTrSN').hide();
        $('#'+dialog_id+'_authForgotPasswordQuestion').hide();
        $('#'+dialog_id+'_authSendConfirmEmailButton').hide();
    }
	$('#'+dialog_id+'_authTrPassword').hide();
	$('#'+dialog_id+'_authTrUserExists').hide();
	$('#'+dialog_id+'_authUserEmailInput').removeAttr("disabled");
	$('#'+dialog_id+'_authSubmitButton').removeAttr("disabled");
	$('#'+dialog_id+'_authSubmitButton').show();
	$('#'+dialog_id+'_authInvalidPasswordMessage').hide();
	$('#'+dialog_id+'_authUserExistsMessage').hide();

    var userEmail = $.cookie('user.email');
	if(userEmail){
		$('#'+dialog_id+'_authUserEmailInput').val(userEmail);
		console.log('User email restored from cookies.');
	}
    userName = $.cookie('user.name');
	if(userName){
		$('#'+dialog_id+'_authUserNameInput').val(userName);
		console.log('User name restored from cookies.');
	}
}

