/**
 * Global variables used for setting global display
 */

// jquery custom css
var errorStyle = 'ui-state-error ui-corner-all'; // round corners, red background
var successStyle = 'ui-state-highlight ui-corner-all'; // round corners, yellow background

var alertStyle = 'ui-icon ui-icon-alert'; // alert icon
var infoStyle = 'ui-icon ui-icon-info'; // info icon

// message spans
var alertSpan = '<span class="' + alertStyle + '" style="float: left; margin-right: .3em;"></span>';
var infoSpan = '<span class="' + infoStyle + '" style="float: left; margin-right: .3em;"></span>';

// set defaults
var defaultMsgDiv = 'msgDiv';
var defaultErrorMsg = 'Error occurred while processing request.';
var defaultFormError = 'form_error';


$.resetMsg = function(msgDiv) {
	msgDiv = msgDiv || defaultMsgDiv;
	
	$('#' + msgDiv).hide();
	$('#' + msgDiv).text('');
	$('#' + msgDiv).removeClass(errorStyle);
	$('#' + msgDiv).removeClass(infoStyle);
	$('#' + msgDiv).removeClass(successStyle);
}

$.showError = function(msg, msgDiv) {
	msgDiv = msgDiv || defaultMsgDiv;
	msg = msg || defaultErrorMsg;
	
	$('#' + msgDiv).removeClass(successStyle);
	$('#' + msgDiv).addClass(errorStyle);
	$('#' + msgDiv).html(alertSpan + msg);
	$('#' + msgDiv).css('color', '#444444');
	
	$('#' + msgDiv).fadeIn('slow');
}

$.showInfo = function(msg, msgDiv) {
	msgDiv = msgDiv || defaultMsgDiv;
	
	$('#' + msgDiv).removeClass(errorStyle);
	$('#' + msgDiv).addClass(successStyle);
	$('#' + msgDiv).html(infoSpan + msg);
	$('#' + msgDiv).css('color', '#444444');
	$('#' + msgDiv).fadeIn('slow');
}

$.showErrorBeside = function(error, element) {
	var sibling = element.nextAll('.' + defaultFormError);
	
	if (typeof error == 'object') error.appendTo(sibling);	
	else sibling.append(error);
}

/**
 * For validation plugin error displaying
 * 
 */
$.highlightFormElement = function(element) {
	// dirty hack to remove alert icon
	var sibling = $(element).nextAll('.' + defaultFormError);
	sibling.empty();
	
	// add red background
	var parent = $(element).parent(); 
	parent.addClass(errorStyle);
		
	// display alert icon
	var sibling = $(element).nextAll('.' + defaultFormError);
	sibling.prepend(alertSpan);
}

$.unhighlightFormElement = function(element) {
	// remove red background
	var parent = $(element).parent(); 
	parent.removeClass(errorStyle);
	
	// remove alert icon
	var sibling = $(element).nextAll('.' + defaultFormError);
	sibling.empty();
}

$.unhighlightAll = function(objForm) {
	var $ps = objForm.find('p');
		
	// remove red background
	$ps.removeClass(errorStyle);
	
	var $iconChildren = $ps.children('.' + defaultFormError);	
	// remove alert icon
	$iconChildren.empty();
}

/**
 * For validation plugin error displaying
 * Dirty hacks included
 */

$.appendError = function(error, element, div) {
	error.append('<br />');
	error.attr('id', 'error_' + element.attr('name'));
	error.appendTo(div);
	
	// dirty hack to align error list vertically
	div.children('.error').removeClass('error_3');
	div.children('.error').slice(2).each(function() {
		$(this).addClass('error_3');
	});
}
