

function addLoadEvent(func) {
  var oldonload = window.onload;
  window.onload = function() {
	  if(typeof oldonload == 'function'){
		  oldonload();
	  }
      func();
  }
}

function changeText(htmlElement, newText){

	htmlElement.textContent = newText;
	// For some versions of IE
	htmlElement.innerText = newText;
}

function changeCssClass(htmlElement, newCssClass){
	htmlElement.setAttribute("class", newCssClass);
	// For some versions of IE
	htmlElement.setAttribute("className", newCssClass); 
}

function changeCssClassById(elementId, newCssClass){
	
	var element = document.getElementById(elementId);
	changeCssClass(element, newCssClass);
}

function endsWith(testString, endingString){
    if(endingString.length > testString.length) return false;
    return testString.indexOf(endingString)==(testString.length-endingString.length);
}

function getJsfNamedDescendant(nonSeamAncestorId, seamDescendantTagName, seamDescendantPartialId){
	
	var parent = document.getElementById(nonSeamAncestorId);
	if(undefined != parent){
	
		var elegibleDescendants = parent.getElementsByTagName(seamDescendantTagName);
		for(var i = 0; i < elegibleDescendants.length; i++){
		
			var curDescendant = elegibleDescendants[i];
			var curDescendantId = curDescendant.getAttribute("id");
			
			if(undefined != curDescendantId && endsWith(curDescendantId, seamDescendantPartialId)){
				
				return curDescendant;
			}
		}
	}
	
	return null;
}

function checkOrUnchecks (masterCheckBoxName) {
	
	var master = document.getElementById(masterCheckBoxName);

	if (master != null)
	{
		var inputs = document.getElementsByTagName("input");
		
		if (inputs != null && inputs.length > 0)
		{
			for ( i=0; i < inputs.length; i++ ){
				if(inputs[i].type == "checkbox"){
					inputs[i].checked = master.checked; 
				}
			}
		}
	}
}

/**
 * Verifies if the categories filter feature is available in this page, and if
 * true it will change rightColumn margin-top to be below than categories
 * filter.
 */
jQuery.noConflict()(window).ready(function () {
	moveRightColumnToItsPosition();
});
 
function moveRightColumnToItsPosition() {
	if(jQuery.noConflict()('.othersFilters').offset().top != null && jQuery.noConflict()('.othersFilters').offset().top != 0) {
		var margin = 10;
		var rightColumnTopMargin = (jQuery.noConflict()('.searchOptions').offset().top - jQuery.noConflict()('#cw').offset().top) + jQuery.noConflict()('.cardsList .filter .bg').height() + margin;
		
		jQuery.noConflict()('#cr').css('padding-top', rightColumnTopMargin);
		
		jQuery.noConflict()('.completeAccount').addClass("absolute");
	}
	
	jQuery.noConflict()('#cr').removeClass("hide");
}

var $otherOptions=jQuery.noConflict();

function targetEventShowOtherOptions(event, targetClass) {
	var element = event.target || event.srcElement;
	var selected = $otherOptions(element);

	if(selected != null){
		
		if(targetClass == null && targetClass== undefined)
			return;
		
		var menu = selected.parents().find('div.'+targetClass);
		
		if(menu != null || menu != undefined) {
		
			if(event.type == 'mouseover') {
				if($otherOptions(menu).hasClass("displayNone"))
					$otherOptions(menu).removeClass("displayNone");
				
				if($otherOptions(menu).hasClass("displayBlock"))
					$otherOptions(menu).removeClass("displayBlock");
				
				return;
			}
			
			if(event.type == 'click') {
				var display = menu.css('display');
				
				if(display == 'none') {									
					
					$otherOptions(menu).addClass("displayBlock");
					
					if($otherOptions(menu).hasClass("displayNone")) {
						$otherOptions(menu).removeClass("displayNone");
					}
				}
				else
				{
					if($otherOptions(menu).hasClass("displayBlock")) {
						$otherOptions(menu).removeClass("displayBlock");
					}
						
					$otherOptions(menu).addClass("displayNone");
				}
			}
		}
	}
}

var $moreActions = jQuery.noConflict();
$moreActions(document).ready(function () {
	putCssInLastMenuItem();
});

function putCssInLastMenuItem(){
	var last = $moreActions('.subMenuWrapper ul li:last-child');
	
	if(last == null || last == undefined || last.size() == 0)
		return;
	
	$moreActions(last).addClass('last');

}

var $errorMessageHide = jQuery.noConflict();

function hideMessage() {
	var messagesErrorDiv = $errorMessageHide('#messagesErrorDiv');
	
	if(messagesErrorDiv == null || messagesErrorDiv == undefined)
		return;
	
	var existSecondMessage = $errorMessageHide(messagesErrorDiv).find('#errorMessage');
	
	if(existSecondMessage == null || existSecondMessage == undefined || existSecondMessage.length == 0) 
		return;
	
	var firstH3 = $errorMessageHide(messagesErrorDiv).find('#errorTryAgain');
	if(firstH3 != null && firstH3 != undefined)
		$errorMessageHide(firstH3).css('display','none'); 
}

