/*************************************************************************
 *************************************************************************
 **									**
 **	Filename:	main.js						**
 **	Programmer:	Chris Warner					**
 **	Date:		12/30/2006					**
 **	Revision::	0						**
 **	Rev. Date:	N/A						**
 **	Rev. Notes:							**
 **		None							**
 **									**
 **	Contents:							**
 **		function BodyLoad()					**
 **		window.onload = function() - Onload Event handler.	**
 **     StateSuggestions.prototype.requestSuggestions(oAutoSuggestControl, bTypeAhead)
 **     Initialize()
 **     testIsValidObject(objToTest)
 **     initializeHistory()
 **     historyChange(newLocation, historyData)
 **     swapDivData(msg)
 **     ShowAllSpecies(Tier1, Keyword)
 **     ShowTier2(Tier2, keyword)
 **     GetB(keyword)
 **     GetPics(Species, keyword)
 **     SendQuery()
 **     SearchPage(Tier1, Keyword)
 **     SearchPage2(Tier2, Keyword)
 **     SearchPage3(Tier3, Keyword)
 **     SendLoginValues()
 **     logout(Frm)
 **     Admin(Mode)
 **     UploadFile(Mode)
 **     KeywordAdmin(AdminMode, AdminKeywordMode, AdminID)
 **     KeywordEdit(Mode)
 **									**
 *************************************************************************
 *************************************************************************/


    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/


