// <reference path="jquery-vsdoc.js" />

var pageTemplate = '';

// launches links in new windows - workaround for strict mode that doesn't support the 'target' attribute
function externalLinks() { 
	if (!document.getElementsByTagName) return; 
	var anchors = document.getElementsByTagName("a"); 
	for (var i=0; i<anchors.length; i++) { 
		var anchor = anchors[i]; 
		if (anchor.getAttribute("href") && anchor.getAttribute("rel") == "external") anchor.target = "_blank"; 
	}
}

// validates urls and adds 'http://' if missing
function validateURL(hrefObject) {
    var url = hrefObject.value;
	var urlPrefix = url.substring(0,7);
	if((urlPrefix != "http://") && (urlPrefix != "https:/")) {
		if(url.length != 0) {
		    hrefObject.value = "http://" + url;
		}
	}
}

// initializes textboxes to remove/replace default text when clicked
function SmartInputTextbox(box) {
	this.defaultValue = box.value;
	var me = this;
	$(box).focus(function(){
		if (this.value == me.defaultValue) {
			this.value = '';
		}
	});
	$(box).blur(function(){
		if (this.value == '') {
			this.value = me.defaultValue;
		}
	});
}

//////////////////////////////////////////////////////////////////////////////////

// manages subnav fly-out DHTML menus
function RolloverManager(navId) {
	this.navId = navId;
	this.navLinks = $('#' + navId + ' li a');
	this.subnavs = new Array();
	this.navWidth = $('#' + navId).width();
	this.navLeft = ($('#' + navId).offset()).left;
	for (var i=0; i < this.navLinks.length; i++) {
		this.navLinks[i] = new RolloverMenuItem(this.navLinks[i],this);
	}
}
function RolloverMenuItem(menuItem, rolloverMgr) {
	this.menuItem = menuItem;
	this.mgr = rolloverMgr;
	this.visible = false;
	if (this.subnav = $('.sub' + this.menuItem.parentNode.className).get(0)) {	
		var me = this;
		this.mgr.subnavs.push(this.subnav);
		// set primary nav mousover event
		$(this.menuItem).mouseover(function(){
			me.showNav();
		});
		// set primary nav mouseout event
		$(this.menuItem).mouseout(function(){
			me.hideNav();
		});
	}
}
RolloverMenuItem.prototype.showNav = function() {
	var me = this;
	clearTimeout(this.mgr.navTimer);
	// hide any visible subnav before displaying a new one
	$(this.mgr.subnavs).each(function(){
		$(this).hide();
	});
	// set mouseover/mouseout events for subnav (b/c it will disappear when you leave the primary nav)
	$(this.subnav).mouseover(function(){
		clearTimeout(me.mgr.navTimer);
		$(this).show();
	});
	$(this.subnav).mouseout(function(){
		me.hideNav();
	});
	if (this.visible) {
		$(this.subnav).show(); // if already visible, don't show animation again
	} else {
		$(this.subnav).slideDown('fast', function(){
			me.visible = true;
		});
	}
}
RolloverMenuItem.prototype.hideNav = function(){
	var me = this;
	clearTimeout(this.mgr.navTimer);
	// set a slight delay on hiding the nav
	this.mgr.navTimer = setTimeout( function() {
		$(me.subnav).slideUp('fast', function(){
			me.visible = false;
		});
	}, 200)
}

//////////////////////////////////////////////////////////////////////////////////

$(document).ready(function() {
	
	externalLinks();
	
	$('body').addClass(pageTemplate);
	
	// initialize nav rollovers
	var navMgr = new RolloverManager('nav');
	
	$("input").each(function(){
		if ($(this).hasClass('clearDefaultText'))
			var inputBox = new SmartInputTextbox(this);
	});
	
	$(".datepicker").each(function(){
		$(this).datepicker({
			minDate: 0,
			changeMonth: false,
			changeYear: false,
			gotoCurrent: true,
			hideIfNoPrevNext: true
		});
	});
	
	$(".dateRangeFrom").change(function(){
		var currDate = new Date(this.value);
		var currMonth = currDate.getMonth();
		var newMonth = currMonth + 6;
		var newDate = new Date(currDate.getFullYear(), newMonth, currDate.getDate());
		// have to add 1 to the month because months are actually an array where Jan = 0, etc.
		$(".dateRangeTo").get(0).value = (newDate.getMonth()+1) + '/' + newDate.getDate() + '/' + newDate.getFullYear();
		$('.dateRangeTo').datepicker('option', 'minDate', new Date(currDate));
	});
	
	// contact email validation
	function confirmEmails() {
		if ($("#confirm_email1 input").get(0).value != $("#confirm_email2 input").get(0).value) {
			alert('Email addresses must match.');
			return false;
		} else {
			return true;
		}
	}
	$('#contactus input').each(function(){
		if (this.type == 'submit')
			$(this).click(function(){
				return confirmEmails();
			});
	});
	
	addThisFeature();
	
});

