Array.prototype.max = function(){
    return Math.max.apply( Math, this );
};

Cufon.replace('h1', { 
	fontFamily: 'Helvetica Neue Medium Condensed',
	fontSize: '36px'
});

Cufon.replace('h1 strong', {
	fontFamily: 'Helvetica Neue Black Condensed',
	fontSize: '36px'
});

Cufon.replace('h2', {
	fontFamily: 'Helvetica Neue Black Condensed',
	fontSize: '32px',
	textShadow: '#611817 0 1px'
});

Cufon.replace('.more_information_bar .more_information_supplemental, .more_information_bar .more_information_link', {
	fontFamily: 'Helvetica Neue Bold Condensed'
});

Cufon.replace('#browse_homes_navigation a, .homes-navigation a', {
	fontFamily: 'Helvetica Neue Bold Condensed',
	hover: true
});

$('#carousel1 .carousel-next').live('click',function(){
	carousel1.next();
	return false;
});
$('#carousel1 .carousel-prev').live('click',function(){
	carousel1.previous();
	return false;
});

$('#carousel2 .carousel-next').live('click',function(){
	carousel2.next();
	return false;
});
$('#carousel2 .carousel-prev').live('click',function(){
	carousel2.previous();
	return false;
});

$('#carousel3 .carousel-next').live('click',function(){
	carousel3.next();
	return false;
});
$('#carousel3 .carousel-prev').live('click',function(){
	carousel3.previous();
	return false;
});

$('#browse_homes_navigation a').live('click',function(){
	$('.carousel').css('display','none');
	$('#browse_homes_navigation .current').removeClass('current');
	$($(this).attr('href')).css('display','block');
	$(this).parent().addClass('current');
	
	switch($(this).attr('href')) {
		case '#carousel1':
			carousel1.shown();
		break;
		case '#carousel2':
			carousel2.shown();
		break;
		case '#carousel3':
			carousel3.shown();
		break;
	}
	
})

function Carousel(sel){
	var first_offset = 0;
	var first_width = 200;
	var second_offset = first_offset + first_width;
	var second_width = 400;
	var third_offset = second_offset + second_width;
	var third_width = 200;
	var button_width = 58;
	var selector = sel;
	var clip_selector = selector + ' .carousel-wrap';
	var debug = false;

	$(selector+' ul').width(($(selector+' li').length * 200) + 200);
		
	var positions = {
		first: 	null,
		second: null,
		third:  null
	}
	
	return {
		dump: function(a,b,c,d){
			if(! debug) {
				return false;
			}
			
			if(console == null || console == undefined) {
				var args = [a,b,c,d];
				alert(args.join("\n"));
			} else {
				console.log(a,b);
			}
			
		},
		shown: function(){

			$(selector +' .position_1').removeClass('position_1');
			$(selector +' .position_2').removeClass('position_2');
			$(selector +' .position_3').removeClass('position_3');
		
			var target = $(selector +' .carousel-wrap').offset().left;
		
			$(selector + '.carousel li').each(function(){
				var offset = $(this).offset().left;

				if(offset == target) {
					$(this).addClass('position_1');
					positions.first = this;				
				}
			});
		
			$(selector +' li').filter('.position_1').next().addClass('position_2').next().addClass('position_3');
		
			positions.second 	= $(selector +' li.position_2')[0];
			positions.third 	= $(selector +' li.position_3')[0];
		
			if($(selector +' .position_highlight').length == 0) {
				$(positions.second).addClass('position_highlight');
			}
		
			return positions;
		
		},
		next: function(){	
			positions = this.shown();
			
			if($(selector +' .position_1').hasClass('position_highlight')) {
				$(selector +' .position_highlight').removeClass('position_highlight');
				$(selector +' .position_2').addClass('position_highlight');
				return true;
			}
			
			$(selector +' .position_highlight').removeClass('position_highlight');


			current_right = $(selector+' li:last-child').offset().left + third_width;
			min_right = $(clip_selector).offset().left + $(clip_selector).width();
			
			if(current_right >= min_right) {
				// var new_offset = $(selector+' ul').position().left - button_width - first_width;
				
				var ul_offset = Math.round($(selector+' ul').position().left * 0.1) * 10; //Hack to fix IE errors
				
				var new_offset = ul_offset - first_width;
				
				if( $(selector+' ul').position().left % 100 !== 0 ) {
					$(selector+' ul').position().left
				}
				
				this.dump('First Width is: ', first_width)
				this.dump('Current Right is: ', current_right)
				this.dump('Minimum Right is: ', min_right)
				this.dump('Current Position of ul is: ', $(selector+' ul').position().left)
				this.dump('New Position is for ul: ', new_offset);
				
				$(selector+' ul').css('left',new_offset);				
				$(selector +' .position_highlight').removeClass('position_highlight');
			} else {
				
				this.dump('cant! were at the end already!');
				
				$(positions.third).addClass('position_highlight');
			}

			positions = this.shown();		
		},
		previous: function(){
			positions = this.shown();

			if($(selector + ' .position_3').hasClass('position_highlight')) {
				$(selector + ' .position_highlight').removeClass('position_highlight');
				$(selector + ' .position_2').addClass('position_highlight');
				return true;
			}

			$(selector + ' .position_highlight').removeClass('position_highlight');
			
			current_left = $(selector+' ul').position().left;
			
			if(current_left < 0) {
				var new_offset = $(selector+' ul').position().left + first_width;
				// var new_offset = $(selector+' ul').position().left - button_width + first_width;
				
				this.dump('Current Position of ul is: ', $(selector+' ul').position().left)
				this.dump('New Position is for ul: ', new_offset);
				
				$(selector+' ul').css('left',new_offset);
				$(selector + ' .position_highlight').removeClass('position_highlight');				
			} else {
				
				this.dump('cant! were at the beginning already!');
				
				$(positions.first).addClass('position_highlight');
				
			}
			
			positions = this.shown();
		}
	}
};

