// VALIDACIONES
function getReponseData(data){
	
	tmp1 = data.replace(/[\r\n]/igm,"");
	data = tmp1.replace(/.+\[CDATA(\[.+\])\].+/igm,"$1");
	return data;
}

function js_onlyNumbers(txtField){

if (!/^([0-9\.])*$/.test(txtField)){
//alert('<bean:message key="errors.range.onlyNumbers" />');
alert("El valor " + txtField.value + " no es un número");
return;
}

}

function isDecimal(num){
	var pattern = /^(\-)?\d*\.?\d*$/;
	return pattern.exec(num);
}

function isNumber(num){
	var pattern = /^\d*$/;
	return pattern.exec(num);

}

function isEmail(aValue) {
	var expresion = /^[\w\.]+\@(\w+\.\w+){1,3}$/;	
	var compara = expresion.exec( aValue );
	var r = ( compara != null );
	return r;
}


// Traer el valor del un radio checado
function radio_checked(radio)
{
	ret = false;
	if(radio.length){
	for(i=0; i<radio.length; i++){
			if(radio[i].checked == true){
				ret = radio[i].value;
			}
		}	
	}
		
	return ret;


}

function isDecimal(num){
	var pattern = /^(\-)?\d*\.?\d*$/;
	return pattern.exec(num);
}

function isNumber(num){
	var pattern = /^\d*$/;
	return pattern.exec(num);

}
function strCurrency(fltValue)
{
	//Separate the parts of the Currency
	var intWholeNums = parseInt(fltValue);
	var fltDecimals = fltValue - intWholeNums;
	
	//Format the Whole Numbers
	var strValue = intWholeNums.toString();
	var objRegExp = new RegExp('(-?[0-9]+)([0-9]{3})');
	
	while(objRegExp.test(strValue))
	{
		//replace original string with first group match, a comma, then second group match
		strValue = strValue.replace(objRegExp, '$1,$2');
	}
	
	//Format the R
	if (fltDecimals == 0)
	{
		strValue += ".00";
	}
	else
	{
		fltDecimals *= 100;
		fltDecimals = Math.round(Math.abs(fltDecimals));
		if(fltDecimals<10){
			strValue+= ".0";
		}
		else
			strValue+= ".";
		strValue+=fltDecimals;
	}
	
	return strValue;
}

/*--- Functiones para fechas ---*/
var dateFormat = "mdy";
var dateSeparator = "-";

function getDateFormat(s) {
	s = s.toLowerCase();
	var dateFormat = getFirstChar(s);
	s = getStringAfter(s, dateSeparator);
	dateFormat += getFirstChar(s);
	s = getStringAfter(s, dateSeparator);
	dateFormat += getFirstChar(s);
	dateFormat = replaceChar(dateFormat, "a", "y");
	return dateFormat;
}
	

function validateDate(s) {

	var firstParam 	= getStringBefore(s, dateSeparator);
	var tempStr 	= getStringAfter(s, dateSeparator);
	var secondParam = getStringBefore(tempStr, dateSeparator);
	var thirdParam 	= getStringAfter(tempStr, dateSeparator);
	var year;
	var month;
	var day;
	var dFormat;
	if (validateDate.arguments.length == 1) {
		dFormat = dateFormat;
	} else {
		dFormat = validateDate.arguments[1];
		dFormat = getDateFormat(dFormat);
	}
	if (dFormat.charAt(0) == 'm') { month 	= firstParam; };
	if (dFormat.charAt(0) == 'd') { day 	= firstParam; };
	if (dFormat.charAt(0) == 'y') { year 	= firstParam; };
	if (dFormat.charAt(1) == 'm') { month 	= secondParam; };
	if (dFormat.charAt(1) == 'd') { day 	= secondParam; };
	if (dFormat.charAt(1) == 'y') { year 	= secondParam; };
	if (dFormat.charAt(2) == 'm') { month 	= thirdParam; };
	if (dFormat.charAt(2) == 'd') { day 	= thirdParam; };
	if (dFormat.charAt(2) == 'y') { year 	= thirdParam; };
	return(isDate(year, month, day));
}



