// #### Pop-up Calendar stuff ####

function showCalendar(calendar,date) {
	if (document.getElementById(calendar).style.visibility == "hidden") {
		getCalendar(calendar,date);
		document.getElementById(calendar).style.visibility="visible";
	} else {
		document.getElementById(calendar).style.visibility="hidden";
	}
}

function hideCalendar(calendar) {
	document.getElementById(calendar).style.visibility="hidden";
}	


// #### Event Submission Stuff #### 	

function allDayToggle(dateNum) {
	var allDayEvent = document.getElementById('allDayEvent'+dateNum);
	var startDate = document.getElementById('startDate'+dateNum);
	var endDate = document.getElementById('endDate'+dateNum);
	var startHour = document.getElementById('startHour'+dateNum);
	var endHour = document.getElementById('endHour'+dateNum);
	var startMin = document.getElementById('startMin'+dateNum);
	var endMin = document.getElementById('endMin'+dateNum);
	var startDayHalf = document.getElementById('startDayHalf'+dateNum);
	var endDayHalf = document.getElementById('endDayHalf'+dateNum);
	//var recurringEvent = document.getElementById('recurringEvent');
	
	if (allDayEvent.checked) {
		startDate.disabled = false;
		startHour.disabled = true;
		startMin.disabled = true;
		startDayHalf.disabled = true;
		endDate.disabled = true;
		endHour.disabled = true;
		endMin.disabled = true;
		endDayHalf.disabled = true;
		/*if(dateNum < 3){
		    recurringEvent.disabled = true;
		}*/
	} else {
		startDate.style.display="";
		startDate.disabled = false;
		startHour.style.display="";
		startHour.disabled = false;
		startMin.style.display="";
		startMin.disabled = false;
		startDayHalf.style.display="";
		startDayHalf.disabled = false;
		endDate.style.display="";
		endDate.disabled = false;
		endHour.style.display="";
		endHour.disabled = false;
		endMin.style.display="";
		endMin.disabled = false;
		endDayHalf.style.display="";
		endDayHalf.disabled = false;
		/*if(dateNum < 3) {
		    recurringEvent.disabled = false;
		}*/
	}
}	

function showRecurring(currNum) {
	var recurringEvent = document.getElementById('recurringEvent');
    
	if (recurringEvent.checked) 
	{
	    // show recurring checkbox
		document.getElementById('masterRecurring').style.display="";
		// show repeat interval (daily, weekly, monthly)
		document.getElementById('recurringDiv').style.display="";
		// figure out what to display
		var idx = document.eventForm.repeatInterval.selectedIndex;
	    var recurType = document.eventForm.repeatInterval.options[idx].value;
	    if(recurType == 'Daily')
	    {
	        document.getElementById('recurringDaily').style.display="";
		    document.getElementById('recurringWeekly').style.display="none";
		    document.getElementById('recurringMonthly').style.display="none";
		    document.getElementById('recurringMonthly2').style.display="none";
		}
		else if(recurType == 'Weekly')
		{
		    document.getElementById('recurringDaily').style.display="none";
		    document.getElementById('recurringWeekly').style.display="";
		    document.getElementById('recurringMonthly').style.display="none";
		    document.getElementById('recurringMonthly2').style.display="none";
		}
		else if(recurType == 'Monthly')
		{
		    document.getElementById('recurringDaily').style.display="none";
		    document.getElementById('recurringWeekly').style.display="none";
		    document.getElementById('recurringMonthly').style.display="";
		    document.getElementById('recurringMonthly2').style.display="none";
		}
		else if(recurType == 'Monthly2')
		{
		    document.getElementById('recurringDaily').style.display="none";
		    document.getElementById('recurringWeekly').style.display="none";
		    document.getElementById('recurringMonthly').style.display="none";
		    document.getElementById('recurringMonthly2').style.display="";
		}
		// hide add another date.
		document.getElementById('single').style.display="none";
		
		document.eventForm.isRecurring.value="true";
	} 
	else 
	{
		document.getElementById('masterRecurring').style.display="none";
		document.getElementById('recurringDiv').style.display="none";
		document.getElementById('recurringDaily').style.display="none";
		document.getElementById('recurringWeekly').style.display="none";
		document.getElementById('recurringMonthly').style.display="none";
		document.getElementById('recurringMonthly2').style.display="none";
		document.getElementById('single').style.display="";
		document.eventForm.isRecurring.value="false";
	}
}

function showRecurringCheckBox(currNum)
{
  if (currNum > 1)
  {
      document.getElementById('recurringEvent').style.display="none";
  }
}

