//---------------------------------------------------------
// Usefull javascript standar functions
// Andy Nguyen
//---------------------------------------------------------


//---------------------------------------------------------------------
// Function:   LTrim
// Parameter:  field to be trimmed
// Return:     removes begining whitespaces
//---------------------------------------------------------------------
function LTrim(value){
	var re = /\s*((\S+\s*)*)/;
	return value.replace(re, "$1");
}

//---------------------------------------------------------------------
// Function:   RTrim
// Parameter:  field to be trimmed
// Return:     removes ending whitespaces
//---------------------------------------------------------------------
function RTrim(value){
	var re = /((\s*\S+)*)\s*/;
	return value.replace(re, "$1");
}

//---------------------------------------------------------------------
// Function:   Trim
// Parameter:  field to be trimmed
// Return:     removes leading and ending whitespaces
//---------------------------------------------------------------------
function Trim(value){
	return LTrim(RTrim(value));
}

//---------------------------------------------------------------------
// Function:   isEmpty
// Parameter:  field value
// Return:     true or false
//---------------------------------------------------------------------
function isEmpty(value){
	return (Trim(value).length == 0) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isDigit
// Parameter:  field value
// Return:     true or false
//---------------------------------------------------------------------
function isDigit (str){
      return str.match(/^\d+$/) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isInt
// Parameter:  field value
// Return:     true or false
//---------------------------------------------------------------------
function isInt(str){
	return str.match(/^[\+|\-]?\d+$/) ? true : false;
}


//---------------------------------------------------------------------
// Function:   isFloat
// Parameter:  field value
// Return:     true or false
//---------------------------------------------------------------------
function isFloat(str){
	return (isInt(str) || str.match(/^[\+|\-]?\d+\.\d+$/)) ? true : false;
}

//---------------------------------------------------------------------
// Function:   compareInt
// Parameter:  x, y
// Return:     1 if x > y, 0 if x == y, or -1 if x < y
//---------------------------------------------------------------------
function compareInt(x,y){
	var status = 0;
	status = (x > y) ? 1  : status;
	status = (x < y) ? -1 : status;
	return status;
}


//---------------------------------------------------------------------
// Function:   compareDate(d1,d2)
// Parameters: d1 and d2 in format dd/mm/yyyy
// Return:	   true if d1 is less than or equal d2, false otherwise
//---------------------------------------------------------------------
function compareDate(d1,d2){
	d1 = new Date(d1.split("/")[1] + "/" + d1.split("/")[0] + "/" + d1.split("/")[2]);
	d2 = new Date(d2.split("/")[1] + "/" + d2.split("/")[0] + "/" + d2.split("/")[2]);
	return (d1 <= d2) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isLessThan
// Parameter:  x, y
// Return:     true or false
//---------------------------------------------------------------------
function isLessThan(x,y){
	return (parseInt(x) < parseInt(y)) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isLessThanOrEqual
// Parameter:  x, y
// Return:     true or false
//---------------------------------------------------------------------
function isLessThanOrEqual(x,y){
	return (parseInt(x) <= parseInt(y)) ? true : false;
}


//---------------------------------------------------------------------
// Function:   isGreaterThan
// Parameter:  x, y
// Return:     true or false
//---------------------------------------------------------------------
function isGreaterThan(x,y){
	return (parseInt(x) > parseInt(y)) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isGreaterThanOrEqual
// Parameter:  x, y
// Return:     true or false
//---------------------------------------------------------------------
function isGreaterThanOrEqual(x,y){
	return (parseInt(x) >= parseInt(y)) ? true : false;
}

//---------------------------------------------------------------------
// Function:   isEquals
// Parameter:  x, y
// Return:     true or false
//---------------------------------------------------------------------
function isEqual(x,y){
	return (parseInt(x) == parseInt(y)) ? true : false;
}

//---------------------------------------------------------------------
// AND
// true true := true
// other := false
//---------------------------------------------------------------------
function and(x,y){
	var n = (x == "") ? false : true;
	var m = (y == "") ? false : true;
	return (n && m) ? true : false;
}

//---------------------------------------------------------------------
// OR
// false false := false
// other := true
//---------------------------------------------------------------------
function or(x,y){
	var n = (x == "") ? false : true;
	var m = (y == "") ? false : true;
	return (!n && !m) ? false : true;
}


//---------------------------------------------------------------------
// XOR
// true false or false true  := true
// true true  or false false := false
//---------------------------------------------------------------------

function xor(x,y){
	var n = (x == "") ? false : true;
	var m = (y == "") ? false : true;
	return ((n && !m) || (!n && m)) ? true : false;
}

//---------------------------------------------------------------------
// NXOR
// true false or false true  := false
// true true  or false false := true
//---------------------------------------------------------------------
function nxor(x,y){
	return !(xor(x,y));
}
