var retrySubmitTimer;
var submittingMain = false;
var EventID = "";
var VenueID = "";
var ShowVenueInfo = "";
var EventDateString = "";
var EventBaseDate = "";
var CheckForDupe = "";
var AllAttribs = "";
var AddlCategories = "";
var SubCategories = "";
var WebCategories = "";
var WebSubCategories = "";
var VenueSubTypes = "";
var GroupIDs = "";
var PreviewData = "";
var FunkyDate = "";
var venueSeek='';
var venueFound = false;
var autocompleteEventVenue;
var venueUsesAutoComplete = true;

function resetVenueHelper() {
    showMsg('type a venue name to find it (ESC to start over)', 'yes');
    venueSeek='';
    venueFound = false;
    if (document.getElementById('VenueInfo')) {
        document.getElementById('VenueInfo').innerHTML = "";
    }
}

function showVenueHelp(show) {
    if (show) {
        resetVenueHelper();
        document.getElementById('venueSeekMsg').style.display='';
    }else{
        document.getElementById('venueSeekMsg').style.display='none';
    }
}

function setFormField($fieldID, $val) {
	if (document.getElementById($fieldID)) {
		if (document.getElementById($fieldID).value == "") {
			document.getElementById($fieldID).value = $val;
		}
	}	
}

function findVenue(event){
	clearTimeout(findVenueTimer);

	if (venueUsesAutoComplete) {
		alert('finding venue...');

	} else {
		if (document.all) {
			// leave this block until IE handles multicharacter typeahead in select lists
			var keyval=window.event.keyCode;
			var picker=document.getElementById("EventVenue");
			if(venueSeek.length > -1 && keyval != 32){
				venueFound= false;
			}
			if (keyval==27 || keyval==0){
				resetVenueHelper();
				picker.selectedIndex=0;
				return true;
			}else{
				venueSeek=venueSeek+String.fromCharCode(keyval);
			}
		
			if (venueSeek.length > 0){
				for (var i=0; (i < picker.length && !venueFound); i++) {
					if (picker.options[i].text.toUpperCase().indexOf(venueSeek.toUpperCase()) == 0) {
						venueFound=true;
						picker.selectedIndex=i;
						startVenueInfoFetch();
						break;
					}
				}
			}
			if (venueFound){
				showMsg(venueSeek, 'yes');
			}else if (venueSeek.length>0){
				showMsg('<b>'+venueSeek+'</b> not found (ESC to start over)', 'no');
			}
			
			if (keyval==9 || keyval==13 || keyval==32){
				return true;
			}else{
				return false;
			}
		 
		
		
		} else {
			if(event && !document.all){
				var keyval=event.which;
				if (keyval == 0) {
				   keyval = event.keyCode;
				}
			}else{
				var keyval=window.event.keyCode;
			}
		
			if (keyval != 9 && keyval != 13){
				startVenueInfoFetch();
			}
			return true;
		}
	}
}

function showAutoCompleter(element, update) {
	var selects = $$(".hideSelect");
	for (var i=0; i < selects.length; i++) {
		selects[i].style.display = "none";
	}
	if(!update.style.position || update.style.position=='absolute') {
	  update.style.position = 'absolute';
	  Position.clone(element, update, {
		setHeight: false,
		setTop: false,
		offsetTop: element.offsetHeight
	  });
	}
	update.show();
}

function hideAutoCompleter(element, update) {
	var selects = document.getElementsByClassName("hideSelect");
	for (var i=0; i < selects.length; i++) {
		selects[i].style.display = "";
	}
	update.hide();
	gotoEnd(element);
}

function killAutoCompleter(ac) {
	try {
		ac.element = null;
		ac.update = null;
		ac.active = false;
	} catch(e) {
		// do nothing
	}
}

function gotoEnd(elem, append) {
	var append = (append == null) ? true : append;
	if (append) {
		var val = elem.value;
		if (val != "" && val.substring(val.length-1) != "\n") {
			elem.value = val + "\n";
		}
	}
	elem.scrollTop = elem.scrollHeight;
	if (elem.setSelectionRange)
		elem.setSelectionRange(elem.value.length, elem.value.length);

}

