//Contains the global javascript functions for AccountCentral

String.prototype.trim = function() 
{ 
    return this.replace(/(?:(?:^|\n)\s+|\s+(?:$|\n))/g,"");
}

//this is the default form onsubmit function. overridden on pages
function checkValues()
{
    return true;
}

function doQuickSearchBSNCallBack(theSearchBox, searchID, searchValue)
{
    if (searchID.indexOf("MESSAGE") == 0)
    {
        window.location = "message.aspx?messageGUID=" + escape(searchID.replace("MESSAGE", ""));    
    }
    else if (searchID.indexOf("CATEGORY") == 0)
    {
        window.location = "category.aspx?categoryGUID=" + escape(searchID.replace("CATEGORY", ""));    
    }
    else if (searchID.indexOf("MEDIA") == 0)
    {
        window.location = "media.aspx?mediaGUID=" + escape(searchID.replace("MEDIA", ""));    
    }
    else
    {
        doQuickSearch();
    }
}

function doQuickSearch()
{
	var searchWords = document.getElementById("searchWords").value;
	if(searchWords != "")
	{
		window.location = "search.aspx?posting=TRUE&actionType=SEARCH&searchWords=" + escape(searchWords);
	}
}
function checkQuickSearch(myevent)
{
		//if they hit the enter key
		if (myevent.keyCode == 13)
		{
			myevent.cancelBubble = true;
			myevent.returnValue = false;
			doQuickSearch();
			myevent.keyCode = 8;
		
			return false;
		}
		else
		{
			return true;
		}
	
	return false;
}

 
function doUserErrorMessage(errorType, errorCode, errorMessage)
{
    var tmpFinalMessage = "";
    try
    {
        tmpFinalMessage=hashUserErrorMessage[errorType+":"+errorCode];
    }catch(e){}
    if ((tmpFinalMessage != "") && (tmpFinalMessage != undefined))
    {
        alert(tmpFinalMessage);
    }
    else if (errorMessage != "")
    {
        alert(errorMessage);
    }
    else
    {
        alert(errorType + ":" + errorCode);   
    }
}

function doUserStatusMessage(statusType, statusCode, statusMessage)
{
    var tmpFinalMessage = "";
    try
    {
        tmpFinalMessage=hashUserStatusMessage[statusType+":"+statusCode];
    }catch(e){}
    if ((tmpFinalMessage != "") && (tmpFinalMessage != undefined))
    {
        alert(tmpFinalMessage);
    }
    else if (statusMessage != "")
    {
        alert(statusMessage);
    }
    else
    {
        alert(errorType + ":" + errorCode);   
    }
}


function removeBadNumbers(inNumber)
{
	tmpNumber = "";

	for(i=0;i<inNumber.length;i++)
	{
		tmpStr = inNumber.substring(i, i+1)
		if(tmpStr == "-" || isNaN(tmpStr) || tmpStr == " ")
		{

		}
		else
		{
			tmpNumber = tmpNumber + inNumber.substring(i, i+1);
		}
	}
	
	return tmpNumber;
}


function newWindow(page, xVal, yVal)
{
    var newWindow=window.open(page,'theWin','top=100,left=100,toolbar=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,copyhistory=0,width='+xVal+',height='+yVal);
    newWindow.focus();
}

function getTextBlockPopup(textType, textName)
{
	new Window('textBlock.aspx?textType=' + escape(textType) + '&textName=' + escape(textName), 680, 480);
}

function isDate(DateToCheck)
{
	if(DateToCheck==""){return true;}
	var m_strDate = FormatDate(DateToCheck);
	if(m_strDate=="")
	{
		return false;
	}
	var m_arrDate = m_strDate.split("/");
	var m_DAY = m_arrDate[0];
	var m_MONTH = m_arrDate[1];
	var m_YEAR = m_arrDate[2];
	if(m_YEAR.length > 4){return false;}
	
	m_strDate = m_MONTH + "/" + m_DAY + "/" + m_YEAR;
	var testDate=new Date(m_strDate);

	if(testDate.getMonth()+1==m_MONTH)
	{
		return true;
	} 
	else
	{
		return false;
	}
}//end function



