/********Explode ***************/
function explode(str, delim){
	var arr = str.split(delim);
	return (arr);
}
/*********Implode***************/
function implode(arr, delim){
	var str = "";
	for(var i = 0, length = arr.length; i < length; i++) {
		if (str == "") {
			str = arr[i] + delim;
		}
		else{
			str += arr[i] + delim;
		}
	}
	return (str);
}
/*********getDBPath ***************/
function getDBPath(){
	// returns the relative path of the current database
	// example:  /folder/currentdb.nsf
	var fullpath = window.location.pathname;
	path = fullpath.substr(0, fullpath.lastIndexOf(".nsf/") + 4);
	return (path);
}
/*********FullTrim ***************/
function fullTrim(s){
	s = s.replace(/^ [\s]+/,"").replace(/[\s]+$/, "");
	return (s);
}
/*********LeftTrim ***************/
function lTrim(s){
	s = s.replace(/^ [\s]+/,"");	
	return(s);
}
/*********RightTrim ***************/
function rTrim(s){
	s = s.replace(/[\s]+$/, "");
	return (s);
}
/************Trim Array ************/
function trimArray(a) {
	if ( typeof a == "undefined" ) a = this;
	var result;
	if (a.length == 0) {
		result = [];
	} else {
		result = new Array();
		for (var i=0; i<a.length; i++) {
			if (a[i] != null && a[i] != "") result.push(a[i]);
		}
	}
	return result;
}
/**********ReplaceSubstring***********/
function replaceSubstring(strSource, strFrom, strTo) {
	var sourceLength = strSource.length;
	var fromLength = strFrom.length;
	if ((sourceLength == 0) || (fromLength == 0)) return strSource;
	var x = strSource.indexOf(strFrom);
	if ((!x) && (strFrom != strSource.substring(0, fromLength))) return strSource;
	if (x == -1) return strSource;
	var strReturn = strSource.substring(0, x) + strTo;
	if (x + fromLength < sourceLength) {
		strReturn += replaceSubstring(strSource.substring(x + fromLength,sourceLength), strFrom, strTo);
	}
	return strReturn;
}
/*********Left ********************************/
/******* checks for length or string *******/
function left(fullstring, checkVal) 
{  
	if (fullstring != ""){
		//check if user passed string of character length
		if (isNaN(checkVal)){
			if (fullstring.indexOf(checkVal) > -1){
				return (fullstring.substring(0, fullstring.indexOf(checkVal))); 
			} else {
				return(fullstring);
			}
		} else{
			if (fullstring.length > checkVal){
				return (fullstring.substring(0, checkVal+1)); 
			} 
			else {
				return(fullstring);
			}	
		}
	}
} 
/*******************Right********************/
/******* checks for length or string *******/
function right (fullstring, checkVal){
	if (fullstring != ""){
		if (isNaN(checkVal)){
			if (fullstring.indexOf(checkVal) > -1){
				return (fullstring.substring (fullstring.indexOf (checkVal) + checkVal.length, fullstring.length))
			}
			else{
				return (fullstring)
			}
		} else{
			if (fullstring.length > checkVal){
				return (fullstring.substring (checkVal, fullstring.length))
			} 
			else{
				return (fullstring)
			}
		}
	}
}
/*********Middle ***************/
function middle(fullstring, startstring, endstring) {  
	var startposition = fullstring.indexOf(startstring);  
	var startlen = startstring.length;  
	if (startposition > -1 && startstring != "")  {   
		var temp = fullstring.substring(startposition + startlen, fullstring.length);   
		endposition = temp.indexOf(endstring) + startposition + startlen;    
		if (endposition > -1 && temp.indexOf(endstring) > -1)   {
			return (fullstring.substring (startposition + startlen, endposition));
		}   
		else   {return (fullstring.substring (startposition + startlen, fullstring.length));   
		}  
	}  
	else
	{ 
		return("");
	 } 
}
/****************LeftBack ***************/
function leftBack(str) {
	var i = this.lastIndexOf(str);
	return (i == -1) ? this : this.substring(0, i);
};
/*****************RightBack ***************/
function rightBack(str) {  
	var i = this.lastIndexOf(str);
	return (i == -1) ? this : this.substring(i + str.length, this.length);
};
/*****************Word***************/
function Word(fullstring, sep, index){
	if (sep == "undefined" || sep == ""){
		sep = " ";
	}
	if (index == "undefined" || index == "0"){
		index = 1;
	}
	var tmparray = new Array();
	tmparray = fullstring.split(sep);
	if (parseInt(index, 10) <= tmparray.length){
		return (tmparray[parseInt(index, 10) -1]);
	}
	else {
		return ("");
	}
}
/********Repeat***********/
function Repeat (repeatstring, repeatnum, returnnum){
	var newstring = "";
	returnnum += "";
	if (returnnum == "undefined" || returnnum == "0") 	{
		returnnum = ""
	}
	for (var x = 1; x <= parseInt(repeatnum, 10); x++)	{
		newstring = newstring + repeatstring;
	}
	if (returnnum == "")	{
		return (newstring);
	} else {
		return (newstring.substring (0, parseInt(returnnum, 10)));
	}
}
/************ProperCase************/
function properCase(f, delim){
        var sList = f.value.split(delim);
        var s= new Array();
        for (var x=0; x < sList.length; x++){
                s[x] = sList[x].charAt(0).toUpperCase() + sList[x].substring(1).toLowerCase();
        }
        f.value = s.toString().replace(/,/g,delim);
} 
/**********LowerCase********/
function lowerCase(s){
	return (s.toLowerCase());
}
/**********UpperCase***********/
function upperCase(s){
	return (s.toUpperCase());
}
/*******Contains *************/
function contains (fullstring, substring) { 	
	var regEx = "/" + substring + "/i";
	if (fullstring.match(regEx)){
		return true;
	}else{
		return false;
	}
}
/*************IsMember***********/
function isMember(pFind, pIgnoreCase) {
	return this.IndexOf(pFind, pIgnoreCase) > -1;
};

