var lastid = 0;
var estado = 0;
var validar = new Array(0,0,0,0);
var grupos = 0;



function trim(value){
	value = value.replace(/^\s+/, '');
	return value.replace(/\s+$/, '');
}

function element(id){
	var element = document.getElementById(id);
	return element;
}

function valueof(id){
	var value = document.getElementById(id).value;
	return value;
}

function display(element){
	if(element.style.display=='none'){
		element.style.display='';
	}
	else{
		element.style.display='none';
	}
}

function displayit(field,fields){
	for(i=0; i<fields.length; i++){
		var tmpfield = element(fields[i]);
		if(fields[i]==field){
			tmpfield.style.display='';
		}
		else{
			tmpfield.style.display='none';
		}
	}
}

function linker(linkset, links){
	for(j=0; j<linkset.length; j++){
		displayit(linkset[j], links[j]);
	}
}

function checkmail(id){
	errors = 0;
	email = element(id);
	emails = email.value.split(';');
	for(i=0; i<emails.length; i++){
		emails[i] = trim(emails[i]);
		if(!emails[i].match(/^(([A-Za-z0-9]+_+)|([A-Za-z0-9]+\-+)|([A-Za-z0-9]+\.+)|([A-Za-z0-9]+\++))*[A-Za-z0-9]+@((\w+\-+)|(\w+\.))*\w{1,63}\.[a-zA-Z]{2,6}$/)){
			errors++;
		}
	}
	if(errors>0){
		email.className='failure';
		email.focus();
		return false;
	}
	else{
		email.className='success';
		return true;
	}
}

function checkit(id){
	text = element(id);
	if(text.value.toString()==''){
		text.className='failure';
		text.focus();
		return false;
	}
	else{
		text.className='success';
		return true;
	}
}

function scheckit(id){
	text = element(id);
	if(text.value==0){
		text.className='failure';
		text.focus();
		return false;
	}
	else{
		text.className='success';
		return true;
	}
}

function checkpass(pass,confirm){
	pass = element(pass);
	confirm = element(confirm);
	if(pass.value!=confirm.value){
		confirm.className='failure';
		return false;
	}
	else{
		confirm.className='success';
		return true;
	}
}

function checknull(value){
	if(value==null || value==''){
		return '&nbsp;';
	}
	else{
		return value;
	}
}

function select_clear(field) {
	while(field.options.length > 0){
		if(field.options.remove){
			field.options.remove(0);
		}
		else{
			field.options[0] = null;
		}
	}
}

function select_keys(field,values) {
	for(var key in values){
		field.options.add(new Option(values[key],key,false,false));
	}
}

function fill_select_keys(field,values) {
	select_clear(field);
	select_keys(field,values);
	field.onchange();
}

function select_this(select,value){
	var select = element(select);
	for(var i=0; i<select.options.length; i++) {
		if(select.options[i].value == value){
			select.options[i].selected = true;
		}
	}
}

function passthru(fieldfrom, fieldto, length){
	var fieldfrom = element(fieldfrom);
	var fieldto = element(fieldto);
	if(fieldfrom.value.length == length){
		fieldto.focus();
	}
}

function checkdate(dia, mes, anio, form){
	try{
		dateform = new Date(parseInt(anio.value), parseInt(mes.value)-1, parseInt(dia.value));
		today = new Date();
		diff = today.getTime() - dateform.getTime();
		if(parseInt(diff/(1000*60*60*24*365))>=18){
			hid = document.createElement('input');
			hid.type='hidden';
			hid.name='edad_constancia';
			hid.value='18';
			form.appendChild(hid);
			return true;
		}
		document.getElementById("warning_element").style.display="block";
		return false;
		
		
	}catch(e){
		
		return false;
	}
	
	
}