function getDateString(year, month, day) {
	var dateString = year;
	if (month.length == 1) {
		dateString += "0" + month;
	} else {
		dateString += "" + month;
	}
	if (day.length == 1) {
		dateString += "0" + day;
	} else {
		dateString += "" + day;
	}
	return dateString;
}


function reformatDate(s) {
	var firstParam 	= getStringBefore(s, dateSeparator);
	var tempStr 	= getStringAfter(s, dateSeparator);
	var secondParam = getStringBefore(tempStr, dateSeparator);
	var thirdParam 	= getStringAfter(tempStr, dateSeparator);
	var year;
	var month;
	var day;
	var dFormat;
	if (reformatDate.arguments.length == 1) {
		dFormat = dateFormat;
	} else {
		dFormat = getDateFormat(reformatDate.arguments[1]);
	}
	if (dFormat.charAt(0) == 'm') { month 	= firstParam; };
	if (dFormat.charAt(0) == 'd') { day 	= firstParam; };
	if (dFormat.charAt(0) == 'y') { year 	= firstParam; };
	if (dFormat.charAt(1) == 'm') { month 	= secondParam; };
	if (dFormat.charAt(1) == 'd') { day 	= secondParam; };
	if (dFormat.charAt(1) == 'y') { year 	= secondParam; };
	if (dFormat.charAt(2) == 'm') { month 	= thirdParam; };
	if (dFormat.charAt(2) == 'd') { day 	= thirdParam; };
	if (dFormat.charAt(2) == 'y') { year 	= thirdParam; };
	return(getDateString(year, month, day));
}

function compareDates(dateStart, dateEnd) {
	if (compareDates.arguments.length == 2) {
		dFormat = dateFormat;
	} else {
		dFormat = compareDates.arguments[2];
	}
	if (reformatDate(dateStart, dFormat) > reformatDate(dateEnd, dFormat)) { 
		return true;
	} else {
		return false;
	}
}

function checkAll(arrChk,chkAll){
	
	if(arrChk)
	{
		len = arrChk.length;
		
		if(len){
		
			for(i=0; i<len; i++){
				//arrChk[i].checked = chkAll.checked;	
				//arrChk[i].click();
				if(arrChk[i].style.visibility!='hidden'){
					if(arrChk[i].checked!=chkAll.checked)
						arrChk[i].click();
				}
				
			}
		}
		else{
			//rrChk.checked = chkAll.checked;
			//arrChk.click();
			if(arrChk.style.visibility!='hidden'){
				if(arrChk.checked!=chkAll.checked)
					arrChk.click();	
				}
		}
			
	}	
	
}

function invertir_seleccion(arrChk){
	if(arrChk)
	{
		len = arrChk.length;
		
		if(len){
		
		for(i=0; i<len; i++){
				if(arrChk[i].style.visibility!='hidden'){
				arrChk[i].click();
				}
			
			}
		}
		else{	
			if(arrChk.style.visibility!='hidden'){		
			arrChk.click();	
			}	
		}
			
	}	
	
}

function deshabilitar_subelements(form,flag,clr)
{
	tags = new Array();
	tags[0] = 'input';
	tags[1] = 'select';
	tags[2] = 'textarea';
	 
	e = 0;
	while(e<3){
		elem = $(form).getElementsByTagName(tags[e]);
	
		if(elem){
			if(elem.length){
				for(i=0; i<elem.length; i++){
					elem[i].disabled = flag;
					if(clr){
						switch(tags[e]){
							case 'input' : case 'textarea' :
								elem[i].value = '';
							break;
							
							case 'select':
								elem[i].selectedIndex = 0;
						}
						
					}
				}
			}
			}
		e++;
	}
	
	

}


