/*****************************************************************************/
var _applicationID = 0;
var _reportID = 0;
var _reportName = '';
var _loadEdit=0;
var _loadingImg = '<img src="https://secure.sportssystems.com/images/loadanim.gif">';
var TRange=null;


// Event Config Form
		function fnProp(arg,rep){
	
			for(i=0;i<eventForm.elements.length;i++){
				val = eventForm.elements[i].value;
				if(val.indexOf(arg)){
					newval = val.replace(arg,rep);
				};
				eventForm.elements[i].value = newval;
			}
		};


// Email Config Functions
	function preview() {
		//alert(document.forms[0].template.value);
		window.open('event/eventConfigureEmailPreview_p.cfm?eventID=0','preview','top=100,left=100,width=600,height=500,toolbar=no,location=no,scrollbars=no');
	}
	function acceptPreview() {
		document.forms[0].onsubmit();
		document.forms[0].submit();
	}
	function getPreviewData() {
		var thisForm = document.forms[0];
		var o = new Object();
		o.template = thisForm.template.value;
		if (document.forms[0].settings_To[0].checked) {
			o.toField = thisForm.settings_To[0].value;
		} else {
			o.toField = thisForm.settings_To[1].value;
		}
		if (document.forms[0].settings_LocalApplicantOnly[0].checked) {
			o.localApplicantsOnly = thisForm.settings_LocalApplicantOnly[0].value;
		} else {
			o.localApplicantsOnly = thisForm.settings_LocalApplicantOnly[1].value;
		}
		return o;
	}
	function getToField() {
		if (document.forms[0].settings_To[0].checked) {
			return document.forms[0].settings_To[0].value;
		} else {
			return document.forms[0].settings_To[1].value;
		}
	}
	function storeCaret(textEl) {
		if (textEl.createTextRange) 
			textEl.caretPos = document.selection.createRange().duplicate();
	}
	
	function insertToken(text) {
		var textEl = document.forms[0].template;
		if (textEl.createTextRange && textEl.caretPos) {
			var caretPos = textEl.caretPos;
			caretPos.text = caretPos.text.charAt(caretPos.text.length - 1) == ' ' ? text + ' ' : text;
		} else {
			textEl.value  = text;
		}
		textEl.focus();
	}
	function togglePanel(panelID){
		el = eval(panelID);
		if ( el.style.display == 'block' ) {
			el.style.display = 'none';
		} else {
			el.style.display = 'block';
		}
	}

// Email Config Functions	


/***********************************************LOGIN****************************************/

function fnParseValidation(req){
	var response = req.responseText;
	if( response.indexOf('_loggedout_') > 0 ){
		// force login
		window.location = 'index.cfm';
	};
};

function fnLoadRefReport(req){
	if(_reportID != 0){
		fnLoadReport(_reportID,_reportName);
		_reportID = 0;
	};
};

function fnSaveApplication(){
	document.all.applicationFrame.style.innerHTML = _loadingImg;
};

function fnOpenSaveWindow(name){
	// logged in?
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Your changes are being processed...';
	//url,name,attributes
	if( name.indexOf('Application') != -1 ){
		var url = 'saveApplicationChanges.cfm';
	};
	if( name.indexOf('Report') != -1 ){
		var url = 'saveReportEdit.cfm';
	};
	if( name.indexOf('Event') != -1 ){
		var url = 'saveEventChanges.cfm';
	};
	var attributes = 'top=100,left=100,width=500,height=100,toolbar=no,location=no,scrollbars=yes';
	fnOpenWindow(url,name,attributes);
};

function fnFindString (str) {
	var strFound='';

	if (TRange!=null) {
		TRange.collapse(false)
		strFound=TRange.findText(str)
		if (strFound) TRange.select()
	};

	if (TRange==null || strFound==0) {
		TRange=self.document.body.createTextRange()
		strFound=TRange.findText(str)
		if (strFound) {
			TRange.select()
		};
	};
	if (!strFound) alert ("String '"+str+"' not found!")
};


function fnMenuPanel(panel){
	if(document.all.menuControl.src.indexOf('2') != -1){
		document.all.menuControl.src='images/arrow1.gif'
	}else{
		document.all.menuControl.src='images/arrow2.gif'};
	
	fnPanel(panel);
};

function fnLoadGallery(whichOne,sRow){
	// logged in?
	// show loading image.
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Building gallery display...';	
	document.all.galleryDetail.innerHTML = _loadingImg;
	document.all.galleryDetail.style.display = 'block';
	try{	
		document.all['galleryItem_'+whichOne].style.backgroundColor = '#EEEEFF';
		var aItems = document.getElementsByTagName('div');
		for(i=0;i<aItems.length;i++){
			if(aItems[i].id.indexOf('galleryItem_') != -1 && aItems[i].id != 'galleryItem_'+whichOne ){
				aItems[i].style.backgroundColor = 'White';
			}
		};
	}
	catch( error ){};	
	var strURL = 'applications/getAjaxApplicationGallery.cfm';
	var strSubmit = '&statusID='+whichOne+'&sRow='+sRow;
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayGallery');
};

function fnDisplayGallery(req){
	window.document.all.sessionMessage.innerHTML = '';
	document.all.galleryDetail.innerHTML = req.responseText;
};