function check_dates(datefrom,dateto){
	var edatefrom = element(datefrom);
	var edateto = element(dateto);
	var datefrom = valueof(datefrom);
	var dateto = valueof(dateto);
	var today = new Date();
	var day = today.getDate();
	day = day.toString();
	if(day.length==1){
		day = '0'+day;
	}
	var month = today.getMonth()+1;
	month = month.toString();
	if(month.length==1){
		month = '0'+month;
	}
	var year = today.getFullYear();
	year = year.toString();
	today = year+'/'+month+'/'+day;
	today = today.toString();
	datefrom = datefrom.replace(/-/g,'/');
	dateto = dateto.replace(/-/g,'/');
	if(dateDiff('y',today,datefrom) > 18){
		edatefrom.className='success';
		if(dateDiff('m',datefrom,dateto)>=0){
			if(dateDiff('d',datefrom,dateto)>0){
				return true;
			}
			else{
				edateto.className='failure';
				return false;
			}
		}
		else{
			edateto.className='failure';
			return false;
		}
	}
	else{
		edatefrom.className='failure';
		return false;
	}
}

function check_dates_alter(datefrom,dateto){
	var edatefrom = element(datefrom);
	var edateto = element(dateto);
	var datefrom = valueof(datefrom);
	var dateto = valueof(dateto);
	var today = new Date();
	var day = today.getDate();
	day = day.toString();
	if(day.length==1){
		day = '0'+day;
	}
	var month = today.getMonth()+1;
	month = month.toString();
	if(month.length==1){
		month = '0'+month;
	}
	var year = today.getFullYear();
	year = year.toString();
	today = year+'/'+month+'/'+day;
	today = today.toString();
	datefrom = datefrom.replace(/-/g,'/');
	var tmpdatefrom = datefrom.split('/');
	datefrom = tmpdatefrom[2]+'/'+tmpdatefrom[1]+'/'+tmpdatefrom[0];
	dateto = dateto.replace(/-/g,'/');
	var tmpdateto = dateto.split('/');
	dateto = tmpdateto[2]+'/'+tmpdateto[1]+'/'+tmpdateto[0];
	if(dateDiff('d',today,datefrom)>=0){
		edatefrom.className='success';
		if(dateDiff('m',datefrom,dateto)>=0){
			if(dateDiff('d',datefrom,dateto)>=0){
				return true;
			}
			else{
				edateto.className='failure';
				return false;
			}
		}
		else{
			edateto.className='failure';
			return false;
		}
	}
	else{
		edatefrom.className='failure';
		return false;
	}
}

function set_members(groups){
	for(i=0; i<groups.length; i++){
		var group = element('group'+groups[i]);
		var members = element('members'+groups[i]);
		members.value = group.getElementsByTagName('tr').length;
	}
}

function validate(elements, types, dates, datefrom, dateto, type){
	elements.reverse();
	types.reverse();
	var errores = 0;
	for(l=0; l<elements.length; l++){
		switch(types[l]){
			case 'text':
				if(!checkit(elements[l])){
					errores++;
				}
			break;
			case 'select':
				if(!scheckit(elements[l])){
					errores++;
				}
			break;
			case 'email':
				if(!checkit(elements[l])){
					errores++;
				}
				else if(!checkmail(elements[l])){
					errores++;
				}
			break;
		}
	}
	if(dates){
		if(type==0){
			if(!check_dates(datefrom, dateto)){
				errores++;
			}
		}
		else if(type==1){
			if(!check_dates_alter(datefrom, dateto)){
				errores++;
			}
		}
	}
	if(errores>0){
		return false;
	}
	else{
		return true;
	}
}

function tabulate(elements, types, date, dates, tabs, links, linkset, state, type){
	if(validate(elements[estado], types[estado], date[estado], dates[estado][0], dates[estado][1], type)){
		validar[estado] = 1;
		estado = state;
		displayit(tabs[estado], tabs);
		linker(linkset[estado], links);
		return true;
	}
	else{
		validar[estado] = 0;
		return false;
	}
}

function validate_all(elements, types, date, dates, tabs, links, linkset, type){
	var errors = 0;
	for(m=0; m<validar.length; m++){
		if(validar[m]==0){
			if(!validate(elements[m], types[m], date[m], dates[m][0], dates[m][1], type)){
				displayit(tabs[m], tabs);
				linker(linkset[m], links);
				estado=m;
				errors++;
				break;
			}
		}
	}
	if(errors>0){
		return false;
	}
	else{
		return true;
	}
}