function FormatDate(DateToFormat,FormatAs){
if(DateToFormat==""){return"";}
if(!FormatAs){FormatAs="dd/mm/yyyy";}

var strReturnDate;
FormatAs = FormatAs.toLowerCase();
DateToFormat = DateToFormat.toLowerCase();
var arrDate
var arrMonths = new Array("January","February","March","April","May","June","July","August","September","October","November","December");
var strMONTH;
var Separator;

while(DateToFormat.indexOf("st")>-1){
DateToFormat = DateToFormat.replace("st","");
}

while(DateToFormat.indexOf("nd")>-1){
DateToFormat = DateToFormat.replace("nd","");
}

while(DateToFormat.indexOf("rd")>-1){
DateToFormat = DateToFormat.replace("rd","");
}

while(DateToFormat.indexOf("th")>-1){
DateToFormat = DateToFormat.replace("th","");
}

if(DateToFormat.indexOf(".")>-1){
Separator = ".";
}

if(DateToFormat.indexOf("-")>-1){
Separator = "-";
}


if(DateToFormat.indexOf("/")>-1){
Separator = "/";
}

if(DateToFormat.indexOf(" ")>-1){
Separator = " ";
}

arrDate = DateToFormat.split(Separator);
DateToFormat = "";
	for(var iSD = 0;iSD < arrDate.length;iSD++){
		if(arrDate[iSD]!=""){
		DateToFormat += arrDate[iSD] + Separator;
		}
	}
DateToFormat = DateToFormat.substring(0,DateToFormat.length-1);
arrDate = DateToFormat.split(Separator);

if(arrDate.length < 3){
return "";
}

var DAY = arrDate[0];
var MONTH = arrDate[1];
var YEAR = arrDate[2];




if(parseFloat(arrDate[1]) > 12){
DAY = arrDate[1];
MONTH = arrDate[0];
}

if(parseFloat(DAY) && DAY.toString().length==4){
YEAR = arrDate[0];
DAY = arrDate[2];
MONTH = arrDate[1];
}


for(var iSD = 0;iSD < arrMonths.length;iSD++){
var ShortMonth = arrMonths[iSD].substring(0,3).toLowerCase();
var MonthPosition = DateToFormat.indexOf(ShortMonth);
	if(MonthPosition > -1){
	MONTH = iSD + 1;
		if(MonthPosition == 0){
		DAY = arrDate[1];
		YEAR = arrDate[2];
		}
	break;
	}
}

var strTemp = YEAR.toString();
if(strTemp.length==2){

	if(parseFloat(YEAR)>40){
	YEAR = "19" + YEAR;
	}
	else{
	YEAR = "20" + YEAR;
	}

}


	if(parseInt(MONTH)< 10 && MONTH.toString().length < 2){
	MONTH = "0" + MONTH;
	}
	if(parseInt(DAY)< 10 && DAY.toString().length < 2){
	DAY = "0" + DAY;
	}
	switch (FormatAs){
	case "dd/mm/yyyy":
	return DAY + "/" + MONTH + "/" + YEAR;
	case "mm/dd/yyyy":
	return MONTH + "/" + DAY + "/" + YEAR;
	case "dd/mmm/yyyy":
	return DAY + " " + arrMonths[MONTH -1].substring(0,3) + " " + YEAR;
	case "mmm/dd/yyyy":
	return arrMonths[MONTH -1].substring(0,3) + " " + DAY + " " + YEAR;
	case "dd/mmmm/yyyy":
	return DAY + " " + arrMonths[MONTH -1] + " " + YEAR;	
	case "mmmm/dd/yyyy":
	return arrMonths[MONTH -1] + " " + DAY + " " + YEAR;
	}

return DAY + "/" + strMONTH + "/" + YEAR;;

} //End Function



function isValidZipCode(value) {
   var re = /^\d+([\-]\d+)?$/;

   return true;
   //return (re.test(value));
}

function isValidUsZipCode(value) {
   var re = /^\d{5}([\-]\d{4})?$/;
   return (re.test(value));
}

function createCookie(name,value,days)
{
	if (days)
	{
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/";
}

function deleteCookie(name)
{
	createCookie(name,"",-1);
}


function readCookie(name)
{
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i<ca.length;i++)
	{
		var c = ca[i];
		while (c.charAt(0)==' ')
		{
			c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0)
			{
				return c.substring(nameEQ.length,c.length);
			}
		}
	}
	return '';
}