function fnSaveDisplayOption(formDataID,bHideInControl,sControlLabel,bShowApplyAll){
	// logged in?
	// let's pass the processing on to our little webby web service
	var strURL = 'applications/saveAjaxFormField.cfm';
	var strSubmit = 'formDataID='+formDataID;
	strSubmit += '&bHideInControl='+bHideInControl;
	strSubmit += '&sControlLabel='+sControlLabel;
	strSubmit += '&bShowApplyAll='+bShowAllyAll;
	xmlhttpPostIndex(strURL, strSubmit, 'fnValueSaved');
};

function fnValueSaved(req){
	alert('Value Saved.');	
};

function fnLoadAllReports(){
	fnLoadOptionsPanel('All Reports');
};

function fnLoadEmailLetter(letterID){
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Retrieving E-Mail template &amp; settings...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Event';
	fnSetCookie('CONTROL.selectedOption','Event');
	document.all.breadSelectedOption.innerText = 'Configure E-Mail';
	var strURL = 'event/getAjaxConfigure_EmailPanel.cfm';
	var strSubmit = 'letterID='+letterID;
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
	
	};


function fnLoadAdminPanel(){
	// logged in?
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Administration';
	fnSetCookie('CONTROL.selectedOption','Administration');
	document.all.breadSelectedOption.innerText = 'Login to Client System';
	var strURL = 'administration/getAjaxLoginPanel.cfm';
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};


function fnLoadClientPanel(){
	// logged in?
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Administration';
	fnSetCookie('CONTROL.selectedOption','Administration');
	document.all.breadSelectedOption.innerText = 'Clients';
	var strURL = 'administration/getAjaxClientPanel.cfm';
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};

function fnLoadEventPanel(){
	// logged in?
	
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Administration';
	fnSetCookie('CONTROL.selectedOption','Administration');
	document.all.breadSelectedOption.innerText = 'Create New Event';
	var strURL = 'administration/getAjaxEventPanel.cfm';
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};

function fnLoadEventConfigure(){
	// logged in?
	
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Event';
	fnSetCookie('CONTROL.selectedOption','Event');
	document.all.breadSelectedOption.innerText = 'Configure This Event';
	var strURL = 'event/eventConfigure.cfm';
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};

function fnLoadUserPanel(){
	// logged in?
	
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = 'Administration';
	fnSetCookie('CONTROL.selectedOption','Administration');
	document.all.breadSelectedOption.innerText = 'Users';
	var strURL = 'administration/getAjaxUserPanel.cfm';
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};

function fnLoadOptionsPanel(whichOne){
	// logged in?
	
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Processing...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.optionsFrame.innerHTML = _loadingImg;
	document.all.optionsFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = _Applications;
	fnSetCookie('CONTROL.selectedOption','Applications');
	document.all.breadSelectedOption.innerText = whichOne;
	// let's pass the processing on to our little webby web service
	var strURL = 'applications/getAjaxApplication'+whichOne+'Panel.cfm';
	if(whichOne == 'Edit_History' || whichOne =='Preferences'){
		strURL = 'user/getAjax'+whichOne+'Panel.cfm';
		document.all.breadSelection.innerText = 'User';
		if(whichOne == 'Edit_History'){	document.all.breadSelectedOption.innerText = 'Edit History';}
		fnSetCookie('CONTROL.selectedOption','User');
	};
	if(whichOne == 'Administration' ){
		strURL = 'event/getAjaxAdminDashboard.cfm';
		document.all.breadSelection.innerText = 'Administration';
		document.all.breadSelectedOption.innerText = 'Dashboard';
		fnSetCookie('CONTROL.selectedOption','Administration');
	};
	if(whichOne == 'Configure_this_Event' || whichOne =='Configure_Email'){
		strURL = 'event/getAjax'+whichOne+'Panel.cfm';
		document.all.breadSelection.innerText = 'Event';
		if(whichOne == 'Configure_this_Event'){	document.all.breadSelectedOption.innerText = 'Configure this Event';}
		if(whichOne == 'Configure_Email'){	document.all.breadSelectedOption.innerText = 'Configure Email';}
		fnSetCookie('CONTROL.selectedOption','Event');
	};
	if( whichOne == 'All Reports' ){
		strURL = 'reports/getAjaxAllReportsPanel.cfm';
		document.all.breadSelection.innerText = 'Reports';
		fnSetCookie('CONTROL.selectedOption','Reports');
	};
	if( whichOne == 'Support' ){
		strURL = 'help/getAjaxSupport.cfm';
		document.all.breadSelection.innerText = 'Help';
		fnSetCookie('CONTROL.selectedOption','Help');
	};
	if( whichOne == 'About' ){
		strURL = 'help/getAjaxAbout.cfm';
		document.all.breadSelection.innerText = 'Help';
		fnSetCookie('CONTROL.selectedOption','Help');
	};
	var strSubmit = '';
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayOptionsPanel');
};

function fnDisplayOptionsPanel(req){
	window.document.all.sessionMessage.innerHTML = '';
	// Insert the report into the page HTML and flow it, etc.
	document.all.optionsFrame.innerHTML = req.responseText;
	// la de da
};

