/* Echo  || print_r
-------------------------------------*/
function echo(val)
{
	alert(val);
}

function print_r( array, return_val ) 
{
	var output = "", pad_char = " ", pad_val = 4;
	
	var formatArray = function (obj, cur_depth, pad_val, pad_char) {
	    if(cur_depth > 0)
	        cur_depth++;
	
	    var base_pad = repeat_char(pad_val*cur_depth, pad_char);
	    var thick_pad = repeat_char(pad_val*(cur_depth+1), pad_char);
	    var str = "";
	
	    if(obj instanceof Array) {
	        str += "Array\n" + base_pad + "(\n";
	        for(var key in obj) {
	            if(obj[key] instanceof Array) {
	                str += thick_pad + "["+key+"] => "+formatArray(obj[key], cur_depth+1, pad_val, pad_char);
	            } else {
	                str += thick_pad + "["+key+"] => " + obj[key] + "\n";
	            }
	        }
	        str += base_pad + ")\n";
	    } else {
	        str = obj.toString(); // They didn't pass in an array.... why? -- Do the best we can to output this object.
	    };
	
	    return str;
	};
	
	var repeat_char = function (len, char) {
	    var str = "";
	    for(var i=0; i < len; i++) { str += char; };
	    return str;
	};
	
	output = formatArray(array, 0, pad_val, pad_char);
	
	if(return_val !== true) {
	    document.write("<pre>" + output + "</pre>");
	    return true;
	} else {
	    return output;
	}
}

/* Trim's 
-------------------------------------*/
function ltrim ( str, charlist ) 
{
	charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	var re = new RegExp('^[' + charlist + ']+', 'g');
	return str.replace(re, '');
}



function rtrim ( str, charlist ) 
{
	charlist = !charlist ? ' \s\xA0' : charlist.replace(/([\[\]\(\)\.\?\/\*\{\}\+\$\^\:])/g, '\$1');
	var re = new RegExp('[' + charlist + ']+$', 'g');
	return str.replace(re, '');
}


/* Is numeric || is_int
-------------------------------------*/
function is_numeric( mixed_var ) 
{
    return !isNaN( mixed_var );
}

function is_int( mixed_var ) 
{
    return !isNaN( mixed_var );
}


/* In array || is_array
-------------------------------------*/
function is_array( mixed_var ) 
{
	return ( mixed_var instanceof Array );
}

function in_array(needle, haystack, strict) 
{
	var found = false, key, strict = !!strict;
	
	for (key in haystack) 
	{
		if ((strict && haystack[key] === needle) || (!strict && haystack[key] == needle)) 
		{
			found = true;
	        	break;
	    	}
	}
	
	return found;
}


/* Is email?
-------------------------------------*/
function isEmail(emailAddress) 
{
	var pattern = new RegExp(/^(("[\w-\s]+")|([\w-]+(?:\.[\w-]+)*)|("[\w-\s]+")([\w-]+(?:\.[\w-]+)*))(@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$)|(@\[?((25[0-5]\.|2[0-4][0-9]\.|1[0-9]{2}\.|[0-9]{1,2}\.))((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\.){2}(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[0-9]{1,2})\]?$)/i);
	return pattern.test(emailAddress);
}
















