Combobox = function() {

}

Combobox.setCombos = function(pobComboOrigen, pobComboDestino) {
	pobComboOrigen.ondblclick = function() {
		Combobox.move(pobComboOrigen, pobComboDestino, 0)
	};
	pobComboDestino.ondblclick = function() {
		Combobox.move(pobComboDestino, pobComboOrigen, 0);
	};
}

Combobox.setCombosAlterna = function(pobComboOrigen, pobComboDestino, tipoCombo) {
	
	pobComboOrigen.ondblclick = function() {
		Combobox.move(pobComboOrigen, pobComboDestino, 0)
	};
	pobComboDestino.ondblclick = function() {
		validaPaseEntreCombos(tipoCombo);
		//Combobox.move(pobComboDestino, pobComboOrigen);
	};
}

Combobox.setCombosAlternaDos = function(pobComboOrigen, pobComboDestino, idSelect) {
	pobComboOrigen.ondblclick = function() {
		Combobox.move(pobComboOrigen, pobComboDestino, idSelect)
	};
	pobComboDestino.ondblclick = function() {
		Combobox.move(pobComboDestino, pobComboOrigen, idSelect);
	};
}



Combobox.move = function(pobOrigen, pobDestino, idSelect) {
	var layTextosOrigen = new Array();
	var layTextosDestino = new Array();
	var layListaValores = new Array();
	
	if(idSelect == 1){
		//console.log("se cambiaron las filiales");
		llamaActulizaProcesoAction(1);
	}

	for (var xE = 0; xE < pobDestino.options.length; xE++) {
		layListaValores[pobDestino.options[xE].text] = pobDestino.options[xE].value;
		layTextosDestino[xE] = pobDestino.options[xE].text;
	}

	var lnuPosOrigen = 0;
	var lnuPosDestino = layTextosDestino.length

	for (var xE = 0; xE < pobOrigen.options.length; xE++) {
		layListaValores[pobOrigen.options[xE].text] = pobOrigen.options[xE].value;

		if (pobOrigen.options[xE].selected && pobOrigen.options[xE].value != "") {
			layTextosDestino[lnuPosDestino] = pobOrigen.options[xE].text;
			lnuPosDestino++;

		}// Termina if( )
		else {
			layTextosOrigen[lnuPosOrigen] = pobOrigen.options[xE].text;
			lnuPosOrigen++;

		}// Termina else if( )

	}// Termina for( )

	layTextosOrigen.sort();
	layTextosDestino.sort();

	pobOrigen.length = 0;
	pobDestino.length = 0;

	for (var xE = 0; xE < layTextosOrigen.length; xE++) {
		var lobOption = new Option();
		lobOption.value = layListaValores[layTextosOrigen[xE]];
		lobOption.text = layTextosOrigen[xE];

		pobOrigen[xE] = lobOption;

	}// Termina for( )

	for (var xE = 0; xE < layTextosDestino.length; xE++) {
		var lobOption = new Option();
		lobOption.value = layListaValores[layTextosDestino[xE]];
		lobOption.text = layTextosDestino[xE];

		pobDestino[xE] = lobOption;

	}// Termina for( )
}

Combobox.select = function(pobCombo) {
	for (var xE = 0; xE < pobCombo.length; xE++) {
		pobCombo[xE].selected = true;
	}
}

Combobox.send = function(pobCombo, pboText) {
	var lstCadena = '';
	var lnuTotal = pobCombo.length;

	if (lnuTotal > 0) {
		for (var xE = 0; xE < lnuTotal - 1; xE++) {
			lstCadena += pobCombo[xE].value + ',';
		}

		lstCadena += pobCombo[lnuTotal - 1].value;
	}
	pboText.value = lstCadena;
}

function callActionAjax(actionRoute, jsonActionParameter, functionProcessor){
	
	 $.ajax({
	     url: contextPath + actionRoute,
	     type: 'POST',
	     data:  jsonActionParameter, 
		 dataType: "json",
	     success:function(response){ 
	    	 functionProcessor(response);    
	     },
	     error:function(jqXhr, textStatus, errorThrown){
	         console.error("Error: " + textStatus + " ::: " + errorThrown + " ::: " + jqXhr);
	     }
	 });
	
}

