function KeyCheck(myfield,e) {
 var keycode;
 if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
   else return true;
 if (((keycode>47) && (keycode<58) )  || (keycode==8) || (keycode==46)) { return true; }
  else return false;
}

function DateCheck(as,e) {
   var isIE = document.all?true:false;
   var isNS = document.layers?true:false;
   var key = (isIE) ? window.event.keyCode : e.which;
   var obj = (isIE) ? event.srcElement : e.target;
   var isNum = ((key > 47 && key < 58) || key == 47) ? true:false;
   if(key < 32) return true;
   return (isNum);
}



function FormCheck(myfield,e,form){
	 var keycode;
 if (window.event) keycode = window.event.keyCode;
  else if (e) keycode = e.which;
   else return true;
 if (((keycode>47) && (keycode<58) )  || (keycode==8) || (keycode==46) || (keycode==13)) {

	 if(keycode==13){
		if (form.b_fecha_entrada.value != '' && form.b_num_noches.value != '')
		{
			form.submit();
		}
	 }
	 else{
		return true;
	 }


	 }
  else return false;
}

function strtr(str, from, to)
{

	if ((typeof(from)=="object") && (from.length))
	{
		for (k in from)
		{
			str = str.replace(RegExp(from[k][0], "g"), from[k][1])
		}
		return str;
	}
	else
	{
		from2 = new Array();
		for(k = 0; k < from.length; k++)
			from2[k] = [from.substr(k,1), to.substr(k,1)]
		return strtr(str, from2)
	}
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}

String.prototype.isAlpha = function()
{
	return /^[a-zA-Z]+$/.test(this);
}

String.prototype.isAlphaNum = function()
{
	return !/\W/.test(this);
}

String.prototype.isFloat = function()
{
	return /^[-+]?[0-9]*\.?[0-9]+([eE][-+]?[0-9]+)?$/.test(this);
}

String.prototype.isEmail = function()
{
	return /[a-z0-9!#$%&'*+/=?^_`{|}~-]+(?:\.[a-z0-9!#$%&'*+/=?^_`{|}~-]+)*@(?:[a-z0-9](?:[a-z0-9-]*[a-z0-9])?\.)+[a-z0-9](?:[a-z0-9-]*[a-z0-9])?/.test(this);
}

String.prototype.isDate = function()
{
	return /^\d{1,2}\/\d{1,2}\/\d{4}$/.test(this);
	// En Mysql dará error s envías 2009-05-1 ó 2009-5-08
	//return /^\d{2}\/\d{2}\/\d{4}$/.test(this);
}

String.prototype.isDateTime = function()
{
	//	Comprueba una fecha con hora opcional y segundos opcionales
	return /^(\d{1,2}\/\d{1,2}\/\d{4})?\s?(\d{2}:\d{2}(:\d{2})?)?$/.test(this);
}

String.prototype.isTime = function()
{
	return /^\d{1,2}:\d{2}$/.test(this);
}

String.prototype.isUrl = function()
{
	return /^(http|https|ftp):\/\/(([A-Z0-9][A-Z0-9_-]*)(\.[A-Z0-9][A-Z0-9_-]*)+)(:(\d+))?\/?/i.test(this);
}

String.prototype.isNumeric = function()
{
	return (!isNaN(this) && !/^\s+$/.test(this));
}

String.prototype.isCreditCard = function(cardType)
{
	var cardNumber = this.replace(/[^\d]/g, "");
	var isValid = false;

	switch (cardType)
	{
		case "mastercard" :

			isValid = /^5[1-5][0-9]{14}$/.test(cardNumber);
			break;

		case "visa" :

			isValid = /^4[0-9]{12}(?:[0-9]{3})?$/.test(cardNumber);
			break;

		case "amex" :

			isValid = /^3[47][0-9]{13}$/.test(cardNumber);
			break;

		case "diners" :

			isValid = /^3(?:0[0-5]|[68][0-9])[0-9]{11}$/.test(cardNumber);
			break;

		case "discover" :

			isValid = /^6(?:011|5[0-9]{2})[0-9]{12}$/.test(cardNumber);
			break;

		case "jcb" :

			isValid = /^(?:2131|1800|35\d{3})\d{11}$/.test(cardNumber);
			break;
	}

	if (isValid)
	{
		var numberProduct;
		var numberProductDigitIndex;
		var checkSumTotal = 0;

		for (var digitCounter = cardNumber.length - 1; digitCounter >= 0; digitCounter--)
		{
			checkSumTotal += parseInt(cardNumber.charAt(digitCounter));
			digitCounter--;
			numberProduct = String((cardNumber.charAt(digitCounter) * 2));

			for (var productDigitCounter = 0; productDigitCounter < numberProduct.length; productDigitCounter++)
			{
				checkSumTotal += parseInt(numberProduct.charAt(productDigitCounter));
			}
		}

		isValid = (checkSumTotal % 10 == 0);
	}

	return isValid;
}

String.prototype.toDate = function()
{
	if(!this.isDate())
	{
		return null;
	}

	var date_s = this.split("/");
	var new_date = [date_s[1],date_s[0],date_s[2]];

	// Formato mm/dd/yyyy
	var dDate = new Date(new_date.join("/"));

	return dDate;

};

String.prototype.checkDate = function()
{
	if(!this.isDate()) return false;

	// Comprobar si es una fecha del calendario válida, convirtiendo y comprobano a la inversa
	var date = new Date([this.split("/")[1],this.split("/")[0],this.split("/")[2]].join('/'));

	return date.getDate() == this.split("/")[0];
};

String.prototype.toDateTime = function()
{
	if(!this.isDateTime())
	{
		return null;
	}

	var newdate = /(?:(\d{1,2})\/(\d{1,2})\/(\d{4}))?\s?(?:(\d{2}):(\d{2})(?::(\d{2}))?)?/.exec(this);

	for(var i=1; i < newdate.length; i++)
	{
		if (typeof newdate[i] != "string")
		{
			newdate[i] = "0";
		}
	}

	var returndate = new Date(newdate[3], newdate[2], newdate[1], newdate[4], newdate[5], newdate[6]);

	return returndate;
};

String.prototype.getDaysBetween = function(d)
{
	if(!d.isDate() || !this.isDate())
	{
		return;
	}

	var date2 = d.toDate();
	var date1 = this.toDate();

	return date1.getDaysBetween(date2);

};

Date.prototype.copy = function ()
{
	return new Date(this.getTime());
};

Date.prototype.getDaysBetween = function(d)
{
	var msPERDAY = 1000 * 60 * 60 * 24;
    var tmp = d.copy();
	tmp.setUTCHours(this.getUTCHours(), this.getUTCMinutes(), this.getUTCSeconds(), this.getUTCMilliseconds());

	var time = tmp.getTime() - this.getTime();
	return time/msPERDAY;
};

Date.prototype.addDays = function(d)
{
    this.setDate(this.getDate() + parseInt(d,10));
	return this;
};


Date.prototype.toStrDate = function()
{
	var day = parseInt(this.getDate(), 10);
	var month = parseInt(this.getMonth(), 10)+1;

    return (day < 10 ? "0"+day : day) + "/" + (month < 10 ? "0"+month : month) + "/" + this.getFullYear();
};