function applyVenueChoice(venue) {
	$("EventVenueDisplay").update(venue.innerHTML);
	$("EventVenue").value = venue.id;
	if (venue.id == "None") {
		$("EventVenueDisplay").value = "";
		resetVenueInfo(true);
	} else {
		retrieveVenueInfo();
	}
	clearTimeout(timerBlockSubmit);
	blockSubmit = true;
	timerBlockSubmit = setTimeout("blockSubmit=false;", 100);
}

function showMsg(text,mode){
    var msgDiv=document.getElementById("venueSeekMsg");
    msgDiv.innerHTML=text;
    if (mode=='yes'){
        msgDiv.style.color='#0000FF';
    }else{
        msgDiv.style.color='#DD0000';
    }
}

function showPendingVars() {
    alert("EventID:"+EventID+", VenueID:"+VenueID+", EventDateString:"+EventDateString+", CheckForDupe:"+CheckForDupe+", AllAttribs:"+AllAttribs+", AddlCategories:"+AddlCategories+", SubCategories:"+SubCategories);
}

function clearPendingVars() {
    EventID = "";
    VenueID = "";
    ShowVenueInfo = "";
    EventDateString = "";
    EventBaseDate = "";
    CheckForDupe = "";
    AllAttribs = "";
    AddlCategories = "";
    SubCategories = "";
    WebCategories = "";
    WebSubCategories = "";
    GroupIDs = "";
    VenueSubTypes = "";
	PreviewData = "";
	FunkyDate = "";
}

function tryToSubmitHiddenForm() {
    if (!submittingMain) {
        var submitIt = true;
        if (retrySubmitTimer != null) {
            clearTimeout(retrySubmitTimer);
        }
        if (document.getElementById('HiddenFormIsBusy').value == "true") {
            window.status = "Waiting to send data...";
            retrySubmitTimer = setTimeout('tryToSubmitHiddenForm()', 500);
            submitIt = false;
        }
        if (!parent.hidden) {
            alert("An error has occurred. Please close your web browser and log back in before resuming your work.");
            submitIt = false;
        }
        if (!parent.hidden.document) {
            parent.hidden.location="framehidden.php";
            submitIt = false;
        }
        if (!parent.hidden.document.getElementById('EventID')) {
            parent.hidden.location="framehidden.php";
            submitIt = false;
        }
        if (submitIt == true) {
            window.status = "";
            parent.hidden.setBusyAndSubmit();
            clearPendingVars();
        }
    }
}

function disableSubmitButtons(state) {
    if (document.getElementById('submit1')){
        document.getElementById('submit1').disabled=state;
    }
    if (document.getElementById('submit2')){
        document.getElementById('submit2').disabled=state;
    }
    if (document.getElementById('submit3')){
        document.getElementById('submit3').disabled=state;
    }
}

function validateEventForm(type) {
    if (submittingMain) {
        window.status = "Form has been submitted. Please sit tight.";
        return false;
    } else {        
        submittingMain = true;
        disableSubmitButtons(true)
        var form = document.eventform;

       if (document.getElementById('CategoryID')) {

	    if(document.getElementById('CategoryID').selectedIndex) 
		CategoryID = document.getElementById('CategoryID').options[document.getElementById('CategoryID').selectedIndex].value;
	    else
		CategoryID = document.getElementById('CategoryID').value;

            if (CategoryID == "" || CategoryID == "0") {
                form.CategoryID.focus();
                alert('Please select a category.');
                submittingMain = false;
                disableSubmitButtons(false)
                return false;
            }
	
        }
 
        if (document.getElementById('EventTitle')) {	
            if (document.getElementById('EventTitle').value == "") {
                form.EventTitle.focus();
                alert('Please enter an event name.');
                submittingMain = false;
                disableSubmitButtons(false)
                return false;
            }
        }
        if (document.getElementById('EventVenue')) {
            if (document.getElementById('EventVenue').selectedIndex==0) {
                form.EventVenue.focus();
                alert('Please select a venue.');
                submittingMain = false;
                disableSubmitButtons(false)
                return false;
            }
        }
        if (document.getElementById('EventDateString')) {
            if (document.getElementById('EventDateString').value == "") {
                form.EventDateString.focus();
                alert('Please enter a date for the event.');
                submittingMain = false;
                disableSubmitButtons(false)
                return false;
            }
        }

        document.getElementById('action').value = type;
        clearPendingVars();
        form.submit();
    }
}

