﻿/*************************************************************
Functions available throughout the site
*************************************************************/

function isEmpty(string) {
	return ((string==null) || (string.length==0));
}

function isValidEmail(str) {
    var at="@";
    var dot=".";
    var lat=str.indexOf(at);
    var lstr=str.length;
    var ldot=str.indexOf(dot);
    
    if (str.indexOf(at)==-1) {
        return false;
    }

    if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr) {
        return false;
    }

    if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr) {
        return false;
    }

    if (str.indexOf(at,(lat+1))!=-1) {
        return false;
    }

    if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot) {
        return false;
    }

    if (str.indexOf(dot,(lat+2))==-1) {
        return false;
    }
		
    if (str.indexOf(" ")!=-1) {
        return false;
    }

    return true;
}


/******************************************************
    StringBuilder object
******************************************************/
function StringBuilder() {
    this._parts = [];
}

StringBuilder.prototype = {
    append : function(str) {
        this._parts.push(str);
    },
    appendLine : function(str) {
        this.append(str);
        this.append("\r\n");
    },
    toString : function(separator) {
        return this._parts.join(separator || " ");
    }
};

/****************************************************
    Object extensions
****************************************************/
//already exists in FireFox
if(!Array.prototype.map) {
    Array.prototype.map = function(fInst, thisObject) {
        for(var i=0;i<this.length;i++) {
            //call the function within the context of thisObject
            fInst.call(thisObject, this[i], i, this);
        }
    }
}