var _$ = $;
$= jQuery;

var loginForm = "";
if(typeof(CM) == 'undefined'){CM = {};}
if(!CM.messaging){CM.messaging = {};}
if(!CM.messaging.messages){CM.messaging.messages = {}};

CM.messaging.messages['help'] = 'Click the "Save Changes" button on the right to save your changes. <span class="button save">Save Changes</span>';
CM.messaging.messages['error'] = "Oops!";	
CM.messaging.messages['success'] = "Your changes have been saved.";
CM.messaging.messages['403'] = "You are either not logged in or are not permitted to perform this action.";
CM.messaging.messages['500'] = "Oops.  An problem has occured and our developers have been notified.  Please try again later.";

/*
$C.handleError=function(_d,_e,_f,_10,_11,_12,_13){
	var msg=$L.format(_e,_10);
	if(_d){
		$L.error(msg,"http");
		if(!_11){
			_11=-1;
		}
		if(!_12){
			_12=msg;
		}
		_d(_11,_12);
	}else{
		if(_13){
			$L.error(msg,"http");
			throw msg;
		}else{
			$C.globalErrorHandler(msg,_f);
		}
	}
};
$C.handleError(null,"ajax.sendmessage.error","http",[req.status,req.statusText],req.status,req.statusText,_1f);
_d = objects error handler.
_e = cf message type
_f = protocol ?
_10 = [request.status, request.statusText]
_11 = request.status
_12 = request.statusText
_13 = sync mode ?
*/



function OnSaveDataSuccess(msg, messenger)
{
	displayMessage(messenger, 'success');
	//showMessage('Tag list has been saved.');
};
 
function Authenticate(username, password)
{
	$.unblockUI();
	displayMessage(null, 'loading', "Authenticating...");
	//jQuery("div##MessengerContainer").show();
	jQuery.ajax({
		   url: "/elements/classes/security/SecurityService.cfc",
		   data: {method: "Login", username: username, password: password},
		   dataType:"text",
		   success: OnAuthenticationResult,
		   error: OnSaveDataError
		 });
	//$.blockUI("Authenticating...<img src="/elements/images/ajax/progress_indicator.gif" alt="Saving..." width="16" height="16" />" );
	//$.ajax();
}

function OnAuthenticationResult(msg)
{
	//msg = WDDXDeserialize(msg);
	var loginForm = jQuery('#loginFormContainer');
	msg = msg.toLowerCase();
	if (msg)//(msg == "true")
	{
		displayMessage(null, 'success', 'Authentication Success! You may attempt to resubmit your request. <span class="button save">Save Changes</span>');		
		loginForm.dialog('close');
		$("input", loginForm).each(function(){$(this).val("");});
		//jQuery("div#MessengerContainer").animate({opacity:1},{duration:5,easing:"easeInCubic"}).animate({opacity:0.0}, {duration:2500,easing:"easeInCubic"});
	}
	else
	{
		$('h1', loginForm).html('Authentication Failed! Please try again later.');
		displayMessage(null, 'error', 'Authentication Failed! Please try again later.');
		//showLoginForm('Authentication Failed! Please try again later.');
		//jQuery("div#MessengerContainer").show();
		//document.location.href = "/authentication/logout.cfm";
	}
}

function OnAuthenticationError(msq)
{
	//showError('Authentication Failed!&nbsp;&nbsp;Please try again later.');
	displayMessage(null, 'error', 'Authentication Failed!&nbsp;&nbsp;Please try again later.');
	showLoginForm('Authentication Failed!&nbsp;&nbsp;Please try again later.');
}

function displayMessage(messenger, type, message) {
	messenger = messenger ? messenger : $("#MessengerContainer");
	type = type ? type : 'help';
	message = message ? message : CM.messaging.messages[type];
	messenger.attr({'class':'messageBox ' + type}).html(message);
	$('.button.save', messenger).bind('click', function(){
		commitChanges(messenger);
		return false;
	});
	messenger.slideDown(750);
}

function isEnterPress(code){
	return code == 13;
}

function showLoginForm(msg)
{
	var loginForm = jQuery('#loginFormContainer');
	jQuery(".message", loginForm).html(msg);
	loginForm.dialog({					 
		 autoOpen: false
		,modal: true
		,width: 600
		,buttons: {
			'Login': function() {
				var username = jQuery('#username', loginForm)[0].value;
				var password = jQuery('#password', loginForm)[0].value;
				Authenticate(username, password);	 
			}
			,'Close': function() {$(this).dialog('close'); $("input", this).each(function(){$(this).val("");});}
		}
		,zIndex:100000
		,title:msg
		,open:function(){
			loginForm.unbind("keydown");
			$('#password', loginForm).unbind("keydown");
			$('#password', loginForm).keydown(function(e){
				if(isEnterPress(e.keyCode)){
					var username = jQuery('#username', loginForm)[0].value;
					var password = jQuery('#password', loginForm)[0].value;
					Authenticate(username, password);
				}				
			});
		}
	});
	
	
	loginForm.dialog('open');
	
	/*
	var login = loginForm.cloneNode(true);
	var h1 = jQuery('h1', login)[0];
	h1.innerHTML = msg;
	var cancelButton = jQuery('#cancel', login);
	cancelButton.click(jQuery.unblockUI);	
	var loginButton = jQuery('#login', login);	
	loginButton.click(function(){
		var username = jQuery('#username', login)[0].value;
		var password = jQuery('#password', login)[0].value;
		Authenticate(username, password);
	});
	jQuery.blockUI(login, { width: '375px', padding: '5px' });
	*/
}

function OnSaveDataError(status, message, messenger)
{
	/*
	var msg = XMLHttpRequest;
	if(typeof(XMLHttpRequest.statusText) != "undefined"){
		msg = XMLHttpRequest.statusText;
	}
	*/
	var type = "help";
	if(typeof(message) == "undefined" && parseInt(status) != 200)
	{
		var regex = /.*Forbidden/ig;
		type = "error";
		//alert(status);
		if(typeof(status.match) == "function" && status.match(regex))
		{
			status = 403;		
		}
		else if(typeof(CM.messaging.messages[status]) != "undefined")
		{
			message = CM.messaging.messages[status];
		}
		else if(typeof(status.message) != "undefined")
		{
			message = status.message;	
		}
		else
		{
			message = status;	
		}
	}
	displayMessage(null, type, message);
	//showError(msg);	
	if(status == 403)
	{
		showLoginForm("You are either not logged in or are not permitted to perform this action.");
	}
};

/*
function initNotice(messenger, type, message) {
	messenger = messenger ? messenger : $("MessengerContainer");
	type = type ? type : 'help';
	message = message ? message : messages[type];
	messenger.attr({'class':'messageBox ' + type}).html(message);
	$('.button.save', messenger).bind('click', function(){
		commitChanges(messenger);
		return false;
	});
	messenger.slideDown(750);
}
*/

$= _$;