var domready = false; var navFx; var navHeight = 0; var navTimer; var keyTimer; var accordions; var searchFx; var searchIsOpen = false; window.addEvent('domready', function() { domready = true; navHeight = $('nav').getStyle('height').toInt(); navFx = new Fx.Tween($('nav')); searchFx = new Fx.Tween($('searchDrop')); $('nav').setStyle('height','22px'); document.addEvent('mousemove', function(e) { var topOfNavBar = 160; var bottomOfNavBar = 183; if(searchIsOpen) { topOfNavBar += 160; bottomOfNavBar += 160; } //mouse is... if(e.page.y < topOfNavBar) { //at top of page if(navTimer) { clearTimeout(navTimer); navTimer = 0; } } if(e.page.y >= topOfNavBar && e.page.y < bottomOfNavBar) { //on navbar if(navTimer) return; navTimer = setTimeout('navOpen()', 200); } if(e.page.y >= bottomOfNavBar) { //below navbar if(navTimer) { clearTimeout(navTimer); navTimer = 0; } } if(e.page.y >= bottomOfNavBar+navHeight) { //below subnav navFx.start('height', '22px'); } }); // accordion behaviors accordions = new Hash(); var expandables = $$('.expandable'); expandables.each(function(item, idx, arr) { var thisHeight = item.getStyle('height').toInt(); var thisFX = new Fx.Tween(item); var thisGroup = item.getProperty('rel'); eval('accordions.'+item.id+'= {"height":thisHeight,"fx":thisFX,"group":thisGroup,"toggles":new Hash()}'); item.setStyle('height','0px'); }); // search behaviors var searchBox = $('searchBox'); searchBox.addEvent('focus', function() { searchBox.setStyle('color', '#5bb43a'); if(searchBox.value == 'SEARCH') { searchBox.value = ''; } }); searchBox.addEvent('blur', function() { if(searchBox.value == '') { searchBox.value = 'SEARCH'; searchBox.setStyle('color', '#999aa0'); } }); searchBox.addEvent('keyup', function(e) { clearTimeout(keyTimer); keyTimer = 0; if(searchBox.value.length) { if(e.key == 'enter') { runSearch(); } else if(e.key == 'up' || e.key == 'down' || e.key == 'left' || e.key == 'right' || e.key == 'esc' || e.key == 'shift' || e.key == 'tab') { return; } else { keyTimer = setTimeout('runSearch()', 800); } } else { $('searchDrop').empty(); searchClose(); } }); }); function runSearch() { if(!domready) return; var searchBox = $('searchBox'); var searchDrop = $('searchDrop'); if(searchBox.value == '') { searchDrop.empty(); searchClose(); } else { var searchRequest = new Request.HTML({ 'update':$('searchDrop'), 'url': '/search_results.php', 'onRequest':function() { searchDrop.empty(); var loadingImg = new Element('img', { 'src':'/images/search_loading.gif', 'id':'searchLoadingImg' }); loadingImg.inject(searchDrop); } }).get({'q':searchBox.value}); searchOpen(); } } function searchOpen() { if(!domready) return; searchFx.start('height', 160); searchIsOpen = true; } function searchClose() { if(!domready) return; searchFx.start('height', 0); searchIsOpen = false; } function navOpen() { if(!domready) return; navTimer = 0; navFx.start('height', navHeight); } function accToggleWithChange(element_id, toggler, closed_string, open_string) { if(!domready) return; var thisAccordion = eval('accordions.'+element_id); if(!$(toggler).get('id')) { var uniqueId = toggler.get('tag') + '-' + $time(); while($(uniqueId)) { uniqueId = toggler.get('tag') + '-' + $time(); } toggler.set('id', uniqueId); } if(!thisAccordion.toggles.has(toggler.get('id'))) { thisAccordion.toggles.set(toggler.get('id'), {"closed_string":closed_string,"open_string":open_string}); } var status = accToggle(element_id); if(status) toggler.set('html', open_string); else toggler.set('html', closed_string); } function accToggle(element_id) { if(!domready) return false; var element = $(element_id); var curHeight = element.getStyle('height').toInt(); if(element) { var height = eval('accordions.'+element_id+'.height'); var fx = eval('accordions.'+element_id+'.fx'); if(curHeight == height) { accClose(element_id); return 0; } else { accOpen(element_id); return 1; } } } function accOpen(element_id) { if(!domready) return false; var element = $(element_id); if(element) { var height = eval('accordions.'+element_id+'.height'); var fx = eval('accordions.'+element_id+'.fx'); var group = eval('accordions.'+element_id+'.group'); accordions.each(function(value, key, hash) { if(value.group == group && key!=element_id) { if(value.toggles) { value.toggles.each(function(togglevalue, togglekey, togglehash) { if($(togglekey)) $(togglekey).set('html', togglevalue.closed_string); }); } accClose(key); } }); fx.start('height', height+'px'); } } function accClose(element_id) { if(!domready) return false; var element = $(element_id); if(element) { var fx = eval('accordions.'+element_id+'.fx'); fx.start('height', '0px'); } } function switchVideo(vimeoID, container, myWidth, myHeight) { if(!domready) return false; var el = $(container); if(!el) return false; if(!myWidth) myWidth = 464; if(!myHeight) myHeight = 261; var nuSwf = new Swiff("http://vimeo.com/moogaloop.swf?clip_id="+vimeoID +"&server=vimeo.com&show_title=1&show_byline=0&show_portrait=0&color=01aef0&fullscreen=1", { id: container+'video', container: el, params: { allowScriptAccess:"always", allowFullScreen:"true" }, properties: { width: myWidth, height: myHeight } }); } function element_go(element_id, distance) { if(!domready) return; var element = $(element_id); var el_fx = new Fx.Tween(element); var new_left; var current_position = element.getStyle('left').toInt(); var parent = element.getParent(); var viewable_length = parent.getStyle('width').toInt(); var element_width = element.getStyle('width').toInt(); var boundary = (element_width - viewable_length) * -1; var next_position = current_position + distance; if(next_position > 0 || next_position < boundary) { //can't go the full amount because it's beyond the boundaries. var remaining_distance = element_width + current_position - viewable_length; //distance to travel right if(distance < 0 && remaining_distance > 0) { //going right (negative) new_left = (remaining_distance * -1) + current_position; } else if(distance > 0) { //going left (positive) new_left = 0; } else return; } else { new_left = next_position; } el_fx.start('left', new_left); } function element_go_element(element_id, toElement_id, limitAtBoundary) { if(!limitAtBoundary) limitAtBoundary = false; var element = $(element_id); var toElement = $(toElement_id); if(!toElement) { return false; } var position = toElement.getPosition(element); var new_left = -1 * position.x; var element_width = element.getStyle('width').toInt(); var current_position = element.getStyle('left').toInt(); var parent = element.getParent(); var viewable_length = parent.getStyle('width').toInt(); var boundary = (element_width - viewable_length) * -1; var remaining_distance = element_width + current_position; if(limitAtBoundary && new_left < boundary) new_left = boundary; var el_fx = new Fx.Tween(element); el_fx.start('left', new_left); return true; } function addMarker(title, lat, lng, map, markeroptions) { var latlng = new GLatLng(lat, lng); var marker = new GMarker(latlng, markeroptions); map.addOverlay(marker); GEvent.addListener(marker, 'click', function() { marker.openInfoWindowHtml(title); }); } /* FOR LIB_FORM */ /* newFileInput * author: ccoffman - 4/28/09 * * hides the text input called [id]_tmp, shows the file input called [id], * and destroys the span called newFileLink_[id] */ function newFileInput(id) { if(!domready) return; $(id+'_tmp').destroy(); $('newFileLink_'+id).destroy(); $('uploads['+id+'][clear]').setProperty('value', 0); $(id).setStyle('display','block'); } /* clearField * */ function clearField(id, toggleEl) { if(!domready) return; var clearInput = $('uploads['+id+'][clear]'); var clearValue = clearInput.getProperty('value'); if(clearValue==1) { $(id+'_tmp').setProperty('value', $('uploads['+id+'][value]').getProperty('value')); clearInput.setProperty('value', 0); $(toggleEl).set('html', 'Clear Field'); } else { $(id+'_tmp').setProperty('value', '(Blank)'); clearInput.setProperty('value', 1); $(toggleEl).set('html', 'Restore Value'); } }