function showAddADate()
{
    var recurringEvent = document.getElementById('recurringEvent');
    if((recurringEvent != null) && (recurringEvent.checked))
    {
        document.getElementById('single').style.display="none";
    }
    else if(recurringEvent != null)
    {
        document.getElementById('single').style.display="";
    }
}

function showRecurringFields() {
	var idx = document.eventForm.repeatInterval.selectedIndex;
	var recurType = document.eventForm.repeatInterval.options[idx].value;

	if (recurType == 'Daily') {
		showDaily();
	} else if (recurType == 'Weekly') {
		showWeekly();
	} else if (recurType == 'Monthly') {
		showMonthly();
	} else if (recurType == 'Monthly2') {
		showMonthly2();
	}
}

function showDaily() {
	document.getElementById('recurringDaily').style.display="";
	//document.getElementById('recurringWeekday').style.display="none";
	document.getElementById('recurringWeekly').style.display="none";
	document.getElementById('recurringMonthly').style.display="none";
	document.getElementById('recurringMonthly2').style.display="none";
	//document.getElementById('recurringYearly').style.display="none";
}

function showWeekday() {
	//document.getElementById('recurringWeekday').style.display="";
	document.getElementById('recurringDaily').style.display="none";
	document.getElementById('recurringWeekly').style.display="none";
	document.getElementById('recurringMonthly').style.display="none";
	document.getElementById('recurringMonthly2').style.display="none";
	//document.getElementById('recurringYearly').style.display="none"
}

function showWeekly() {
	document.getElementById('recurringWeekly').style.display="";
	document.getElementById('recurringDaily').style.display="none";
	//document.getElementById('recurringWeekday').style.display="none";
	document.getElementById('recurringMonthly').style.display="none";
	document.getElementById('recurringMonthly2').style.display="none";
	//document.getElementById('recurringYearly').style.display="none";
}

function showMonthly() {
	document.getElementById('recurringMonthly').style.display="";
	document.getElementById('recurringDaily').style.display="none";
	//document.getElementById('recurringWeekday').style.display="none";
	document.getElementById('recurringWeekly').style.display="none";
	document.getElementById('recurringMonthly2').style.display="none";
	//document.getElementById('recurringYearly').style.display="none";
}

function showMonthly2() {
	document.getElementById('recurringMonthly2').style.display="";
	document.getElementById('recurringMonthly').style.display="none";
	document.getElementById('recurringDaily').style.display="none";
	//document.getElementById('recurringWeekday').style.display="none";
	document.getElementById('recurringWeekly').style.display="none";
	//document.getElementById('recurringYearly').style.display="none";
}

/*function showYearly() {
	document.getElementById('recurringYearly').style.display="";
	document.getElementById('recurringDaily').style.display="none";
	//document.getElementById('recurringWeekday').style.display="none";
	document.getElementById('recurringWeekly').style.display="none";
	document.getElementById('recurringMonthly').style.display="none";
}*/

function setVenue(siteId) {
	venueDisplay(siteId);
	hideVenueEntry();
	document.getElementById("venueDisplay").style.display = '';
	document.eventForm.eventSiteId.value = siteId;
	document.eventForm.sitePopulated.value = "true";
}

function removeVenue() {
	if (document.eventForm.siteChecked) {
		document.getElementById("dupEventSearchResults").innerHTML = "";
		for (var i = 0; i < document.eventForm.siteChecked.length; i++) {
			document.eventForm.siteChecked[i].checked = false;
		}
	}

	document.eventForm.eventSiteId.value = "0";
	document.eventForm.sitePopulated.value = "false";
	document.getElementById("venueSearch").style.display = '';
	hideVenueEntry();
	document.getElementById("venueDisplay").style.display = 'none';
	document.eventForm.eventLocation.focus();
}

function showVenueEntry() {
	document.eventForm.addVenueButton.value = "Add Venue";
	document.getElementById("dupEventSearchResults").innerHTML = "";
	document.eventForm.eventSiteId.value = "0";
	document.eventForm.sitePopulated.value = "true";
	document.getElementById("venueSearch").style.display = 'none';
	document.getElementById("venueResults").innerHTML = "";
	document.getElementById("venueDisplay").style.display = 'none';
	document.getElementById("venueEntry").style.display = '';
	document.eventForm.siteTitle.value = document.eventForm.eventLocation.value;
	document.eventForm.siteAddress.value = "";
	document.eventForm.siteAddress2.value = "";
	document.eventForm.siteCity.value = "";
	document.eventForm.siteState.value = "";
	document.eventForm.siteZip.value = "";
	document.eventForm.siteTelephone.value = "";
	document.eventForm.siteTitle.focus();
}