function BodyLoad()
{
	document.wrap.search_name.focus();
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/


window.onload = function () {
	var oTextbox = new AutoSuggestControl(document.getElementById("search_name"), new StateSuggestions());
	document.form1.search_name.focus();
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

StateSuggestions.prototype.requestSuggestions = function (oAutoSuggestControl /*:AutoSuggestControl*/,
                                                          bTypeAhead /*:boolean*/) {
	var aSuggestions = [];
	var sTextboxValue = oAutoSuggestControl.textbox.value;

	if (sTextboxValue.length > 0){

		//search for matching states
		for (var i=0; i < this.states.length; i++) {
			if (this.states[i].toUpperCase().indexOf(sTextboxValue.toUpperCase()) == 0) {
				aSuggestions.push(this.states[i]);
			}
		}
	}

	//provide suggestions to the control
	oAutoSuggestControl.autosuggest(aSuggestions, bTypeAhead);
};

var req;
var currReq = "";
var url = "?MODE=";
var tier = "";

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function Initialize()
{
	currReq = "";
	try
	{
		req=new ActiveXObject("Msxml2.XMLHTTP");
	}
	catch(e)
	{
		try
		{
			req=new ActiveXObject("Microsoft.XMLHTTP");
		}
		catch(oc)
		{
			req=null;
		}
	}

	if(!req&&typeof XMLHttpRequest!="undefined")
	{
		req=new XMLHttpRequest();
	}

}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function testIsValidObject(objToTest)
{
	if (objToTest == null || objToTest == undefined)
		return false;
	return true;
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function initializeHistory()
{
	alert("initializeHistory");
	dhtmlHistory.initialize();
	dhtmlHistory.addListener(historyChange);

        // if this is the first time we have
        // loaded the page...
        if (dhtmlHistory.isFirstLoad())
        {
           // start adding history
		var divData = 	document.getElementById("autocomplete");

		dhtmlHistory.add("Tier1", divData.innerHTML);
        }
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

	/** Our callback to receive history
	change events. */
function historyChange(newLocation, historyData)
{
	var historyMsg = historyData;

	alert("historyChange:" + newLocation);
	if (newLocation != "")
	{
		historyMsg =JSON.stringify(historyData);
		swapDivData(historyMsg);
	}

}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function swapDivData(msg)
{
	var debugMsg = 	document.getElementById("autocomplete");
	debugMsg.innerHTML = msg;
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function ShowAllSpecies(Tier1, Keyword)
{
	//alert(strSpecies);
	Initialize();

	if(req!=null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "TIER1" +"&AM=" + document.form1.AM.checked;
		else
			url = url + "TIER1";;


		Tier = "Tier1";

        document.form1.MODE.value="TIER1";

		document.form1.Tier1.value = Tier1;
		document.form1.Keyword.value = Keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();

	}
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function ShowTier2(Tier2, keyword)
{
	Initialize();

	if(req!=null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "TIER2" + "&AM=" + document.form1.AM.checked;
		else
			url = url + "TIER2";;

        document.form1.MODE.value="TIER2";
		document.form1.Tier2.value=Tier2;
		document.form1.Keyword.value=keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();

	}

}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function GetB(keyword)
{
	Initialize();

	if(req != null)
	{
	//	if(testIsValidObject(document.form1.AM))
	//		url = url + "BLURB" + "&AM=" + document.form1.AM.checked;
	//	else
	//		url= url + "BLURB";;
        document.form1.MODE.value="BLURB";
		document.form1.Blurb.value = keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();
	}
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function GetPics(Species, keyword)
{
	Initialize();

	if(req != null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "GETPICS&AM=" + document.form1.AM.checked;
		else
			url = url + "GETPICS";;

		document.form1.MODE.value="GETPICS";

		document.form1.Species.value=Species;
		document.form1.method = "GET";
		document.form1.action=url;
		document.form1.submit();
	}
}

    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function SendQuery()
{
	Initialize();

	if(req != null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "SEARCH" + "&AM=" + document.form1.AM.checked;
		else
			url = url + "SEARCH";;

        document.form1.MODE.value="SEARCH";

		document.form1.Keyword.value = document.form1.search_name.value;
		document.form1.method = "GET";
		document.form1.action=url;
		document.form1.submit();
	}
}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function SearchPage(Tier1, Keyword)
{
	Initialize();

	if(req != null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "SEARCH" + "&AM" + document.form1.AM.check;
		else
			url = url + "SEARCH";;

		document.form1.MODE.value="SEARCH";

		document.form1.Keyword.value = Keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();
	}
}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function SearchPage2(Tier2, Keyword)
{
	Initialize();

	if(req != null)
	{
		if (testIsValidObject(document.form1.AM))
			url = url + "SEARCH2" + "&AM" + document.form1.AM.checked;
		else
			url = url + "SEARCH2";;

        document.form1.MODE.value="SEARCH2";
		document.form1.Tier2.value=Tier2;
		document.form1.Keyword.value=Keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();
	}

}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function SearchPage3(Tier3, Keyword)
{
	Initialize();

	if(req != null)
	{

		if (testIsValidObject(document.form1.AM))
			url = url + "SEARCH3" + "&AM" + document.form1.AM.checked;
		else
			url = url + "SEARCH3";;

                document.form1.MODE.value="SEARCH3";
		document.form1.Species.value=Tier3;
		document.form1.Keyword.value=Keyword;
		document.form1.method="GET";
		document.form1.action=url;
		document.form1.submit();

	}

}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function SendLoginValues()
{
	Initialize();

	if(req != null)
	{

		var inputs = document.LoginForm.elements;
		var outputs = document.LoginData.elements;

		url = url = "?ADMIN";
		outputs["frmData[password]"].value = hex_md5(inputs["password"].value);
		outputs["frmData[username]"].value = inputs["username"].value;
		outputs["frmData[mode]"].value = 'ADMIN';
		document.LoginData.method="POST";
		document.LoginData.action=url;
		document.LoginData.submit();
	}

}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function logout(Frm)
{
	Initialize();

	if(req!=null)
	{

		var value = document.form1.elements;

		document.form1.method="POST";
		document.form1.action = "?ADMIN=LOGOUT";
		document.form1.submit();
	}
}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function Admin(Mode)
{
	Initialize();

	if(req != null)
	{
		var i = document.form1.elements;

		url = "?ADMIN";
		i["frmData[mode]"].value = Mode;


		document.form1.method="POST";
		document.form1.action=url;
		document.form1.submit();
	}
}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function UploadFile(Mode)
{
	Initialize();
	if(req != null)
	{
		url = "?ADMIN";

		var i = document.FileUpload;
		var j = document.form1.elements;
		var l = i.elements;

		l["frmData[mode]"].value = 3;
		l["frmData[fileupmode]"].value = Mode;

		i.method="POST";
		i.action=url;
		i.submit();

	}
}
    /*****************************************************************
     ** Function:                                                   **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function KeywordAdmin(AdminMode, AdminKeywordMode, AdminID)
{
    Initialize();
    if(req != null)
    {
        url = "?ADMIN";

        var j = document.form1.elements;

        j["frmData[mode]"].value = AdminMode;
        j["frmData[AdminKeywordsMode]"].value = AdminKeywordMode;
        j["frmData[KeywordID]"].value = AdminID;

        document.form1.method="POST";
        document.form1.action = url;
        document.form1.submit();
     }
}
    /*****************************************************************
     ** Function:   KeywordEdit(Mode)                               **
     ** Programmer: Chris Warner                                    **
     ** Date:                                                       **
     ** Revision:   0                                               **
     ** Rev. Date:  N/A                                             **
     ** Rev. Note:                                                  **
     **     None                                                    **
     **                                                             **
     ** Parameters:                                                 **
     **                                                             **
     ** Returns:                                                    **
     **                                                             **
     ** Purpose:                                                    **
     **                                                             **
     *****************************************************************/

function KeywordEdit(Mode)
{
    Initialize();
    if(req != null)
    {
        url = "?ADMIN";
	
        var j = document.KeywordEdit.elements;
	if(Mode == 'BACK'){
		if(j["frmData[AdminKeywordsMode]"].value == 'ADMIN_KEYWORD_DATAENTRY')
			if(j["frmData[KeywordID]"].value > 0)
			{
				j["frmData[AdminKeywordsMode]"].value = ''
				j["frmData[mode]"].value = 'ADMIN_KEYWORD';
			}
			else
				j["frmData[AdminKeywordsMode]"].value = 'ADMIN_KEYWORD_DETAILS';
		else if(j["frmData[AdminKeywordsMode]"].value == 'ADMIN_KEYWORD_DATAENTRY')
		{
			j["frmData[AdminKeywordsMode]"].value = ''
			j["frmData[mode]"].value = 'ADMIN_KEYWORD';
		} else
			j["frmData[AdminKeywordsMode]"].value = '';
	} else 
//		if(typeof document.getElementById("frmData[CONFIRM]") != 'undefined'){
		if(j['frmData[CONFIRM]']){
			j["frmData[CONFIRM]"].value = 'TRUE';
		}
		j["frmData[KeywordEdit]"].value = Mode;

	document.KeywordEdit.method="POST";
	document.KeywordEdit.action=url;
	document.KeywordEdit.submit();
    }

}
