


function getXMLHttpRequestObject()
	{
	var xmlobj;
	// check for existing requests
	if(xmlobj!=null&&xmlobj.readyState!=0&&xmlobj.readyState!=4)
		{
		xmlobj.abort();
		}
	try
		{
		// instantiate object for Mozilla, Nestcape, etc.
		xmlobj=new XMLHttpRequest();
		}
	catch(e)
		{
		try
			{
			// instantiate object for Internet Explorer
			xmlobj=new ActiveXObject('Microsoft.XMLHTTP');
			}
		catch(e)
			{
			// Ajax is not supported by the browser
			xmlobj=null;
			return false;
 			}
		}
	return xmlobj;
	}


// INITIALIZE REFRESH
function UpdateSectionBullets (rURL, rSeconds, rTheme)
	{
	var RefreshRequest = getXMLHttpRequestObject();
	//var RefreshURL = rURL;
	//var RefreshSeconds = rSeconds;
	//var Theme = rTheme;
	getSBData(RefreshRequest, rURL, rSeconds, rTheme);
	}


// GET POST FORM DATA
function getSBData(PassedRequest, rURL, rSeconds, rTheme) 
	{
	//var RefreshRequest = PassedRequest;
	//var RefreshURL = rURL;
	//var RefreshSeconds = rSeconds;
	//var Theme = rTheme;
	//alert("test");
	if (PassedRequest.readyState == 4 || PassedRequest.readyState == 0) 
		{
		PassedRequest.open("GET", rURL + '/ajaxdata.php?type=sectionbullets&theme=' + rTheme, true);
		//alert ("test"+RefreshURL + '/ajaxdata.php?type=sectionbullets');
		PassedRequest.onreadystatechange = function ()
			{
			handleSBData(PassedRequest, rURL, rSeconds, rTheme);
			} 
		PassedRequest.send(null);
		}			
	}


// HANDLE REFRESH
function handleSBData(PassedRequest, rURL, rSeconds, rTheme) 
	{
	//var RefreshRequest = PassedRequest;
	//var RefreshURL = rURL;
	//var RefreshSeconds = rSeconds;
	//var Theme = rTheme;
	if (PassedRequest.readyState == 4) 
		{
		var ResponseData = PassedRequest.responseText;
		//document.write(ResponseData
		var DataArray = ResponseData.split('|');
		//alert("testing:"+ResponseData);
		for (i=0; i < DataArray.length; i++)
			{
			//document.write("test");
			var EachPair = DataArray[i].split("=");
			var SectionID = EachPair[0];
			var ImgURL = EachPair[1];
			var SectionBulletID = "SectionBullet" + SectionID;
			if (document.getElementById(SectionBulletID))
				{
				//document.write(ImgURL);
				document.getElementById(SectionBulletID).src = ImgURL;
				}
			}
		setTimeout( function()
			{
			getSBData(PassedRequest, rURL, rSeconds, rTheme);
			}
		,(rSeconds * 1000));
		}
	}



// INITIALIZE POST FORM
function InitializePF (HomeDirPath, ArgItemID, ArgIDType, ArgBoA)
	{
	//document.write(ArgItemID);
	//var BaseDir = HomeDirPath;
	//var ItemID = ArgItemID;
	//var IDType = ArgIDType;
	//var BoA = ArgBoA;
PFRequest = getXMLHttpRequestObject();
	getPFData(HomeDirPath, ArgItemID, ArgIDType, ArgBoA);
	}


// GET POST FORM DATA
function getPFData(HomeDirPath, ArgItemID, ArgIDType, ArgBoA) 
	{
	//document.write(ArgItemID);
	//var ThisID = ArgItemID;
	//var ThisType = ArgIDType;
	//var BoA = ArgBoA;
	if (PFRequest.readyState == 4 || PFRequest.readyState == 0) 
		{
		// EDITING A POST
		if (ArgIDType == 'pid')
			{
			var urlIDType = 'pid';
			var IsAQuote = "ignore";
			var IsAQuoteURL = '';
			var WhatToChange = 'POST' + ArgItemID;
			}
		// QUOTING A POST
		else if (ArgIDType == 'pidq')
			{
			var urlIDType = 'pid';
			var IsAQuoteURL = "&quote=1";
			var IsAQuote = '1';
			var WhatToChange = 'POST' + ArgItemID;
			}
		// ADDING A POST
		else
			{
			var urlIDType = 'id';
			var IsAQuote = "ignore";
			var IsAQuoteURL = '';
			var WhatToChange = 'Post_Form_Area';
			}
		PFRequest.open("GET", HomeDirPath + '/ajaxdata.php?type=postform&' + urlIDType + '=' + ArgItemID + IsAQuoteURL, true);
		PFRequest.onreadystatechange = function ()
			{
			handlePFData(WhatToChange, IsAQuote, 'ignore', ArgBoA);
			}
		PFRequest.send(null);
		}			
	}


