// JavaScript Document

window.defaultStatus = 'Powered by WSNet';

var reDigits = /[\d+]/;
var reNoDigits = /[^\d]/gi;
var reNumbers = /[\d+.]/;

function setFocus(ctl, sel){
	var obj = document.getElementById(ctl);
	obj.focus();
	if(Boolean(sel))
		obj.select();
}

function authorize(id){
	var wnd = showModalDialog("authorize.php",id,"center:yes; dialogHeight:240px; dialogWidth:380px; status:no; resizable:no");
	return Number(wnd);
}


function suauthorize(id){
	var wnd = showModalDialog("suauthorize.php",id,"center:yes; dialogHeight:236px; dialogWidth:380px; status:no; resizable:no");
	return Number(wnd);
}


function showDiagram(ide, id, org, dst){
	org = org == undefined ? 0:org;
	dst = dst == undefined ? 0:dst;
	showModalDialog("diagrama.php?ide="+ide+"&id="+id+"&org="+org+"&dst="+dst, null, "center:yes; dialogHeight:650px; dialogWidth:720px; status:no; resizable:no");
}

function validate(form){
var y = 0;
	for(x = 0;x<form.length;x++)
		if(form.elements[x].value=="" && !form.elements[x].disabled)
			y++;
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
return true;
}

function validateAgency(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value==""){
			switch(form.elements[x].name){
			case "direccion":
			case "telefono":
			case "latitud":
			case "longitud":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	return true;
}

function validateUser(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value==""){
			switch(form.elements[x].name){
			case "password":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("You must fill the required fields !!!");
		return false;
	}
return true;
}


function validatePassengers(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value=="" && !form.elements[x].disabled){
			switch(form.elements[x].name.substr(0,5)){
			case "idPai":
			case "pais[":
			case "docum":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	return true;
}



function validateDestination(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value==""){
			switch(form.elements[x].name){
			case "info":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	return true;
}

function validateClient(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value==""){
			switch(form.elements[x].name){
			case "telefono2":
			case "email":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	return true;
}

function validatePassword(form){
	if(validate(form)){
		if(form.npass1.value != form.npass2.value){
			alert("Los valores no coinciden !!!");
		} else
			return true;
	}
	return false;
}

function validateInter(form){
	var y = 0;
	for(x = 0;x<form.length;x++){
		if(form.elements[x].value==""){
			switch(form.elements[x].name){
			case "direccion":
			case "telefono":
			break;
			default:
				y++;
			break;
			}
		}
	}
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	return true;
}

function validateProgra(form){
	var y = 0;
	for(x = 0;x<form.length;x++)
		if(form.elements[x].value=="" && !form.elements[x].disabled)
			y++;
	
	var dates = $('#dates').DatePickerGetDate(true);
	if(!dates.length)
		y++;
	
	if(y>0){
		alert("Debe llenar todos los campos requeridos !!!");
		return false;
	}
	
	// DATES
	var obj;
	for(var i = 0; i < dates.length; i++){
		obj = document.createElement('INPUT');
		$(obj).attr('type', 'hidden');
		$(obj).attr('name', 'salidas[]');
		$(obj).val(dates[i]);
		form.appendChild(obj);
	}
	
	return true;
}

function numFormat(number, def){
	var x;
	var y;
	if(def == undefined)
		def = 0;
	if(isNaN(number)||number==0)
		number = def;
	number = round(number, 2);
	number = number.toString();
	y = number.length - 1;
	for(x=0;x<number.length;x++)
		if(number.substr(x,1) == ".")
			y = x;
	switch((number.length-1) - y){
	case 1:
		number += "0";
	break;
	case 0:
		number += ".00";
	break;
	}
	return number;
}

function numFormatInt(number, def){
	var x;
	var y;
	
	if(def == undefined)
		def = 0;
	if(isNaN(number)||number==0)
		number = def;
	number = parseInt(number);
	return number;
}

function round(number,X) {
	X = (!X ? 2 : X);
	return Math.round(number*Math.pow(10,X))/Math.pow(10,X);
}

function createWindow(page, name, w, h, s, mb) {
	var winl = (screen.width-w)/2;
	var wint = (screen.height-h)/2;
	if (winl < 0) winl = 0;
	if (wint < 0) wint = 0;
	if(mb==undefined)
		mb = 'yes';
	var features =
        'width='        + w +
        ',height='      + h +
		',top='			+ wint +
		',left='		+ winl + 
		',menubar='      + mb +
        ',scrollbars='  + s +
		',resizable='   + 'no';
    window.open (page, name, features);
}

var mask = "(###) ###-#####";

function doMask(textBox, event) {	

	var keyCode = event.which ? event.which : event.keyCode;

	if(keyCode == 13 || keyCode == 8 || keyCode == 9 || keyCode == 46 || keyCode == 35 || keyCode == 36 || keyCode == 37 || keyCode == 39)
		return true;

	var keyCharacter = cleanKeyCode(keyCode);
	var val = textBox.value;

	if(reDigits.test(keyCharacter) == false)
		return false;

	val = val.replace(reNoDigits,'');			
	val += keyCharacter;
	textBox.value = val.maskValue(mask);
	setCaretAtEnd(textBox);

	return false;
}

function onFocusMask(textBox) {

	var val = textBox.value;

	if(val.length == 0 || val == null) {
		var i = mask.indexOf('#');
		textBox.value = mask.substring(0,i);
	}

	setCaretAtEnd(textBox);
	textBox.maxlength = mask.length;

}

function onBlurMask(textBox) {

	var val = textBox.value;

	if(reDigits.test(val) == false)
		textBox.value = '';

}

String.prototype.maskValue = function(mask) {

	var retVal = mask;
	var val = this;

	for(var i=0;i<val.length;i++)
		retVal = retVal.replace(/#/i, val.charAt(i));

	retVal = retVal.replace(/#/gi, "");

	return retVal;

}

function cleanKeyCode(key) {

	switch(key) {
	case 96:
		return "0";
	break;
	case 97:
		return "1";
	break;
	case 98:
		return "2";
	break;
	case 99:
		return "3";
	break;
	case 100:
		return "4";
	break;
	case 101:
		return "5";
	break;
	case 102:
		return "6";
	break;
	case 103:
		return "7";
	break;
	case 104:
		return "8";
	break;
	case 105:
		return "9";
	break;
	case 110:
	case 190:
		return ".";
	default:
		return String.fromCharCode(key);
	break;
	}
}

function setCaretAtEnd (field) {

	if (field.createTextRange) {
    	
		var r = field.createTextRange();

    	r.moveStart('character', field.value.length);
		r.collapse();
		r.select();
	}

}

// FORM FUNCTIONS

function getNewSubmitForm(url){
	var url = url || "?";
	var submitForm = document.createElement("FORM");
	submitForm.method = "POST";
	submitForm.action = url;
	document.body.appendChild(submitForm);
	return submitForm;
}

function createNewFormElement(inputForm, elementName, elementValue){
	var newElement = document.createElement("INPUT");
	newElement.setAttribute("type", "hidden");
	newElement.setAttribute("name", elementName);
	newElement.setAttribute("value", elementValue);
	inputForm.appendChild(newElement);
	newElement.value = elementValue;
	return newElement;
}

// JAVASCRIPT HELPERS

function isValidDate(s) {
	var bits = s.split('/');
	var d = new Date(bits[2] + '/' + bits[1] + '/' + bits[0]);
	return !!(d && (d.getMonth() + 1) == bits[1] && d.getDate() == Number(bits[0]));
}