function getVenueInfo() {
    VenueID = document.getElementById('EventVenue').options[document.getElementById('EventVenue').selectedIndex].value;
    ShowVenueInfo = 1;
    AllAttribs = document.getElementById('AllAttribs').value;
    EventDateString = document.getElementById('EventDateString').value;
    EventBaseDate = document.getElementById('EventBaseDate').value;
    if (VenueID == "None") {
        if (document.getElementById('eventsAtVenue')) {
            document.getElementById('eventsAtVenue').innerHTML = "";
        }
    }
    tryToSubmitHiddenForm();
}

function checkForDuplicate() {
    EventID = document.getElementById('ID').value;
    VenueID = document.getElementById('EventVenue').options[document.getElementById('EventVenue').selectedIndex].value;
    EventDateString = document.getElementById('EventDateString').value;
    EventBaseDate = document.getElementById('EventBaseDate').value;
    CheckForDupe = '1';
    tryToSubmitHiddenForm();
}

function displayConfirmCal() {
	EventDateString = document.getElementById('EventDateString').value;
    EventBaseDate = document.getElementById('EventBaseDate').value;
    tryToSubmitHiddenForm();
}

function addCategory() {
    var mainVal = document.getElementById('CategoryID').value;
    var newVal = document.getElementById('selEventOtherCategories').options[document.getElementById('selEventOtherCategories').selectedIndex].value;
    if (newVal != "" && newVal != mainVal) {
        if (document.getElementById('EventOtherCategories').value == "") document.getElementById('EventOtherCategories').value = '#';
        if (document.getElementById('EventOtherCategories').value.indexOf("#"+newVal+"#") < 0) {
            document.getElementById('EventOtherCategories').value += newVal + "#";
            AddlCategories = '#' + mainVal + document.getElementById('EventOtherCategories').value;
            tryToSubmitHiddenForm();
        } else {
            alert('This event is already assigned to the '+ document.getElementById('selEventOtherCategories').options[document.getElementById('selEventOtherCategories').selectedIndex].text + ' category.');
        }
    }
}

function removeCategory() {
    categoryString = document.getElementById('EventOtherCategories').value;
    newCategoryString = categoryString.replace(document.getElementById('selEventOtherCategories').options[document.getElementById('selEventOtherCategories').selectedIndex].value + '#','');
    document.getElementById('EventOtherCategories').value = newCategoryString;
    AddlCategories = '#' + document.getElementById('CategoryID').value + newCategoryString;	
    tryToSubmitHiddenForm();
}

function addSubCategory() {
    var newVal = document.getElementById('selEventSubCategory').options[document.getElementById('selEventSubCategory').selectedIndex].value;
    if (newVal != "") {
        if (document.getElementById('EventSubCategory').value == "") document.getElementById('EventSubCategory').value = '#';
        if (document.getElementById('EventSubCategory').value.indexOf("#"+newVal+"#") < 0) {
            document.getElementById('EventSubCategory').value += newVal + "#";
            SubCategories = document.getElementById('EventSubCategory').value;
            tryToSubmitHiddenForm();
        } else {
            alert('This event is already assigned to the '+ document.getElementById('selEventSubCategory').options[document.getElementById('selEventSubCategory').selectedIndex].text + ' subcategory.');
        }
    }
}

function removeSubCategory() {
    subCategoryString = document.getElementById('EventSubCategory').value;
    newSubCategoryString = subCategoryString.replace(document.getElementById('selEventSubCategory').options[document.getElementById('selEventSubCategory').selectedIndex].value + '#','');
    document.getElementById('EventSubCategory').value = newSubCategoryString;
    SubCategories = newSubCategoryString;	
    tryToSubmitHiddenForm();
}