function formatCurrency(num) {

	num = num.toString().replace(/\$|\,/g,'');
	if(isNaN(num))
	num = "0";
	sign = (num == (num = Math.abs(num)));
	num = Math.floor(num*100+0.50000000001);
	cents = num%100;
	num = Math.floor(num/100).toString();
	if(cents<10)
	cents = "0" + cents;
	for (var i = 0; i < Math.floor((num.length-(1+i))/3); i++)
		num = num.substring(0,num.length-(4*i+3))+','+
		num.substring(num.length-(4*i+3));
	return (((sign)?'':'-') + '$' + num + '.' + cents);
	
}

function getAjaxObject()
{
	var returnValue = false;
	try 
	{
		returnValue = new XMLHttpRequest();
	}
	catch (trymicrosoft) 
	{
		try 
		{
			returnValue = new ActiveXObject("Msxml2.XMLHTTP");
		}
		catch (othermicrosoft)
		{
			try 
			{
				returnValue = new ActiveXObject("Microsoft.XMLHTTP");
			} 
			catch (failed) 
			{
				alert(failed.message);
				returnValue = false;
			}
		}
	}
	return returnValue;
}

function getXMLDataSetTableCount(dsName, xmlString)
{
	var returnValue = -1;
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{
		fieldStartIndex = xmlString.toLowerCase().indexOf("<totalTables>".toLowerCase(), datasetStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + "<totalTables>".toLowerCase().length;
			fieldEndIndex = xmlString.toLowerCase().indexOf("</totalTables>".toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = parseInt(xmlString.substring(fieldStartIndex, fieldEndIndex));
			}
		}
	}

	return returnValue;
}

function getXMLDataTableRowCount(dsName, dtIndex, xmlString)
{
	var returnValue = -1;
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{//<t0TotalRows>1</t0TotalRows>
		fieldStartIndex = xmlString.toLowerCase().indexOf(("<t" + dtIndex + "TotalRows>").toLowerCase(), datasetStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + ("<t" + dtIndex + "TotalRows>").toLowerCase().length;
			fieldEndIndex = xmlString.toLowerCase().indexOf(("</t" + dtIndex + "TotalRows>").toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = parseInt(xmlString.substring(fieldStartIndex, fieldEndIndex));
			}
		}
	}

	return returnValue;
}