function autosave(){
	if(valueof('txtempleado') == 0){
		var nuevo = element('imgnew'); nuevo.style.display='none';
		var agregar = element('imgadd'); agregar.style.display='';
		var actualizar = element('imgupdate'); actualizar.style.display='none';
	}
	else{
		var nuevo = element('imgnew'); nuevo.style.display='';
		var agregar = element('imgadd'); agregar.style.display='none';
		var actualizar = element('imgupdate'); actualizar.style.display='';
	}
}

function edad(fromdate, field){
	field = element(field);
	var todate = new Date();
	if(fromdate>0){
		var edad = todate.getFullYear() - fromdate;
		field.value = edad;
	}
	else{
		field.value= '0';
	}
}

function horas(groups,hours,field){
	field = element(field);
	field.value = (groups*hours);
}

function total(){
	var total = element('txttotal');
	var tipo_empresa = element('txttipoempresa');
	var clasificacion = element('txtclasificacion');
	var subtotals = new Array('txtsubtotalm','txtsubtotalf');
	var tmptotal = 0;
	for(i=0; i<subtotals.length; i++){
		tmpsubtotal = element(subtotals[i]);
		tmptotal = parseInt(tmptotal) + parseInt(tmpsubtotal.value);
	}
	total.value = tmptotal;
	if((tmptotal > 0) && (tmptotal < 10)){
		clasificacion.innerHTML = 'MICRO';
		tipo_empresa.value=1;
	}
	else if((tmptotal > 9) && (tmptotal < 50)){
		clasificacion.innerHTML = 'PEQUE&Ntilde;A';
		tipo_empresa.value=2;
	}
	else if((tmptotal > 49) && (tmptotal < 100)){
		clasificacion.innerHTML = 'MEDIANA';
		tipo_empresa.value=3;
	}
	else if(tmptotal > 99){
		clasificacion.innerHTML = 'GRANDE';
		tipo_empresa.value=4;
	}
}

function subtotal(sufix){
	var etotal = element('txtsubtotal'+sufix);
	var subtotals = new Array('txtadmin'+sufix,'txtmedios'+sufix,'txttecnicos'+sufix,'txtgerentes'+sufix,'txtoperativos'+sufix);
	var tmptotal = 0;
	for(i=0; i<subtotals.length; i++){
		tmpsubtotal = element(subtotals[i]);
		tmptotal = parseInt(tmptotal) + parseInt(tmpsubtotal.value);
	}
	etotal.value = tmptotal;
	total();
}

function search_departamento(gotarray,idregion){
	var result = new Array();
	var num = gotarray.length;
	for(i=0;i<num;i++){
		if(departamentos[i].idregion==idregion){
			result[departamentos[i].iddepartamento]=departamentos[i].departamento;
		}
	}
	return result;
}

function search_municipio(gotarray,iddepartamento){
	var result = new Array();
	var num = gotarray.length;
	for(i=0;i<num;i++){
		if(municipios[i].iddepartamento==iddepartamento){
			result[municipios[i].idmunicipio]=municipios[i].municipio;
		}
	}
	return result;
}

function attach(id){
	var table = element('content');
	var controls = new Array('txtapellido1','txtapellido2','txtnombres','cmbnivel','txtedad','cmbsexo');
	var row = document.createElement('tr');
	row.style.backgroundColor='#E5F8FF';
	row.id='row'+id;
	var emods = document.createElement('td');
	var mods = '<a id="edit'+id+'" href="javascript:edit('+id+');">Editar</a><a id="update'+id+'" href="javascript:update('+id+');" style="display: none;">Guardar</a>';
	var edrop = document.createElement('td');
	var drop = '<a id="drop'+id+'" href="javascript:drop('+id+');">Borrar</a>';
	var number = document.createElement('td');
	number.className='tips';
	number.innerHTML='&nbsp;';
	row.appendChild(number);
	for(i=0; i<6; i++){
		var tmpcell = document.createElement('td');
		var input = element(controls[i]);
		if(i!=3){
			tmpcell.innerHTML=checknull(input.value);
		}
		else{
			tmpcell.innerHTML= input.options[input.value].text;
		}
		row.appendChild(tmpcell);
	}
	emods.innerHTML=mods;
	edrop.innerHTML=drop;
	emods.style.textAlign='center';
	edrop.style.textAlign='center';
	row.appendChild(emods);
	row.appendChild(edrop);
	table.appendChild(row);
}