// HANDLE THE POST FORM DATA
function handlePFData(DivToChange, IsQuoted, Collapse, BoA) 
	{
	if (PFRequest.readyState == 4) 
		{
		var PostFormArea = document.getElementById(DivToChange);
		if (Collapse != 'ignore')
			{
			//document.write('test');
			var PostItem = document.getElementById('PostFormSurround');
			PostItem.innerHTML = '';
			}
		if (IsQuoted != 'ignore')
			{
			if (BoA == '0')
				{
				PostFormArea.innerHTML = PFRequest.responseText + PostFormArea.innerHTML;
				}
			else
				{
				PostFormArea.innerHTML += PFRequest.responseText;
				}
			}
		else
			{
		//document.write(DivToChange + "---" + IsQuoted + "---" + Collapse);
			PostFormArea.innerHTML = PFRequest.responseText;
			}
		}
	}


function ProcessPFData (BaseDir, PassItemID, ArgIDType, IsQuoteProcess)
	{
	//var ThisID = PassItemID;
	//var ThisType = ArgIDType;
	if (IsQuoteProcess != '1')
		{
		var IsQuoteProcess = '0';
		}
	//document.write(BaseDir + "---" + ThisID + "---" + ThisType);
	if (PFRequest.readyState == 4 || PFRequest.readyState == 0) 
		{
		if (ArgIDType == 'pid')
			{
			var urlIDType = 'pid';
			var CollapseID = 'ignore';
			var WhatToChange = 'POST' + PassItemID;
			}
		else if (ArgIDType == 'pidq')
			{
			var urlIDType = 'id';
			var CollapseID = 'ignore';
			var WhatToChange = 'POST' + PassItemID;
			}
		// USED WHEN HANDLING ADDING A QUOTED POST
		else if (IsQuoteProcess == '1')
			{
			//document.write(ArgIDType);
			var urlIDType = 'id';
			var CollapseID = '1';
			var WhatToChange = 'Post_Form_Area';
			}
		else
			{
			var urlIDType = 'id';
			var CollapseID = 'ignore';
			var WhatToChange = 'Post_Form_Area';
			}
		PFRequest.open("POST", BaseDir + '/ajaxdata.php?type=postform&' + urlIDType + '=' + PassItemID, true);
		PFRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		var PostForm = document.getElementById('PostForm');
		var PostQuery = MakeQueryString(PostForm);
		PFRequest.send(PostQuery);
		PFRequest.onreadystatechange = function()
			{
			handlePFData(WhatToChange, 'ignore', CollapseID);
			}
		}
	}



// INITIALIZE REFRESH
function InitializeRefresh (rURL, rSeconds, rDiv)
	{
	var RefreshRequest = getXMLHttpRequestObject();
	setTimeout( function()
		{
		getRefreshData(RefreshRequest, rURL, rSeconds, rDiv);
		}
	,(rSeconds * 1000));
	return true;
	}


// GET POST FORM DATA
function getRefreshData(PassedRequest, rURL, rSeconds, rDiv) 
	{
	//if (PassedRequest.readyState == 4 || PassedRequest.readyState == 0) // || RefreshRequest.readyState == 0
		//{
		//delete PassedRequest;
		PassedRequest.open("GET", rURL, true);
		PassedRequest.onreadystatechange = function ()
			{
			if (PassedRequest.readyState == 4 && PassedRequest.status == 200)
				{
				handleRefreshData(PassedRequest, rURL, rSeconds, rDiv);
				}
			} 
		PassedRequest.send(null);
		return true;
		//}	
	}