/********************************************************************************************/
function fnLoadApplicationPanel(set,app,report,page){
	// logged in?
	
	if (app != null) {
		_applicationID = app;
	} else {
		// alert("fnLoadApplicationPanel");
	}
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Retrieving '+set+' '+_Applications+'...';	
	// hide the otherFrames
	fnHideAllContentFrames();
	// show loading image.
	document.all.applicationFrame.innerHTML = _loadingImg;
	document.all.applicationFrame.style.display = 'block';
	// update breadcrumbs
	document.all.breadSelection.innerText = _Applications;
	document.all.breadSelectedOption.innerText = set;
	// let's pass the processing on to our little webby web service
	var strURL = 'applications/getAjaxApplicationPanel.cfm';
	var strSubmit = 'applicationSet='+set
	if( app != undefined){
		strSubmit += '&applicationID='+app;
	};
	if( report != undefined){
		strSubmit += '&report='+report;
	};
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayApplicationPanel');
};

function fnDisplayApplicationPanel(req){
	window.document.all.sessionMessage.innerHTML = '';
	// Insert the report into the page HTML and flow it, etc.
	document.all.applicationFrame.innerHTML = req.responseText;
	// la de da
	var string = req.responseText;
	if( string.indexOf('-->') != -1 ){
		string = string.split('-->');
		var newString = string[0];
		var term = newString.split('|');
		document.all.breadSelectedOption.innerText = term[1];
	};
};
/********************************************************************************************/

/********************************************************************************************/
function fnLoadApplicationPanel2(set,app,report){
	// logged in?
	// let's pass the processing on to our little webby web service
	var strURL = 'applications/getAjaxApplicationPanel.cfm';
	var strSubmit = 'applicationSet='+set
	if( app != undefined){
		strSubmit += '&applicationID='+app;
	};
	if( report != undefined){
		strSubmit += '&report='+report;
	};
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayApplicationPanel2');
};

function fnDisplayApplicationPanel2(req){
	document.all.applicationFrame.innerHTML = req.responseText;
};
/********************************************************************************************/

function fnHideAllContentFrames(){
	try{
//		document.all.sessionMessage.innerHTML = '';
		document.all.reportFrame.style.display = 'none';
		document.all.optionsFrame.style.display = 'none';
		document.all.applicationFrame.style.display = 'none';

		document.all.reportFrame.innerHTML = '';
		document.all.optionsFrame.innerHTML = '';
		document.all.applicationFrame.innerHTML = '';
	}
	catch( error ){};

	return;
};


function fnCreateNewReport(){
	// logged in?
	
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Creating New Report...';	
	
	// clear the report panel
	document.all.reportFrame.innerHTML = _loadingImg;
	window.location = 'reports/getNewReport.cfm';
};

function fnDisplayReportCreate(req){
	window.document.all.sessionMessage.innerHTML = '';
	// Insert the report into the page HTML and flow it, etc.
	document.all.reportBody.innerHTML = req.responseText;
	// la de da
};

function fnUpdateSortImage(elName,selBox){
var sortVal = selBox.options[selBox.selectedIndex].value;
	var imgSrc =  '../images/sortasc.gif';
	if( sortVal.indexOf('a') == -1 ){
		imgSrc = '../images/sortdesc.gif';
	};
	if( sortVal == 'NoSort' ){
		document.all[elName+'|sortImage'].src = '../images/blank.gif';
	} else {
		document.all[elName+'|sortImage'].src = imgSrc;
	};
	// now ensure that no 2 select boxes of this type have same value.
	var elNameMod = elName+'_sortVals';
	var aSortBoxes = document.body.getElementsByTagName("select");
	for(i=0;i<aSortBoxes.length;i++){
		var thisVal = aSortBoxes[i].options[aSortBoxes[i].selectedIndex].value;
		var thisName = aSortBoxes[i].name;
		if( thisVal.charAt(0) == sortVal.charAt(0) && thisName != elNameMod && thisVal != 'NoSort' ){
			aSortBoxes[i].selectedIndex = 0;
			try{
				var aRef = thisName.substring(0,thisName.length - "|sortVals".length)
				document.all[aRef+'|sortImage'].src = '../images/blank.gif';
			}
			catch(e){};
		};
};
};

function fnSaveFormCookie(formName,cookieName){
	fnApplyColumnOrder();
	var str = formSerialize(formName);
	fnSetCookie(cookieName,str);
};

function fnProcessReportEditForm(formName,reportID,reportName){
	fnApplyColumnOrder();
	_reportID = reportID;
	_reportName = reportName;
	// update report name in menu
	if( document.all[formName].sName.value != '' ){
		document.all['reportTitle_'+reportID].innerText = document.all[formName].sName.value;
	};
	var str = formSerialize(formName);
	var strURL = 'reports/saveAjaxReportEdit.cfm';
	document.all.reportOnly.innerHTML = _loadingImg;
	fnSetCookie('control.editReport',str);
	var strSubmit = 'selectedID='+reportID;
	xmlhttpPostIndex(strURL, strSubmit, 'fnRunReport');
};

function fnRunReport(req){
//	document.all.reportOnly.innerHTML = req.responseText;
	fnLoadReport(_reportID,_reportName);	
};