var $characterCounter=jQuery.noConflict();

function messagingCharacterCounter(maxLength) {
	
	var progressBarWidth = 300;
	
	var textArea = $characterCounter.find('.messageTextArea');
	
	if (textArea == null || textArea == undefined)
		return;
	
	var textAreaValueLength = $characterCounter(textArea).val().length;
	
	var divProgressBar = $characterCounter.find('#characterCounter');
	
	if (divProgressBar == null || divProgressBar == undefined)
		return;
	
	if(textAreaValueLength < (maxLength + 1)) {
		$characterCounter(divProgressBar).css({backgroundColor:'#FFFFFF', color: '#000000',backgroundImage: 'url(../_img/characterCounterProgressBar.png)'}); 
	 
		var position = progressBarWidth - parseInt((progressBarWidth * parseInt(textAreaValueLength)) / maxLength);

		$characterCounter(divProgressBar).css({backgroundPosition: '-'+ position +'px 0px'});
	} else {
		$characterCounter(divProgressBar).css({backgroundColor:'#CC0000', color: '#FFFFFF',backgroundImage: 'url()'}); 
	}
	
	$characterCounter(divProgressBar).text("(" + textAreaValueLength + " / " + maxLength + ")");
}


var $selectAllItemsMessaging=jQuery.noConflict();
function selectAllItemsReturnedTree(flag) {
	var divClass = ".filterCardsResults";
	selectAllItems(divClass, flag);
}

function selectAllItemsRecipientTree(flag) {
	var divClass = ".recipientsList";
	selectAllItems(divClass, flag);
}

function selectAllItems(divClass, flag) {
	var div = $selectAllItemsMessaging.find(divClass);
	
	if (div == null || div == undefined)
		return;
	
	var allCheckbox = $selectAllItemsMessaging(div).find("input[type=checkbox]");
	
	if (allCheckbox == null || allCheckbox == undefined)
		return;
	
	if (flag) {
		for(var i=0 ; i < allCheckbox.size() ; i++) {
			allCheckbox[i].checked = true;
		}
	}
	else {
		for(var i=0 ; i < allCheckbox.size() ; i++) {
			allCheckbox[i].checked = false;
		}
	}
}

var $miniInboxScript=jQuery.noConflict();
$miniInboxScript(document).ready(function(){truncatetMessage();});
 
function truncatetMessage() {
	var messagesContainer = $miniInboxScript("#miul");
	
	if(messagesContainer == null || messagesContainer == undefined)
		return;
	
	var allMessages = $miniInboxScript(messagesContainer).find("li");
	
	if(allMessages == null || allMessages == undefined)
		return;

	for (var i = 0; i < allMessages.size(); i++) {
		var li = allMessages[i];
		
		var messageSpan = $miniInboxScript(li).find(".message");
		
		if(messageSpan == null || messageSpan == undefined)
			return;
		
		var textSpan = $miniInboxScript(messageSpan).find(".text");
		
		if(textSpan == null || textSpan == undefined)
			return;
		
		var messageSpanWidth = messageSpan.width();
		
		var textSpanWidth = textSpan.width();
			
		if (textSpanWidth > messageSpanWidth) {
			$miniInboxScript(messageSpan).addClass("exceed");
			$miniInboxScript(messageSpan).append('<span class="continue">...</span>');
		}
		
		$miniInboxScript(messageSpan).css("visibility","visible");
	}
}

var $cardNumberValidationHelper=jQuery.noConflict();
function cardNumberValidationHelper(flag) {
	
	var tipValidation = $cardNumberValidationHelper(".tipValidationClass");
	
	if(tipValidation == null || tipValidation == undefined)
		return;
	
	if (flag)
		$cardNumberValidationHelper(tipValidation).css('display','block'); 
	else
		$cardNumberValidationHelper(tipValidation).css('display','none');
}

var $backofficeRichCalendarApply=jQuery.noConflict();
function applyBtn(){
	
	var table = $backofficeRichCalendarApply(".tableClass");
	
	if(table == null || table == undefined)
		return;
	
	var fakeButton =  $backofficeRichCalendarApply(table).find(".fakeButton");
	
	if (fakeButton != null && fakeButton != undefined && fakeButton.size() > 0)
		$backofficeRichCalendarApply(fakeButton).remove();

	var applyBtn = $backofficeRichCalendarApply(table).find(".rich-calendar-footer .rich-calendar-toolfooter:last-child .rich-calendar-tool-btn");
	
	if(applyBtn == null || applyBtn == undefined)
		return;
	
	$backofficeRichCalendarApply(table).append($backofficeRichCalendarApply('<tfoot><tr><td colspan="8" class="centerBtn"><a class="fakeButton greenButton26 button26"><span class="left"></span><span class="right">Apply</span></a></td></tr></tfoot>'));
	
	var fakeButtonFinal =  $backofficeRichCalendarApply(table).find(".fakeButton");
	
	if(fakeButtonFinal == null || fakeButtonFinal == undefined)
		return;
	
	$backofficeRichCalendarApply(fakeButtonFinal).live('click',$backofficeRichCalendarApply(applyBtn).attr("onclick"));
}