function addThisFeature(){
	var addthis_config = {
		'data_track_clickback': true,
		'ui_header_background': '#3c2046',
		'ui_header_color': '#ccc0d0'
	};
	
	var addthis_share = {
		templates: {
			twitter: 'check out {{title}} see details at {{url}}'
		}
	};
	
	var svcs = {
		email: 'Email',
		facebook: 'Facebook',
		twitter: 'Twitter',
		myspace: 'MySpace',
		googlebuzz: 'Google Buzz',
		delicious: 'Delicious',
		digg: 'Digg',
		expanded: 'More'
	};
	
	$('body').append('<div id="toolbox_overlay"></div><div id="toolbox"><div id="toolbox_top"><span>Share This Event</span><span id="toolbox_close"></span></div><div id="toolbox_bottom"></div></div>');
	
	$('.event .event_info .actions a[href*="#share"]').click(function(){
		var url = $(this).parent().parent().parent().find('a:contains("Event Details")').attr('href'),
			img_url = $(this).parent().parent().parent().find('a > img').attr('src'),
			band_title = $(this).parent().parent().parent().find('h2').text(),
			sub_band_title = $(this).parent().parent().parent().find('h3').text(),
			band_date = $(this).parent().parent().parent().find('h4 > span').text();
		
		url = (url.indexOf('http://') < 0) ? 'http://thejointlasvegas.com' + url : url;
		
		if(band_title.length < 20)
			addthis_config['ui_cobrand'] = band_title;
		else
			addthis_config['ui_cobrand'] = band_title.substring(0, 20);
		
		addthis_share['title'] = band_title;
		addthis_share['url'] = url;
		addthis_share['templates']['twitter'] = '{{title}} ' + band_date + ' {{url}}';
		
		$('#toolbox #share_links').remove();
		
		var ul = $('<ul id="share_links">');
		for(var s in svcs)
			$(ul).append('<li><a class="addthis_button_' + s + '" href="">' + svcs[s] + '</a></li>');
		
		$('#toolbox').append(ul).find('#toolbox_bottom').append('<img src="' + img_url + '" />').append('<ul id="band_info"><li class="band_title">' + band_title + '</li><li class="sub_band_title">' + sub_band_title + '</li><li class="band_date">' + band_date + '</li></ul>');
		addthis.toolbox('#share_links', addthis_config, addthis_share);
		$('#toolbox').show();
		$('#toolbox_overlay').show();
		
		return false;
	});
	
	$('body.event_details .actions a[href*="#share"]').click(function(){
		var img_url = $(this).parent().parent().parent().find('span.headliner > img').attr('src'),
			band_title = $(this).parent().parent().parent().find('h2').text(),
			sub_band_title = $(this).parent().parent().parent().find('h3').text(),
			band_date = $(this).parent().parent().parent().find('> h4:not(.onsale) > span').text();
		
		if(band_title.length < 20)
			addthis_config['ui_cobrand'] = band_title;
		else
			addthis_config['ui_cobrand'] = band_title.substring(0, 20);
		
		addthis_share['title'] = band_title;
		addthis_share['templates']['twitter'] = '{{title}} ' + band_date + ' {{url}}';
		
		$('#toolbox #share_links').remove();
		
		var ul = $('<ul id="share_links">');
		for(var s in svcs)
			$(ul).append('<li><a class="addthis_button_' + s + '" href="">' + svcs[s] + '</a></li>');
		
		$('#toolbox').append(ul).find('#toolbox_bottom').append('<img src="' + img_url + '" />').append('<ul id="band_info"><li class="band_title">' + band_title + '</li><li class="sub_band_title">' + sub_band_title + '</li><li class="band_date">' + band_date + '</li></ul>');
		addthis.toolbox('#share_links', addthis_config, addthis_share);
		$('#toolbox').show();
		$('#toolbox_overlay').show();
		
		return false;
	});
	
	$('#toolbox_overlay, #toolbox_close, .addthis_button_expanded, .addthis_button_email').live('click', function(){
		$('#toolbox, #toolbox_overlay').hide();
		$('#toolbox #share_links').remove();
		$('#toolbox #toolbox_bottom').empty();
	});
}