(function() {
    var domLoaded = 0;
    var ie6 = (/MSIE 6/i).test(navigator.userAgent);

    document.observe("dom:loaded", function() {
	// some browsers fire dom:loaded twice, let's prevent that
	if (domLoaded > 0) {
	    return false;
	}
	if ($('navFooter') && $('logo')) {
	    // dropdowns
	    if (ie6) {
		$$('#navUser-status, #navCommunity-share, #nav li').each(function(el) {
		    Event.observe(el, 'mouseover', function() {
			this.addClassName('hover');
		    });
		    Event.observe(el, 'mouseout', function() {
			this.removeClassName('hover');
		    });
		});
	    }
  
	    // setting up search
	    $('header-search-box').addClassName('js-enabled-search');
	    $$('#footer-search form')[0].addClassName('js-enabled-search');
	    (function(){
		var methods = {
		    defaultValueActsAsHint: function(element){
			element = $(element);
			element.value = '';
			element._default = element.value;

			return element.observe('focus', function() {
			    if (element._default !== element.value) {
				return false;
			    }
			    element.removeClassName('default').value = '';
			}).observe('blur', function() {
			    if (element.value.strip() !== '') {
				return false;
			    }
			    element.addClassName('default').value = element._default;
			});
		    }
		};

		methods.defaultValueActsAsHint($$('#header-search-box input.default')[0]);
		methods.defaultValueActsAsHint($$('#footer-search input.default')[0]);
	    })();
	    var setupSearch = function(el) {
		var searchForm = $$(el)[0];
		var timer;
		searchForm.getElementsBySelector('.field')[0].insert('<div class="select"><div class="label"></div><ul></ul></div>');
		searchForm.getElementsBySelector('select option').each(function(el) {
		    searchForm.getElementsBySelector('.select ul')[0].insert('<li><a>' + el.innerHTML + '</a></li>');
		});
		searchForm.getElementsBySelector('.select .label')[0].insert(searchForm.getElementsBySelector('select option')[0].innerHTML);
		Event.observe(searchForm.getElementsBySelector('.select .label')[0], 'click', function() {
		    $(this).next('ul').setStyle({
			display: 'block'
		    });
		});
		searchForm.getElementsBySelector('li').each(function(el) {
		    Event.observe(el, 'click', function(e) {
			var itemIndex = searchForm.getElementsBySelector('ul li').indexOf($(this));
			searchForm.getElementsBySelector('select')[0].selectedIndex = [itemIndex];
			searchForm.getElementsBySelector('.select .label')[0].update(searchForm.getElementsBySelector('select option')[itemIndex].innerHTML);
			searchForm.getElementsBySelector('ul')[0].setStyle({
			    display: 'none'
			});
			Event.stop(e);
		    });
		});
		Event.observe(searchForm.getElementsBySelector('.select')[0], 'mouseout', function() {
		    timer = setTimeout(function() {
			searchForm.getElementsBySelector('ul')[0].hide();
		    }, 500);
		});
		Event.observe(searchForm.getElementsBySelector('.select')[0], 'mouseover', function() {
		    clearTimeout(timer);
		});
	    };
	    setupSearch('#header-search-box');
	    setupSearch('#footer-search');
  
	    // setting up footer
	    var setupFooter = function() {
		var footerNavDesc = $$('#navFooter .navFooter-description');
		var footerNavLinks = $$('#navFooter .navFooter-links');
    
		maxNavHeight = maxLinksHeight = 0;
		for (var i = 0; i < footerNavDesc.length; i++) {
		    var fndHeight = footerNavDesc[i].getHeight()  - parseInt(footerNavDesc[i].getStyle('padding-top'), 10) - parseInt(footerNavDesc[i].getStyle('padding-bottom'), 10);
		    var fnlHeight = footerNavLinks[i].getHeight() - parseInt(footerNavLinks[i].getStyle('padding-top'), 10) - parseInt(footerNavLinks[i].getStyle('padding-bottom'), 10);
		    maxNavHeight = (maxNavHeight < fndHeight) ? fndHeight : maxNavHeight;
		    maxLinksHeight = (maxLinksHeight < fnlHeight) ? fnlHeight : maxLinksHeight;
		}
		footerNavDesc.each(function(el) {
		    el.setStyle({
			height: maxNavHeight + 'px'
		    });
		});
		footerNavLinks.each(function(el) {
		    el.setStyle({
			height: maxLinksHeight + 'px'
		    });
		});
    
		return true;
	    };
	    setupFooter();
    
	    // setting up tabs
	    var setupTabs = function(els) {
		$$(els).each(function(el) {
		    el.addClassName('module-tabbed-js');
		    var tabNav = el.getElementsBySelector('.module-tabbed-nav li');
		    var tabContent = el.getElementsBySelector('.module-tabbed-content');
		    el.getElementsBySelector('.module-tabbed-content:not(.selected)').each(function(el) {
			el.hide();
		    });
		    el.getElementsBySelector('.module-tabbed-nav li a').each(function(link) {
			Event.observe(link, 'click', function(e) {
			    var el = this.up();
			    if (el.hasClassName('selected')) {
				e.preventDefault();
				return false;
			    }
			    var tabIndex = tabNav.indexOf(el);

			    if ($('main-tab-content-' + tabIndex)) {
				$('main-tab-content').innerHTML = $('main-tab-content-' + tabIndex).innerHTML;
			    } else {
				$('main-tab-content').innerHTML = '<div class="featured" style="height:500px;">Loading...</div>';
				new Ajax.Request('/ajax/main_tab_handler.php',
				{
				    method:'get',
				    parameters: {
					tab: tabIndex,
					page: window.location.pathname,
					param_string: window.location.search
				    },
				    onSuccess: function(transport){
					$('main-tab-content').innerHTML = transport.responseText;
					$('content').insert('<div id="main-tab-content-' + tabIndex + '" style="display:none;">' + transport.responseText + '</div>');

				    }
				});
			    }
			    el.addClassName('selected').siblings().each(function(el) {
				el.removeClassName('selected');
			    });
			    Event.stop(e);
			});
		    });
		});
	    };
	    setupTabs('.module-tabbed:not(.js-disabled)');
    
	    // setting up sidebar tabs
	    var setupSidebarTabs = function(els) {
		$$(els).each(function(el) {
		    var tabNav = el.getElementsBySelector('li');
		    el.getElementsBySelector('li a').each(function(link) {
			Event.observe(link, 'click', function(e) {
			    var el = this.up();
			    if (el.hasClassName('selected')) {
				e.preventDefault();
				return false;
			    }
			    
			    var childNode;
			    //if(this.up('.module-content').identify()=="sidebar_confessions_box")//special case for confessions page sidebar check out more
				childNode=el.parentNode.next(0);//this goes to wraparound_div
			    //else
				//childNode=el_sibling.next(0).down(0);
			    var tabIndex = tabNav.indexOf(el);
			    childNode.innerHTML = '<div class="featured" style="height:500px;">Loading...</div>';
			    if ($('child-tab-content-' + tabIndex)) {
				childNode.innerHTML = $('child-tab-content-' + tabIndex).innerHTML;
			    } else {
				childNode.innerHTML = '<div class="featured" style="height:500px;">Loading...</div>';
			    new Ajax.Request('/ajax/sidebar_tab_handler.php',
			    {
				method:'get',
				parameters: {
				    tab: tabIndex,
					tab_name: this.up('li').identify(),
				    module_name: this.up('.module-content').identify(),
				    page: window.location.pathname,
				    param_string: window.location.search
				},
				onSuccess: function(transport){
				    childNode.update(transport.responseText);
				    $('content').insert('<div id="child-tab-content-' + tabIndex + '" style="display:none;">' + transport.responseText + '</div>');
				}
			    });
			}
			    el.addClassName('selected').siblings().each(function(el) {
				    el.removeClassName('selected').removeClassName('middlesel');
			    });
			    if(this.up().next('li') && this.up().previous('li'))
			    {
				this.up().addClassName('middlesel');
			    }
			    Event.stop(e);
			});
		    });
		});
	    };
	    setupSidebarTabs('#sidebar .tabs');
	    // setting up nice buttons
	    var setupButtons = function(els) {
		$$(els).each(function(el) {
		    var btn = new Element('a', {
			'href':'#'
		    }).insert('<strong>' + el.innerHTML + '</strong>');
		    var el = el.replace(btn);
		    Event.observe(btn, 'click', function(e) {
			this.ancestors().each(function(el) {
			    if (el.nodeName.toLowerCase().match('form')) {
				el.submit();
			    }
			});
			Event.stop(e);
		    });
		});
	    };
	    setupButtons('.module-form .module-action button,.defaultForm .submit button');

	    // setting up .module-list headings
	    var setupModuleListHeadings = function(els) {
		$$(els).each(function(moduleList) {
		    var headings = moduleList.getElementsBySelector('.module-list-item h3');
		    var maxHeadingHeight = 0;
		    for (var i = 0; i < headings.length; i++) {
			var fndHeight = headings[i].getHeight();
			maxHeadingHeight = (maxHeadingHeight < fndHeight) ? fndHeight : maxHeadingHeight;
		    }
		    headings.each(function(el) {
			el.setStyle({
			    paddingBottom: (maxHeadingHeight - el.getHeight()) + 'px'
			});
		    });
		});
	    };
	    setupModuleListHeadings('.module-list');

	    // courtesy to gmail.google.com for inspiring these functions
		var CP=[[9433600000,10000],[1219045396919,905000],[4957328000000,242500000],[44793611600000,Number.MAX_VALUE]];
		var ExpCount;
		function updateExperienceCount() {
			if (!ExpCount) {
				ExpCount = $("experiencesShared-counter");
				//updateExperienceCount();
			}
			var now = (new Date()).getTime();
			var i;
			for (i = 0; i < CP.length; i++) {
				if (now < CP[i][0]) {
					break;
				}
			}
			if (i == 0) {
				//setTimeout(updateExperienceCount, 1000);
			} else {
				var ts = CP[i - 1][0];
				var bs = CP[i - 1][1];
				var count = addCommas(Math.round(((( (now-ts) / (CP[i][0]-ts)) * (CP[i][1]-bs)) + bs)));
				ExpCount.innerHTML = addExperienceCounterHeaderStyling(count);
				if ($("ep-intro-counter")) {
					$("ep-intro-counter").innerHTML = count;
				}
				if ($("ep-thin-intro-counter")) {
					$("ep-thin-intro-counter").innerHTML = count;
				}
				var nr=Math.floor(Math.random()*3); //don't swamp js engine
				//setTimeout(updateExperienceCount, nr*1000);
			}
		}
		function addCommas(nStr)
		{
			nStr += '';
			var x = nStr.split('.');
			var x1 = x[0];
			var x2 = x.length > 1 ? '.' + x[1] : '';
			var rgx = /(\d+)(\d{3})/;
			while (rgx.test(x1)) {
				x1 = x1.replace(rgx, '$1' + ',' + '$2');
			}
			return x1 + x2;
		}
		function addExperienceCounterHeaderStyling(nStr)
		{
			var out = "";
			var ch;
			for (var i=0; i< nStr.length; i++) {
				ch = nStr.charAt(i);
				if (ch == ',') {
					out += '<span class="counter-comma">,</span>';
				} else {
					out += '<span class="counter-' + ch + '">' + ch + '</span>';
				}
			}
			return out;
		}
		updateExperienceCount();

	}

    });
})();



