var g = {
	amdAdvSearchTrigger: '#amdAdvSearchTrigger',
	amdAdvSearch: '#amdAdvSearch',
	slideShowCtner: '#homeSlideShow',
	mainMenu : '#menu'
}
// INITIALIZATION ***********************************
jQuery(function($) {

	$(document.body).removeClass("jsOff").addClass("jsOn");
	setWidthClass(); 

	if (getBodyId()==='home') {	
		var imgCount = 2;
		var ctner = $(g.slideShowCtner);
		while (imgCount < 16) {
			ctner.append('<img src="/images/homeSlideShow/'+imgCount+'.jpg" alt="" width="420" height="315" alt="location photo">');
			imgCount++;
		};
		ctner.cycle({
			speed: 600,
			timeout: 3000,
			pause: 1
		});
		
		$(g.amdAdvSearchTrigger).click(function() {
			$(this).fadeOut('slow');
			$(g.amdAdvSearch).slideDown('slow');
		});
		
		var loopTestimonials = loopBuilder();
		loopTestimonials.init();
	
	} // end home page

	var menuInst = menuBuilder();
		menuInst.init();

	if (getBodyId()==='faq') {	
		enableFAQ('faqCol');
	};
	
	$('#contentLeft h2:first-child').css('margin-top','0');
	$('p.author + p.author').css('margin-top','0');

	// REMOVE HREFS TO SELF
	$('#footer a[href]').each( function() { 
		var t = $(this);
		if (t.parent().hasClass(getBodyId())) { 
			t.removeAttr('href').addClass('sel'); 
		}
	});

	//START IE
	/*@cc_on
	//START IE6
	if (parseInt(jQuery.browser.version)===6) { 
		$(g.mainMenu + ' td').hover(
		  function () {
			$(this).addClass('tdSel');
		  }, 
		  function () {
			$(this).removeClass('tdSel');
		  }
		);
		$(g.mainMenu + ' td.tdSel > a').css({
			'color': '#dd137b', 'text-decoration': 'none'
		});
		if (getBodyId()==='home') {	
			$('#amdAdvSearchTrigger, #testimTrigger').hover(
			  function () {
				$(this).css({'cursor':'pointer'});
			  }, 
			  function () {
				$(this).css({'cursor':'default'});
			  }
			);
		}
		if (getBodyId()==='faq') {	
			$('#faqCol .q').hover(
			  function () {
				$(this).css({'cursor':'pointer','color': '#dd137b'});
			  }, 
			  function () {
				$(this).css({'cursor':'default','color': ''});
			  }
			);
		}
	}//end IE6
	@*/
	//end IE
	
});//end init

//GENERAL HELPER FUNCTIONS

function setWidthClass() {
		if (screen.availHeight > 768) {
			$(document.body).removeClass('w1024').addClass("w1280");
		}
	}
function getBodyId() {
		return document.body.getAttribute('id');
	};

