
//=====================================
// String functions
//=====================================

function StartsWith(sA,sB) {
	var s1 = sA.toLowerCase();
	var s2 = sB.toLowerCase();
	if (s1.length >= s2.length) {
		return (s1.substring(0, s2.length) == s2);
	}
	return false;
}

function CheckString(s) {
	if (s!=null && s!="null" && s!="" && s!="undefined") {
		return true;
	}
	return false;
}

function GetString(s,d) {
	if (s!=null && s!="null" && s!="" && s!="undefined") {
		return s;
	}
	return d;
}

function Right(s, i) {
	return s.substring((s.length-i), s.length);
}

function Left(s, i) {
	return s.substr(0, i);
}

function NormalizeItemName(name) {
	var newName = name.replace(/\"/gi, "");
	if (newName != name) {
		alert('Item name contained illegal character which was removed (")');
	}
	return newName;
}


// Check that a string contains only numbers
function IsNumeric(value) {
  if (value == null || value == "") {
    return false;
  }
  
	if (value.search) {
		return (value.search(/\D/) == -1);
	}
	
	return true;
}

function CapitalLetterString(s) {
	var index;
	var tmpStr;
	var tmpChar;
	var preString;
	var postString;
	var strlen;
	tmpStr = s.toLowerCase();
	strLen = tmpStr.length;
	if (strLen > 0)  {
		for (index = 0; index < strLen; index++)  {
			if (index == 0)  {
				tmpChar = tmpStr.substring(0,1).toUpperCase();
				postString = tmpStr.substring(1,strLen);
				tmpStr = tmpChar + postString;
			} else {
				tmpChar = tmpStr.substring(index, index+1);
				if (tmpChar == " " && index < (strLen-1))  {
					tmpChar = tmpStr.substring(index+1, index+2).toUpperCase();
					preString = tmpStr.substring(0, index+1);
					postString = tmpStr.substring(index+2,strLen);
					tmpStr = preString + tmpChar + postString;
				}
			}
		}
	}
	return tmpStr;
}

function FirstLetterCapital(s) {
	if (s.length > 0) {
		return Left(s, 1).toUpperCase()+s.substring(1,s.length);
	}
	return s;
}

function RemoveCurrentUrlFromHtml(sHtml) {
	var re = new RegExp('href="(http://[^"]+)"', "gi");
	var re2 = new RegExp('src="(http://[^"]+)"', "gi");
	sHtml = sHtml.replace(re, function (sMatch, sName){return "href=\"" + RemoveCurrentUrlFromHref(sName) + "\"";});
	var s = sHtml.replace(re2, function (sMatch, sName){return "src=\"" + RemoveCurrentUrlFromHref(sName) + "\"";});
	//alert(s);
	return s;
}

function RemoveCurrentUrlFromHref(sName) {
	var sLocalHost = (document.location.protocol + "//" + document.location.host).replace("\.:", ":");
	//alert(sLocalHost);
	var sDocument =  document.location.pathname;
	if (StartsWith(sName,sLocalHost)) {
		sName = sName.substr(sLocalHost.length);
	}
	if (StartsWith(sName,sDocument)) {
		sName = sName.substr(sDocument.length);
	}
	if (StartsWith(sName,"?")) {
		var nPos = sName.indexOf("#");
		if (nPos >= 0) {
			sName = sName.substr(nPos);
		} else {
			sName = "";
		}
	}
	return sName;
}

// Validate an Item name - cannot contain special characters
function ValidateItemName(name) {
	var newName = name.replace(/[\&\'\"\.\,\?\!\:\/\\]/ig, "");
	if (newName != name) {
		alert('Item name contained illegal character which was removed ( & \' " . , ? ! : / \\)');
	}
	return newName;
}

// Trim leading and trailing whitespace from string
function Trim(inputString) {
	if (typeof inputString != "string") {
		return inputString;
	}
	var retValue = inputString;
	var ch = retValue.substring(0, 1);
	while (ch == " ") {
		retValue = retValue.substring(1, retValue.length);
		ch = retValue.substring(0, 1);
	}
	ch = retValue.substring(retValue.length-1, retValue.length);
	while (ch == " ") {
		retValue = retValue.substring(0, retValue.length-1);
		ch = retValue.substring(retValue.length-1, retValue.length);
	}
	while (retValue.indexOf("  ") != -1) {
		retValue = retValue.substring(0, retValue.indexOf("  ")) + retValue.substring(retValue.indexOf("  ")+1, retValue.length);
	}
	return retValue;
}

// Get value from QueryString
function QS(name) {
	var tmp = unescape( location.search.substring(1) );
	var i   = tmp.toUpperCase().indexOf(name.toUpperCase()+"=");
	if ( i >= 0 ) {
		tmp = tmp.substring( name.length+i+1 );
		i = tmp.indexOf("&");
		return( tmp = tmp.substring( 0, (i>=0) ? i : tmp.length ));
	}
	return("");
}

// Get file name from string (remove folders)
function GetFileName(path) {
	var nPos = path.lastIndexOf("/");
	if (nPos < 0) {
	nPos = path.lastIndexOf("\\");
	}
	if (nPos >= 0) {
	return path.substring(nPos + 1, path.length);
	}
	return path;
}


//=====================================
// Date/Time string functions
//=====================================

// Format an iso date/time
function FormatIsoDate(sDatetime) {
	var sOut = "";
	var d = IsoDateToDate(sDatetime);
	if (d != null) {
		sOut = GetLongDate(d);
		if (sDatetime.indexOf("T") >= 0) {
			sOut = sOut + " " + GetShortTime(d);
		}
	}
	return sOut;
}

// Convert iso to Date object
function IsoDateToDate(sDatetime) {
	if (sDatetime != "" && (sDatetime.length == 8 || sDatetime.length == 15) && sDatetime.substring(0,4) > "1900") {
		var d = new Date(sDatetime.substr(0,4), parseInt(sDatetime.substr(4, 2),10)-1, sDatetime.substr(6, 2));
		if (sDatetime.indexOf("T") >= 0) {
			d.setHours(sDatetime.substring(9, 11), sDatetime.substring(11, 13), sDatetime.substring(13, 15));
		}
		return d;
	}
	return null;
}

// Convert iso to yyyy-mm-dd hh:mm:ss
function IsoDateToNormal(sDatetime) {
	var sOut = "";
	if (sDatetime != "" && (sDatetime.length == 8 || sDatetime.length == 15) && sDatetime.substring(0,4) > "1900") {
		sOut = sDatetime.substring(0,4) + "-" + sDatetime.substring(4, 6) + "-" + sDatetime.substring(6, 8);
		if (sDatetime.indexOf("T") >= 0) {
			sOut = sOut + " " + sDatetime.substring(9, 11) + ":" + sDatetime.substring(11, 13) + ":" + sDatetime.substring(13, 15);
		}
	}
	return sOut;
}

// Convert a vb date to "YYYYMMDD"
function GetIsoDate(dt) {
	return Right("0000" + dt.getYear(), 4) + Right("00" + dt.getMonth(), 2) + Right("00" + dt.getDay(), 2);
}

// Format a date
function GetLongDate(date) {
	var dt = new Date();
	dt.setTime(date);
	if (dt != null) {
		dt.setHours(0,0,0);
		var sDate = dt.toLocaleString();
		var nPos = sDate.indexOf(" 0");
		if (nPos >= 0) {
			return sDate.substring(0, nPos);
		}
		return sDate;
	}
	return "";
}