// HANDLE REFRESH
function handleRefreshData(PassedRequest, rURL, rSeconds, rDiv) 
	{
	//if (PassedRequest.readyState == 4)// was nothing but then tried adding ( || RefreshRequest.readyState == 0) for a few mins
		//{
		var repeat = true;
		if (rDiv == 'NewMessage')
			{
			if (PassedRequest.responseText == '1')
				{
				opacity('InboxButton','0','100','3000','1');
				if (typeof(sURL) != "undefined")
					{
					document.getElementById(rDiv).innerHTML = "<embed src='" + sURL + "' hidden='true' autostart='true' loop='false'>";
					}
				if (typeof(newMessageNotification) != "undefined" && typeof(messengerURL) != "undefined")
					{
					var r = confirm(newMessageNotification);
					if (r)
						{
						window.location.href = messengerURL;
						}
					}
				repeat = false;
				}
			}
		else
			{
			if (PassedRequest.responseText != 'undefined' && PassedRequest.responseText != '')
				{
				document.getElementById(rDiv).innerHTML = PassedRequest.responseText;
				}
			}
		if (rDiv == 'ChatRoomMessages' && document.forms['chat_input_form'].elements['lock_scroll_bar'].checked)
			{
			document.getElementById('MessageContainer').scrollTop = document.getElementById('MessageContainer').scrollHeight;
			}
		if (repeat)
			{
			RefreshTime = setTimeout( function()
				{
				getRefreshData(PassedRequest, rURL, rSeconds, rDiv);
				}
			,(rSeconds * 1000));
			}
		//}
	}


// LOAD A URL BUT DO NOTHING WITH THE DATA
function loadURL (rURL, thanksMessage) 
	{
	var uRequest = getXMLHttpRequestObject();
	if (uRequest.readyState == 4 || uRequest.readyState == 0) 
		{
		uRequest.open("GET", rURL, true);
		uRequest.send(null);
		alert(thanksMessage);
		}			
	}


// CHANGE THE RADIO STATION
function UpdateDiv(rURL, rDiv) 
	{
	var RadRequest = getXMLHttpRequestObject();
	//var RefreshURL = rURL;
	//var DivElement = rDiv;
	if (RadRequest.readyState == 4 || RadRequest.readyState == 0) 
		{
		RadRequest.open("GET", rURL, true);
		RadRequest.onreadystatechange = function ()
			{
			handleUpdateDiv(RadRequest, rURL, rDiv);
			} 
		RadRequest.send(null);
		}			
	}


// HANDLE RADIO CHANGE
function handleUpdateDiv(PassedRequest, rURL, rDiv) 
	{
	//var RefreshRequest = PassedRequest;
	//var RefreshURL = rURL;
	//var DivElement = rDiv;
	if (PassedRequest.readyState == 4) 
		{
		var DivName = document.getElementById(rDiv);
		ResponseData = PassedRequest.responseText;
		//if (ResponseData != '') // was commented out because occasionally it should be blank data like with the updateversionfield
			//{
			DivName.innerHTML = ResponseData;
			//}
		if (rDiv == 'ChatRoomMessages' && document.forms['chat_input_form'].elements['lock_scroll_bar'].checked)
			{
			document.getElementById('MessageContainer').scrollTop = document.getElementById('MessageContainer').scrollHeight;
			}
		//document.write(ResponseData);
		}
	}


function changeCalendar (baseDir, type, year, month)
	{
	if (type == 1)
		{
		divName = "SectionCalendar";
		}
	else
		{
		divName = "AllSectionCalendar";
		}
	//alert("year:"+year+ " & month="+month);
	UpdateDiv(baseDir + "/ajaxdata.php?type=minicalendar&ctype=" + type + "&year=" + year + "&month=" + month, divName);
	}



function ChangeRadio (rURL)
	{
	var checkValue = document.forms['RADIOFORM']['station'].value;
	if (checkValue == 'add')
		{
		window.location.href = rURL + '/radio.php?action=form';
		}
	elseif (checkValue != 'undefined')
		{
		UpdateDiv(rURL + '/ajaxdata.php?type=radio&id=' + id,'Radio');
		}
	}



function addToCB (BaseDir)
	{
	var CBRequest = getXMLHttpRequestObject();
	CBRequest.open("POST", BaseDir + '/ajaxdata.php?type=addtocb', true);
	CBRequest.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('CBForm');
	var PostQuery = MakeQueryString(FormObject);
	CBRequest.send(PostQuery);
	CBRequest.onreadystatechange = function()
		{
		//handlePFData(WhatToChange, 'ignore', CollapseID);
	UpdateDiv(BaseDir + '/ajaxdata.php?type=chatterbox', 'ChatterBox');
	document.forms['cboxform']['comments'].value = '';
		}
	}