function getXMLDataFieldValue(dsName, dtIndex, rowIndex, fieldName, xmlString)
{
	var returnValue = "";
	var datasetStartIndex = xmlString.toLowerCase().indexOf("<" + dsName.toLowerCase() + ">");
	var datasetEndIndex = xmlString.toLowerCase().indexOf("</" + dsName.toLowerCase() + ">");
	var fieldStartIndex = -1;
	var fieldEndIndex = -1;
	//alert("dsStart: " + datasetStartIndex);
	//alert("dsEnd: " + datasetEndIndex);
	if ((datasetStartIndex > -1) && (datasetEndIndex > -1))
	{
		fieldStartIndex = xmlString.toLowerCase().indexOf(("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase(), datasetStartIndex);
		//alert(("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase());
		//alert("fsi:" + fieldStartIndex);
		if ((fieldStartIndex > -1) && (fieldStartIndex < datasetEndIndex))
		{
			fieldStartIndex = fieldStartIndex + ("<t" + dtIndex + "r" + rowIndex + fieldName+">").toLowerCase().length;
			//alert("fsi (adjusted):" + fieldStartIndex);
			fieldEndIndex = xmlString.toLowerCase().indexOf(("</t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase(), fieldStartIndex);
			if ((fieldEndIndex > -1) && (fieldEndIndex < datasetEndIndex))
			{
				returnValue = xmlString.substring(fieldStartIndex, fieldEndIndex);
			}
		}
	}

	return returnValue;
}

function DataSet(indsName, inxmlString) {
    this.xmlString = inxmlString;
    this.dsName = indsName;
    this.Tables = new Array();

    var inxmlStringLC = inxmlString.toLowerCase();
    var indsNameLC = indsName.toLowerCase();
    try {
        var datasetStartIndex = inxmlStringLC.indexOf("<" + indsNameLC + ">");
        var datasetEndIndex = inxmlStringLC.indexOf("</" + indsNameLC + ">") + ("</" + indsNameLC + ">").length;
        this.xmlString = inxmlString.substring(datasetStartIndex, datasetEndIndex);
        alert("debug Setting XML DataSet: " + indsName + ";" + xmlString);
    }
    catch (e) {
    }

    var tableCount = getXMLDataSetTableCount(this.dsName, this.xmlString);
    for (var i = 0; i < tableCount; i++) {
        Tables[i] = new DataTable(this.dsName, i, this.xmlString);
    }
}

function DataTable(indsName, indtIndex, inxmlString) {
    this.xmlString = inxmlString;
    this.Rows = new Array();
    this.Columns = new Array();
    var rowCount = getXMLDataTableRowCount(indsName, indtIndex, inxmlString);
    var inxmlStringLC = inxmlString.toLowerCase();

    try {
        var datatableStartIndex = inxmlStringLC.indexOf("<t" + indtIndex + "r");
        var datatableEndIndex = inxmlStringLC.indexOf(">", inxmlStringLC.lastIndexOf("</t" + indtIndex + "r"));
        this.xmlString = inxmlString.substring(datatableStartIndex, datatableEndIndex);
        alert("debug Setting XML DataTable: " + indtIndex + ";" + this.xmlString);
    }
    catch (e) {
    }
    try {
        var firstRowStartIndex = xmlString.indexOf("<t" + indtIndex + "r0");
        var firstRowEndIndex = xmlString.indexOf(">", xmlString.lastIndexOf("</t" + indtIndex + "r0"));
        alert("debug: frsi:" + firstRowStartIndex + ";frei:" + firstRowEndIndex);
        var columnCounter = 0;
        var currentStartIndex = 0; 
        var currentEndIndex = 0;
        while (currentStartIndex < firstRowEndIndex) {
            currentStartIndex = xmlString.indexOf("<t" + indtIndex + "r0", currentStartIndex) + ("<t" + indtIndex + "r0").length;
            currentEndIndex = xmlString.indexOf(">", currentStartIndex);
            Columns[columnCounter] = xmlString.substring(currentStartIndex, currentEndIndex);
            alert("debug: addingColumn: " + Columns[columnCounter]);
            currentStartIndex = currentEndIndex;
            columnCounter++;                                                
        }
    } catch (e) { }        
    
    for (var i = 0; i < rowCount; i++) {
        Rows[i] = new DataRow(indtIndex, i, this.Columns, this.xmlString);
    }
}

function DataRow(indtIndex, indrIndex, indrColumns, inxmlString) {
    this.xmlString = inxmlString;
    this.ColumnNames = indrColumns;
    this.Columns = new Array();
    var columnCount = indrColumns.length;
    var inxmlStringLC = inxmlString.toLowerCase();

    try {
        var datarowStartIndex = inxmlStringLC.indexOf("<t" + indtIndex + "r" + indrIndex + indrColumns[0] + ">");
        var datarowEndIndex = inxmlStringLC.indexOf(">", inxmlStringLC.lastIndexOf("</t" + indtIndex + "r" + indrIndex + indrColumns[(indrColumns.length - 1)] + ">")) + 1;
        this.xmlString = inxmlString.substring(datarowStartIndex, datarowEndIndex);
        alert("debug Setting XML DataRow: " + indtIndex + ";" + indrIndex + ";" + xmlString);
    }
    catch (e) {
    }

    for (var i = 0; i < columnCount; i++) {
        var fieldStartIndex = inxmlStringLC.indexOf(("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase());
        if (fieldStartIndex > -1) {
            fieldStartIndex = fieldStartIndex + ("<t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase().length;
            //alert("fsi (adjusted):" + fieldStartIndex);
            var fieldEndIndex = inxmlStringLC.indexOf(("</t" + dtIndex + "r" + rowIndex + fieldName + ">").toLowerCase(), fieldStartIndex);
            if (fieldEndIndex > -1) {
                this.Columns[indrColumns[i]] = xmlString.substring(fieldStartIndex, fieldEndIndex);
                alert("added:" + indrColumns[i] + ";" + xmlString.substring(fieldStartIndex, fieldEndIndex));
            }
        }
    }
}