function formSerialize(formName){
	var ar = document.forms[formName].elements;
	var output = '';
	for(i=0;i<ar.length;i++){
		output += formObj2String(ar[i]);
	};
	return output;
};
function formObj2String(obj) {
//    var output = "{";
	var output = "";
	if (obj.name) {
        output += obj.name + "=";
    }
    if (obj.id) {
//        output += "id:'" + obj.id + "',";
    }
//    output += "type:'" + obj.type + "',";
    switch (obj.type) {
        case "radio":
            if (obj.name) {
                obj = document.forms[0].elements[obj.name];
                for (var i = 0; i < obj.length; i++) {
                    if (obj[i].checked) {
                        radioVal = obj.value;
                        i = obj.length;
                    } 
                }
                output += escape(radioVal);
            } else {
                output += obj.checked;
            }
            break;
        case "checkbox":
            output += obj.checked;
            break;
        case "select-one":
            output += escape(obj.options[obj.selectedIndex].value);
            break;
        case "select-multiple":
            output += escape(obj.options[obj.selectedIndex].value);
            break;
        case "text":
            output += escape(obj.value);
            break;
        case "textarea":
            output += escape(obj.value);
            break;
        case "password":
            output += escape(obj.value);
            break;
        case "hidden":
            output += escape(obj.value);
            break;
        default:
            output += "";
    }
//    output += "}"
	output += "&";
    return output;
}

function fnUpdateColumnDisplayName(newValue,id){
	if(newValue.length == 0){return};
	var ref = id+'col';
	try{
		document.all[ref].innerText = newValue;
	}
	catch(e){};
};

function fnApplyColumnOrder(){
	var aDivs = document.body.getElementsByTagName("LI");
	for(i=0;i<aDivs.length;i++){
		var targetID = aDivs[i].id+'displayorder';
		document.all[targetID].value = i+1;
	};
//	alert(aDivs[0].id);
};

function fnHandleColumnOutputCheck(text,id){
	if( event.srcElement.checked == true ){
		fnAddColumn(text,id);
	} else {
		fnSubtractColumn(id);
	};		
};

function fnAddColumn(text,id){
   var oNewNode = document.createElement("LI");
   sortCols.appendChild(oNewNode);
   var sobriquet = id+'display-name';
   var liveText = document.all[sobriquet].value;
   	if(liveText.length != ''){
	   oNewNode.innerText=liveText;
	}else{
	   oNewNode.innerText=text;
	};
   oNewNode.className = 'columnLI';
   oNewNode.id = id;
   // add sort option
	var trimID = id.substring(0,id.length-1);
//	var sortLink = '<a href="javascript:fnPanel(\''+id+'sortValsOptions\')" class="altLink" style="font-size:10px;">Order</a>';
//	var sortPanelOpen = '<div id="' + id +'sortValsOptions" style="display:none;font-size:10px;background-color:white;padding:1px;margin:1px;border:1px solid #628DBD">';
//	var sortSelBox = '<select name="' + id + 'sortVals" style="font-size:10px;" onChange="fnUpdateSortImage(\'' + trimID + '\',this)">';
//	var sortOptions = '<option value="NoSort" style="color:gray;" selected>no sort</option><option value="1_a">Sort First, A-Z</option><option value="1_d">Sort First, Z-A</option><option value="2_a">Sort Second, A-Z</option><option value="2_d">Sort Second, Z-A</option><option value="3_a">Sort Third, A-Z</option><option value="3_d">Sort Third, Z-A</option></select></div>';
//	var innerHTML = '<nobr>'+oNewNode.innerText +'<img id="';
	var innerHTML = '<nobr>'+oNewNode.innerText +'</nobr>';
//	innerHTML += trimID +'|sortImage" width="11" height="10" src="../images/blank.gif" hspace="2" border="0"></nobr>'+ sortLink + sortPanelOpen + sortSelBox + sortOptions;
//	innerHTML += '<br><div style="text-align:right;"><a href="" class="altLink">Filter</a></div>';
	oNewNode.innerHTML = innerHTML;
}

function fnSubtractColumn(id){
   	var oNewNode = document.getElementById(id);
	junkdrawer.restoreListOrder("sortCols")
   	sortCols.removeChild(oNewNode);
};
try{

var dragsort = ToolMan.dragsort()
var junkdrawer = ToolMan.junkdrawer()

function fnInitOrderPanel() {
//	junkdrawer.restoreListOrder("sortCols")
	dragsort.makeListSortable(document.getElementById("sortCols"), saveOrder)
}

function verticalOnly(item) {
	item.toolManDragGroup.verticalOnly()
}

function speak(id, what) {
	var element = document.getElementById(id);
	element.innerHTML = 'Clicked ' + what;
}

function saveOrder(item) {
	var group = item.toolManDragGroup
	var list = group.element.parentNode
	var id = list.getAttribute("id")
	if (id == null) return
	group.register('dragend', function() {
		ToolMan.cookies().set("list-" + id, 
				junkdrawer.serializeList(list), 365)
	})
}

}catch(e){}
function xmlhttpPostIndex(strURL, strSubmit, strResultFunc) {
	var xmlHttpReq = false;
	
	// disable submit
	try{ document.ApplicationForm['saveChanges'].disabled = true; }
	catch(errorObj){};
	
	// Mozilla/Safari
	if (window.XMLHttpRequest) {
		xmlHttpReq = new XMLHttpRequest();
		xmlHttpReq.overrideMimeType('text/xml');
	}
	// IE
	else if (window.ActiveXObject) {
		xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
	}

	xmlHttpReq.open('POST', strURL, true);
	xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xmlHttpReq.onreadystatechange = function() {
		eval('checkState(xmlHttpReq, strResultFunc);');
	}
	// enable submit
	try{ document.ApplicationForm['saveChanges'].disabled = false; }
	catch(errorObj){};


	xmlHttpReq.send(strSubmit);
}