function updateMyStatus (BaseDir, resSec, resText)
	{
	var Request = getXMLHttpRequestObject();
	Request.open("POST", BaseDir + '/ajaxdata.php?type=my_status', true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('MyStatusForm');
	var PostQuery = MakeQueryString(FormObject);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			var myStatusText = document.forms['mystatus_form']['mystatus_text'].value;
			document.forms['mystatus_form']['mystatus_text'].value = resText;

			setTimeout( function()
				{
				document.forms['mystatus_form']['mystatus_text'].value = myStatusText;
				document.forms['mystatus_form']['mystatus_text'].blur();
				//UpdateDiv(BaseDir + '/ajaxdata.php?type=my_status', 'MyStatus');
				}
			,(resSec * 1000));
			}
		}
	}


function updateItemTags (BaseDir, resSec, resText, itemID)
	{
	var Request = getXMLHttpRequestObject();
	Request.open("POST", BaseDir + '/ajaxdata.php?type=item_tags&id=' + itemID, true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('ItemTagsForm');
	var PostQuery = MakeQueryString(FormObject);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			var itemTags = document.forms['item_tags_form']['tags'].value;
			document.forms['item_tags_form']['tags'].value = resText;
			setTimeout( function()
				{
				document.forms['item_tags_form']['tags'].value = itemTags;
				document.forms['item_tags_form']['tags'].blur();
				}
			,(resSec * 1000));
			}
		}
	}


function updateAdTags (BaseDir, resSec, resText, adID)
	{
	var Request = getXMLHttpRequestObject();
	Request.open("POST", BaseDir + '/ajaxdata.php?type=ad_tags&id=' + adID, true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('AdTagsForm');
	var PostQuery = MakeQueryString(FormObject);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			var adTags = document.forms['ad_tags_form']['tags_' + adID].value;
			document.forms['ad_tags_form']['tags_' + adID].value = resText;
			setTimeout( function()
				{
				document.forms['ad_tags_form']['tags_' + adID].value = adTags;
				document.forms['ad_tags_form']['tags_' + adID].blur();
				}
			,(resSec * 1000));
			}
		}
	}


function removeAdminNotice (baseDir, lineID)
	{
	var fetchURL = baseDir + "/ajaxdata.php?type=remove_admin_notice&lid=" + lineID;
//alert("TEST");
	var Request = getXMLHttpRequestObject();
	Request.open("GET", fetchURL, true);
	Request.send(null);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			var d = document.getElementById('AdminPane');
			var rdata = Request.responseText;
			d.innerHTML = rdata;
			}
		}
	}


function voteOnPoll (BaseDir, pollID)
	{
	var fetchURL = BaseDir + "/ajaxdata.php?type=vote_on_poll&id=" + pollID;
	var Request = getXMLHttpRequestObject();
	Request.open("POST", fetchURL, true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('Poll' + pollID + 'Form');
	var PostQuery = create_request_string(FormObject);//MakeQueryString(FormObject);
	//alert(PostQuery);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			UpdateDiv(fetchURL, "POLL" + pollID);
			}
		}
	}


function reportItem (BaseDir, itemID, thanksMessage)
	{
	var fetchURL = BaseDir + "/ajaxdata.php?type=report_item&id=" + itemID;
	var Request = getXMLHttpRequestObject();
	Request.open("POST", fetchURL, true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('ReportItemForm');
	var PostQuery = MakeQueryString(FormObject);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			alert(thanksMessage);
			}
		}
	}


function updateManageAccessList (BaseDir, type, key, module, resSec)
	{
	var divName = 'ManageAccessListButtonArea_' + type + '_' + key + '_' + module;

	var resultName = 'ManageAccessListResultArea_' + type + '_' + key + '_' + module;
	var formName = 'module_access_form_' + module;
	if (module != 'undefined' && module != '')
		{
		fmodule = "acc_" + module;
		}
	else
		{
		fmodule = 'acc';
		}

	// SHOW THE BUTTON
	if (document.forms[formName][fmodule].value == 0 && module != 'override')
		{
		UpdateDiv(BaseDir + '/ajaxdata.php?type=manage_access_list_button&ltype=' + type + '&key=' + key + '&module=' + module, divName);
		}
	else if (module != 'override')
		{
		document.getElementById(divName).innerHTML = '';
		}
	// SAVE THE SETTING
	UpdateDiv(BaseDir + '/ajaxdata.php?type=manage_access_list_save&ltype=' + type + '&key=' + key + '&module=' + module + '&value=' + document.forms[formName][fmodule].value, resultName);
	setTimeout( function()
		{
		document.getElementById(resultName).innerHTML = '';
		}
	,(resSec * 1000));
	}