function change_action_form(form,controller,action)
{
	
		form_action = form.action;		
		form_action = form_action.replace($Kumbia.path, '');
		//alert(form_action)
		var objRegExp = new RegExp('[a-z_0-9]+\/[a-z_0-9]+\/((.*)\/])?');
		form_action = form_action.replace(objRegExp, controller+'/'+action+'/$1');
		//alert(form_action)
		form.action = $Kumbia.path+form_action;

}

function resaltar_botones(clase,clase_hover){
	
inputs = document.getElementsByTagName('input');
	if(inputs){
		len = inputs.length;
		if(len)
		{
			for(i=0; i<len; i++)
			{
				if(len>1){
					boton = inputs[i];
				}else{
					boton = inputs;
				}
				
				if(boton.type=='button' || boton.type=='submit')
				{
					
					if(boton.className==clase){
						
						boton.onmouseover= function(){
							this.className = clase_hover;
							
						};
						boton.onmouseout = function(){
							this.className = clase;	
						};	
						
					}
					
						
				}
				
			}
		}		
		
	}
}


function expandir_contraer_dd(dt){
	
	if(dt.nextSibling.nodeType==3) {
		dd=dt.nextSibling.nextSibling; // Moz. Opera
	}
	else {
		dd=dt.nextSibling; // IE
	}

	if(dd.style.display=='none')
		dd.style.display='block';
	else
		dd.style.display = 'none'
	
}

function expandir_contraer_todo_dl(dl,flg)
{
	dis = (flg>0) ? 'block' : 'none';		
	
	arr_dd = dl.getElementsByTagName('dd');
	for(i=0;i<arr_dd.length;i++){
		if(arr_dd[i].parentNode==dl) {
			arr_dd[i].style.display = dis;			
		} 
	}
	
	
}

function expandir_contraer_todo_sub_ul(dl,flg)
{
	dis = (flg>0) ? 'block' : 'none';		
	
	arr_dd = dl.getElementsByTagName('dd');
	for(i=0;i<arr_dd.length;i++){
		if(arr_dd[i].parentNode!=dl) {
			arr_dd[i].style.display = dis;			
		} 
	}
	
	
}

/*----------------- SELECCIONAR MOVER UNA LISTA Y FUNCIONES PARA DOS LISTAS INTERCAMBIABLES --------------------*/
function mover_hacia(direccion,lista){
	ul = $(lista);
	arr_li = ul.getElementsByTagName('li');


	len = arr_li.length;

	cont=0;		
	for(i=1; i<len; i++)
	{
		chk = (len>1) ? arr_li[i].getElementsByTagName('input')[0] :  arr_li.getElementsByTagName('input')[0];	
	
		if(chk.checked){	;
			cont++;
			if(cont>1){
				alert("¡Solo puede mover un elemento a la vez, por favor seleccione uno!");
				return;
			}
		}
	}


	for(i=1; i<len; i++)
	{
		chk_actual = (len>1) ? arr_li[i].getElementsByTagName('input')[0] :  arr_li.getElementsByTagName('input')[0];		
		
	
		if(chk_actual.checked==true){			
			if(arr_li[i+direccion])	
			{	
				if(i+direccion!=0){					
				
				li_intercambio = arr_li[i+direccion];
				li_actual = arr_li[i];	
									
								
				li_tmp_innerHTML = li_intercambio.innerHTML;
				li_tmp_id = li_intercambio.id;
				li_tmp_className = li_intercambio.className;
				li_tmp_title = li_intercambio.title;
				
								
				li_intercambio.innerHTML = li_actual.innerHTML;
				li_intercambio.id = li_actual.id;
				li_intercambio.className = li_actual.className;	
				li_intercambio.title = 	li_tmp_title;				
				
				li_actual.innerHTML = li_tmp_innerHTML;
				li_actual.id = li_tmp_id;
				li_actual.className = li_tmp_className;
				li_actual.title = li_actual.title;
				
				li_intercambio.getElementsByTagName('input')[0].checked = true;
				
				
				}
			
			}	
					
			return;
		}
		
		
	}
	

}