var menuBuilder = function() {
	var $menu = $(g.mainMenu),
	 menuWidth = 912, 
	 $menuTD = $(g.mainMenu + ' td'),
	 sumWidths = 0, widthArr = [];
	
	var init = function() {	
		measureLinkStrLength();
		setTDwidth();
		$menu.width(menuWidth);
		setCurentPage();
	}
	
	var measureLinkStrLength = function() {
		$menuTD.each(function(i) {
			var a = $(this).find('a:first');
			var aWidth = $(a).width();
			sumWidths+=aWidth;
			widthArr.push(aWidth);
			$(a).css('display','block');
		})
	}
	var setTDwidth = function() {
		$menuTD.each(function(i) {
			var $this = $(this),
				tdExt =  (menuWidth - sumWidths)/widthArr.length;
			$this.width(widthArr[i]+tdExt);
			if ($this.find('ul')[0]) {
				setSubMenu($this,tdExt);				
			}
			
		})
	}
	
	var setSubMenu = function($td,tdExt) {
			var ul = $td.find('ul')[0],
				$ul = $(ul),
				tdWidth = $td.width(),
				padding = (tdExt/2).toPrecision(6),
				ulOffsetCheck = $menu.offset().top + $menu.height();
			
			if (($ul.width()+Number(padding)+20) < tdWidth) {
				$ul.width(tdWidth);
			} else {
				$ul.width(($ul.width()+Number(padding)+20));
			}
			
			if ($ul.offset().top !== ulOffsetCheck) {
				$ul.css({'top' : ulOffsetCheck});
			}

			var posleft = Math.round($td.position().left);
			/*@cc_on
				if(!$td.is(':first-child')) {
					posleft = posleft+1;
				}
			@*/
			$ul.css({'left' : posleft});
			
			var w = ($ul.width() - padding -9) + 'px';
			/*@cc_on
			//START IE6
			if (parseInt(jQuery.browser.version)===6) { 
				w = $ul.width() + 'px';
			}//end IE6
			@*/
			
			$ul.find('a').css({
				'padding-left' : padding+'px',
				'padding-right' : '10px',
				'width' : w
				});
			
			
			$td.hover(
			  function () {
				$ul.css({'visibility' : 'visible'});
			  }, 
			  function () {
				$ul.css({'visibility' : 'hidden'});
			  }
			);
	}
	
	var setCurentPage = function() {
		$('.'+getBodyId()+' > a').addClass('sel');
	}
	var that = {};
	that.init = init;
	return that;
}//end menuBuilder

var loopBuilder = function() {
	
	var filePath = 'ListTestim.asp',
		oneUnit = 'oneTestim',
		oneUnitClass = '.oneTestim',
		parentCtner = 'homeTestimCtner',
		trigger = '#testimTrigger a',
		animSpeed = 'slow';
	
	var init = function() {	
		$(oneUnitClass).show();
		$.get(filePath, function(data) {
			$('#'+parentCtner).append(data).find('meta').remove();
			
			//define custom event for one loop unit
			$(oneUnitClass).bind('loopEvt', function() {
				animateLoop(this);
			});
			
			//pin event to trigger
			$(trigger).click(function(e) {
				e.preventDefault();
				$(oneUnitClass + ':visible').trigger('loopEvt');
			});
		})
	};
		
	var animateLoop = function(unit) {	
		$this = $(unit);
		$this.slideUp(
			animSpeed, hideCallback($this) // this is not callback, executes simultaneoulsly
		)
	};
	
	var hideCallback = function($unit) {
		var $next = $unit.next(oneUnitClass);
		if (!$next.is(oneUnitClass)) {
			$next = $(oneUnitClass+':first');
		}
		$next.slideDown(animSpeed, function() { //this is proper callback
			ieClearTypeFix($next[0],parentCtner)//pass non JQ
		});
	};
	
	var that = {};
	that.init = init;
	return that;
};

function enableFAQ(ctner) {
	var selClass = 'faqSel',
	faqCtnerJQ = $('#'+ctner);
	
	faqCtnerJQ.find('.q').click(function() {
		var parentJQ = $(this).closest('.oneFAQ');
		if (parentJQ.hasClass(selClass)) { 
			parentJQ.removeClass(selClass).find('.a').slideUp('slow');
		} else {
			var elm = faqCtnerJQ.find('.'+selClass);
			if(!elm[0]) {
				parentJQ.addClass(selClass).find('.a').slideDown(300, function() {
					   ieClearTypeFix(this,ctner);
					});
			} else {
				faqCtnerJQ.find('.'+selClass).removeClass(selClass).find('.a').slideUp(300, function() {
					parentJQ.addClass(selClass).find('.a').slideDown(300, function() {
					   ieClearTypeFix(this,ctner);
					});
				})
			}
		}
	})
};

function ieClearTypeFix(elm,elmCtnerId) {
	if (!jQuery.support.opacity) { 
	   elm.style.removeAttribute('filter');
	   document.getElementById(elmCtnerId).style.removeAttribute('filter');
	}
}