function get_cookie ( cookie_name )
{
  var results = document.cookie.match ( cookie_name + '=(.*?)(;|$)' );

  if ( results )
    return ( unescape ( results[1] ) );
  else
    return null;
}

/* Displays real time state of XML HTTP Post */
function checkState(req, strResultFunc) {
	var state = req.readyState;
	
	if (state == 4) {
		if (req.status == 200) {
			eval(strResultFunc + '(req);');
		} else {
			alert('ERROR processing AJAX.xmlhttpPostIndex(): ' + req.statusText);
		}
	}
}				

function fnLoadReportEditPanel(reportID){
	// logged in?
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Loading report edit screen...';	
	
	document.all.reportOnly.innerHTML = '<br clear="all">' + _loadingImg;
	// breadcrumb update
	document.all.breadSelection.innerText = 'Reports';
	fnSetCookie('CONTROL.selectedOption','Reports');
	var breadEnd = document.all.breadSelectedOption.innerText;
	breadEnd = breadEnd.replace(' (edit)','','all');
	breadEnd = breadEnd +' (edit)';
	document.all.breadSelectedOption.innerText = breadEnd;

	// Define path to this mini web-service
	var strURL = 'reports/getAjaxReportEdit.cfm';
	var strSubmit = 'selectedID='+reportID;
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayReportEdit');
};

function fnDisplayReportEdit(req){
	window.document.all.sessionMessage.innerHTML = '';
	// Insert the report into the page HTML and flow it, etc.
	document.all.reportOnly.innerHTML = req.responseText;
	document.all.sessionMessage.innerHTML = '';
	fnInitOrderPanel();
	// la de da
};


function fnLoadEditHistoryDetail(selectedID,clearOld,selDate){
	// logged in?
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Loading edit history...';	
	try{	
		fnRowLight('menuItem_'+selectedID,1)
		if(clearOld == 'y'){
			var aItems = document.getElementsByTagName('div');
			for(i=0;i<aItems.length;i++){
				if(aItems[i].id.indexOf('menuItem_') != -1 && aItems[i].id.indexOf(selectedID) == -1 ){
					fnRowLight(aItems[i].id,0)
				}
			};
		};
	}
	catch( error ){};
	document.all.historyDetail.innerHTML = _loadingImg;
	var strURL = 'user/getAjaxEdit_HistoryDetail.cfm';
	var strSubmit = 'selectedID='+selectedID+'&selDate='+selDate;
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayHistoryDetail');
};

function fnDisplayHistoryDetail(req){
	window.document.all.sessionMessage.innerHTML = '';
	// using text not xml b/c of transforming
	try{
		document.all.historyDetail.innerHTML = '';
		document.all.historyDetail.innerHTML = req.responseText;
	}
	catch(e){}
};


function fnLoadApplication(applicationID,sApp,clearOld,page){
	// logged in?
	_applicationID = applicationID;
	try{
		window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Loading ['+sApp+']...';	
	}
	catch(e){
		window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Loading Application...';	
	};
	try{	
		document.all['menuItem_'+applicationID].style.backgroundColor = '#EEEEFF';
		if(clearOld == 'y'){
			var aItems = document.getElementsByTagName('div');
			for(i=0;i<aItems.length;i++){
				if(aItems[i].id.indexOf('_popUp_') == -1 && aItems[i].id.indexOf('menuItem_') != -1 && aItems[i].id != 'menuItem_'+applicationID ){
					aItems[i].style.backgroundColor = 'White';
				}
			};
//			document.all['menuItem_'+selElement].style.backgroundColor = 'white';
		};
	}
	catch( error ){alert(error)};
	// save application title as cookie
	fnSetCookie('CONTROL.SELECTEDAPPLICATION.HANDLE',sApp);
	
	selElement = applicationID;
	// insert application title & loading message
	document.all.applicationContainer.innerHTML = _loadingImg;
	var strURL = 'applications/getAjaxApp.cfm';
	var strSubmit = 'selectedID='+applicationID;
	if( page != undefined){
		strSubmit = strSubmit + '&thisPage='+page;	
	} else {
		strSubmit = strSubmit + '&thisPage='+1;	
	};
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayApplication');
};


function fnDisplayApplication(req){
	window.document.all.sessionMessage.innerHTML = '';
	// using text not xml b/c of transforming
	var txt = req.responseText;
	if( txt.indexOf('logged_out') != -1 ){
		fnReloadApplicationPage();
	}else{
		try{
			document.all.applicationContainer.innerHTML = req.responseText;
		}
		catch(e){}
		hideItem();
	};
};

function fnDisplaySaveMessage(req){
	if(elLabel != '%'){
		el = document.getElementById(elLabel);
		el.innerHTML = '<img src="images/save2.gif" align="right" border="0">';
		elLabel = '%';
	};
	return(true);
};

function fnSetCookie(name, value, expires, path, domain, secure){
	document.cookie= name + "=" + escape(value) +
		((expires) ? "; expires=" + expires.toGMTString() : "") +
		((path) ? "; path=" + path : "") +
		((domain) ? "; domain=" + domain : "") +
		((secure) ? "; secure" : "");
};