function updateVersionField (BaseDir, sectionID)
	{
	var projectID = document.forms['submitform']['issue_project'].value;
	UpdateDiv(BaseDir + '/ajaxdata.php?type=version_field&section=' + sectionID + '&project=' + projectID, 'ProjectVersionField');
	}


function updateIssueField (BaseDir, ItemID, IssueField, resSec)
	{
	var Request = getXMLHttpRequestObject();
	Request.open("POST", BaseDir + '/ajaxdata.php?type=issue_update_field&id=' + ItemID + '&field=' + IssueField, true);
	Request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
	var FormObject = document.getElementById('IssueUpdateForm');
	var PostQuery = MakeQueryString(FormObject);
	Request.send(PostQuery);
	Request.onreadystatechange = function()
		{
		if (Request.readyState == 4) 
			{
			UpdateDiv(BaseDir + '/ajaxdata.php?type=issue_update_message&result=1', 'IssueStatusNotification');
			setTimeout( function()
				{
				UpdateDiv(BaseDir + '/ajaxdata.php?type=issue_update_message&result=0', 'IssueStatusNotification');
				}
			,(resSec * 1000));
			}
		}
	}


function MakeQueryString(formname)
	{
	var str = "";
	var element, i = 0;
	while ((element = formname.elements[i++]) != null)
		{
        	var qc = MakeQueryElement(element);
       		if (qc != "") str += "&" + qc;
		}
	return str.substring(1);
	}


function MakeQueryElement(input) {
    if (!input.name || input.disabled)
        return "";

    var n = urlencode(input.name);

    switch (input.type) {
    case "text":
    case "password":
    case "submit":
    case "hidden":
        return n + "=" + urlencode(input.value);
    case "textarea":
        // normalize line breaks as CR LF pairs as per RFC 1866
        

	// OLD METHOD ---> var v = input.value.split(/\r\n|\r|\n/).join("\r\n");
	// RECOMMENDED FIX --->

	var v = input.value.replace(/(\r\n)|\r|\n/g, "\r\n");

        return n + "=" + urlencode(v);
    case "checkbox":
    case "radio":
        if (!input.checked)
            return "";
        var v = getRealValue(input);
        if (v === null) v = "on";
        return n + "=" + urlencode(v);
    case "select-one":
    case "select-multiple":
        var nvp = [];
        var opt, i = 0;
        while ((opt = input.options[i++]) != null) {
            if (opt.selected) {
                var v = getRealValue(opt);
                if (v === null) v = opt.text;
                // older versions of IE do not support Array.push
                nvp[nvp.length] = n + "=" + urlencode(v);
            }
        }
        return nvp.join("&");
    default:
        // input types reset, button, image, and file not implemented
        return "";
    }
}

function urlencode(str)
	{
	var v;
	try { v = encodeURIComponent(str); } catch (e) { v = escape(str); }
	return v.replace(/%20/g,"+");
	}

function getRealValue(input)
	{
	var attr = input.getAttributeNode("value");
	return (attr && attr.specified) ? input.getAttribute("value") : null;
	}


function create_request_string(theForm)
{
var reqStr = "";

for(i=0; i < theForm.elements.length; i++)
{
isFormObject = false;

switch (theForm.elements[i].tagName)
{
case "INPUT":

switch (theForm.elements[i].type)
{
case "text":
case "hidden":
reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value);
isFormObject = true;
break;

case "checkbox":
if (theForm.elements[i].checked)
{
reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value;
}else{
reqStr += theForm.elements[i].name + "=";
}
isFormObject = true;
break;

case "radio":
if (theForm.elements[i].checked)
{
reqStr += theForm.elements[i].name + "=" + theForm.elements[i].value;
isFormObject = true;
}
}
break;

case "TEXTAREA":

reqStr += theForm.elements[i].name + "=" + encodeURIComponent(theForm.elements[i].value);
isFormObject = true;
break;

case "SELECT":
var sel = theForm.elements[i];
reqStr += sel.name + "=" + sel.options[sel.selectedIndex].value;
isFormObject = true;
break;
}

if ((isFormObject) && ((i+1)!= theForm.elements.length))
{
reqStr += "&";
}

}

return reqStr;
} 