var comboValidando = "ninguno";

function procesaRespuestaValidaComboAction(jsonData) {
	//console.info(JSON.stringify(jsonData));
	
	var comboLocal;
	var categoriasNoQuitar = jsonData.noQuitar;
	
	//console.log(comboValidando);
	if(comboValidando == "categorias"){
		comboLocal = comboCategoriasSelecc;
	}else if (comboValidando == "servicios") {
		comboLocal = comboServiciosSelecc;
	}
	
	if(categoriasNoQuitar.length > 0) {
		
		//console.log(comboLocal);
		
		for(var i = 0; i < comboLocal.options.length; i++) {
			
			for(var j = 0; j < categoriasNoQuitar.length; j++) {
				if(comboLocal.options[i].value == categoriasNoQuitar[j]) {
					comboLocal.options[i].selected = false;//true;
				}
			}
			
		}
		
		showError("Se estan deseleccionando opciones que no pueden ser deseleccionados.");
		
	}

	if(comboValidando == "categorias"){
		Combobox.move( comboLocal, comboCategorias, 0);
	}else if (comboValidando == "servicios") {
		Combobox.move( comboLocal, comboServicios, 0);
	}

}

function llamaValidaComboAction(idCategorias) {
	
	var jsonString = '{"idContratoCat" : "'+ $('#idContrato').val() +'" , "tipoCatalogo" : "'+ comboValidando +'" , ';
	
	for(var i = 0; i < idCategorias.length; i++) {
		
		if(i < idCategorias.length - 1){
			jsonString += ' "idsCatalogo['+ i +']" : ' + idCategorias[i] + ',';
		}else {
			jsonString += ' "idsCatalogo['+ i +']" : ' + idCategorias[i] + '}';
		}
		
	}
	
	//console.info(jsonString);
	var stringJson = JSON.parse(jsonString);
	callActionAjax( "/contrato/generales/validaCombo", stringJson, procesaRespuestaValidaComboAction);
}

function validaPaseEntreCombos(identificadorCombo) {
	
	var comboLocal;
	var idCategorias = new Array();
	var k = 0;
	
	if(identificadorCombo == "categorias") {
		comboLocal = comboCategoriasSelecc;
	}else if (identificadorCombo == "servicios") {
		comboLocal = comboServiciosSelecc;
	}
		
	for(var i = 0; i < comboLocal.options.length; i++) {
		//console.log(comboLocal.options[i].value + ' - ' + comboLocal.options[i].text);
			
		if(comboLocal.options[i].selected) {
			idCategorias[k++] = comboLocal.options[i].value;
		}
			
	}
	
	if(k > 0) {
		comboValidando = identificadorCombo;
		llamaValidaComboAction(idCategorias);
	}
	
}

function llamaActulizaProcesoAction(valor) {
	
	var jsonString = '{"valor" : "' + valor + '" , "idCon" : "' + $('#idContrato').val() + '" , "fechaInicio" : "' + $('#campoFechaInicio').val() + '"}' ;
	var stringJson = JSON.parse(jsonString);
	//console.log(jsonString + " : r" + Math.random());
	//callActionAjax( "/contrato/generales/contratoProceso", stringJson, procesaRespuestaActulizaProcesoAction);
	
}

function procesaRespuestaActulizaProcesoAction(jsonData) {
	//console.info(JSON.stringify(jsonData));
}

//function iteraSobreCombo(combo){
//	
//	var idCategorias = new Array();
//	for(var i = 0; i < combo.options.length; i++) {
//		console.log(combo.options[i].value + ' - ' + combo.options[i].text);
//		idCategorias[i] = combo.options[i].value;
//	}
//	console.log(idCategorias);
//	comboValidando = "categorias";
//	llamaValidaComboAction(idCategorias);
//}