var zIndex = 10;
var ricoId;
var is = new Is();

/**
 * Riseleziona i valori dei campi sul refreshing dei form 
 */
function set_element_value(element_id, element_value) { 
	if ($(element_id)) {
		var element = $(element_id);
		if (element.type == 'text' || element.type == 'hidden' || element.type == 'button') {
			element.value = element_value;	
		} else if (element.type == 'select-one' || element.type == 'select-multiple') {
			for (var i = 0; i < element.options.length; i++) {        		
				if (element.options[i].value == element_value) {
					element.options[i].selected = true;			
				} 
			}
		} else if (element.type == 'checkbox') {
			if (element_value) {
				element.checked = true;
			} else {
				element.checked = false;			
			}
		} else if (element.type == 'div') {
			element.innerHTML = element_value;		
		}
	}
}

/**
 *
 */
function set_htmleditor_value(element_id, element_value) {
	var iframes = document.getElementsByTagName('iframe');
	for (i = 0; i < iframes.length; i++) {
		if (iframes[i].id.indexOf(element_id + '___Frame') != -1) {
			var iframeId = iframes[i].id;
			var internalIframe = iframes[i].contentWindow.document.getElementsByTagName('iframe');
			internalIframe[0].contentWindow.document.body.innerHTML = element_value;
		}
	}
}

/**
 *
 */
function roundCorners(element, types) {
	/*if (typeof(Rico) != 'undefined' && is.moz) {
		window.alert('a');
		for (t = 0; t < types.length; t++) {
			elements = element.getElementsByTagName(types[t]);
			for (i = 0; i < elements.length; i++) {
				Rico.Corner.round(elements[i], {compact:true});		
			}
		}
	}*/
}

/**
 *
 */
function toggleSearch(
	searchFormId,
	cookieName,
	srcHide,
	titleHide,
	srcShow,
	titleShow,
	toggleButtonId,
	xajaxFunctionId,
	elementToRemoveContainerId,
	elementToRemoveId	
) {
	if ($(toggleButtonId)) {
		var toggleButton = $(toggleButtonId);
		if (!$(searchFormId)) {	
			document.cookie = cookieName + '=open';
			toggleButton.src = srcHide;
			toggleButton.title = titleHide;			
			return submitString(
				xajaxFunctionId, 
				'id=' + toggleButtonId + '&src=' + srcHide + '&title=' + titleHide, 
				'', 
				'Toggle in corso...', 
				toggleButtonId
			);	
		} else {
			document.cookie = cookieName + '=close';
			toggleButton.src = srcShow;
			toggleButton.title = titleShow;
			return removeElement(
				elementToRemoveContainerId,
				elementToRemoveId
			);	
		}
	}
	return false;
}

/**
 *
 */
function formatBox(elementId, className, addZIndex) 
{
	if ($(elementId)) {	
		var element = $(elementId);
		element.className = className;
		element.style.position = 'absolute';	    
	 
	  	var elementWidth  = 0;
		var elementHeight = 0;
	
		if (typeof(window.innerWidth) == 'number') {
			elementWidth  = window.innerWidth;
			elementHeight = window.innerHeight;
		} else if (document.documentElement && (document.documentElement.clientWidth || document.documentElement.clientHeight)) {
			elementWidth  = document.documentElement.clientWidth;
			elementHeight = document.documentElement.clientHeight;
		} else if (document.body && (document.body.clientWidth || document.body.clientHeight)) {
			elementWidth  = document.body.clientWidth;
			elementHeight = document.body.clientHeight;
		}
	
		var scrollY = 0;
	
		if (document.documentElement && document.documentElement.scrollTop) {
			scrollY = document.documentElement.scrollTop;
		} else if (document.body && document.body.scrollTop) {
			scrollY = document.body.scrollTop;
		} else if (window.pageYOffset) {
			scrollY = window.pageYOffset;
		} else if (window.scrollY) {
			scrollY = window.scrollY;
		}
	
		var elementDimensions = element.getDimensions(element);
		
		var setX = (elementWidth  - elementDimensions.width  ) / 2;
		var setY = (elementHeight - elementDimensions.height ) / 2 + scrollY;
		
		setX = ( setX < 0 ) ? 0 : setX;
		setY = ( setY < 0 ) ? 0 : setY;
	
		if (addZIndex) {
			element.style.zIndex = ++zIndex;
		}
		
		element.style.left = setX + "px";
		element.style.top  = setY + "px";
		element.style.display  = 'block';	
		element.style.cursor  = 'move';	
		
		/*
		if (typeof(Rico) != 'undefined' && is.moz) {   
			Rico.Corner.round(element, {compact:true});
			roundCorners(element, new Array('input', 'a', 'table', 'div', 'tr', 'td', 'th', 'fieldset', 'iframe', 'select', 'textarea', 'checkbox'));		
		}
		*/
		
		Position.includeScrollOffsets = true;			
		new Draggable(elementId);
	}
}


/**
 *
 */
function trimAll(sString) 
{
	while (sString.substring(0,1) == ' ') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}


/**
 *
 */