function showEditVenue(aId, aTitle, aAddress, aAddress2, aCity, aState, aZip, aPhone) {
	document.eventForm.addVenueButton.value = "Change Venue";
	document.getElementById("dupEventSearchResults").innerHTML = "";
	document.eventForm.eventSiteId.value = aId;
	document.eventForm.sitePopulated.value = "true";
	document.getElementById("venueSearch").style.display = 'none';
	document.getElementById("venueResults").innerHTML = "";
	document.getElementById("venueDisplay").style.display = 'none';
	document.getElementById("venueEntry").style.display = '';
	document.eventForm.siteTitle.value = aTitle;
	document.eventForm.siteAddress.value = aAddress;
	document.eventForm.siteAddress2.value = aAddress2;
	document.eventForm.siteCity.value = aCity;
	document.eventForm.siteState.value = aState;
	document.eventForm.siteZip.value = aZip;
	document.eventForm.siteTelephone.value = aPhone;
	document.eventForm.siteTitle.focus();
}

function hideVenueSearch() {
	document.getElementById("venueSearch").style.display = 'none';
}

function hideVenueEntry() {
	document.getElementById("venueEntry").style.display = 'none';
}

function useVenue() {
	for (var i = 0; i < document.eventForm.site.length - 1; i++) {
		if (document.eventForm.site[i].checked) {
			document.getElementById("venueSearch").style.display = 'none';
			document.getElementById("venueResults").innerHTML = "";
			break;
		}
	}
	
	document.eventForm.siteLocation.focus();
}

function blankVenueEntryFields() {
	document.eventForm.siteTitle.value = '';
	document.eventForm.siteAddress.value = '';
	document.eventForm.siteAddress2.value = '';
	document.eventForm.siteCity.value = '';
	document.eventForm.siteState.value = '';
	document.eventForm.siteZip.value = '';
	document.eventForm.siteTelephone.value = '';
}

function searchNewlyAddedVenue() {
	hideVenueEntry();
	document.eventForm.eventLocation.value = document.eventForm.siteTitle.value;
	document.getElementById("venueSearch").style.display = '';
	document.eventForm.searchVenues.click();
}

function getSiteAdminQueryString(section) {
	var queryString = 'spm?admin=site&siteId=-1' + section;
	queryString += "&title=" + escape(document.eventForm.siteTitle.value);
	queryString += "&address=" + escape(document.eventForm.siteAddress.value);
	queryString += "&address2=" + escape(document.eventForm.siteAddress2.value);
	queryString += "&city=" + escape(document.eventForm.siteCity.value);
	queryString += "&state=" + escape(document.eventForm.siteState.value);
	queryString += "&zip=" + escape(document.eventForm.siteZip.value);
	queryString += "&telephone=" + escape(document.eventForm.siteTelephone.value);

	return queryString;
}

function showWhen() {
	if (document.eventForm.when[0].checked) {
		document.getElementById('single').style.display="";
		document.getElementById('multiple').style.display="none";
	} else {
		document.getElementById('single').style.display="none";
		document.getElementById('multiple').style.display="";
	}
}