function fnSaveFieldValue(elName,elValue){
	// deactivate this function for now, going to regular save 8/18/2005
	return;
	// parse the name for personID, formDataID
/*	var token = elName.split('__');
	var formDataID = token[1];
	var personID = token[2];
	var userID = _userID
	var val = elValue;
	if(elLabel != '%'){
		el = document.getElementById(elLabel);
		el.innerHTML = '<img src="images/save2.gif" align="right" border="0">';
		elLabel = '%';
	};
	elLabel = 'fill_'+elName;
	var el = document.getElementById(elLabel);
	el.innerHTML = '<img src="images/irefresh.gif" align="right" border="0">';
	// Build our submission values
	var strURL = 'applications/saveAjaxPersonFormField.cfm';
	var strSubmit = 'personID='+personID+'&userID='+userID+'&formDataID='+formDataID+'&formValue='+val;
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplaySaveMessage');
	*/
};

function fnLoadReport(reportID,reportName,_rbpn){
	// logged in?
	// hide the otherFrames
	fnHideAllContentFrames();

	// get on with it
	_reportID = reportID;
	try{
		var sName = document.all['reportTitle_'+reportID].innerText;
	}
	catch(e){
		var sName = reportName;
	};
	window.document.all.sessionMessage.innerHTML = '<img src="../images/help.gif" align="absmiddle" border="0" hspace="4"> Compiling report data ['+sName+']...';	

	var reportHTML = '<div class="contentTitle" id="reportTitle">'+sName+'<br><img src="https://secure.sportssystems.com/control2/images/grad1.jpg" style="margin-top:2px;margin-bottom:0px;" width="794px"></div>';
	reportHTML = reportHTML + '<div id="reportBody">'+_loadingImg+'</div>';
	document.all.reportFrame.innerHTML = reportHTML;
	document.all.reportFrame.style.display = 'block';
	// breadcrumb update
	document.all.breadSelection.innerText = 'Reports';
	document.all.breadSelectedOption.innerText = sName;

	// Define path to this mini web-service
	var strURL = 'reports/getAjaxReport.cfm';
	var strSubmit = 'selectedID='+reportID;
	if(_rbpn != undefined){
		strSubmit += '&_rbpn='+_rbpn;
	};
	xmlhttpPostIndex(strURL, strSubmit, 'fnDisplayReport');
};

function fnDisplayReport(req){
	// Insert the report into the page HTML and flow it, etc.
	document.all.reportBody.innerHTML = req.responseText;
	document.all.sessionMessage.innerHTML = '';
	// get total
	try{
	var rTotal = document.all.reportTotalReference.innerText;
	document.all['reportTotal_'+_reportID].innerText = rTotal;
	}
	catch(e){};
	if(_loadEdit != 0){
		_ref = _loadEdit;
		_loadEdit = 0;
		fnLoadReportEditPanel(_ref);
	};
};

function fnReloadApplicationPage(){
	// do this thing.
	window.location.reload();
};


function fnRowLight(elementName,action){
	if(action == 1){
		var rowcolor = '#EEEEFF';
	}else{
		var rowcolor = '#FFFFFF';
	};
	document.all[elementName].style.background = rowcolor;
};			

function fnFormCell(elementName,color){
	document.all[elementName].style.background = color;
};

function fnPanel(panelID){
	try{
		el = eval(panelID);
		var isOpen = (el.style.display == 'block');
			if( isOpen  ){
				// ferme
				el.style.display = 'none';
			}else{
				// open
				el.style.display = 'block';
			};
	};
	catch( error ){};

};


function togglePanel(panelID){
	try{
		el = eval(panelID);
		var isOpen = (el.style.display == 'block');
			if( isOpen  ){
				// ferme
				el.style.display = 'none';
			}else{
				// open
				el.style.display = 'block';
			};
	};
	catch( error ){};

};

<!--- Site wide code for opening a popup --->
function fnOpenWindow(url,name,attributes){
	// logged in?

	popupWindow = window.open(url,name,attributes);

};

// preload some images (arrow for breadcrumbs, edit pic, email pic)
 function MM_preloadImages() {
	if (document.images) {
		var imgFiles = MM_preloadImages.arguments;
		if (document.preloadArray == null) {
			document.preloadArray = new Array();
		}
		var i = document.preloadArray.length;
		with (document) {
			for (var j = 0; j < imgFiles.length; j++) {
				if (imgFiles[j].charAt(0) != "#") {
					document.preloadArray[i] = new Image();
					document.preloadArray[i++].src = imgFiles[j];
				}
			}
		}
	}
}
// function to allow the 'apply all' feature
 		<!-- JS Handler for complicated shit -->
  			function fnProcessRadio(el){
				if(el.checked == true){
  					// get container cell
  					var cellID = 'cell_'+el.name;
  					var cell = document.getElementById(cellID);
					// get original value
					var ogID = el.name+'__original';
					var og = document.getElementById(ogID);
					// determine color
					if(el.value == og.value){
						cell.style.background = 'white';
					}else{
						cell.style.background = '#628DBD';
					}
  					// let's call Ajax to save the value;
  					fnSaveFieldValue(el.name,el.value);
  				};
  			};

			function fnGetCheckValues(checkName){
				var returnVals = "";
				try{
					for(i=0;i < document.ApplicationForm.elements.length;i++){
						if( document.ApplicationForm.elements[i].name == checkName && document.ApplicationForm.elements[i].checked == true ){
							if( returnVals != ""){
								returnVals = returnVals + ',' + document.ApplicationForm.elements[i].value;
							}else{
								returnVals = document.ApplicationForm.elements[i].value;
							};
						};
					};
				}
				catch(e){alert(e);}
				return(returnVals);
			};
			
			
			function fnProcessCheck(el){
				var checkName = el.name;
				var valToStore = fnGetCheckValues(checkName);
				var ogID = el.name+'__original';
				var og = document.getElementById(ogID);
				// get container cell
				var cellID = 'cell_'+checkName;
//				var cell = document.getElementById(cellID);

				if( valToStore == og.value ){
				eval(cellID).style.background = 'White';
//					cell.style.background = 'white';
				}else{
				eval(cellID).style.background = '#628DBD';
//					cell.style.background = '#628DBD';
				};
				// let's call Ajax to save the value;
  				var val = fnSaveFieldValue(el.name,valToStore);
  			};

