/****** TRIM 
    *****************************************/

String.prototype.trim = function() {   
	// skip leading and trailing whitespace  
	// and return everything in between   
	var x=this;   
	x=x.replace(/^\s*(.*)/, "$1");   
	x=x.replace(/(.*?)\s*$/, "$1");   
	return x; 
}

/*******
	Finds the id in the document; 
	easy replacement for document.getElementById()
	***********************************************/

function $()
{
    var elements = new Array();
    for (var i = 0; i < arguments.length; i++) {
        var element = arguments[i];
        if (typeof element == 'string') {
            if (document.getElementById) {
                element = document.getElementById(element);
            }
            else if (document.all) {
                element = document.all[element];
            }
        }
        if (arguments.length == 1) {
            return element;
        }
        elements.push(element);
    }
    return elements;
}

function stripFirstChar(data) {
    var newData = '';

    for(i = 0; i < data.length; i++) {
        if(i > 0) {
            newData = newData + data[i];
        }
    }
    return newData;
}

function stripLastChar(data) {
    var newData = '';

    for(i = 0; i < (data.length * 1)-1 ; i++) {
        newData = newData + data[i];
    }
    return newData;
}

function stripChars(data, amt, start) {
    var newData = '';
    var endPos = ((start * 1) + (amt * 1)) * 1 - 1 ;

    for(i = 0; i < data.length; i++) {
        if(i < start || i > endPos) {
            newData = newData + data.charAt(i);
        }
    }
//alert("New: "+newData);
    return newData;
}

function isAlien(a) {
   return isObject(a) && typeof a.constructor != 'function';
}
function isArray(a) {
    return isObject(a) && a.constructor == Array;
}
function isBoolean(a) {
    return typeof a == 'boolean';
}
function isEmpty(o) {
    var i, v;
    if (isObject(o)) {
        for (i in o) {
            v = o[i];
            if (isUndefined(v) && isFunction(v)) {
                return false;
            }
        }
    }
    return true;
}
function isFunction(a) {
    return typeof a == 'function';
}
function isNull(a) {
    return typeof a == 'object' && !a;
}
function isNumber(a) {
    return typeof a == 'number' && isFinite(a);
}
function isObject(a) {
    return (a && typeof a == 'object') || isFunction(a);
}
function isString(a) {
    return typeof a == 'string';
}
function isUndefined(a) {
    return typeof a == 'undefined';
} 

/***********
    ARRAY UTILS
    *****************/
    
function setFieldOnArray(tmpArray, tmpField) {
    tmpArray[getNextArrayLocation(tmpArray)] = tmpField.name;
}
function showRequiredFields(tmpArray) {
    if(isArray(tmpArray) && tmpArray.length > 0) {
        var fieldNames = '\n';
        for(var i = 0; i < tmpArray.length; i++) {
           fieldNames = fieldNames + tmpArray[i] + "\n";
        }
        alert("Required Fields: "+fieldNames);
    }
}
function getNextArrayLocation(tmpArray) {

    if(isArray(tmpArray)) {
        if(tmpArray.length == 0) {
            return 0;
        }
        return (tmpArray.length * 1);
    }
}    

/******
    Find Coordinates
    *****************/
function getPageOffsetLeft(el) {

    var x;
    // Return the x coordinate of an element relative to the page.
    x = el.offsetLeft;
    if (el.offsetParent != null) {
        x += getPageOffsetLeft(el.offsetParent);
    }
    return x;
}

function getPageOffsetTop(el) {

        var y;
        // Return the x coordinate of an element relative to the page.
        y = el.offsetTop;
        if (el.offsetParent != null) {
                y += getPageOffsetTop(el.offsetParent);
        }
        return y;
}