function deattach(id){
	var row = element('row'+id);
	row.parentNode.removeChild(row);
}

function clean(){
	document.frmplanilla.reset();
	var nuevo = element('imgnew'); nuevo.style.display='none';
	var actualizar = element('imgupdate'); actualizar.style.display='none';
	var agregar = element('imgadd'); agregar.style.display='';
	var apellido1 = element('txtapellido1'); apellido1.focus();
}

function doajax(){
	var xmlhttp=false;
	try{
		xmlhttp = new ActiveXObject('Msxml2.XMLHTTP');
	}catch(e){
		try{
			xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
		}catch(E){
			xmlhttp = false;
		}
	}
	if(!xmlhttp && typeof XMLHttpRequest!='undefined'){
		xmlhttp = new XMLHttpRequest();
	}
	return xmlhttp;
}

function xmldoc(response){
	if (navigator.appName!='Microsoft Internet Explorer') {
		var xml = response.responseXML.documentElement;
	}else{
		var xml = new ActiveXObject('Microsoft.XMLDOM');
		xml.async='false';
		xml.loadXML(response.responseText);
	}
	return xml;
}

function isss(field,value){
	field = element(field);
	ajax = doajax();
	if(ajax){
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				if(ajax.responseText=='true'){
					field.className='sucess';
				}
				else{
					field.className='failure';
					field.select();
				}
			}
		}
	}
	ajax.open('GET', 'empresas_process.php?isss='+value);
	ajax.send(null);
}

function join(empleado,capacitacion,checkbox, groups){
	checkbox = element(checkbox);
	container = element('content');
	row = element('row'+empleado);
	ajax=doajax();
	if(ajax){
		if(checkbox.checked==true){
			var grupo = valueof('cmbgrupo');
			var group_container = element('group'+grupo);
			ajax.open('GET', 'empleados_process.php?process=join&empleado='+empleado+'&capacitacion='+capacitacion+'&grupo='+grupo);
		}
		else{
			ajax.open('GET', 'empleados_process.php?process=unjoin&empleado='+empleado+'&capacitacion='+capacitacion);
		}
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				if(ajax.responseText=='true'){
					if(checkbox.checked==true){
						checkbox.checked=true;
						row.className='selected';
						group_container.appendChild(row);
						set_members(groups);
					}
					else{
						checkbox.checked=false;
						row.className='unselected';
						container.appendChild(row);
						set_members(groups);
					}
				}
				else{
					if(checkbox.checked==true){
						checkbox.checked=false;
						row.className='unselected';
					}
					else{
						checkbox.checked=true;
						row.className='selected';
					}
				}
			}
		}
	}
	ajax.send(null);
}

function add(xml){
	var ajax = doajax();
	if(ajax){
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				var xml = xmldoc(ajax);
				if (parseInt(xml.getElementsByTagName('num').item(0).firstChild.data)>0){
					lastid = parseInt(xml.getElementsByTagName('num').item(0).firstChild.data);
					attach(lastid);
					clean();
				}
			}
		}
		xml.getElementsByTagName('apellido1').item(0).firstChild.data = valueof('txtapellido1');
		xml.getElementsByTagName('apellido2').item(0).firstChild.data = valueof('txtapellido2');
		xml.getElementsByTagName('nombres').item(0).firstChild.data = valueof('txtnombres');
		xml.getElementsByTagName('dui').item(0).firstChild.data = valueof('txtdui1')+valueof('txtdui2');
		xml.getElementsByTagName('isss').item(0).firstChild.data = valueof('txtpatronal');
		xml.getElementsByTagName('sexo').item(0).firstChild.data = valueof('cmbsexo');
		xml.getElementsByTagName('fecha').item(0).firstChild.data = valueof('txtano')+'-'+valueof('txtmes')+'-'+valueof('txtdia');
		xml.getElementsByTagName('edad').item(0).firstChild.data = valueof('txtedad');
		xml.getElementsByTagName('direccion').item(0).firstChild.data = valueof('txtdireccion');
		xml.getElementsByTagName('telefono').item(0).firstChild.data = valueof('txttelefono');
		xml.getElementsByTagName('email').item(0).firstChild.data = valueof('txtemail');
		xml.getElementsByTagName('nivel').item(0).firstChild.data = valueof('cmbnivel');
		xml.getElementsByTagName('cargo').item(0).firstChild.data = valueof('txtcargo');
		xml.getElementsByTagName('academico').item(0).firstChild.data = valueof('cmbacademico');
		xml.getElementsByTagName('departamento').item(0).firstChild.data = valueof('cmbdepartamento');
		xml.getElementsByTagName('municipio').item(0).firstChild.data = valueof('cmbmunicipio');
		ajax.open('POST', 'empleados_process.php?empleado=true&process=add', true);
		ajax.setRequestHeader('Content-Type', 'text/xml');
		if (navigator.appName!="Microsoft Internet Explorer"){
			var string = (new XMLSerializer()).serializeToString(xml);
			ajax.send(string);
		}else{
			ajax.send(xml);
		}
	}
}