function addWebCategory() {
    var newVal = document.getElementById('selEventWebCategories').options[document.getElementById('selEventWebCategories').selectedIndex].value;
    if (newVal != "") {
        if (document.getElementById('EventWebCategories').value == "") document.getElementById('EventWebCategories').value = '#';
        if (document.getElementById('EventWebCategories').value.indexOf("#"+newVal+"#") < 0) {
            document.getElementById('EventWebCategories').value += newVal + "#";
            WebCategories = document.getElementById('EventWebCategories').value;
            tryToSubmitHiddenForm();
        } else {
            alert('This event is already assigned to the '+ document.getElementById('selEventWebCategories').options[document.getElementById('selEventWebCategories').selectedIndex].text + ' category.');
        }
    }
}

function removeWebCategory() {
    categoryString = document.getElementById('EventWebCategories').value;
    newCategoryString = categoryString.replace(document.getElementById('selEventWebCategories').options[document.getElementById('selEventWebCategories').selectedIndex].value + '#','');
    document.getElementById('EventWebCategories').value = newCategoryString;
    WebCategories = newCategoryString;	
    tryToSubmitHiddenForm();
}

function addWebSubCategory() {
    var newVal = document.getElementById('selEventWebSubCategories').options[document.getElementById('selEventWebSubCategories').selectedIndex].value;
    if (newVal != "") {
        if (document.getElementById('EventWebSubCategories').value == "") document.getElementById('EventWebSubCategories').value = '#';
        if (document.getElementById('EventWebSubCategories').value.indexOf("#"+newVal+"#") < 0) {
            document.getElementById('EventWebSubCategories').value += newVal + "#";
            WebSubCategories = document.getElementById('EventWebSubCategories').value;
            tryToSubmitHiddenForm();
        } else {
            alert('This event is already assigned to the '+ document.getElementById('selEventWebSubCategories').options[document.getElementById('selWebEventSubCategories').selectedIndex].text + ' subcategory.');
        }
    }
}

function removeWebSubCategory() {
    subCategoryString = document.getElementById('EventWebSubCategories').value;
    newSubCategoryString = subCategoryString.replace(document.getElementById('selEventWebSubCategories').options[document.getElementById('selEventWebSubCategories').selectedIndex].value + '#','');
    document.getElementById('EventWebSubCategories').value = newSubCategoryString;
    WebSubCategories = newSubCategoryString;	
    tryToSubmitHiddenForm();
}

function addGroup() {
    var newVal = document.getElementById('selEventGroupMultiple').options[document.getElementById('selEventGroupMultiple').selectedIndex].value;
    if (newVal != "") {
        if (document.getElementById('EventGroupMultiple').value == "") document.getElementById('EventGroupMultiple').value = '#';
        if (document.getElementById('EventGroupMultiple').value.indexOf("#"+newVal+"#") < 0) {
            document.getElementById('EventGroupMultiple').value += newVal + "#";
            GroupIDs = document.getElementById('EventGroupMultiple').value;
            tryToSubmitHiddenForm();
        } else {
            alert('This event is already assigned to the '+ document.getElementById('selEventGroupMultiple').options[document.getElementById('selEventGroupMultiple').selectedIndex].text + ' group.');
        }
    }
}

function removeGroup() {
    groupString = document.getElementById('EventGroupMultiple').value;
    newGroupString = groupString.replace(document.getElementById('selEventGroupMultiple').options[document.getElementById('selEventGroupMultiple').selectedIndex].value + '#','');
    document.getElementById('EventGroupMultiple').value = newGroupString;
    GroupIDs = newGroupString;	
    tryToSubmitHiddenForm();
}


function preview() {
	eventForm = document.eventform;
	var len = eventForm.elements.length;
	var objval = "";
	PreviewData = "";
	for (i=0; i<len; i++) {
		objval = eventForm.elements[i].value;
		if (eventForm.elements[i].type.toString().toLowerCase() == "checkbox") {
			objval = eventForm.elements[i].checked;
		}
		PreviewData += eventForm.elements[i].name + "{|@^@|}" + objval + "{||@^@||}";
	}
    tryToSubmitHiddenForm();
}

function reportFunkyDate() {
	if (confirm('Are you not getting the results you expect from the date you\'ve entered and would like to report it to the software developers?')) {	
		FunkyDate = document.getElementById('EventDateString').value;
		tryToSubmitHiddenForm();
	}
}