function selecciona_todas_lista(chkAll,lista){
	
	arr_li = lista.getElementsByTagName('li');
	
	if(arr_li)
	{
		len = arr_li.length;

		for(i=1; i<len; i++)
		{	
			if(len>1){
				arrChk = arr_li[i].getElementsByTagName('input')[0];
			}
			else{
				arrChk = arr_li.getElementsByTagName('input')[0];
			}
			
				//arrChk.checked = chkAll.checked;
				

				if(arrChk.checked!=chkAll.checked)
					arrChk.click();	
				

		}	
			
	}	
	
}

function agregar_li(li_from,li_to){
	
	ul = $(li_from);
	arr_li = ul.getElementsByTagName('li');

	rem = new Array();

	len = arr_li.length;

	cont=0;
	for(i=1; i<len; i++)
	{
		chk = (len>1) ? arr_li[i].getElementsByTagName('input')[0] :  arr_li.getElementsByTagName('input')[0];	
		li = (len>1) ? arr_li[i] :  arr_li;	
		
		if(chk.checked==true){
			chk.checked = false;
			chk.title='';
			li_nueva = document.createElement('li');				
			li_nueva.innerHTML = li.innerHTML;
			li_nueva.id = li_to+'_'+chk.value;
		 	rem[cont]= li.id;
		 	cont++;		 	
		 	li_nueva.onmouseover= function(){ if(this.className!='seleccionado')this.className = 'resaltado';}
			li_nueva.onmouseout= function () { if(this.className!='seleccionado')this.className = '';}		 	
			
			li_nueva.ondblclick = function(){
				agregar_li_2click(this,li_to,li_from);
			}		
			$(li_to).appendChild(li_nueva);
				
		}
		
		
	}


	for(i=0; i<cont; i++)
	{

		 	$(rem[i]).remove();		
	}
	reordenar_titles(li_from); 
	reordenar_titles(li_to);
	
	
}


function reordenar_titles(lista){
	ul = $(lista);
	arr_li = ul.getElementsByTagName('li');
	len = arr_li.length;
	
	for(i=1; i<len; i++)
	{
		li = (len>1) ? arr_li[i] :  arr_li;			
		li.title=i;
		sp = li.getElementsByTagName('span');
		if(sp){
			sp[0].innerHTML = i+". ";
		}
		
	}
	
}

function agregar_todas_li(sel_todas,li_from,li_to)
{
	$(sel_todas).checked=true; 
	selecciona_todas_lista($(sel_todas),$(li_from)); 
	agregar_li(li_from,li_to);
	$(sel_todas).checked=false; 
	
}


function agregar_li_2click(li,li_from,li_to){
	selec_todas = $(li_from).getElementsByTagName('input')[0];
	selec_todas.checked = false;
	selecciona_todas_lista(selec_todas,$(li_from));
	chk = li.getElementsByTagName('input')[0];
	chk.checked=true;
	agregar_li(li_from,li_to);
	
	
}
/*---------------- CALENDARIO -------------------*/

function cargar_calendario(params){
	controlador = 'util';
	accion = 'calendario_semanal'; 
	$(divs_cal[idx_cal]).style.display = "block";
	//alert($(inputs_cal[idx_cal]).x);
	
	new AJAX.viewRequest({
	action: controlador+"/"+accion+"/"+params,
	container: divs_cal[idx_cal],
	callbacks: {success: ""},
	evalscripts: true
	});
	
}

function accion_calendario(tr){
	ano = $('ano_calendario_semanal').value;
	$(inputs_cal[idx_cal]).value = tr.lang;
	

	len_cal = $(ano_cal[idx_cal]).options.length;
	opt_ini = $(ano_cal[idx_cal]).options[len_cal-1].value;
	opt_fin = $(ano_cal[idx_cal]).options[0].value;
	if(ano<opt_ini || ano>opt_fin)
		{
			option_ano = document.createElement('option');
			option_ano.value = $('ano_calendario_semanal').value;
			option_ano.innerHTML = $('ano_calendario_semanal').value;
			$(ano_cal[idx_cal]).appendChild(option_ano);			
		}
	$(ano_cal[idx_cal]).value = ano;
	cerrar_calendario();
}

