//-------------------------------------------------------------------
// Trim functions
//   Returns string with whitespace trimmed
//-------------------------------------------------------------------
function LTrim(str){
	if (str==null) {return str;}
	for(var i=0;str.charAt(i)==" ";i++){i=i;}
	return str.substring(i,str.length);
}
function RTrim(str){
	if (str==null){return str;}
	for(var i=str.length-1;str.charAt(i)==" ";i--){i=i;}
	return str.substring(0,i+1);
}
function Trim(str){return LTrim(RTrim(str));}
function LTrimAll(str) {
	if (str==null){return str;}
	for (var i=0; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i++){i=i;}
	return str.substring(i,str.length);
}
function RTrimAll(str) {
	if (str==null){return str;}
	for (var i=str.length-1; str.charAt(i)==" " || str.charAt(i)=="\n" || str.charAt(i)=="\t"; i--){i=i;}
	return str.substring(0,i+1);
}
function TrimAll(str){return LTrimAll(RTrimAll(str));}

//-------------------------------------------------------------------
// isNull(st)
//   Returns true if st is null
//-------------------------------------------------------------------
function isNull(val){return(val==null);}

//-------------------------------------------------------------------
// isBlank(st)
//   Returns true if st only contains spaces
//-------------------------------------------------------------------
function isBlank(val){
	if(val==null){return true;}
	for(var i=0;i<val.length;i++) {
		if ((val.charAt(i)!=' ')&&(val.charAt(i)!="\t")&&(val.charAt(i)!="\n")&&(val.charAt(i)!="\r")) {
			return false;
		}
	}
	return true;
}

//-------------------------------------------------------------------
// isInteger(st)
//   Returns true if st contains all digits
//-------------------------------------------------------------------
function isInteger(st){
	if (isBlank(st)){return false;}
	for(var i=0;i<st.length;i++){
		if(!isDigit(st.charAt(i))){
			return false;
		}
	}
	return true;
}

//-------------------------------------------------------------------
// isNumeric(st)
//   Returns true if st contains a positive float value
//-------------------------------------------------------------------
function isNumeric(val){return(parseFloat(val,10)==(val*1));}

//-------------------------------------------------------------------
// isArray(obj)
// Returns true if the object is an array, else false
//-------------------------------------------------------------------
function isArray(obj){return(typeof(obj.length)=="undefined")?false:true;}

//-------------------------------------------------------------------
// isDigit(st)
//   Returns true if st is a 1-character digit
//-------------------------------------------------------------------
function isDigit(num) {
	if (num.length>1){
		return false;
	}
	var st="1234567890";
	if (st.indexOf(num)!=-1){
		return true;
	}
	return false;
}

//-------------------------------------------------------------------
// isPhone(st)
//   Returns true if st is a phone number
//-------------------------------------------------------------------
function isPhone(st) {
	st = Trim(st);
	if (isBlank(st)) {return false;}
	var digits = 0;
	for (i=0; i<st.length; i++) {
		var c = st.charAt(i);
		if (!isDigit(c) && (c!=" ") && (c!="-")) {
			return false;
		}
		if (isDigit(c)) {digits++;}
	}
	if (digits != 9) {return false;}
	return true;
}

//-------------------------------------------------------------------
// isPostalCode(st)
//   Returns true if st is a postal code number (5 digits)
//-------------------------------------------------------------------
function isPostalCode(st) {
	st = Trim(st);
	if (isBlank(st)) {return false;}
	if (st.length != 5) {return false;}
	if (!isInteger(st)) {return false;}
	return true;
}

//-------------------------------------------------------------------
// isEmail(st)
//   Returns true if st is a well formed email address
//-------------------------------------------------------------------
function isEmail(st) {
	var i;
	var foundAt = false;
	var foundPeriod = false;
	st = Trim(st);
	if (isBlank(st)) {return false;}
	for (i=0; i<st.length; i++) {
		var c = st.charAt(i);
		if ((c == "@") && (i > 0)) {
			foundAt = true;
			i++;
		}
		if (foundAt && (c == '.') && (i<(st.length-1))) {
			return true;
		}
	}
	return false;
}

//-------------------------------------------------------------------
// isLetter(st)
//   Returns true if ch is a letter
//-------------------------------------------------------------------
function isLetter(ch) {
	if (ch.length>1){
		return false;
	}
	var st="abcdefghijklmnñopqrstuvwxyzABCDEFGHIJKLMNÑOPQRSTUVWXYZ";
	if (st.indexOf(ch)!=-1){
		return true;
	}
	return false;
}


function decode (num, seed){
	var n = Math.round((num/seed)-seed);
	return n;
}

//-------------------------------------------------------------------
// isWord(st)
//   Returns true if st is a word only formed by letters
//-------------------------------------------------------------------
function isWord(st) {
	st = Trim(st);
	if (isBlank(st)) {return false;}
	for (var i=0; i<st.length; i++) {
		if ( !isLetter(st.charAt(i)) && !isDigit(st.charAt(i))) {
			return false;
		}
	}
	return true;
}

//-------------------------------------------------------------------
// isDniNif(st)
//   Returns true if st is a well formed DNI or NIF
//-------------------------------------------------------------------
function isDni(st) {
	st = Trim(st);
	if (isBlank(st)) {return false;}
	if (st.length == 9) {
		if ( isInteger(st.substring(0,7)) && isLetter(st.charAt(8)) ) {
			return true;
		}
	}
	return false;
}
function isNif(st) {
	st = Trim(st);
	if (isBlank(st)) {return false;}
	if (st.length == 9) {
		if ( isInteger(st.substring(1,8)) && isLetter(st.charAt(0)) ) {
			return true;
		}
	}
	return false;
}
function isDniNif(st) {return (isDni(st) || isNif(st));}


//-------------------------------------------------------------------
// isPassword(st)
//   Returns true if st has at least 6 chars
//-------------------------------------------------------------------
function isPassword(st) {
	var passLength = 6;
	st = Trim(st);
	if (isBlank(st)) {return false;}
	var l = st.length;
	if (l != passLength) {
		return false;
	}
	for (var i=0; i<l; i++) {
		if ( !isLetter(st.charAt(i)) && !isDigit(st.charAt(i))) {
			return false;
		}
	}
	return true;
}