// fnPropogateBoxes3 is for checkboxes
function fnPropogateBoxes3(propName,formID){
	var identifier = propName.split('__');
	var group = document.ApplicationForm[propName];
	
	if(event.srcElement.checked == true){
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1){
				for (var r = 0; r < group.length; r++){
				  if(group[r].checked == true){
					document.ApplicationForm.elements[elName][r].checked = true;
//						fnSaveFieldValue(elName,document.ApplicationForm.elements[elName][r].value)						
				  } else {
					document.ApplicationForm.elements[elName][r].checked = false;
				  };
				};
			};
		};
		for(j=0;j < document.ApplicationForm.elements.length;j++){
			var elName2 = document.ApplicationForm.elements[j].name;
			var elArray2 = elName2.split('__');
			var lastEl = "";
			if( identifier[1] == elArray2[1] && identifier[2] != elArray2[2] && elName2.indexOf('original') == -1){
				fnProcessCheck( document.ApplicationForm.elements[j] );
			};
		};
	} else {
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1 ){
		
				var originalValue = document.ApplicationForm.elements[elName+'__original'].value;
				if(originalValue == undefined){
					originalValue = 'stan apple jacks';
				};
				for (var r = 0; r < document.ApplicationForm.elements[elName].length; r++){
				  if( originalValue.indexOf(document.ApplicationForm.elements[elName][r].value) != -1 ){
					document.ApplicationForm.elements[elName][r].checked = true;
//						fnSaveFieldValue(elName,document.ApplicationForm.elements[elName][r].value)						
				  } else {
					document.ApplicationForm.elements[elName][r].checked = false;
				  };
				};
			};
		};
		for(j=0;j < document.ApplicationForm.elements.length;j++){
			var elName2 = document.ApplicationForm.elements[j].name;
			var elArray2 = elName2.split('__');
			var lastEl = "";
			if( identifier[1] == elArray2[1] && identifier[2] != elArray2[2] && elName2.indexOf('original') == -1){
				fnProcessCheck( document.ApplicationForm.elements[j] );
			};
		};
	};
};	




// fnPropogateBoxes2() is from 7/2005 (Stan) and is used to Apply To All for RADIO BUTTONS in AJAX save situation
// calling fnSaveFieldValue() triggers the ajax save for the 'receiving' elements
function fnPropogateBoxes2(propName,formID){
	var identifier = propName.split('__');
	var group = document.ApplicationForm[propName];
	if(event.srcElement.checked == true){
			for(i=0;i < document.ApplicationForm.elements.length;i++){
				var elName = document.ApplicationForm.elements[i].name;
				var elArray = elName.split('__');
				if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1  ){
					for (var r = 0; r < group.length; r++){
					  if(group[r].checked == true){
						document.ApplicationForm.elements[elName][r].checked = true;
						fnSaveFieldValue(elName,document.ApplicationForm.elements[elName][r].value)						
					  } else {
						document.ApplicationForm.elements[elName][r].checked = false;
					  };
					};
					var cellReference = 'cell_'+elName;
					if( document.ApplicationForm.elements[i].value != document.ApplicationForm.elements[elName+'__original'].value){
						document.all[cellReference].style.background = '#628DBD';
					};
				};
			};
	} else {
			for(i=0;i < document.ApplicationForm.elements.length;i++){
				var elName = document.ApplicationForm.elements[i].name;
				var elArray = elName.split('__');
				if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1 ){
					var originalValue = document.ApplicationForm.elements[elName+'__original'].value;
					for (var r = 0; r < document.ApplicationForm.elements[elName].length; r++){
					  if( originalValue == document.ApplicationForm.elements[elName][r].value ){
						document.ApplicationForm.elements[elName][r].checked = true;
						fnSaveFieldValue(elName,document.ApplicationForm.elements[elName][r].value)						
					  } else {
						document.ApplicationForm.elements[elName][r].checked = false;
					  };
					};
					var cellReference = 'cell_'+elName;
					document.all[cellReference].style.background = 'white';
				};
			};
		
	};
//	event.srcElement.focus();
};	