function venueSearch(startNum) {
	var venueKeywords = document.eventForm.eventLocation.value;
	if(venueKeywords==''){
		venueKeywords = "all:x";
	}
	var queryString = "/event_locations.jsp?keywords=" + venueKeywords.replace(/[$&+,/;=?@<>#%|^~`]/g,'') + "&sNum=" + startNum;
	xmlHttpVenueSearch = null;

	try {
		// branch for native XMLHttpRequest object
    	if (window.XMLHttpRequest) {
	        xmlHttpVenueSearch = new XMLHttpRequest();
    	// branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
    	    xmlHttpVenueSearch = new ActiveXObject("Microsoft.XMLHTTP");
    	}
   	    xmlHttpVenueSearch.onreadystatechange = processVenueSearch;
       	xmlHttpVenueSearch.open("GET", queryString, true);
        xmlHttpVenueSearch.send("");
	} catch (e) {
		alert('Sorry, your browser does not support this functionality');
	}
}

function processVenueSearch() {
	// if the readyState code is 4 (Completed)  
	// and http status is 200 (OK) we go ahead and get the responseText  
	// other readyState codes:  
	// 0=Uninitialised 1=Loading 2=Loaded 3=Interactive
	//alert(xmlHttpVenueSearch.readyState);

	//if (xmlHttpVenueSearch.readyState == 1) {
		//"<div style='padding:10px 0 10px 115px; text-align:left' >Searching...</div>";
	//}

    if (xmlHttpVenueSearch.readyState == 4) {
		try {
			progress_stop();
	    	if (xmlHttpVenueSearch.status == 200) {
				document.getElementById("venueResults").innerHTML = xmlHttpVenueSearch.responseText;
			} else {
				document.getElementById("venueResults").innerHTML = "";
			}
		} catch (err) {
			alert(err);
		}
    }
}

function venueDisplay(siteId) {

	var queryString = "/event_venue_display.jsp?siteId=" + siteId;
	xmlHttpVenueDisplay = null;

	try {
		// branch for native XMLHttpRequest object
    	if (window.XMLHttpRequest) {
	        xmlHttpVenueDisplay = new XMLHttpRequest();
    	// branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
    	    xmlHttpVenueDisplay = new ActiveXObject("Microsoft.XMLHTTP");
    	}
   	    xmlHttpVenueDisplay.onreadystatechange = processVenueDisplay;
       	xmlHttpVenueDisplay.open("GET", queryString, true);
        xmlHttpVenueDisplay.send("");
	} catch (e) {
		alert('Sorry, your browser does not support this functionality');
	}
}

function processVenueDisplay() {
	// if the readyState code is 4 (Completed)  
	// and http status is 200 (OK) we go ahead and get the responseText  
	// other readyState codes:  
	// 0=Uninitialised 1=Loading 2=Loaded 3=Interactive
	//alert(xmlHttpVenueDisplay.readyState);

    if (xmlHttpVenueDisplay.readyState == 4) {
		try {
	    	if (xmlHttpVenueDisplay.status == 200) {
				document.getElementById("venueDisplay").innerHTML = xmlHttpVenueDisplay.responseText;
			} else {
				document.getElementById("venueDisplay").innerHTML = "";
			}
		} catch (err) {
			alert(err);
		}
    }
}

function addNewVenue() {

	var queryString = "/event_addlocation.jsp?key=93ianmf93nveina39hg";
	queryString += "&id=" + document.eventForm.eventSiteId.value;
	queryString += "&title=" + escape(document.eventForm.siteTitle.value);
	queryString += "&address=" + escape(document.eventForm.siteAddress.value);
	queryString += "&address2=" + escape(document.eventForm.siteAddress2.value);
	queryString += "&city=" + escape(document.eventForm.siteCity.value);
	queryString += "&state=" + escape(document.eventForm.siteState.value);
	queryString += "&zip=" + escape(document.eventForm.siteZip.value);
	queryString += "&telephone=" + escape(document.eventForm.siteTelephone.value);

	xmlHttpAddNewVenue = null;

	//alert(queryString);
	try {
		// branch for native XMLHttpRequest object
    	if (window.XMLHttpRequest) {
	        xmlHttpAddNewVenue = new XMLHttpRequest();
    	// branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
    	    xmlHttpAddNewVenue = new ActiveXObject("Microsoft.XMLHTTP");
    	}
   	    xmlHttpAddNewVenue.onreadystatechange = processAddNewVenue;
       	xmlHttpAddNewVenue.open("GET", queryString, true);
        xmlHttpAddNewVenue.send("");
	} catch (e) {
		alert('Sorry, your browser does not support this functionality');
	}
}

function processAddNewVenue() {
	// if the readyState code is 4 (Completed)  
	// and http status is 200 (OK) we go ahead and get the responseText  
	// other readyState codes:  
	// 0=Uninitialised 1=Loading 2=Loaded 3=Interactive
	//alert(xmlHttpAddNewVenue.readyState);

    if (xmlHttpAddNewVenue.readyState == 4) {
		try {
	    	if (xmlHttpAddNewVenue.status == 200) {
	    		eval(xmlHttpAddNewVenue.responseText);
			} else {
				document.getElementById("venueDisplay").innerHTML = "";
			}
		} catch (err) {
			alert(err);
		}
    }
}

function changeRecurrence() {
	if (document.eventForm.repeatInterval.options[document.eventForm.repeatInterval.selectedIndex].text == "Daily") {
		showDaily();
	}
	else if (document.eventForm.repeatInterval.options[document.eventForm.repeatInterval.selectedIndex].text == "Each Weekday") {
		showWeekday();
	}
	else if (document.eventForm.repeatInterval.options[document.eventForm.repeatInterval.selectedIndex].text == "Weekly") {
		showWeekly();
	}
	else if (document.eventForm.repeatInterval.options[document.eventForm.repeatInterval.selectedIndex].text == "Monthly") {
		showMonthly();
	}
	/*else if (document.eventForm.repeatInterval.options[document.eventForm.repeatInterval.selectedIndex].text == "Yearly") {
		showYearly();
	}*/		
}

function removeEvent(box) {
    var i;
    var notSelectedArray = new Array();
    var notSelectedNum;
    
    // find all of the categories that aren't scheduled for removal
    for(i=0, notSelectedNum = 0; i<box.options.length; i++){
        if( ( ! box.options[i].selected) && (box.options[i].value != "") ){
            notSelectedArray[notSelectedNum] = box[i];
            notSelectedNum++;
        }
    }
    // copy the remaining categories back
    box.length = 0;
    for(i=0; i<notSelectedNum; i++){
        box[i] = notSelectedArray[i];
    }
}

function copyEvent(fbox, tbox) 
{
    var arrFbox = new Array();
    var arrTbox = new Array();
    var arrLookup = new Array();
    var i;
    var isDup = false;
    var fLength = 0;
    var tLength = 0;

    for(i=0; i<tbox.options.length; i++) 
    {
        arrLookup[tbox.options[i].text] = tbox.options[i].value;
        arrTbox[i] = tbox.options[i].text;
    }
    
    tLength = arrTbox.length; // number of categories already in event
    
    for(i=0; i<fbox.options.length; i++) 
    {
        arrLookup[fbox.options[i].text] = fbox.options[i].value;
        
        if(fbox.options[i].selected && fbox.options[i].value != "") 
        {
            // check for duplicates
            var j;
            var text = fbox.options[i].text;
            for(j=0; j<tbox.length; j++)
            {
                if (text == tbox.options[j].text) 
                {
                    isDup = true;
                }
                // check for trimmed version as well
                text = text.replace(/^\s*|\s*$/g, "");
                if (text == tbox.options[j].text) 
                {
                    isDup = true;
                }
            }        
            // only add the category if it does not already exist
            if( ! isDup ) 
            {
                arrTbox[tLength] = fbox.options[i].text;
                tLength++;
            }
            // already had the chance to copy event, reset isDup
            isDup = false;
        } 
        else 
        {
              arrFbox[fLength] = fbox.options[i].text;
              fLength++;
          }
    }
     
     // move selected items into Categories for Event
     tbox.length = 0;
     var c;
     for(c=0; c<arrTbox.length; c++) 
     {
         // trim lead and end whitespace
         var category = arrTbox[c];
         category = category.replace(/^\s*|\s*$/g, "");
         
     	 var no = new Option();
     	 no.value = arrLookup[arrTbox[c]];
     	 no.text = category;
     	 tbox[c] = no;
     }
}



// PickList II script (aka Menu Swapper)- By Phil Webb (http://www.philwebb.com)
// Visit JavaScript Kit (http://www.javascriptkit.com) for this JavaScript and 100s more
// Please keep this notice intact

function move(fbox, tbox) {
     var arrFbox = new Array();
     var arrTbox = new Array();
     var arrLookup = new Array();
     var i;
     var fLength = 0;
     var tLength = 0;
     var c;
     
     for(i=0; i<tbox.options.length; i++) 
     {
          arrLookup[tbox.options[i].text] = tbox.options[i].value;
          arrTbox[i] = tbox.options[i].text;
     }
     tLength = arrTbox.length;
     
     for(i=0; i<fbox.options.length; i++) 
     {
          arrLookup[fbox.options[i].text] = fbox.options[i].value;
          if(fbox.options[i].selected && fbox.options[i].value != "") 
          {
               arrTbox[tLength] = fbox.options[i].text;
               tLength++;
          } 
          else 
          {
               arrFbox[fLength] = fbox.options[i].text;
               fLength++;
          }
     }
     
     //arrFbox.sort();
     //arrTbox.sort();
     
     tbox.length = 0;
     fbox.length = 0;
     
     for(c=0; c<arrFbox.length; c++) 
     {
          var no = new Option();
          no.value = arrLookup[arrFbox[c]];
          no.text = arrFbox[c];
          fbox[c] = no;
     }
     for(c=0; c<arrTbox.length; c++) 
     {
     	var no = new Option();
     	no.value = arrLookup[arrTbox[c]];
     	no.text = arrTbox[c];
     	tbox[c] = no;
     }
}

function selectAll(list) {
    for(var i = 0; i < list.length; i++) {
        list[i].selected = true;
    }
}

function searchForDupEvents() {

	var eventTitle  = document.eventForm.eventTitle.value;
	var eventSiteId = document.eventForm.eventSiteId.value;
	var eventId = document.eventForm.eventId.value;
	
	//if (eventTitle.length == 0 || eventSiteId.length == 0 || eventSiteId == "0" ||
	if (eventTitle.length == 0 || eventSiteId.length == 0 || (eventId != "-1" && document.eventForm.origEventTitle.value == eventTitle)) {
		document.getElementById("dupEventSearchResults").innerHTML = "";
		return;
	}

	eventTitle = escape("\"" + eventTitle + "\"");	
	//var queryString = "/event_dupsearch.jsp?keywords=" + eventTitle + "&siteId=" + eventSiteId;
	var queryString = "/event_dupsearch.jsp?keywords=" + eventTitle;

	if (document.eventForm.eventId.value != "-1") {
		queryString += "&where=" + escape("events.id != " + document.eventForm.eventId.value);
	}

	xmlHttpDupEvents = null;

	try {
		// branch for native XMLHttpRequest object
    	if (window.XMLHttpRequest) {
	        xmlHttpDupEvents = new XMLHttpRequest();
    	// branch for IE/Windows ActiveX version
	    } else if (window.ActiveXObject) {
    	    xmlHttpDupEvents = new ActiveXObject("Microsoft.XMLHTTP");
    	}
   	    xmlHttpDupEvents.onreadystatechange = processDupEventSearch;
       	xmlHttpDupEvents.open("GET", queryString, true);
        xmlHttpDupEvents.send("");

	} catch (err) {
		alert('Sorry, your browser does not support this functionality');
	}
}

function processDupEventSearch() {
	// if the readyState code is 4 (Completed)  
	// and http status is 200 (OK) we go ahead and get the responseText  
	// other readyState codes:  
	// 0=Uninitialised 1=Loading 2=Loaded 3=Interactive
	//alert(xmlHttpDupEvents.readyState);

    if (xmlHttpDupEvents.readyState == 4) {
		try {
	    	if (xmlHttpDupEvents.status == 200) {
				document.getElementById("dupEventSearchResults").innerHTML = xmlHttpDupEvents.responseText;
				if (xmlHttpDupEvents.responseText.replace(/(^\s+|\s+$)/g, '').length > 0) {
					scrollTo(0,0);
				}
			} else {
				document.getElementById("dupEventSearchResults").innerHTML = "";
			}
		} catch (err) {
			alert(err);
		}
    }
}

var progressInterval = 375;
var progressAt = 4;
var progressTimer;

function progress_clear() {
	for (var i = 1; i <= 4; i++) {
		document.getElementById('progress' + i).style.visibility = 'hidden';
	}
	progressAt = 0;
}
function progress_update() {
	if (progressAt == 0) {
		document.getElementById('progress').style.display='block';
	}

	progressAt++;
	if (progressAt <= 4) {
		document.getElementById('progress' + progressAt).style.visibility = 'visible';
	} else {
		progress_clear();
	}

	progressTimer = setTimeout('progress_update()', progressInterval);
}
function progress_stop() {
	clearTimeout(progressTimer);
	progress_clear();
	document.getElementById('progress').style.display = 'none';
}

function progress_message(message, style) {
	document.write('<div id="progress" class="' + style + '" style="display:none; padding:5px 0 5px 115px; text-align:left float:left">' +
				   '<span id="progress1">' + message + '</span>' +
  				   '<span id="progress2">.</span>' +
				   '<span id="progress3">.</span>' +
				   '<span id="progress4">.</span>' +
				   '</div>');
}

function htmlSafeString(text){
	if (text.length == 0){
		return "";
	}

	text = text.replace(/&/g, "&amp;");
	text = text.replace(/</g, "&lt;");
	text = text.replace(/>/g, "&gt;");
	text = text.replace(/"/g, "&quot;");
	text = text.replace(/'/g, "&#039;");
     
	return text;
 }

function htmlUnsafeString(text){
	if (text.length == 0){
		return "";
	}
	
	text = text.replace(/&amp;/g, "&");
	text = text.replace(/&lt;/g, "<");
	text = text.replace(/&gt;/g, ">");
	text = text.replace(/&quot;/g, "\"");
	text = text.replace(/&#039;/g, "'");
	text = text.replace(/&apos;/g, "'");
	
	return text;
}