function selectAll(check_name) {
	var i;
	var elements = document.getElementsByTagName('input');
  	for (i=0; i < elements.length; i++) {
  		if(elements[i].type == 'checkbox' && elements[i].id.indexOf(check_name) != -1) {
		   elements[i].checked = true;
  		}
	}
  	return false;
}

/**
 *
 */
function unSelectAll(check_name)  {
	var i;
	var elements = document.getElementsByTagName('input');
	for (i=0; i < elements.length; i++) {
	  	if (elements[i].type == 'checkbox' && elements[i].id.indexOf(check_name) != -1) {
			elements[i].checked = false;
		}
	}
	return false;
}

/**
 *
 */
function checkSelected(check_name)
{
	var checked = false;
	var elements = document.getElementsByTagName('input');
	for (i=0; i < elements.length; i++) {
		if (elements[i].type == 'checkbox' && elements[i].name.indexOf(check_name) != -1 && elements[i].checked == true) {
			checked = true;
		}
	}
	if (!checked) {
  		window.alert('Eseguire almeno una selezione al fine di effettuare l\'operazione desiderata.');
  		return false;
  	} else { 
  		return true;
  	}
}

/**
 *
 */
function trimForm(idEl) {
	var objForm = $(idEl);
	for (i=0; i < objForm.elements.length; i++) {
		if (objForm.elements[i].type == 'text' || objForm.elements[i].type == 'textarea') {
			objForm.elements[i].value = trimAll(objForm.elements[i].value);
		}
	}
}

/**
 *
 */
function removeElement(containerId, elementId) 
{
	if ($(containerId) && $(elementId)) {
		$(containerId).removeChild($(elementId));
	}
	return false;
}

/**
 *
 */
function removeElements(containerId, elementIds)
{
	if ($(containerId)) {
		for (var i = 0; i < elementIds.length; i++) {
			if ($(elementIds[i])) {
				$(containerId).removeChild($(elementIds[i]));
			}
		}
	} 
	return false;
}

/**
 *
 */
function resetPanel(elementId, btnClosePanel) 
{
	btnClosePanel.disabled = true;	
	$(elementId).innerHTML = '';
	$(elementId).style.display = "none";
	$('loading').style.display = "none";
	$('loading').innerHTML = "";
	return false;
}

/**
 *
 */
function formRefresh
(
	formId,
	btnReset,
	formMessageElementId, 
	reloadDataFunction, 
	loadingMessage, 
	arrayElementIdsToPreserve
)
{
	if (typeof(loadingMessage) != 'undefined')  
	{
		loadingMessage = loadingMessage
	} 
	else 
	{
		loadingMessage = '';
	}
	if (typeof(arrayElementIdsToPreserve) != 'undefined')
	{
		arrayElementIdsToPreserve = arrayElementIdsToPreserve;
	}
	else 
	{	
		arrayElementIdsToPreserve = new Array();
	}
	if (typeof(arrayElementIdsToPreserve) != 'undefined')
	{
		reloadDataFunction = reloadDataFunction;
	}
	else 
	{	
		reloadDataFunction = '';
	}
	if (typeof(formMessageElementId) != 'undefined' && $(formMessageElementId))
	{
		$(formMessageElementId).innerHTML = '';
		$(formMessageElementId).style.display = 'none';	
	}
	if ($(formId) && btnReset) 
	{
                var iframes = $(formId).getElementsByTagName('iframe');
                for (var i = 0; i < iframes.length; i++)
                {
                        if (iframes[i].id.indexOf('___Frame') != -1)
                        {
                                var iframeId = iframes[i].id;
                                var internalIframe = iframes[i].contentWindow.document.getElementsByTagName('iframe');
                                if (internalIframe[0])
                                {
                                        internalIframe[0].contentWindow.document.body.innerHTML = '';
                                } 
				else
				{
					window.alert("Attendere il caricamento dell'editor di testo ed eseguire nuovamente l'operazione di refresh");
					return false;
				}
                        }
                }

		btnReset.disabled = true;
		
		if (loadingMessage) 
		{
			formatBox('loading', 'loader', false);	
			$('loading').style.display = "block";
			$('loading').innerHTML = loadingMessage;
		}
		elements = $(formId).getElementsByTagName('div');
		for (var i = 0; i < elements.length; i++) 
		{
			if  
			(
				elements[i].id.indexOf("_error") != -1
			) 
			{
				elements[i].innerHTML = "";	
				elements[i].style.display = 'none';
			}
			else if 
			(
				elements[i].id.indexOf("_file_info") != -1
			)
			{
				elements[i].innerHTML = "";				
			}
		}
		elements = $(formId).getElementsByTagName('input');
		for (var i = 0; i < elements.length; i++) 
		{

			if  
			(
				!inArray(elements[i].id, arrayElementIdsToPreserve)
				&&
				elements[i].type != 'button'
				&&
				elements[i].type != 'reset'
				&&
				elements[i].type != 'submit'
			) 
			{
				if (elements[i].type == "checkbox")
				{
					elements[i].checked = false;
				}
				else
				{
					elements[i].value = "";	
				}
			}
		}
		elements = $(formId).getElementsByTagName('select');
		for (var i = 0; i < elements.length; i++) 
		{
			if  
			(
				!inArray(elements[i].id, arrayElementIdsToPreserve)
			) 
			{
				if (elements[i].id.indexOf('msbox_selected') != -1)
				{
					if 
					(
						$(elements[i].id)
						&&
						$(elements[i].id.replace('selected', 'selector'))
					)
					{ 
						var from = $(elements[i].id);
						var to = $(elements[i].id.replace('selected', 'selector'));
						moveAllOptions(from, to);	
					}
				}
				else
				{
					for (var opt=0; opt < elements[i].options.length; opt++)
					{
						elements[i].options[opt].selected = false;
					}				
				}	
			}
		}				 
		$(formId).style.display = 'block';
		btnReset.disabled = false;
	} 
	if (reloadDataFunction) 
	{
		submitString(reloadDataFunction, '', '', '', '');	
	}
	if (loadingMessage && !reloadDataFunction)
	{	
		$('loading').style.display = "none";
		$('loading').innerHTML = "";
	}
	return false;
}

