document.toggleSelect = function(el) {
	if(el = $(el)) {
		if(el.get('active') == 'yes') {
			el.set('active', 'no');
		} else {
			el.set('active', 'yes');
		}
	}
}
document.optionSelect = function(option) {
	if(option = $(option)) {
		var select = option.getParent().getParent();
		if(select) {
			var input = select.getElement('input');
			var span = select.getElement('span');
			
			select.getElements('div.option[selected=yes]').each(function(curOption) {
				if(curOption != option) curOption.set('selected', 'no');
			});
			option.set('selected', 'yes');
			if(input) input.value = option.getAttribute('value');
			if(span) span.innerHTML = option.innerHTML;
		}
	}
}

document.toggleCheckbox = function(el) {
	if(el = $(el)) {
		var input = el.getNext('input');
		if(input) {
			input.checked = !input.checked;
			el.setAttribute('checked', input.checked ? 'yes' : 'no');
			if(Browser.Engine.trident) el.className = el.className;
		}
	}
}
document.toggleRadio = function(el) {
	if(el = $(el)) {
		var fieldContainer = el.getParent('div.fieldC');
		if(fieldContainer) {
			fieldContainer.getElements('span.radio').each(function(curEl) {
				if(curEl != el) {
					var curInput = curEl.getNext('input');
					if(curInput) {
						curInput.checked = false;
						curEl.setAttribute('checked', 'no');
						if(Browser.Engine.trident) curEl.className = curEl.className;
					}
				}
			});
			var input = el.getNext('input');
			if(input) {
				input.checked = true;
				el.setAttribute('checked', 'yes');
				if(Browser.Engine.trident) el.className = el.className;
			}
		}
	}
}

document.formStatusOver = function(el, e) {
	var messageEl;
	if((el = $(el)) && (messageEl = $(el.id.replace('Status', 'Msg'))) && (e = new Event(e))) {
		var wSize = window.getSize();
		var x = e.client.x + 5 + 32;
		var y = e.client.y + 2;
		if(e.event.offsetX) x -= e.event.offsetX;
		else if(e.event.layerX) x -= e.event.layerX;
		if(e.event.offsetY) y -= e.event.offsetY;
		else if(e.event.layerY) y -= e.event.layerY;
		el.hoverEl = new Element('div', {'class': 'fieldMessageHover', 'styles': {'left': x, 'top': y}, 'html': messageEl.innerHTML}).inject(document.body);
		if(x + el.hoverEl.offsetWidth > wSize.x) el.hoverEl.setStyle('left', x - el.hoverEl.offsetWidth - 10 - 40).addClass('reverse');
	}
}
document.formStatusOut = function(el) {
	if((el = $(el)) && el.hoverEl) el.hoverEl.destroy();
}

document.mapInit = function() {
	var markerHTML = '<div style="padding-left: 15px;"><img src="images/main/bank-of-bozeman-small.jpg" style="width: 131px; height: 25px;" />875 Harmon Stream Blvd.<br />Bozeman, MT 59718</div>';
	
	if(GBrowserIsCompatible()) {
		var gmap = new GMap2($("mapContainer"));
		gmap.addControl(new GSmallMapControl());		
		gmap.addControl(new GMapTypeControl());
		gmap.setCenter(new GLatLng(45.67572, -111.08079), 14);
		gmap.enableScrollWheelZoom();
		var marker = new GMarker(new GLatLng(45.67050, -111.08079));		
		gmap.addOverlay(marker);		
		GEvent.addListener(marker, "click", function() {
			marker.openInfoWindowHtml(markerHTML);
		});
		marker.openInfoWindowHtml(markerHTML);	
	}
}

document.mapDirections = function() {
	if(GBrowserIsCompatible()) {
		var geocoder = new GClientGeocoder();
		var point = new GLatLng(45.67050, -111.08079);
		var address = $('directionsForm').getElement('input[name=address]');
		var directions = $('directionsForm').getElements('input[name=direction]');
		
		if(geocoder && point && address && address.value != '' && address.value != 'Address City, State, ZIP' && directions) {
			var direction = 'to';
			directions.each(function(el) {
				if(el.checked) {
					direction = el.value;
				}
			});
			
			geocoder.getLatLng(address.value, function(point2){
				if(point2) {
					var map = new GMap2($('mapContainer'));
					map.enableScrollWheelZoom();
					map.addControl(new GSmallMapControl());
					var gdirections = new GDirections(map, $('directionsContainer'));
					$('directionsContainer').innerHTML = '';
					if(direction == 'to') {
						gdirections.loadFromWaypoints([point2, point]);
					} else {
						gdirections.loadFromWaypoints([point, point2]);
					}
				} else {
					document.mapInit();
					$('directionsContainer').innerHTML = '<div style="padding-top: 70px; text-align: center;">Address not found.</div>';
				}
			});
		}
	}
}
