/*************************************************************************
	
Name:	compare.js
Desc:	performs variable comparisons
		is_number, is_boolean, etc

*************************************************************************/

function isset(value) {
    return (!(is_undefined(value) || is_null(value)));
}


function is_undefined(value) {
	return (typeof(value)=='undefined');	//value is empty
}
function is_empty(value) {
	return (value == null);	//value is empty
}
function is_null(value) {
	return (value === null); //value is NULL
}

//returns true if boolean
function is_boolean(value) {
	return ((value === true) || (value === false));
}

//returns true if value is number (ie: 1 is number, "1" is string
function is_number(value) {
	return ((Number(value)+0) === value);
	//return !isNaN(value);
}

//returns true if value is numeric (can be numeric string)
function is_numeric(value) {
	return !isNaN(value);
}

//returns true if array
function is_array(value) {
	return (value instanceof Array);
}

//returns true if value is object
function is_object(value){
	if (value instanceof Array) {
		return false;
	} else {
		if (value !== null) {
			return (typeof(value) == 'object');
		}
		return false;
	}
}

//returns true if value is function
function is_function(value){
	if (value !== null) {
		return (typeof(value) == 'function');
	}
	return false;
}

function is_string(value) {
	return (typeof(value) == 'string');
}

//return true if query
function is_query(value) {
	return (trim(value).substr(0, 6).toUpperCase() == 'SELECT');
}


//returns first non-null value
function coalesce(v1, v2, v3, v4, v5) {
	return (v1 || v2 || v3 || v4 || v5);
	/*
	if (v1 != null) {
		return v1;
	} else if (v2 != null) {
		return v2;
	} else if (v3 != null) {
		return v3;
	}
	return null;
	/**/
}









//returns number of children in object - much like Array().length
function objectLength(obj) {
	var len = 0;
	for (var i in obj) {
		len++;
	}
	return len;
}

function trim(value) {
	return String(value).replace(/^\s\s*/, '').replace(/\s\s*$/, '');
}