// Copyright (c) DDI Solutions C.A.
// Todos los derechos reservados.
function getXMLRequester(){
	var req = false;
	// branch for native XMLHttpRequest object
	if(window.XMLHttpRequest) {
		try {
			req = new XMLHttpRequest();
		} catch(e) {
			req = false;
		}
	// branch for IE/Windows ActiveX version
	} else if(window.ActiveXObject) {
		try {
			req = new ActiveXObject("Msxml2.XMLHTTP");
		} catch(e) {
			try {
				req = new ActiveXObject("Microsoft.XMLHTTP");
			} catch(e) {
				req = false;
			}
		}
	}
	return req;
}
function xgtg(owner, theTag){ // XMLgetElementsByTagName
	return owner?owner.getElementsByTagName(theTag):owner;
}
function gxmldata(x){ //x = xmlNode
	if (x && x[0])
		if (x[0].firstChild)
			return x[0].firstChild.data;
		else 
			return x[0].firstChild;
	else 
		return null; //x;
}
function gxdata(xmlTree, tagName){
	var	a = xgtg(xmlTree, tagName);
	return gxmldata(a);
}
function execsrv(request){
	var x = getXMLRequester();
	if(x) {
		x.open('POST', 'websvc.php', false); 
		x.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
		x.send(request);
	}
	return x;
}
function execsvc(request){
	var x = execsrv(request);
	if(x) {
		var xml = x.responseXML;
		//debug ie 
		//alert(x.responseText);
		var al = xgtg(xml, "error");
		if (al.length > 0){
			var m = gxdata(xml, "message");
			alert(m);
			var l = gxdata(xml, "url");
			if (l) window.location = l;
		}
		else {
			return xml;
		}
	}
	return null;
}
function getEditBoxText(name){
	var obj = gid(name);
	return obj.value;
}
//----------------------------END----------
function ie(){
	return navigator.userAgent.toLowerCase().indexOf('compatible') + 1
} 
function ac(toWho, newChildObj){ //Append Child
	return toWho.appendChild(newChildObj);
}
function ce(element){ //createElement
	return document.createElement(element);
}
function ns(element){ //next Sibling
	return element.nextSibling;
}
function sa(toWho, attribute, value){ //Set Attribute
	toWho.setAttribute(attribute, value);
	for(i=3;i<arguments.length;i+=2){ 
		toWho.setAttribute(arguments[i], arguments[i+1]);
	}
	return toWho;
}
function ct(string){ //CreateTextNode
	return document.createTextNode(string);
}
function pn(obj){
	return obj.parentNode;	
}
function fc(obj){ //firstchildNode
	return obj.childNodes[0];
}
function ga(toWho, attribute){ //Get Attribute
	return toWho.getAttribute(attribute);
}
function gid(theID){ //getElementById
	return document.getElementById(theID);
}
function msgError(object, msg, status){
	var p = object.parentNode;
	var a = p.lastChild;
	var result = false;
	if (status){
		if (object == a)
			ac(ac(ac(p, ce('span')), sa(ce('font'), 'color', '#FF0000')),  ct(' ' + msg));
	}else if (object != a) 
		p.removeChild(a);
}
function msgIfCondicion(object, msg, condicion){
	var p = object.parentNode;
	var a = p.lastChild;
	var result = false;
	if (condicion){
		if (object != a) //eliminamos el msg viejo
			p.removeChild(a);
		result = true;
		ac(ac(p, ce('span')), ct(' ' + msg));
	}
	else if (object != a)
		p.removeChild(a);
	return result;
}
function isBlank(object, errordesc){
	return msgIfCondicion(object, errordesc, !object.value);
}
function checkNoBlank(object, errordesc){
	return !isBlank(object, errordesc);
}
var is_gecko = /gecko/i.test(navigator.userAgent);
var is_ie    = /MSIE/.test(navigator.userAgent);