/**
 *
 */
function inArray(ago, pagliaio)
{
	var result = false;
	for (var i = 0; i < pagliaio.length; i++) {
	    	if (ago == pagliaio[i]) {
			result = true;
	      		break;
	      	}
	}
	return result;
}

/**
 *
 */
function submitFormAfterCheck(
	idElementsToCheck,
	idForm, 
	functionId, 
	loadingMessage, 
	disabledElementId,
	message
)
{
	if (checkSelected(idElementsToCheck)) {
		if (window.confirm(message)) {
			submitForm(idForm, functionId, loadingMessage, disabledElementId);
		}
	} 
	return false; 
}

/**
 *
 */
function submitString(functionId, str, confirmation, loadingMessage, disabledElementId)
{	
	if (!confirmation) {
		if (disabledElementId && $(disabledElementId)) {
			$(disabledElementId).disabled = true;
		}		
		eval(functionId + '("' + str + '")');
		if (loadingMessage && $('loading')) {
			$('loading').innerHTML = loadingMessage;
			$('loading').style.display = "block";
			formatBox('loading', 'loader', false);		
		}	
	} else {
		if (window.confirm(confirmation)) {
			if (disabledElementId && $(disabledElementId)) {
				$(disabledElementId).disabled = true;
			}			
			eval(functionId + '("' + str + '")');
			if (loadingMessage && $('loading')) {
				$('loading').innerHTML = loadingMessage;
				$('loading').style.display = "block";
				formatBox('loading', 'loader', false);			
			}			
		}
	}
	return false;
}	

/**
 *
 */
function submitForm(idForm, functionId, loadingMessage, disabledElementId)
{
	if ($(idForm)) {
		updateTextarea();
		updateMultipleSelectBox(true);
		trimForm(idForm);
		eval(functionId + '(xajax.getFormValues("' + idForm + '"))');
		updateMultipleSelectBox(false);		
		if (disabledElementId && $(disabledElementId)) {
			$(disabledElementId).disabled = true;
		}
		if (loadingMessage && $('loading')) {
			$('loading').innerHTML = loadingMessage;
			$('loading').style.display = "block";			
			formatBox('loading', 'loader', false);
		}
	} else {		
		window.alert("Form non trovato");
	}
	return false;
}

/**
 *
 */
function updateTextarea()
{
	if (document.getElementsByTagName('iframe')) {
		var iframes = document.getElementsByTagName('iframe');
		for (var i = 0; i < iframes.length; i++) {
			if (iframes[i].id.indexOf('___Frame') != -1) {
				var iframeId = iframes[i].id;
				var internalIframe = iframes[i].contentWindow.document.getElementsByTagName('iframe');
				var fieldId = iframeId.replace('___Frame', '');
				var contents = internalIframe[0].contentWindow.document.body.innerHTML;
				//var check = trimAll(contents);
				//if (check == '<br>' || check == '<br />' || check == '<br >') {
				//	contents = contents.replace("<br />", ''); 
				//	contents = contents.replace("<br>", '');
				//	contents = contents.replace("<br >", '');
				//}
				contents = contents.replace(/\n/g, '');
				contents = contents.replace(/\r/g, '');
				contents = contents.replace(/\t/g, '');
				$(fieldId).value = contents;
			}
		}
	}
}

/**
 *
 */
function updateMultipleSelectBox(bool)
{
	if (document.getElementsByTagName('select')) {
		var elements = document.getElementsByTagName('select');
		for (var i = 0; i < elements.length; i++) {
			if (elements[i].id.indexOf('msbox_selected') != -1) {
				for (var opt=0; opt < elements[i].options.length; opt++) {
					elements[i].options[opt].selected = bool;
				}
			}
		}	
	}
}

/**
 *
 */
function menuPageChange(element)
{
	var container = $('menu_list');
	var anchors = container.getElementsByTagName('a');
	for (var i = 0; i < anchors.length; i++) {           
		if (anchors[i].id.indexOf('menu_item') != -1) {
			anchors[i].className = '';
		}
	}		
	element.className = 'selected';		
}