function edit(empleado){
	ajax = doajax();
	if(ajax){
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				if(navigator.appName!='Microsoft Internet Explorer'){
					var xml = ajax.responseXML.documentElement;
				}else{
					var xml=new ActiveXObject('Microsoft.XMLDOM');
					xml.async='false';
					xml.loadXML(ajax.responseText);
				}
				clean();
				var num = element('txtempleado'); num.value=xml.getElementsByTagName('num').item(0).firstChild.data;
				var apellido1 = element('txtapellido1');	apellido1.value=xml.getElementsByTagName('apellido1').item(0).firstChild.data;
				var apellido2 = element('txtapellido2');	apellido2.value=xml.getElementsByTagName('apellido2').item(0).firstChild.data;
				var nombres = element('txtnombres');	nombres.value=xml.getElementsByTagName('nombres').item(0).firstChild.data;
				select_this('cmbsexo',xml.getElementsByTagName('sexo').item(0).firstChild.data);
				select_this('cmbnivel',xml.getElementsByTagName('nivel').item(0).firstChild.data);
				var cargo = element('txtcargo'); cargo.value=xml.getElementsByTagName('cargo').item(0).firstChild.data;
				select_this('cmbacademico',xml.getElementsByTagName('academico').item(0).firstChild.data);
				var dui1 = element('txtdui1');	dui1.value=xml.getElementsByTagName('dui').item(0).firstChild.data.substr(0,8);
				var dui2 = element('txtdui2');	dui2.value=xml.getElementsByTagName('dui').item(0).firstChild.data.substr(8,1);
				var isss = element('txtpatronal');	isss.value=xml.getElementsByTagName('isss').item(0).firstChild.data;
				var fecha = xml.getElementsByTagName('fecha').item(0).firstChild.data.split('-');
				var ano = element('txtano'); ano.value = fecha[0];
				var mes = element('txtmes'); mes.value = fecha[1];
				var dia = element('txtdia'); dia.value = fecha[2];
				var edad = element('txtedad');	edad.value=xml.getElementsByTagName('edad').item(0).firstChild.data;
				var direccion = element('txtdireccion'); direccion.value=xml.getElementsByTagName('direccion').item(0).firstChild.data;
				var telefono = element('txttelefono'); telefono.value=xml.getElementsByTagName('telefono').item(0).firstChild.data;
				var email = element('txtemail'); email.value=xml.getElementsByTagName('email').item(0).firstChild.data;
				select_this('cmbregion',xml.getElementsByTagName('region').item(0).firstChild.data);
				var eselect = element('cmbregion'); eselect.onchange();
				select_this('cmbdepartamento',xml.getElementsByTagName('departamento').item(0).firstChild.data);
				var eselect = element('cmbdepartamento'); eselect.onchange();
				select_this('cmbmunicipio',xml.getElementsByTagName('municipio').item(0).firstChild.data);
				var nuevo = element('imgnew'); nuevo.style.display='';
				var actualizar = element('imgupdate'); actualizar.style.display='';
				var agregar = element('imgadd'); agregar.style.display='none';
			}
		}
		ajax.open('GET', 'empleados_process.php?process=edit&empleado='+empleado, true);
		ajax.send(null);
	}
}