var carousel1;
var carousel2;
var carousel3;

$(document).ready(function(){
	
	$('#header').live('mouseenter mouseleave',function(){
		$(this).toggleClass('hover');
	});
	
	if($('body#home').length > 0) {
		$('#slogan1').css('display','block');
	} else {
		var len = $('.slogan').length;
		
		do {
			var random_slogan = Math.ceil( Math.random() * len);					
		} while (random_slogan < 0 && random_slogan > len);

		$('.slogan:nth-child('+random_slogan+')').css('display','block');
		
	}
	
	if($('.height-match-1').length > 1) {
		var h = [];
		$('.height-match-1').each(function(){
			h.push($(this).height());
		}).height(h.max());
	}
	
	if($('.height-match-2').length > 1) {
		var h = [];
		$('.height-match-2').each(function(){
			h.push($(this).height());
		}).height(h.max());
	}
	
	if($('#newsletter_signup').length > 0) {
		$('#newsletter_signup .button button').css('display','none');
		$('#newsletter_signup .button a').css('display','block').live('click',function(){
			$('#newsletter_signup').submit();
			return false;
		});
		$('#newsletter_signup').validate();
	}
	
	if($('#carousel1').length > 0) {
		carousel1 = new Carousel('#carousel1');
		carousel1.shown();	
		$('#carousel1 ul li.position_highlight').live('click',function(){
			document.location = $(this).find('.more_information_link').attr('href');
			return false;
		}).live('mouseover mouseout',function(){
			$(this).css('cursor','pointer');
		});
	}
	if($('#carousel2').length > 0) {
		carousel2 = new Carousel('#carousel2');
		carousel2.shown();		
		$('#carousel2 ul li.position_highlight').live('click',function(){
			document.location = $(this).find('.more_information_link').attr('href');
			return false;
		}).live('mouseover mouseout',function(){
			$(this).css('cursor','pointer');
		});
		
	}
	if($('#carousel3').length > 0) {
		carousel3 = new Carousel('#carousel3');
		carousel3.shown();
		$('#carousel3 ul li.position_highlight').live('click',function(){
			document.location = $(this).find('.more_information_link').attr('href');
			return false;
		}).live('mouseover mouseout',function(){
			$(this).css('cursor','pointer');
		});
	}
	
	if($('.homeslist').length > 0) {
		
		function chooseHome(sel) {
			$('.homeslist').css('display','none');
			$('.homes-navigation .current').removeClass('current');
			
			$(sel).css('display','block');
			
			$('.homes-navigation a[href='+sel+']').parent().addClass('current');
		}
		
		var urlstring = document.location.toString();
		if (urlstring.match('#')) {
			chooseHome('#' + urlstring.split('#')[1]);
		}
		
		$('.homes-navigation a').live('click',function(){
			chooseHome($(this).attr('href'));
		})
		
		
		var animate_config = {
			img: {
				// enter: { opacity: 1, top: '0px' },
				enter: { opacity: 1 },
				// leave: { opacity: 0.3, top: '-50px' }
				leave: { opacity: 0.3 }
			},
			a: {
				// enter: { height: '160px' },
				enter: { height: '40px' },
				leave: { height: '40px' }
			},
			speed: 'slow'
		}

		$('.homeslist .home img').css(animate_config.img.leave);
		$('.homeslist .home a').css(animate_config.a.leave);
		
		$('.homeslist .home').live('mouseenter',function(){
			// $('.homeslist .home img, .homeslist .home a').stop(false, true);
			
			$(this).find('img').animate(animate_config.img.enter, animate_config.speed);
			// $(this).find('a').animate(animate_config.a.enter, animate_config.speed);
		});
		$('.homeslist .home').live('mouseleave',function(){
			// $('.homeslist .home img, .homeslist .home a').stop(false, true);

			$(this).find('img').animate(animate_config.img.leave, animate_config.speed);
			// $(this).find('a').animate(animate_config.a.leave, animate_config.speed);
		});		
	}
	
	if($(".photos ul li a").length > 0){
		$('.photos ul li a').lightBox();
	}
});