function cerrar_calendario(){
	$(divs_cal[idx_cal]).style.display = 'none';
}

/* ------------------ SPAN y SELECT para no dejar a la vista el select -----------------------*/

function verCombo(span){
	if(span.nextSibling.nodeType==3) {
	combo=span.nextSibling.nextSibling; // Moz. Opera
	}
	else {
		combo=span.nextSibling; // IE
	}
	span.style.display='none';
	combo.style.display='inline';
	combo.focus();

}

function ocultarCombo(combo){
	if(combo.previousSibling.nodeType==3) {
		span=combo.previousSibling.previousSibling; // Moz. Opera
	}
	else {
		span=combo.previousSibling; // IE	
		
	}

	span.innerHTML = combo.value;
	combo.style.display='none';
	span.style.display='inline';

}


/* ----------- PARA simular el resaltado del menu --------------*/
function resaltar_menu(lista, tipo){
	span_img = lista.getElementsByTagName('span')[0];
	span_txt = lista.getElementsByTagName('span')[1];

	if(tipo==1){
		span_img.className = 'img_resaltado';
		span_txt.className = 'favorito_resaltado';
	}else{
		span_img.className = '';
		span_txt.className = 'favorito';
	}
	
}

function over_menu_texto(span_texto){
	span_texto.className = 'favorito_resaltado';
	td_texto = span_texto.parentNode;
	
	td_img = (td_texto.previousSibling.nodeType==3) ? td_texto.previousSibling.previousSibling : td_texto.previousSibling;
	
	span_img = td_img.getElementsByTagName('span')[0];
	span_img.className='img_resaltado';
	
}

function out_menu_texto(span_texto){
	span_texto.className = 'favorito';
	td_texto = span_texto.parentNode;	
	
	td_img = (td_texto.previousSibling.nodeType==3) ? td_texto.previousSibling.previousSibling : td_texto.previousSibling;
	
	span_img = td_img.getElementsByTagName('span')[0];
	span_img.className='';
	
}

function over_menu_img(span_img){

	span_img.className = 'img_resaltado';
	td_img = span_img.parentNode;

	td_texto = (td_img.nextSibling.nodeType==3) ? td_img.nextSibling.nextSibling : td_img.nextSibling;
	
	span_texto = td_texto.getElementsByTagName('span')[0];
	span_texto.className='favorito_resaltado';	
}

function out_menu_img(span_img){
	span_img.className = '';
	td_img = span_img.parentNode;
	
	td_texto = (td_img.nextSibling.nodeType==3) ? td_img.nextSibling.nextSibling : td_img.nextSibling;
	
	span_texto = td_texto.getElementsByTagName('span')[0];
	span_texto.className='favorito';	
}


/*----- Combo en blanco ------*/
function getClearCombo(id,option){
	if(!id){
		id = '';
	}
	if(!option){
		option = '';
	}
 	 html_combo = "<select name='"+id+"' id='"+id+"'>";
	 html_combo += "<option value=''>"+option+"</option>";
	 html_combo += "</select>";	
	 return html_combo;
	
}

/*-- Recargar combo dinamico con util--*/
function recargar_combo(caption,destiny,origen,onchange,selected,properties){
	//public function get_combo($caption,$first_option="Seleccione", $destiny,$source_field,$source_value,$function='',$default)

	 params =  "/";
	 params += "caption: "+caption+"/";
	 params += "first_option: Seleccione.../";
	 /*requeridos*/
	 params += "destiny: "+destiny+"/";
	 params += "origen: "+origen+"/";

	 params += "origen_id: "+$("fl_"+origen+"_id").value+"/";
	 /*--*/
	 params += "onchange: "+onchange+"/";
	 params += "selected: "+selected+"/";
	 params += "properties: "+properties+"/";
	 
	 
	// alert(params);
	 new AJAX.viewRequest({
	 action: "util/get_combo"+params,
	 container: "div_combo_"+caption,
	 evalScripts:true
	 });
 
}