function update(empleado,xml){
	var ajax = doajax();
	if(ajax){
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				if(ajax.responseText=='true'){
					clean();
				}
			}
		}
		xml.getElementsByTagName('apellido1').item(0).firstChild.data = valueof('txtapellido1');
		xml.getElementsByTagName('apellido2').item(0).firstChild.data = valueof('txtapellido2');
		xml.getElementsByTagName('nombres').item(0).firstChild.data = valueof('txtnombres');
		xml.getElementsByTagName('dui').item(0).firstChild.data = valueof('txtdui1')+valueof('txtdui2');
		xml.getElementsByTagName('isss').item(0).firstChild.data = valueof('txtpatronal');
		xml.getElementsByTagName('sexo').item(0).firstChild.data = valueof('cmbsexo');
		xml.getElementsByTagName('fecha').item(0).firstChild.data = valueof('txtano')+'-'+valueof('txtmes')+'-'+valueof('txtdia');
		xml.getElementsByTagName('edad').item(0).firstChild.data = parseInt(valueof('txtedad'));
		xml.getElementsByTagName('direccion').item(0).firstChild.data = valueof('txtdireccion');
		xml.getElementsByTagName('telefono').item(0).firstChild.data = valueof('txttelefono');
		xml.getElementsByTagName('email').item(0).firstChild.data = valueof('txtemail');
		xml.getElementsByTagName('nivel').item(0).firstChild.data = parseInt(valueof('cmbnivel'));
		xml.getElementsByTagName('cargo').item(0).firstChild.data = valueof('txtcargo');
		xml.getElementsByTagName('academico').item(0).firstChild.data = parseInt(valueof('cmbacademico'));
		xml.getElementsByTagName('departamento').item(0).firstChild.data = valueof('cmbdepartamento');
		xml.getElementsByTagName('municipio').item(0).firstChild.data = parseInt(valueof('cmbmunicipio'));
		ajax.open('POST', 'empleados_process.php?empleado='+empleado+'&process=update', true);
		ajax.setRequestHeader('Content-Type', 'text/xml');
		if (navigator.appName!="Microsoft Internet Explorer"){
			var string = (new XMLSerializer()).serializeToString(xml);
			ajax.send(string);
		}else{
			ajax.send(xml);
		}
	}
}

function drop(empleado){
	ajax = doajax();
	if (ajax){
		ajax.onreadystatechange=function (){
			if(ajax.readyState==4){
				if(ajax.responseText=='true'){
					deattach(empleado);
				}
			}
		}
	}
	ajax.open('GET', 'empleados_process.php?process=drop&empleado='+empleado, true);
	ajax.send(null);
}

function load(action){
	ajax = doajax();
	var url = '../xml/empleado.xml';
	if(ajax){
		ajax.onreadystatechange=function(){
			if(ajax.readyState==4){
				switch(action){
					case 'add':
						if(validate(controles, tipos, false, null, null)){
							var xml = xmldoc(ajax);
							add(xml);
						}
					break;
					case 'update':
						if(validate(controles, tipos, false, null, null)){
							var xml = xmldoc(ajax);
							update(valueof('txtempleado'),xml);
						}
					break;
				}
			}
		}
		ajax.open("GET", url, true);
		ajax.send(null);
	}
}

function nostrings(element, event, decimal, negative){
	var key;
	var isctrl = false;
	var keychar;
	var reg;
	if(window.event){
		key = event.keyCode;
		isCtrl = window.event.ctrlKey
	}
	else if(event.which){
		key = event.which;
		isCtrl = event.ctrlKey;
	}
	if(isNaN(key)){
		return true;
	}
	keychar = String.fromCharCode(key);
	if(key == 8 || isctrl){
		return true;
	}
	reg = /\d/;
	var firstnegative = negative ? keychar == '-' && element.value.indexOf('-') == -1 : false;
	var firstdecimal = decimal ? keychar == '.' && element.value.indexOf('.') == -1 : false;
	return firstnegative || firstdecimal || reg.test(keychar);
}