function validemail(mail){
	var pos = mail.indexOf("@");
	var pos2 = mail.lastIndexOf(".");
	return ((pos == -1) || //Ahora compruebo que el e-mail tenga al menos una arroba 
		(pos == 0) || //también debe tener al menos un caracter antes y después de la arroba
		(pos == mail.length-1) ||
		(pos2 < pos+2) ||  //También debe tener un punto después de la arroba,  
		(pos2 == mail.length-1) ||
		(mail.indexOf(" ") != -1)); //por fin se debe comprobar que no contenga espacios en blanco por el medio 
}
function ValidUserName(txt){
	var result = checkNoBlank(txt, 'Debe incluir un nombre de usuario');
	if (result && txt.value != ''){
		var x = execsvc('usuario='+txt.value);
		var r = gxdata(x, 'user');
		msgError(txt, 'Nombre de usuario en uso por favor seleccione uno distinto', (r == '1'));
		var un = gid('usr');
		sa(un, 'valid', (r == '1')?'0':'1');
	}
}
function af(cmp, msg){  //alert & focus
	alert(msg);
	cmp.focus();
}
function setfocus(cp, mensaje){
	af(cp, mensaje);
	cp.select();
}
function ValidaForma(frm){
	var un = gid('usr');
	var result = false;
	if (ga(un, 'valid') != '1')
		setfocus(un, 'Por favor corrija su nombre de usuario para continuar');
	else{
		var p1 = gid('password');
		var p2 = gid('password2');
		//alert (p1.value);
		if (p1.value == '')
			setfocus(p1, 'Debe introducir una contraseña para realizar sus ordenes');
		else if (p2.value == '')
			setfocus(p2, 'Por favor confirme su contraseña');
		else if (p2.value != p1.value)
			setfocus(p2, 'Su contraseña no coincide, le agradecermos corregirla');
		else{
			var n = gid('nombre');
			if (n.value == '')
				setfocus(n, 'Bebe Introducir su nombre');
			else{
				var ap = gid('apellido');
				if (ap.value == '')
					setfocus(ap, 'Por favor coloque su apellido');
				else{
					var ci = gid('cedula');
					if (ci.value == '')
						setfocus(ci, 'Introduzca su cédula de identidad');
					else{
						var sx = gid('sexo');
						if (sx.value == 'U')
							af(sx, 'Seleccione su genero por favor');
						else{
							var e1 = gid('email');
							var e2 = gid('email2');
							if (e1.value == '' || validemail(e1.value))
								setfocus(e1, 'Por favor introduzca su email');
							else if (e2.value == '' || validemail(e2.value))
								setfocus(e2, 'Por favor confirme su email');
							else if (e1.value == e2.value)
								result = true;
							else
								setfocus(e2, 'el email escrito no coincide');
						} 
					}
				}
			}
		}
	}
	return result;
}
function vname(cmp, msg){
	if (!isBlank(cmp, msg)){
		var s = cmp.value;
		s = s.charAt(0).toUpperCase() + s.substring(1).toLowerCase();
		var i = 0;
		do {
			i = s.indexOf(" ", i+1)
			if(i > 0)
				s = s.substring(0, i+1) + s.charAt(i+1).toUpperCase() + s.substring(i+2); 
		}
		while (i > 0);
		cmp.value = s.replace(/^\s*|\s*$/g,""); //trim(s);
	}									
}

function vpwd(pwd){
	var p = gid('password');
	if (!isBlank(pwd, 'debe escribir una contraseña'))
		if (p) msgIfCondicion(pwd, 'la contraseña escrita no coincide', pwd.value != p.value);
	
}

function vnum(event, tlf){
	var k = is_ie?event.keyCode:event.which;
	if ((k < 48 && k != 0 & k != 8) || (k > 57))
		if (is_ie) 
			event.returnValue = false;
		else 
			return false; 
}