// Used for the composite form lower down in code.
function fnPropogateBoxes(propName){
	alert('This may take a moment.');
	var identifier = propName.split('__');
	var group = document.ApplicationForm[propName];
	
	if(event.srcElement.checked == true){
			for(i=0;i < document.ApplicationForm.elements.length;i++){
				var elName = document.ApplicationForm.elements[i].name;
				var elArray = elName.split('__');
				if( identifier[2] == elArray[2] && elName != propName && elName.indexOf('original') == -1){
					for (var r = 0; r < group.length; r++){
					  if(group[r].checked == true){
						document.ApplicationForm.elements[elName][r].checked = true;
					  } else {
						document.ApplicationForm.elements[elName][r].checked = false;
					  };
					};
					var cellReference = 'Cell__'+elName;
					if( document.ApplicationForm.elements[i].value != document.ApplicationForm.elements[elName+'__original'].value){
						document.all[cellReference].style.background = '#628DBD';
					};
				};
			};
	} else {
			for(i=0;i < document.ApplicationForm.elements.length;i++){
				var elName = document.ApplicationForm.elements[i].name;
				var elArray = elName.split('__');
				if( identifier[2] == elArray[2] && elName != propName && elName.indexOf('original') == -1){
					var originalValue = document.ApplicationForm.elements[elName+'__original'].value;
					for (var r = 0; r < document.ApplicationForm.elements[elName].length; r++){
					  if( originalValue.indexOf(document.ApplicationForm.elements[elName][r].value) == -1 ){
						document.ApplicationForm.elements[elName][r].checked = false;
					  } else {
						document.ApplicationForm.elements[elName][r].checked = true;
					  };
					};
					var cellReference = 'Cell__'+elName;
					document.all[cellReference].style.background = 'white';
				};
			};
		
	};
};

function fnApplyAll(propName,formID,formElementTypeID){
	// branch functioning according to element type
	if( formElementTypeID == 2 ){
		// radio button
		fnPropogateBoxes2(propName,formID);
		return;
	};
	if( formElementTypeID == 3 ){
		// check box
		fnPropogateBoxes3(propName,formID);
		return;
	};
	// selects, texts, textareas
	var el = document.ApplicationForm[propName];
	fnPropogateValues(el);
};


	

	
// Used for the composite form lower down in code.
function fnPropogate(el){
	alert('This may take a moment.');
	// split the name of the passed element to find identifier.

	var identifier = el.name.split('__');
	var nameOfElToSpread = el.name;
	if(event.srcElement.checked == true){
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[2] == elArray[2] && elName != nameOfElToSpread && elName.indexOf('original') == -1){
				document.ApplicationForm.elements[i].value = el.value;	
				var cellReference = 'Cell__'+elName;
				if( document.ApplicationForm.elements[i].value != document.ApplicationForm.elements[elName+'__original'].value){
					document.all[cellReference].style.background = '#628DBD';
				};
			};
		};
	} else {
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[2] == elArray[2] && elName != nameOfElToSpread && elName.indexOf('original') == -1 ){
				var originalValue = document.ApplicationForm.elements[elName+'__original'].value;
				document.ApplicationForm.elements[i].value = originalValue;				
				var cellReference = 'Cell__'+elName;
				document.all[cellReference].style.background = 'white';
			};
		};
	};
};

// Used for the composite form lower down in code.
function fnPropogateValues(el){
//	alert('This may take a moment.');
	// split the name of the passed element to find identifier.
	var identifier = el.name.split('__');
	var nameOfElToSpread = el.name;
	if(event.srcElement.checked == true){
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1 ){
				document.ApplicationForm.elements[i].value = el.value;	
				fnSaveFieldValue(document.ApplicationForm.elements[i].name,el.value);
				var cellReference = 'cell_'+elName;
				if( document.ApplicationForm.elements[i].value != document.ApplicationForm.elements[elName+'__original'].value){
					document.all[cellReference].style.background = '#628DBD';
				};
			};
		};
	} else {
		for(i=0;i < document.ApplicationForm.elements.length;i++){
			var elName = document.ApplicationForm.elements[i].name;
			var elArray = elName.split('__');
			if( identifier[1] == elArray[1] && identifier[2] != elArray[2] && elName.indexOf('original') == -1 ){
				originalValue = document.ApplicationForm.elements[elName+'__original'].value;
				fnSaveFieldValue(document.ApplicationForm.elements[i].name,originalValue);
				document.ApplicationForm.elements[i].value = originalValue;				
				var cellReference = 'cell_'+elName;
				document.all[cellReference].style.background = 'white';
			};
		};
	};
};

/****************************************************************
* Seating Chart functions
* NOTE: Relies on JohnScott/resources/AJAX.js
****************************************************************/

// Delete a seating chart assignment from within CONTROL
function deleteAssignment(seatID, applicationID) {
	var strURL = _deleteSeatAssignmentURL; // set in calling CFM template
	var strSubmit = 'seatID=' + seatID + '&applicationID=' + applicationID;
	_applicationID = applicationID; // needed as global var for call to updateSeatingChartLauncher
	xmlhttpPost(strURL, strSubmit, 'updateSeatingChartLauncher');
}

// Update the seating chart assignments in CONTROL
function updateSeatingChartLauncher(applicationID) {
	if ( applicationID && (typeof applicationID == 'object') ) {
		// if being called from AJAX request, param is the req object
		fnLoadApplication(_applicationID);
	} else {
		// if called from seating chart app, param is actual ID
		fnLoadApplication(applicationID);
	}
}