function ShowOrHideOtro(comp){
	var n = comp.name + '_other';
	var o = gid(n);
	if (comp.value.substr(0, 3) == 'Otr'){
		o.style.visibility = "visible";
		o.focus();
	} 
	else { 
		o.value = '';
		o.style.visibility = "hidden";
		var p = o.parentNode;
		var ln = p.lastChild;
		if (ln != o) //si hay un warning eliminarlo
			p.removeChild(ln);
	}
}
function addOption(cmb, val, desc) {
	var opt = ce('option'); opt.value = val;
  	ac(opt, ct(desc)); ac(cmb, opt);
}
function ComboWebSvc(name, val){
	var x = execsrv('combo='+name+'&actual='+val);
	//debug only
	//alert(x.responseText);
	var els = x.responseXML.getElementsByTagName('o');
	var l = els.length;
	var cmb = null;
	var o = 'a';
	if (name == 'zona')
		cmb = gid('calle');
	else if(name == 'calle'){
		cmb = gid('edificio');
		o = 'o';
	}
	else if(name == 'zona_res')
		cmb = gid('calle_res');
	else if(name == 'calle_res'){
		cmb = gid('edificio_res');
		o = 'o';
	}
	else if(name == 'zona_fac')
		cmb = gid('calle_fac');
	else if(name == 'calle_fac'){
		cmb = gid('edificio_fac');
		o = 'o';
	}
	while(cmb.hasChildNodes()) //eliminamos todos menos el 1ro
		cmb.removeChild(cmb.lastChild);
	//alert(cmb.hasChildNodes());
	addOption(cmb, 0, '-- Seleccione --');
	for (var i=0;i<l;i++)
		addOption(cmb, ga(els[i], 'val'), els[i].firstChild.nodeValue);
	addOption(cmb, 'Otro', 'Otr' + o);
	if (is_ie)
		cmb.outerHTML = cmb.outerHTML; //bug IE
	//alert('a');
	//var t = cmb.innerHTML;
	//alert(t);
}
function UpdateCombos(combo){
	ComboWebSvc(combo.name, combo.value);
}
function ValidMultipleCombo(id, msg){
	var result = false;
	var zo = gid(id);
	var zoo = gid(id + '_other');
	if (zo.value == 0)
		af(zo, 'Por favor elija '+msg);
	else if (zo.value.substring(0,3) == 'Otr' && zoo.value == '')
		setfocus(zoo, 'Por favor escriba '+msg);
	else
		result = true;
	return result;
}
function ValidaForma2(frm){
	var to = gid('telefono_oficina');
	var result = false;
	if (to.value == '')
		setfocus(to, 'Por favor complete su telefono de oficina');
	else{
		var ce = gid('celular');
		if (ce.value == '')
			setfocus(ce, 'Por favor coloque su número de contacto preferido');
		else{
			if (ValidMultipleCombo('zona', 'la zona o urbanización de su oficina'))
			if (ValidMultipleCombo('calle', 'la calle o avenida donde se ubica su oficina'))
			if (ValidMultipleCombo('edificio', 'edificio, casa, quinta o edificación de su oficina')){
				var pi = gid('piso');
				if (pi.value == '')
					setfocus(pi, 'Por favor coloque su piso para continuar');
				else{
					var nu = gid('numero');
					if (nu.value == '')
						setfocus(nu, 
							'Por favor coloque el número del apartamento, Local o número de la quinta');
					else result = true;
				}
			}
		}
	}
	return result;
}
function ValidFormOK(frm){
	var a = gid('acepto');
	if (!frm.acepto.checked)
		alert('debe aceptar los terminos y condiciones del sitio para continuar');
	return frm.acepto.checked;
}
function validcirif(ci){
	var n = ci.toUpperCase();
	for (var i=0; i<n.length; i++){
		var k = n.charAt(i);
		if (i == 0){
			if ('0123456789JVE'.indexOf(k) == -1)
				return false;
		}
		else if ('0123456789'.indexOf(k) == -1)
			return false;
	}
	return true;
}
function getSelectionStart(input) {
	if (is_gecko)
		return input.selectionStart;
	var range = document.selection.createRange();
	var isCollapsed = range.compareEndPoints("StartToEnd", range) == 0;
	if (!isCollapsed)
		range.collapse(true);
	var b = range.getBookmark();
	return b.charCodeAt(2) - 2;
};
function vci(event, cedula){
	var k = is_ie?event.keyCode:event.which;
	var c = cedula.value.charAt(0);
	if ((k < 48 && k != 0 && k != 8 && k != 13) || 
	(((k == 86 || k == 118 || k == 69 || k == 101 || k == 74 || k == 106) && 
	//		V		   v	       E	      e			  J			 j
	(getSelectionStart(cedula) == 0 && c != 'v' && c != 'V' && c != 'e' && c != 'E' && c != 'j' && c != 'J')) ^ k > 57))
		if (is_ie) 
			event.returnValue = false;
		else 
			return false; 
}
function nbCedula(ci){
	if(!isBlank(ci, 'Debe introducir su cédula')){
		var n = ci.value.toUpperCase();
		ci.value = ('0123456789'.indexOf(n.charAt(0)) == -1)? n:'V'+n;
	}
}
function isalfa(k){
	return (k >= 65 && k <= 90) || //A-Z
		(k >= 97 && k <= 122) || //a-z
		k == 241 || k == 209 || //ñ-Ñ 
		k == 225 || k == 193 || //á-Á 
		k == 233 || k == 201 || //é-É 
		k == 237 || k == 205 || //í-Í 
		k == 243 || k == 211 || //ó-Ó 
		k == 250 || k == 218; //ú-Ú
}

function valphanum(event, cmp){
	var k = is_ie?event.keyCode:event.which;
	if (!((k >= 48 && k <= 57) || //0-9
		isalfa(k) ||
		k == 44 || k == 46 || //. , 
		k == 8 || k == 13 || k == 9 || k == 32 || k == 0))
	{ 
			if (is_ie) 
				event.returnValue = false;
			else 
				return false; 
	}
}
function valphanumnospace(event, cmp){
	var k = is_ie?event.keyCode:event.which;
	if (!((k >= 48 && k <= 57) || //0-9
		isalfa(k) ||
		k == 8 || k == 13 || k == 9 || k == 0))
	{ 
			if (is_ie) 
				event.returnValue = false;
			else 
				return false; 
	}
}
function valpha(event, cmp){
	var k = is_ie?event.keyCode:event.which;
	if (!((k >= 65 && k <= 90) || //A-Z
		isalfa(k) ||
		k == 8 || k == 13 || k == 9 || k == 32 || k == 0))
	{ 
			if (is_ie) 
				event.returnValue = false;
			else 
				return false; 
	}
}
function valphanumdash(event, cmp){
	var ss = getSelectionStart(cmp);
	var k = is_ie?event.keyCode:event.which;
	if (!((k >= 48 && k <= 57) || //0-9
		isalfa(k) ||
		k == 8 || k == 13 || k == 9 || k == 32  || k == 0 || (k == 45 && ss > 0 && cmp.value.charAt(ss - 1) != '-')))
	{ 
			if (is_ie) 
				event.returnValue = false;
			else 
				return false; 
	}
}
function mail(s, msg){
	var result = isBlank(s, msg);
	if (!result)
		result = msgIfCondicion(s, 'Su e-mail parece inválido', validemail(s.value));
	return result;
}
function vmail(s){
	mail(s, 'Debe escribir su e-mail');
}
