//DEV constants
DEV_constant = {
	imagePath : 'images/',
	serverString : 'http://stage.service.wunderman-review.com/jw_events/',
	venueLocation : 'event.html?venue=',
	//appId : ['05fab807-d5fd-4f41-b714-3a27fa8aafd8','08325dad-1af8-49c4-83e4-8c56f6b97b06'],
	appId : '05fab807-d5fd-4f41-b714-3a27fa8aafd8',
	fbAppId : '297603666925355'
}
//Production Constants

PRODUCTION_constant = {
	imagePath : '/uploadedimages/johnniewalkercom/Johnnie_Walker_Events/',
	newImagePath : '/uploadedimages/johnniewalkercom/Johnnie_Events/',
	serverString : 'http://service.wunderman-review.com/jw_events/',
	venueLocation : '/en-us/mainevents/eventVenue/?venue=',
	appId : '05fab807-d5fd-4f41-b714-3a27fa8aafd8',
	fbAppId : '256206067765133'
}

//set static global based on domain
var checkDomain = document.location.href.split('/')[2];
switch(checkDomain){
	//unused??
 	//set FB for neo Staging
	case 'neostaging.johnniewalker.com':
		constant.fbAppId = '108426565870821';
		break;
	//holiday 2011 cases below
	case 'www.jwholiday.com':
		constant = PRODUCTION_constant;
		break;
	case 'jwholiday.com':
		constant = PRODUCTION_constant;
		break;
	case 'stage.jwholiday.com':
		constant = DEV_constant;
		break;
	default:
		constant = DEV_constant;
		break;
}


$(function() {
	$.urlParam = function(name, url){
		if(typeof(url) == 'undefined') {
			url = window.location.href;
		}
		var results = new RegExp('[\\?&]' + name + '=([^&#]*)').exec(url);
		return (results == null ? "" : results[1]);
	};
	
	// make sure sourceId gets put in from query string
	$("#sourceId").val($.urlParam("sourceId"));
	
	// Nav Link Id's
	$('.nav_link').click(function(e){
		e.preventDefault();
		var navId = $(this).attr('id');
		if(navId=="back-btn"){navId = 'event_calendar_link';}
		navLink = navId.replace('_link', '.html')
		navLink = navLink.replace('event_', '');
		
		// changed to see if $("#overlay") exists instead of window.location.href.search("index.html")>0
		// latter evaluates to -1 given that index.html doesn't come up in the URL value when coming from the form
		if(navId=="my_events_link" && $("#overlay").length>0){
				title = $('#title').val();
				firstName = $('#firstName').val();
				lastName = $('#lastName').val();
				DOB1 = $('#DOB1').val();DOB2 = $('#DOB2').val();DOB3 = $('#DOB3').val();
				gender = $('#gender').val();
				email = $('#email').val();	
				sourceId = $('#sourceId').val();
		} else {
				title = $.urlParam("title");
				firstName = $.urlParam("firstName");
				lastName = $.urlParam("lastName")
				DOB1 = $.urlParam('DOB1');	DOB2 = $.urlParam('DOB2');	DOB3 = $.urlParam('DOB3');
				gender = $.urlParam('gender');
				email = $.urlParam("email");
				sourceId = $.urlParam("sourceId");
		}
		redirectWithQuery(navLink, {'sourceId':sourceId,'title':title,'firstName':firstName,'lastName':lastName,'DOB1':DOB1,'DOB2':DOB2,'DOB3':DOB3,'email':email,'gender':gender});
	});
});

// Redirection WithData	

var redirectWithQuery = function(targetLocation, queryData) {
	var queryString = "",
		url;
	$.each(queryData, function(idx, value){
	//	console.log("loop on queryData idx %o, item %o", idx, value);
		if (queryString != "") {
			queryString += "&";
		}
		queryString += idx + "=" + value;
	});
	url = targetLocation + "?" + queryString;
	// console.log("redirecting to url %o", url);
 window.location.href = targetLocation + "?" + queryString
};


//PARENT WINDOW / IFRAME QUERY INTEGRATION
// ######################################
// ######################################
/**/
/*
var pullParentQuery = function(key){
	var queryValue = '',
		queryString = (window.parent) ? window.parent.location.search : window.location.search,
		keyStart = queryString.indexOf(key);
	if (keyStart != -1) {
		var valStart = keyStart + key.length + 1,
			valRightUntrimmed = queryString.substring(valStart,queryString.length),
			valEnd = valRightUntrimmed.indexOf("&");
		if (valEnd != -1) {
			queryValue = valRightUntrimmed.substring(0,valEnd);
		} else {
			queryValue = valRightUntrimmed;
		}
		//console.log("pullParentQuery: keyStart %o, valStart %o, valRightUntrimmed %o, valEnd %o, value %o", keyStart, valStart, valRightUntrimmed, valEnd, queryValue);
	} else {
		//console.log("pullParentQuery: did not find key %o in query %o", key, queryString);
	}
	return queryValue;
};
var insertIntoFormValue = function(targetRef,val){
	if ( $(targetRef).length ) {
		$(targetRef).val(val);
	}
};
var doWindowIframeQuery = function(){
	var queryValue = pullParentQuery("sourceId");
	if (queryValue != '') {
		insertIntoFormValue("#sourceId", queryValue);
	}
};*/
// ######################################
// ######################################

//initialize facebook
// ######################################
// ######################################
/**/
var setFBconnect = function(){
	if (window.console) {
	console.log("setFBconnect()...");
	}
	window.fbAsyncInit = function() {
		FB.init({
			appId	: constant.fbAppId,
			status	: true, 
			cookie 	: true,
			xfbml	: true
		});
		FB.getLoginStatus(function(response) {
	if (window.console) {
			console.log("FB.getLoginStatus with response %o", response);
	}
			if (response.session) {
				// logged in and connected user, someone you know
	if (window.console) {
				console.log("FB.getLoginStatus(): logged in and connected user");
	}
				$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_User-repeat-login');
				user.info();
				$("#facebookConnectBox").hide();
			} else {
				// no user session available, someone you dont know
	if (window.console) {
				console.log("FB.getLoginStatus(): no user session yet, don't know the person yet");
	}
				$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_login-showed');
				$("#facebookConnectBox a").bind('click', function(){
					user.login();	
				});
			}
		});
	};
	(function(d){
		var js, id = 'facebook-jssdk'; if (d.getElementById(id)) {return;}
		js = d.createElement('script'); js.id = id; js.async = true;
		js.src = "//connect.facebook.net/en_US/all.js";
		d.getElementsByTagName('head')[0].appendChild(js);
	}(document));
}
// ######################################
// ######################################

//UNUSED FOR JW HOLIDAY EVENTS 2011
//initialize facebook
// ######################################
// ######################################
/**/
/*
var setFBconnect = function(){
	window.fbAsyncInit = function() {
		FB.init({appId: constant.fbAppId, status: true, cookie: true,
				 xfbml: true});
		FB.getLoginStatus(function(response) {
		  if (response.session) {
			// logged in and connected user, someone you know
			$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_User-repeat-login');
			user.info();
		  } else {
			// no user session available, someone you dont know
			$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_login-showed');
			dom.insert({html:'<span onclick="user.login();" id="fblogin">Connect with Facebook</span> <span style="position:relative;" onmouseover="$(\'#qCopy\').css(\'display\',\'block\')" onmouseout="$(\'#qCopy\').css(\'display\',\'none\')"><img id="qCopy" style="display:none; position:absolute; bottom:0px; left:21px; cursor:pointer" src="'+constant.newImagePath+'question_copy.png" /><img style="position:relative; top:3px; left:3px; cursor:pointer" src="'+constant.newImagePath+'question_block.jpg" /></span>',container:'#facebookConnectBox'});
		  }
		});
	};
	  (function() {
		var e = document.createElement('script'); e.async = true;
		e.src = document.location.protocol +
		  '//connect.facebook.net/en_US/all.js';
		document.getElementById('fb-root').appendChild(e);
	  }());
}
*/
// ######################################
// ######################################



String.prototype.capitalize = function(){ //v1.0
    return this.replace(/\w+/g, function(a){
        return a.substr(0).toUpperCase();
    });
};

String.prototype.convertTime = function () {
	var timeOfDay = null;
	var timeSplit = this.split(':');
	if(timeSplit[0] > 11){
		timeOfDay = 'pm';
		if(timeSplit[0] != 12)
			timeSplit[0] = parseFloat(timeSplit[0]) - 12
	}
	else{
		timeOfDay = 'am';
		if(timeSplit[0] != '10' && timeSplit[0] != '11')
			timeSplit[0] = timeSplit[0].split(0)[1]
	}
	if(timeSplit[0] == '')
		timeSplit[0] = 12;
	return timeSplit[0]+":"+timeSplit[1] + " "+timeOfDay;
}

var mapController = {
	activateMap : function(lat, long){
		var map = new GMap2(document.getElementById('map'));
		var wunderman = new GLatLng(lat, long);
		map.setCenter(wunderman, 15);
		map.disableDragging();

		var marker = new GMarker(wunderman);
		map.addOverlay(marker);
/*
		GEvent.addListener(marker, "click", function() {
			mapController.displayDetails(marker);
		});
*/
		//$("#eventDetails").appendTo(map.getPane(G_MAP_MARKER_MOUSE_TARGET_PANE));
	},
	displayDetails : function(marker) {
		$("#eventDetails").hide();
		$("#eventDetails").fadeIn();

		map.panTo(marker.getLatLng());
	}
}

var venueConstructor = {
	sortByDate : function(a,b)
	{
		a = Date.parse(a);
		b = Date.parse(b);
		
		return a - b;
	},
	sortByStartDate : function(a,b)
	{
		a = Date.parse(a.startDate);
		b = Date.parse(b.startDate);
		
		return a - b;
	},
	matchSlot : {},
	createVenuBlock : function(venuID, cityState, venuName, venuDesc, selected, address, csz, phone, venuPhoto){
		
		
		
		if(!selected)
			var venuBlock = '<div class="venuBlock"><img id="venuPhoto" src="'+venuPhoto+'" /><span class="content">'+cityState.capitalize()+'</span><span class="content secondary">'+venuName.capitalize()+'</span>'/*<span>'+venuDesc+'</span>*/+'<img onclick="venueConstructor.loadVenu(\''+venuID+'\')" src="'+constant.imagePath+'btn_start-exper.jpg" style="cursor:pointer" /></div>';
		else{
			var eventDatesArray = [];
			for(var i=0; i < this.currentActiveVenue.events.length; i++){
				eventDatesArray.push(this.currentActiveVenue.events[i].startDate);
			}
			eventDatesArray.sort(this.sortByDate);
			//var venuBlock = '<div class="venuBlock selected"><img id="venuPhoto" src="'+venuPhoto+'" /><span class="content">'+cityState.capitalize()+'</span><span class="content secondary">'+venuName.capitalize()+'</span><span>'+address+'</span><span>'+csz+'</span><span>'+phone+'</span></br><br /><span class="eventDateSpan">'+calendarController.month_array[(eventDatesArray[0].split('/')[0])-1]+ " " + eventDatesArray[0].split('/')[1]+" - "+calendarController.month_array[(eventDatesArray[eventDatesArray.length-1].split('/')[0])-1]+ " " + eventDatesArray[eventDatesArray.length-1].split('/')[1]+'</span><div id="shareBox"><a target="_blank" href="http://www.facebook.com" onclick="this.href=//.sharing.href(\'Facebook\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_fb.jpg"</a><a target="_blank" href="http://www.twitter.com" onclick="this.href=meteor.sharing.href(\'Twitter\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_twitter.jpg"</a><a target="_blank" href="#" onclick="this.href=meteor.sharing.href(\'Email\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_email.jpg"</a></div></div>';
		}
		return venuBlock;
		
	},
	
	spacerBar : '<div class="spacerBlock"></div>',
	
	getVenues : function(callBack, slotID){
		var getAll = true;
		(slotID) ? getAll = false : slotID = 0;
		
		$.ajax({
			dataType: 'jsonp',
			type:'GET',
			data: {'appId':constant.appId,'all':getAll, zip:'10009','eventId':slotID,'cbm':callBack},
			url: constant.serverString+'getNestedLocations.ashx'
		});
	},

	setSlot : function(clickedObj){
		
		$('.contactInfo').css('visibility','visible'); 
		if(this.slotId)
			$("#"+this.slotId+" ,#"+this.slotId+' span').css('background-image','url('+constant.imagePath+'btn_timeslot.gif)');
		
		this.matchSlot['clicked'] = clickedObj.id
			
		this.slotId = clickedObj.id;
		
		$("#"+this.slotId+" ,#"+this.slotId+' span').css('background-image','url('+constant.imagePath+'btn_timeslot-on.gif)');
		
		/*
		if(venueConstructor.sourceId == ''){
			if($('#howdidyouhear').css('display') == 'none'){
				var createDropdown = "<option>Please select an option</option>"
				for(items in venueConstructor.currentActiveVenue.sources){
					createDropdown += '<option value="'+venueConstructor.currentActiveVenue.sources[items].id+'">'+venueConstructor.currentActiveVenue.sources[items].source+'</option>'	
				}
				$('#howdidyouhear select').html(createDropdown);
				$('#howdidyouhear').css('display','block');
			}
		}*/
		if(this.saveAttendee.set == true){
			$('#title')[0].value = this.saveAttendee.title;
			$('#firstName')[0].value = this.saveAttendee.firstName;
			$('#lastName')[0].value = this.saveAttendee.lastName;
			$('#gender')[0].value = this.saveAttendee.gender;
			$('#DOB1')[0].value = this.saveAttendee.dob.split('/')[0];
			$('#DOB2')[0].value = this.saveAttendee.dob.split('/')[1];
			$('#DOB3')[0].value = this.saveAttendee.dob.split('/')[2];
			$('#email')[0].value = this.saveAttendee.email;
			if(typeof this.saveAttendee.phone != 'undefined'){
				$('#AreaCode')[0].value = this.saveAttendee.phone.substr(0,3);
				$('#inputCellPhonePart2')[0].value = this.saveAttendee.phone.substr(3,3);
				$('#inputCellPhonePart3')[0].value = this.saveAttendee.phone.substr(6,4);
			}
		}
	},
	
	sourceId : '',
	slotId : null,
	attendeeId : null,
	attendeeEmail : null,
	
	inviteView : null,
	
	
	saveAttendee : {set:false},
	
	setAttendee : function(){
		
		var checkForErrors = null;
		var title = $('#title')[0].value;
		var firstName = $('#firstName')[0].value;
		var lastName = $('#lastName')[0].value;
		var gender = $('#gender')[0].value;
		var dob = $('#DOB1')[0].value +'/'+$('#DOB2')[0].value +'/'+$('#DOB3')[0].value;
		var email = $('#email')[0].value;
		
		if(typeof $('#friendEmail')[0] == 'object'){
			var inviteFriend = $('#friendEmail')[0].value;
			var inviteFriend2 = $('#friendEmail2')[0].value;
			var inviteFriend3 = $('#friendEmail3')[0].value;
		}
		
		if (typeof $('#drink')[0] == 'object') {
			var drink = $('#drink')[0].value;	
		}
		
		if(typeof $('#AreaCode')[0] === 'object'){
			var phone = $('#AreaCode')[0].value + $('#inputCellPhonePart2')[0].value + $('#inputCellPhonePart3')[0].value;
			
			if( $('#phoneOptIn').attr('checked') == "checked" && (phone == '' || $('#AreaCode')[0].value.length != 3 ||  $('#inputCellPhonePart2')[0].value.length != 3 || $('#inputCellPhonePart3')[0].value.length != 4)){
				checkForErrors = errorChecking.indicateError([$('#AreaCode'),$('#inputCellPhonePart2'),$('#inputCellPhonePart3')]);
			}
			else if(!$('#phoneOptIn').attr('checked'))
				phone = '';
			
			
			this.saveAttendee.phone = $('#AreaCode')[0].value + $('#inputCellPhonePart2')[0].value + $('#inputCellPhonePart3')[0].value;
		}
		var facebook = (arguments[1] == 'facebook') ? true : false; 
		
		if(!errorChecking.calculateAge($('#DOB1')[0].value,$('#DOB2')[0].value,$('#DOB3')[0].value)){
			$("#errorBox").html('<br />Error: Please complete the fields highlighted in red<br />Please make sure you enter your date of birth in MM/DD/YYYY format. Remember, you must be over 21 to enter.<br /><br />');
			checkForErrors = errorChecking.indicateError([$('#DOB1'),$('#DOB2'),$('#DOB3')]);
		}
		
		if(!errorChecking.echeck(email)){
			checkForErrors = errorChecking.indicateError([$('#email')])	
		}
		if(typeof $('#friendEmail')[0] == 'object'){
			if(inviteFriend != '')
				if(!errorChecking.echeck(inviteFriend)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail')])	
				}
			if(inviteFriend2 != '')
				if(!errorChecking.echeck(inviteFriend2)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail2')])	
				}	
			if(inviteFriend3 != '')
				if(!errorChecking.echeck(inviteFriend3)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail3')])	
				}
		}
		
		$(".contactInfo select, .contactInfo input, .event_form select, .event_form input").each(function(){
			if(this.id != 'AreaCode' && this.id != 'inputCellPhonePart2' && this.id != 'inputCellPhonePart3' && this.id != 'friendEmail' && this.id != 'friendEmail2' && this.id != 'friendEmail3' && this.id != 'phoneOptIn' && this.id != 'address2'){
				if(this.value == '')
					checkForErrors = errorChecking.indicateError([$(this)])
			}
		});
		
		//venueConstructor.sourceId = (venueConstructor.sourceId == '') ? 'noSource' : venueConstructor.sourceId;
		venueConstructor.sourceId = $("#sourceId")[0].value;
		
		/*if (checkForErrors == null) {
			$("#errorBox").hide();
			$("#submit-rsvp").hide();
			$("#submit-processing").show();
		}
		
		if(checkForErrors && !facebook)
			return;*/
		
		//store attendee info for duration of session
		this.saveAttendee.set = true;
		this.saveAttendee.title = $('#title')[0].value;
		this.saveAttendee.firstName = $('#firstName')[0].value;
		this.saveAttendee.lastName = $('#lastName')[0].value;
		this.saveAttendee.gender = $('#gender')[0].value;
		this.saveAttendee.dob = $('#DOB1')[0].value +'/'+$('#DOB2')[0].value +'/'+$('#DOB3')[0].value;
		this.saveAttendee.email = $('#email')[0].value;
		
		
		if(arguments[0] == 'overLay'){
			if(checkForErrors && !facebook)
			return;
			//console.log("venueController the 'overLay' argument case...");
			$("#overlay").hide();
			
			if(this.slotId) {
				//console.log("this.slotId %o", this.slotId);
				calendarController.activateSlotId.setSlot();
			}
			
			if(this.inviteView) {
				//console.log("this.inviteView %o", this.inviteView);
				calendarController.showEventAction($("#daysOfMonth span.day.active.clicked")[0],'attendeeSent', true)
			}
			
			//Marking of Events disabled for soft launch
			/*
			//Get the user email address from form
			if ( $('#email').length ) {
				//Mark events for confirmation status
				var emailAddress = $('#email').val();
				calendarController.identifyEventConfirmationStatus(emailAddress);
			}
			*/
			//Marking of Events disabled for soft launch

			$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?overlay_Completed_And_Closed');
			return;
		}
		else{		
			var address = $('#address')[0].value;
			var state = $('#state')[0].value;
			var zip = $('#zip')[0].value;	
			var city = $('#city')[0].value;
			
			var myRegxp = /([0-9]+)$/;
			
			if(zip.length != 5 || !IsNumeric(zip)){
				checkforErrors = errorChecking.indicateError([$('#zip')])
				return false;
			}
			
			
		this.saveAttendee.address = address;
		this.saveAttendee.state = state;
		this.saveAttendee.city = city;
		this.saveAttendee.zip = zip;
		}
		
		
		
		if (checkForErrors == null) {
			$("#errorBox").hide();
			$("#submit-rsvp").hide();
			$("#submit-processing").show();
		}
		
		if(checkForErrors && !facebook)
			return;
		
		var isMember = false;
		var sourceId = this.sourceId;
		//var slotId = parseFloat(this.slotId.split('_')[1]);
		var slotId = $("#slotId")[0].value;
		var attendeeId = null;
		var invitedBy = null;
		
		//(this.attendeeId) ? attendeeId = parseFloat(this.attendeeId) : attendeeId = 0;
		$.urlParam("inviteeId") ? attendeeId = parseFloat($.urlParam("inviteeId")) : attendeeId = 0;
		//(this.enviter) ? invitedBy = parseFloat(this.enviter) : invitedBy = 0
		$.urlParam("invitedBy") ? invitedBy = parseFloat($.urlParam("invitedBy")) : invitedBy = 0;

		/*
		if(typeof constant.fbid == 'undefined') {
			constant.fbid = 'undefined';
		}*/
		//hide submit button
		//loader = insertLoading.set(arguments[0],{imgcss:{'margin':'5px auto 0'}});
		$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?attendeeSent&slotId='+this.slotId);
		/*if(this.matchSlot.invitedSlot != this.matchSlot.clicked) {
			attendeeId = "0";
		}*/
		
		$.ajax({
			dataType: 'jsonp',
			type: 'POST',
			data: {'appId':constant.appId,"cbm":"venueConstructor.attendeeSent","registrants":'[{"otherId":"'+constant.fbid+'","address":"'+address+'","state":"'+state+'","city":"'+city+'","zip":"'+zip+'","title":"'+title+'","firstname":"'+firstName+'","lastname":"'+lastName+'","emailAddress":"'+email+'","mobilePhone":"'+phone+'","dob":"'+dob+'","gender":"'+gender+'","isMember":false,"id":'+attendeeId+',"invitedBy":'+invitedBy+',"slotId":'+slotId+',"sourceId":"'+sourceId+'","isConfirmed":true,"byob":"'+drink+'"}]'},
			url: '/remote/setAttendee.ashx'
		});
	},
	
	attendeeSent : function(obj){
		if(obj.Status == 'OK'){
			//if attendeeId is not already set
			if(typeof this.attendeeId != 'string'){
				var saveAttendee = obj.Message.split('=');
				this.attendeeId = saveAttendee[0];
				this.attendeeEmail = saveAttendee[1];
			}
			
			//store to joules opt in api
			var u = this.saveAttendee;
			//var slotId = parseFloat(this.slotId.split('_')[1]);
			var slotId = $("#slotId")[0].value;
			
			var locationMap = {537:36, 538:37, 539:38, 540:39, 541:40, 542:41, 543:42, 544:43, 545:44, 546:45, 547:46, 548:47, 549:48, 550:49, 551:50, 552:51, 553:52, 554:53, 555:54, 556:55, 557:56, 558:57, 559:58, 560:59, 561:60, 562:61, 563:62, 564:63, 565:64, 605:65}
			if($('#phoneOptIn').attr('checked') == true)
			$.ajax({
				dataType: 'jsonp',
				type:'GET',
				data: {'firstname':u.firstName,'lastname':u.lastName,'mobile':u.phone,'zip':u.zip,'dob':u.dob,'gender':u.gender,'zip':u.zip,'location':locationMap[slotId],'confirmationId':saveAttendee[0]},
				url: constant.serverString+'joule_api/'
			});
			
			//meteor.tracking.track_conversion('951b2822-1478-4745-a8e1-208dea4f8ac2',{'name':'userRegistered'});
			
			
			if(($('#friendEmail').attr('value') != '' || $('#friendEmail2').attr('value') != '' || $('#friendEmail3').attr('value') != '') && constant.appId != '7B7D0460-E01B-431C-B452-0DA4BEE76AD9') {
				venueConstructor.setAttendeeFriend();
			}
			else
			{
				calendarController.showEventAction($("#daysOfMonth span.day.active.clicked")[0],'attendeeSent',null,this.attendeeId);
			}
			
			
			
			
		}
	},
	
	setAttendeeFriend : function(){
		var friendEmail = $("#friendEmail")[0].value
		var friendEmail2 = $("#friendEmail2")[0].value
		var friendEmail3 = $("#friendEmail3")[0].value
		var sourceId = this.sourceId;
		var checkForErrors = false;
		//var slotId = parseFloat(this.slotId.split('_')[1]);
		var slotId = $("#slotId")[0].value;
		var inviteesArray = [];
		if(!$("#friendEmail")[0].disabled);
		
		
		if(typeof $('#friendEmail')[0] == 'object'){
			if(friendEmail != '' && !$('#friendEmail')[0].disabled)
				if(!errorChecking.echeck(friendEmail)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail')])	
				}
			if(friendEmail2 != '' && !$('#friendEmail2')[0].disabled)
				if(!errorChecking.echeck(friendEmail2)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail2')])	
				}	
			if(friendEmail3 != '' && !$('#friendEmail3')[0].disabled)
				if(!errorChecking.echeck(friendEmail3)){
					checkForErrors = errorChecking.indicateError([$('#friendEmail3')])	
				}
		}
		
		if(checkForErrors)
			return;
		
		
		
		inviteesArray = '{"emailAddress":"'+friendEmail+'","invitedBy":'+parseFloat(this.attendeeId)+',"slotId":'+slotId+',"sourceId":"'+sourceId+'"}';
		
		if(friendEmail2 != '' && !$("#friendEmail2")[0].disabled){
			if(inviteesArray.length > 0)
				inviteesArray +=','
			inviteesArray += '{"emailAddress":"'+friendEmail2+'","invitedBy":'+parseFloat(this.attendeeId)+',"slotId":'+slotId+',"sourceId":"'+sourceId+'"}';
		}
		if(friendEmail3 != '' && !$("#friendEmail3")[0].disabled){
			if(inviteesArray.length > 0)
				inviteesArray +=','
			inviteesArray += '{"emailAddress":"'+friendEmail3+'","invitedBy":'+parseFloat(this.attendeeId)+',"slotId":'+slotId+',"sourceId":"'+sourceId+'"}';
		}
		
		
		
		if(inviteesArray.length > 0){
			inviteesArray = '[' + inviteesArray + ']';
			$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?attendeeFriendSent&slotId='+this.slotId);
			$.ajax({
				dataType: 'jsonp',
				type: 'POST',
				data: {'appId':constant.appId,"cbm":"venueConstructor.attendeeFriendSent","invitees":inviteesArray},
				url: '/remote/setAttendee.ashx'
			});
		}
	},
	
	attendeeFriendSent : function(obj){
		if(obj.Status == 'OK'){
			//meteor.tracking.track_conversion('951b2822-1478-4745-a8e1-208dea4f8ac2',{'name':'userInvitedFriend'});
			var saveAttendee = obj.Message.split('=');
			this.attendeeFriendId = saveAttendee[0];
			this.attendeeFriendEmail = saveAttendee[1];
			if (window.console) {
			console.log("had a friend: now going ot calendarController.showEventAction()");
			}
			calendarController.showEventAction($("#daysOfMonth span.day.active.clicked")[0],'attendeeSent',null,this.attendeeId)
		}
	},
	
	parseVenues : function(obj){
		var venueIds = '';
		if(this.venuesSelected){
			venueIds = this.venuesSelected.split(',')
		}
		for(venues in obj.venues){
			
			var venuObj =  obj.venues[venues];
			var parseCityState = venuObj.csz;
			var state = parseCityState.split(',');
			var city = state[1].split(' ')[1]
			parseCityState = state[0] + ', ' + city;
			
			// Check for showVenues Variable, if active, limit display to only those venues.
			if(venueIds != ''){
				for(var i=0; i < venueIds.length; i++){
					if(venuObj.id == venueIds[i])
						$('#venuContent').append(venueConstructor.createVenuBlock(venuObj.id, parseCityState, venuObj.title, venuObj.details,false,'','','', venuObj.imagePath)).append(venueConstructor.spacerBar);
				}
			}
			else{
				// only show if venue has an event this month or later
				var d = new Date();
				var eventDatesArray = [];
				for(var i=0; i < venuObj.events.length; i++){
					eventDatesArray.push(venuObj.events[i].startDate);
				}
				eventDatesArray.sort(this.sortByDate);
				
				if( (eventDatesArray[eventDatesArray.length-1].split('/')[0]-1) >= d.getMonth()){
					$('#venuContent').append(venueConstructor.createVenuBlock(venuObj.id, parseCityState, venuObj.title, venuObj.details,false,'','','', venuObj.imagePath)).append(venueConstructor.spacerBar);
				}
			}
		}	
		
		var light = "Akzidenz Std Light";
		var regular = "Akzidenz Std Regular"; 
		if(checkDomain == 'www.johnniewalker.com' || checkDomain == 'neostaging.johnniewalker.com'){
			Cufon.replace(".content", { letterSpacing: '-1px', fontFamily: regular });
			Cufon.replace(".content.secondary", { letterSpacing: '-1px', fontFamily: light });
			
		}
	},
	
	URIvenuID : null,
	
	parseVenuEvent : function(obj){
		var activeVenu = '';
		
		//If only slotId is set in URI search for venue with the slot id.
		if(!this.URIvenuID){
			for(var i=0; i < obj.venues.length; i++){
				for(var c=0; c < obj.venues[i].events.length; c++){
					for(var t=0; t < obj.venues[i].events[c].slots.length; t++){
						if(parseFloat(this.slotId.split('_')[1]) == obj.venues[i].events[c].slots[t].slotId)
							this.URIvenuID = obj.venues[i].id.toString() //console.log(obj.venues[i].events[c].slots[t].slotId)
					}
					
				}
			}
		}
		
		for(venues in obj.venues){
			var venuObj =  obj.venues[venues];
			if(venuObj.id == this.URIvenuID){
				activeVenu = venuObj;	
			}
		}
		
		activeVenu.events.sort(this.sortByStartDate)
		
		//Locate date of slot if slotId is set in URI
		var venueIdCapture = 0;
		if(this.slotId){
			for(var i=0; i < activeVenu.events.length; i++){
					for(slot in activeVenu.events[i].slots){
						if(parseFloat(this.slotId.split('_')[1]) == activeVenu.events[i].slots[slot].slotId)
							venueIdCapture = i;
					}
			}
		}
		$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?venue='+activeVenu.title+'&csz='+activeVenu.csz);
		
		var parseCityState =  activeVenu.csz;
			var state = parseCityState.split(',');
			var city = state[1].split(' ')[1]
		parseCityState = state[0] + ', ' + city;
			
		var earliestDate = '';
		var activeCalendarEvent = activeVenu.events[venueIdCapture];
		var openSlots = this.checkAvailable(activeCalendarEvent);
		
		//check for earliestDate availability, if sold out, go to the next event
		while(openSlots == false){
			openSlots = this.checkAvailable(activeCalendarEvent);
			venueIdCapture++;
			if(typeof activeVenu.events[venueIdCapture] == 'object')
				activeCalendarEvent = activeVenu.events[venueIdCapture];
			else{
				openSlots = true;
				venueIdCapture--;
			}
		}
		
		// set calendar to earliest available date
		earliestDate = activeVenu.events[venueIdCapture].startDate.split('/');
		
		
		
		
		
		
			
		
		
		calendarController.month = parseFloat(earliestDate[0]) - 1;
		calendarController.createCalendarDays();
		
		this.currentActiveVenue = activeVenu;
		
		calendarController.activateCalendar(activeVenu);
		
		
		
		$('#leftCol .venuBlock').remove();
		$('#leftCol').prepend(venueConstructor.createVenuBlock(activeVenu.id, parseCityState, activeVenu.title, '',true,activeVenu.address + ' ' + activeVenu.address2,activeVenu.csz,activeVenu.phone, activeVenu.imagePath));
		
		mapController.activateMap(activeVenu.latitude, activeVenu.longitude);
		var mapAddress = activeVenu.address.replace(/ /g,'+');
		var mapCSZ = activeVenu.csz.replace(/ /g,'+');
		$('#eventDirectionLink').attr('href','http://maps.google.com/maps?f=q&source=s_q&hl=en&geocode=&q='+ mapAddress +"+"+ mapCSZ +'&z=17&iwloc=A')
		
		var eventDatesArray = [];
			for(var i=0; i < this.currentActiveVenue.events.length; i++){
				eventDatesArray.push(this.currentActiveVenue.events[i].startDate);
			}
			eventDatesArray.sort(this.sortByDate);
			
		$('#rsvpContentBox .introBlock').prepend('<div class="gold">Events are happening<br />through ' + calendarController.month_array[eventDatesArray[eventDatesArray.length-1].split('/')[0]-1]+" "+eventDatesArray[eventDatesArray.length-1].split('/')[1]+"</div><br />" )		
	},
	
	checkAvailable : function(activeEvent){
		var openSlots = true;
		for(slot in activeEvent.slots){
			if(parseFloat(activeEvent.slots[slot].capacity - activeEvent.slots[slot].rsvp) < 1)
				openSlots = false;
			else{
				openSlots = true;
				return openSlots;
			}
		}
		return openSlots;
	},
	
	loadVenu : function(venuID){
		if(this.sourceId != '')
			venuID += '&sourceId='+this.sourceId;
		else
			venuID += '&sourceId=H2-11'
		if(constant.appIdChanged)
			venuID += '&appId='+constant.appId;
			
		window.location = constant.venueLocation+venuID;
	},
	
	currentActiveVenue : null
}



//get current day-time stamp
currentDate = new Date();

var calendarController = {
	month : currentDate.getMonth(),
	year : currentDate.getFullYear(),
	weekday_array : new Array("Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"),	//predefine weekday names
	month_array : new Array("January","February","March","April","May","June","July","August","September","October","November","December"),	//predefine month names
	
	daysInMonth: function( /* int */ monthNum, /* int */ yearNum )
	/*Author: Matthias Dailey March 30, 2009 */
	{
		// if monthNum or yearNum are not specified, set them to the current month/yearNum
		if( monthNum==undefined && yearNum==undefined )
		{
			now = new Date();
			monthNum = now.getMonth()+1;
			yearNum = now.getFullYear();
		}
		else if( monthNum || yearNum || monthNum=="" || yearNum == "" )
		{
			now = new Date();
			if( monthNum==undefined || monthNum=="" )
				monthNum = now.getMonth()+1;
			if( yearNum==undefined || yearNum=="" )
				yearNum = now.getFullYear();
		}
		// turn 01 into 1
		monthNum = Number(monthNum);
		yearNum = Number(yearNum);
		
		// check if monthNum and yearNum are numbers and whole numbers and monthNum is between 1 and 12
		if( isNaN(monthNum) || isNaN(yearNum) || monthNum%1!=0 || yearNum%1!=0 || monthNum<1 || monthNum>12 ){
			return false;
		}
		// create date
		var d = new Date(yearNum, monthNum, 0);
		return d.getDate();
	},	
	
	dateControl : function(objClicked){
		if($(objClicked).hasClass('controlRight')){
			if(this.month < 11)
				this.month++;
			else{
				this.month = 0;
				this.year++;
			}
			
			this.createCalendarDays();
			this.activateCalendar(venueConstructor.currentActiveVenue);
		}
		else{
			if(this.month > 0)
				this.month--;
			else{
				this.month = 11;
				this.year--;
			}
			
			this.createCalendarDays();
			this.activateCalendar(venueConstructor.currentActiveVenue);
		}
	},	
	
	createCalendarDays : function(){
		var firstOfMonth = new Date(this.month_array[this.month]+"1, "+this.year).getDay();
		//retrive # of days in the month and the Day for the 1st of the Month to build Calendar.
		var numberOfDays = this.daysInMonth(this.month+1);
		var startRow = '<div class="row">';
		var endRow = '</div><div class="clearthis"></div>';
		
		var calendarDays = startRow;
		var blankSpans = '';
		for(var i=0; i<firstOfMonth; i++){
			blankSpans += '<div style="background:url(images/blank-day.jpg) 9px 14px no-repeat"></div>';
		}
		
		var firstRow = '';
		for(var i=1; i < 7; i++){
			firstRow += '<div class="day" data-day="'+i+'">'+i+'<br/></div>';	
		}
		
		//create first row
		calendarDays += blankSpans + firstRow;
		
		for(var i=7; i < (numberOfDays+1); i++){
			calendarDays += '<div class="day" data-day="'+i+'">'+i+'<br/></div>';
		}
		
		var totalSpans = numberOfDays + firstOfMonth;
		var sevenFloor = Math.floor(totalSpans / 7) * 7;
		var endBlanks = 7 - (totalSpans - sevenFloor);
		blankSpans = '';
		if(endBlanks != 7){
			for(var i=0; i<endBlanks; i++){
				blankSpans += '<div style="background:url(images/blank-day.jpg) 9px 14px no-repeat"></div>';
			}
		}
			
		//$('#calendar .month').html(this.month_array[this.month].capitalize());
		//$('#calendar .year').html(this.year)
		$('#month').html(this.month_array[this.month].capitalize());
		$('#year').html(this.year)
		$('#daysOfMonth').empty().append(calendarDays+blankSpans+endRow);
	},
	
	activateCalendar : function(venue){
		var city = venue.csz.split(',')[0];
		for(var i=0; i < venue.events.length; i++){
			var month = venue.events[i].startDate.split('/');
			if( parseFloat(month[0]) - 1 == this.month && parseFloat(month[2]) == this.year ){
				$('#daysOfMonth div').each(function(){
				  //if($(this).html() == month[1]){
				  if ($(this).data("day") == month[1]) {
					// Information listed on Calendar
					//$(this).addClass('active').attr('id','dayId_'+i); 
					$(this).addClass("active");
					$(this).append('<span id="eventId_'+venue.events[i].eventId +'"class="eventType" data-city="'+city+'">'+venue.events[i].eventType+'</span>');
					
					// calendar zoom stuff
					day = month[1];
            		//$('.calendarZooms').append('<div id=zoom_'+venue.events[i].eventId+' class="calendarZoom"><span class="event_date">'+day+'</span><span id="event_'+venue.events[i].eventId+'" class="event_type" name="venueId_'+venue.id+'">'+venue.events[i].eventType+'</span>');
					if ($("#zoom_"+day).length == 0) {	
						$('.calendarZooms').append('<div id="zoom_'+day+'" class="calendarZoom" data-city="'+city+'"><span class="event_date">'+day+'</span></div>');
					}
					$("#zoom_"+day).append('<span id="event_'+venue.events[i].eventId+'" class="event_type" name="venueId_'+venue.id+'">'+venue.events[i].eventType+'</span>');
					
					// TIME SLOTS FOR EACH EVENT
					/*for(var s=0; s < venue.events[i].slots.length; s++){
					  time = venue.events[i].slots[s].startTime;
					  $('.slot_time').append("<option value='"+time+"'>"+time+"</option>");
					  if('slotId_'+venue.events[i].slots[s].slotId == venueConstructor.slotId)
						{
						calendarController.activateSlotId.actionItem = this;
						}
					}*/
				  }
				});
			}
		}
	},

	getMyEvents : function(callBackStr, userEmail){
		$.ajax({
			dataType: 'jsonp',
			jsonp: false,
			jsonpCallback: callBackStr,
			type: 'GET',
			data: { 'email': userEmail, 'cbm': callBackStr },
			url: constant.serverString+'getMyEvents.ashx'
		});
	},
	
	processUserEvents : function(response){
		//console.log("processUserEvents() with data %o", response.data.events);
		$.each(response.data.events, function(){
			calendarController.markEvent(this);
		});
	},

	markEvent : function(eventObj) {
		//determine the string to be used as the marker
		//based on the event confirmation
		var markerClass = (eventObj.isConfirmed == true) ? "status_confirmed" : "status_unconfirmed",

		//multiple DOM targets
		eventTargets = [ ];

		//find the DOM object for the calendar zoom/hover state
		eventTargets.push( $('#event_'+eventObj.eventId) );

		//find the DOM object in the calendar
		eventTargets.push( $('#eventId_'+eventObj.eventId) );

		//console.log("markEvent(%o)", eventObj);
		//mark the event objects
		$.each(eventTargets, function(){
			if (this.length) {
				var alreadyMarked = ( this.hasClass("status_confirmed") || this.hasClass("status_unconfirmed") ) ? true : false;
				//console.log("handling event DOM el %o",this);

				if (!alreadyMarked) {
					this.addClass(markerClass);
					//console.log("added class %o on DOM collection %o", markerClass, this);
					//also add general marker that this is a user event
					this.addClass("user_event");
					this.append('<span class="arrow">&rsquo;</span>');
				}
				if ( (!alreadyMarked) || (eventObj.isConfirmed == false) ) {
					//only modify the zoom variant
					if (this.attr('id') === 'event_'+eventObj.eventId) {
						//re-wire the click handler to re-direct to the confirmation page
						//this.unbind('click');
						this.die();
						this.click(function(){
							var venueId = eventObj.venueId,
								eventId = eventObj.eventId,
								slotId = eventObj.slotId,
								email = encodeURIComponent( $("#email").val() ),
								sourceId = $("#sourceId")[0].value,
								confirmationId = eventObj.attendeeId,
								newUrl = "confirm.html?venueId="+venueId+"&eventId="+eventId+"&slotId="+slotId+"&email="+email+"&sourceId="+sourceId+"&confirmationId="+confirmationId;
							//console.log("JS redirect to new URL \n%o",newUrl);
							//console.log("eventObj %o",eventObj);
					   	//"confirm.html?venueId=157&eventId=477&slotId=711&email=tim.searles%40designkitchen.com&sourceId=H2-11&confirmationId=202339#fbid=n1EBRLWMWES';

							//window.location.href = newUrl;
					
						});
					}
				}
			}
		});
	},
	
	identifyEventConfirmationStatus : function(userEmail){
		calendarController.getMyEvents('calendarController.processUserEvents', userEmail)
	},
	
	activateSlotId : {
		actionItem : null,
		setSlot : function(){
			calendarController.showEventAction(calendarController.activateSlotId.actionItem, 'click');;
		}
	},
	
	showEventAction : function(eventSpan, action, inviteDeepLink, attendeeId){
		/*
		var eventID = eventSpan.id.split('_');
		var activeEvents = venueConstructor.currentActiveVenue.events
		var mainEvent = '';
		
		for(var i=0; i < activeEvents.length; i++){
			if(activeEvents[i].eventId == eventID[1])
				mainEvent = activeEvents[i]
		}
		
		var EventDate = mainEvent.startDate.split('/');
		*/
		
		if(action == 'hover'){
			var constructQuickInfo = '<span class="date">'+this.month_array[this.month].capitalize()+' '+EventDate[1]+', '+EventDate[2]+'</span>';
			constructQuickInfo += '<span class="qtype">'+mainEvent.eventType.capitalize()+'</span>';
			//constructQuickInfo += '<span class="details">'+mainEvent.eventDetails+'</span>';
			constructQuickInfo += '<br /><span class="details">Click to register for a timeslot on this date.</span>';
			constructQuickInfo += '<span>Timeslots:</span>';
			for(var i=0; i<mainEvent.slots.length; i++){
				//constructQuickInfo += '<span class="timeslot">'+mainEvent.slots[i].startTime.convertTime()+' | '+(mainEvent.slots[i].capacity - mainEvent.slots[i].rsvp)+' seat(s) remaining</span>';
				if( parseFloat(mainEvent.slots[i].capacity - mainEvent.slots[i].rsvp) > 0)
					constructQuickInfo += '<span class="timeslot">'+mainEvent.slots[i].startTime.convertTime()+'</span>';
				else
					constructQuickInfo += '<span class="timeslot">'+mainEvent.slots[i].startTime.convertTime()+'<span class="quickPreivew soldOut"> - Sold out</span></span>';
			}
			
			$('#eventQuickInfo').html(constructQuickInfo).animate({'opacity':'1'},50);
		}
		else if(action == 'hoverOff'){
			$('#eventQuickInfo').stop().animate({'opacity':'0'},250);
		}
		else if(action == 'click'){
			var arrayOfSlots = [];
			if(typeof $(".clicked")[0] == 'object')
				$(".clicked").removeClass('clicked');
				
			$(eventSpan).addClass('clicked');
			var this_date=new Date(this.month_array[this.month].capitalize()+' '+EventDate[1]+', '+EventDate[2]);
			var this_day = this_date.getDay();
			var constructRSVPContent = '<span class="type">'+mainEvent.eventType.capitalize()+'</span>';
			constructRSVPContent += '<h2 class="date">'+this.weekday_array[this_day].capitalize()+', '+this.month_array[this.month].capitalize()+' '+EventDate[1]+' '+EventDate[2]+'</h2>';
			constructRSVPContent += '<span class="details">'+mainEvent.eventDetails+'</span><br />';
			constructRSVPContent += '<span>Choose a timeslot that best fits your schedule.<br />Please register responsibly (one per member, please).</span><br />';
			
			for(var i=0; i<mainEvent.slots.length; i++){
				//constructRSVPContent += '<div id="slotId_'+mainEvent.slots[i].slotId+'" onclick="venueConstructor.setSlot(this)" class="btnTimeSlot"><span class="leftCap"></span><span class="time">'+mainEvent.slots[i].startTime+' | $'+mainEvent.slots[i].price+'</span></div><span class="seats">'+(mainEvent.slots[i].capacity - mainEvent.slots[i].rsvp)+' seat(s) remaining</span></span><div class="clearthis"></div>';
				
				if( parseFloat(mainEvent.slots[i].capacity - mainEvent.slots[i].rsvp) > 0){
					constructRSVPContent += '<div id="slotId_'+mainEvent.slots[i].slotId+'" class="btnTimeSlot"><span class="leftCap"></span><span class="time">'+mainEvent.slots[i].startTime.convertTime()+'</span></div></span><div class="clearthis"></div>';
					arrayOfSlots.push(mainEvent.slots[i].slotId)
				}
				else{
						constructRSVPContent += '<div class="btnTimeSlotSoldOut"><span class="leftCap"></span><span class="time">'+mainEvent.slots[i].startTime.convertTime()+'</span></div></span><span class=\'seats soldOut\'>Sorry, timeslot sold out</span><div class="clearthis"></div>'
				}
			}
			
			constructRSVPContent += '<div id="errorBox">Error: Please complete the fields highlighted in red<br /><br /></div><div class="contactInfo"><label>Title *</label><select id="title" class="title"><option value="">Select your Title</option><option value="Dr">Dr</option><option value="Miss">Miss</option><option value="Mr">Mr</option><option value="Mrs">Mrs</option><option value="Ms">Ms</option><option value="Other">Other</option><option value="Prof.">Prof.</option></select><label>First Name *</label><input id="firstName" type="text" /><label>Last Name *</label><input id="lastName" type="text" /><label>Gender *</label><select id="gender" class="title"><option value="">Select your Gender</option><option value="M">Male</option><option value="F">Female</option></select><label>D.O.B *</label><div id="dobBox"><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46)errorChecking.phoneinput(event,this)}"id="DOB1" onfocus="this.value=\'\'" value="MM" type="text" /><span>/</span><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46)errorChecking.phoneinput(event,this)}"id="DOB2" onfocus="this.value=\'\'" value="DD" type="text" /><span>/</span><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46)errorChecking.phoneinput(event,this)}"id="DOB3" onfocus="this.value=\'\'" value="YYYY" type="text" /></div><label>Email *</label><input id="email" type="text" /><label>Address *</label><input id="address" type="text" /><div id="csz"><span>City *</span><span>State *</span><span>Zip *</span></div><div id="addressBox"><input id="city" onfocus="this.value=\'\'" value="" type="text" /><select id="state"><option value="">Not resident in United States of America</option><option value="AL">Alabama</option><option value="AK">Alaska</option><option value="AS">American Samoa</option><option value="AZ">Arizona</option><option value="AR">Arkansas</option><option value="CA">California</option><option value="CO">Colorado</option><option value="CT">Connecticut</option><option value="DE">Delaware</option><option value="DC">District of Columbia</option><option value="FM">Federated States of Micronesia</option><option value="FL">Florida</option><option value="GA">Georgia</option><option value="GU">Guam</option><option value="HI">Hawaii</option><option value="ID">Idaho</option><option value="IL">Illinois</option><option value="IN">Indiana</option><option value="IA">Iowa</option><option value="KS">Kansas</option><option value="KY">Kentucky</option><option value="LA">Louisiana</option><option value="ME">Maine</option><option value="MH">Marshall Islands</option><option value="MD">Maryland</option><option value="MA">Massachusetts</option><option value="MI">Michigan</option><option value="MN">Minnesota</option><option value="MS">Mississippi</option><option value="MO">Missouri</option><option value="MT">Montana</option><option value="NE">Nebraska</option><option value="NV">Nevada</option><option value="NH">New Hampshire</option><option value="NJ">New Jersey</option><option value="NM">New Mexico</option><option value="NY">New York</option><option value="NC">North Carolina</option><option value="ND">North Dakota</option><option value="MP">Northern Mariana Islands</option><option value="OH">Ohio</option><option value="OK">Oklahoma</option><option value="OR">Oregon</option><option value="PW">Palau</option><option value="PA">Pennsylvania</option><option value="PR">Puerto Rico</option><option value="RI">Rhode Island</option><option value="SC">South Carolina</option><option value="SD">South Dakota</option><option value="TN">Tennessee</option><option value="TX">Texas</option><option value="UT">Utah</option><option value="VT">Vermont</option><option value="VI">Virgin Islands</option><option value="VA">Virginia</option><option value="WA">Washington</option><option value="WV">West Virginia</option><option value="WI">Wisconsin</option><option value="WY">Wyoming</option></select><input id="zip" onfocus="this.value=\'\'" value="" type="text" /></div><div style="margin:10px 0"><label>Mobile Number</label><div id="phoneBox"><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46){errorChecking.phoneinput(event,this); $(\'#phoneOptIn\')[0].checked = true;}}"id="AreaCode" type="text" /><span>-</span><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46)errorChecking.phoneinput(event,this); $(\'#phoneOptIn\')[0].checked = true;}"id="inputCellPhonePart2" type="text" /><span>-</span><input onkeydown="if(event.keyCode!=9 && event.keyCode!=8  ){if(event.keyCode!=46)errorChecking.phoneinput(event,this); $(\'#phoneOptIn\')[0].checked = true;}"id="inputCellPhonePart3" type="text" /></div><div id="optIn"><p style="font-size:.8em; margin-bottom:20px;"><label><input id="phoneOptIn" type="checkbox" />Click here to opt-in to received SMS messages for this event.**</label></p></div></div>';
			
			if(constant.appId != '7B7D0460-E01B-431C-B452-0DA4BEE76AD9')
				constructRSVPContent+='<p>Ask up to three friends to join you at your tasting by entering their emails below. NOTE:Friends MUST RSVP individually for their event.</p><input id="friendEmail" type="text" /><input id="friendEmail2" type="text" /><input id="friendEmail3" type="text" />';
				
			constructRSVPContent+='<span style="float:right; margin-right:35px;">* Required</span><div onclick="venueConstructor.setAttendee(this)" style="width:75px; height:20px; position:relative; cursor:pointer; background:transparent url('+constant.imagePath+'btn_submit.jpg) no-repeat;"/><div style="clear:both; margin:10px 0;"></div><div style="font-size:.8em"><p>** Up to 2 messages per event. Message and data rates may apply. TextSTOPto unsubscribe, text HELP for help to 30241 at any time. Your contactinformationwillnotbesold or used for any other purpose.</p></div></div>';
			$('#rsvpContentBox').html(constructRSVPContent);
			$('#rsvpContentBox .btnTimeSlot').bind('click',function(){venueConstructor.setSlot(this)})
			
			this.checkRegisteredSlots(arrayOfSlots);
		}
		else if(action == 'attendeeSent'){
			if(!inviteDeepLink){
				
				if(constant.appId == '7B7D0460-E01B-431C-B452-0DA4BEE76AD9')
					var constructRSVPContent = '<h2>YOU\'RE IN</h2><p>Your registration for a Johnnie Walker & GolfTEC event is confirmed. If you don\'t receive a confirmation email within 24 hours, contact <a href="mailto:johnniewalker@consumer-care.net">johnniewalker@consumer-care.net</a>.'
				else{
					//var constructRSVPContent = '<h2>YOU\'RE IN</h2><p>Your registration for the House of Walker Experience is confirmed. Check your email for a confirmation code you\'ll need at the door of your event. If you don\'t receive your code within 24 hours, contact <a href="mailto:johnniewalker@consumer-care.net">johnniewalker@consumer-care.net</a>.<h2>SHARE THE PRIVILEGE</h2><p>Surrounding yourself with excellent taste. Invite your friends to join you at your private tasting event, and get them in on exclusive House of Walker rewards.</p><div id="shareBox"><a target="_blank" href="http://www.facebook.com" onclick="this.href=meteor.sharing.href(\'Facebook\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_fb.jpg"</a><a target="_blank" href="http://www.twitter.com" onclick="this.href=meteor.sharing.href(\'Twitter\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_twitter.jpg"</a><a target="_blank" href="#" onclick="this.href=meteor.sharing.href(\'Email\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_email.jpg"</a></div>';
					//var constructRSVPContent = '<h2>YOU\'RE IN</h2><p>Your registration for this Johnnie Walker event is confirmed. Check your email for a confirmation code you\'ll need at the door of your event. If you don\'t receive your code within 24 hours, contact <a href="mailto:johnniewalker@consumer-care.net">johnniewalker@consumer-care.net</a>.<h2>PRE-REGISTER</h2><p>Not used to waiting in line? Check in early for your tasting <a href="http://survey.houseofwalkerexperience.com/?DATABASE_ID=100&EMAILADDRESS=skim@mktg.com" target="_blank">here</a>.</p><h2>SHARE THE PRIVILEGE</h2><p>Surrounding yourself with excellent taste. Invite your friends to join you at your private tasting event, and get them in on exclusive House of Walker rewards.</p><div id="shareBox"><a target="_blank" href="http://www.facebook.com" onclick="this.href=meteor.sharing.href(\'Facebook\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_fb.jpg"</a><a target="_blank" href="http://www.twitter.com" onclick="this.href=meteor.sharing.href(\'Twitter\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_twitter.jpg"</a><a target="_blank" href="#" onclick="this.href=meteor.sharing.href(\'Email\');"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/share_email.jpg"</a></div>';
					
					window.location.href = "confirm.html?sourceId="+$.urlParam("sourceId")+"&venueId="+$.urlParam("venueId")+"&eventId="+$.urlParam("eventId")+"&slotId="+$.urlParam("slotId")+"&title="+$.urlParam("title")+"&firstName="+$.urlParam("firstName")+"&lastName="+$.urlParam("lastName")+"&DOB1="+$.urlParam("DOB1")+"&DOB2="+$.urlParam("DOB2")+"&DOB3="+$.urlParam("DOB3")+"&gender="+$.urlParam("gender")+"&email="+$.urlParam("email")+"&confirmationId="+attendeeId;
					
					
					if(!constant.appId)
						constructRSVPContent += '<br /><br /><h2>PRE-REGISTER</h2></p><p>Check in early for your tasting <a href="#" onclick="mktg_form(); return false;">here</a></p>';
				}
			}
			else{
				if(constant.appId == '7B7D0460-E01B-431C-B452-0DA4BEE76AD9')
					var constructRSVPContent = '<h2>INVITE FRIENDS</h2><p>Invite up to three friends of good taste. Simply enter their email addresses below. Then remind them to sign up themselves - RSVPs are limited to one per person.</p><input id="friendEmail" type="text" /><input id="friendEmail2" type="text" /><input id="friendEmail3" type="text" /><img onclick="venueConstructor.setAttendeeFriend()" src="'+constant.imagePath+'btn_submit.jpg" style="cursor:pointer" />';	
				else
					var constructRSVPContent = '<h2>INVITE FRIENDS</h2><p>Invite up to three friends of good taste. Simply enter their email addresses below. Then remind them to sign up themselves - RSVPs are limited to one per person.</p><input id="friendEmail" type="text" /><input id="friendEmail2" type="text" /><input id="friendEmail3" type="text" /><img onclick="venueConstructor.setAttendeeFriend()" src="'+constant.imagePath+'btn_submit.jpg" style="cursor:pointer" /><br /><br /><br /><br /><h2>PRE-REGISTER</h2><p>Check in early for your tasting <a href="#" onclick="mktg_form(); return false;">here</a></p>';	
			
				var slotId = parseFloat(venueConstructor.slotId.split('_')[1]);
				if(attendeeId)
					venueConstructor.attendeeId = attendeeId;
				if(!venueConstructor.attendeeId)
					venueConstructor.attendeeId = 0;
				
				$.ajax({
					dataType: 'jsonp',
					type:'GET',
					data: {'appId':constant.appId,"cbm":"calendarController.checkNumberOfInvites","inviterId":parseFloat(venueConstructor.attendeeId), "slotId":slotId},
					url: constant.serverString+'getRemainingInvites.ashx'
				});
			}
			$('#rsvpContentBox').html(constructRSVPContent);	
		}
		else{
			var constructRSVPContent = '<h2>THANK YOU</h2><p>Your invitations have been sent. If your friends don\'t receive a confirmation email containing their RSVP details within 24 hours, please contact <a href="mailto:johnniewalker@consumer-care.net">johnniewalker@consumer-care.net</a>. <p>In the meantime, start talking scotch with other guests from your upcoming event (including our Master of Whisky) at the official Johnnie Walker page on Facebook.<br /><br /><a href="http://facebook.com/johnniewalkerus" target="_blank"><img src="/uploadedImages/johnniewalkercom/Johnnie_Events/fb_page-btn.jpg" /></a></p>'
			$('#rsvpContentBox').html(constructRSVPContent);	
		}
		var light = "Akzidenz Std Light";
		var regular = "Akzidenz Std Regular"; 
		
		if(checkDomain == 'www.johnniewalker.com' || checkDomain == 'neostaging.johnniewalker.com'){
			Cufon.replace("span.type", { letterSpacing: '-1px', fontFamily: regular });
			Cufon.replace("h2", { letterSpacing: '-1px', fontFamily: light });
			
			
			Cufon.replace("span.date", { letterSpacing: '-1px', fontFamily: regular });
			Cufon.replace("span.qtype", { letterSpacing: '-1px', fontFamily: light });
			
		}
			/*
			<span>JANUARY 5th, 2010</span>
			<span>TASTING EVENT</span>
			
			<span>[blurb about tasting event]</span>
			
			<span>Timeslots:</span>
			<span>lrium ipsum delorin loest losum lemor.</span>
			*/
	},
	
	checkNumberOfInvites : function(obj){
		var invitesLeft = obj.Message.split('=')[1]
		if( invitesLeft < 4){
			var inviteEmails = obj.invitees.split(',')
			for(var i=0; i < (3 - invitesLeft); i++){
				$("#rsvpContentBox input")[i].disabled = true
				$("#rsvpContentBox input")[i].style.border = 'solid 1px #191919';
				$("#rsvpContentBox input")[i].style.backgroundColor = '#191919';
				$("#rsvpContentBox input")[i].value= 'Invited: ' + inviteEmails[i];
			}
			if(invitesLeft == 0)
				$('#rsvpContentBox img').remove();
		}
	},
	
	checkRegisteredSlots : function(slotsArray){
		for(var i=0; i< slotsArray.length; i++){
			$.ajax({
				dataType: 'jsonp',
				jsonpCallback : "calendarController.eventAlreadyRegistered",
				type:'GET',
				data: {'appId':constant.appId,"cbm":"calendarController.eventAlreadyRegistered","slotId":slotsArray[i],"emailAddress":venueConstructor.saveAttendee.email},
				url: constant.serverString+'isRegistered.ashx'
			});
		}
	},
	eventAlreadyRegistered : function(obj){
		if(obj.isRegistered == 'True'){
			if(obj.attendeeId)
				venueConstructor.attendeeId = obj.attendeeId;
			else if(!venueConstructor.attendeeId)
				venueConstructor.attendeeId = '0';
				
			if(constant.appId != '7B7D0460-E01B-431C-B452-0DA4BEE76AD9')
				$('#slotId_'+obj.slotId).unbind('click').after("<span class='seats'>RSVP confirmed - <a href='#' onclick='venueConstructor.slotId = \"slotId_"+obj.slotId+"\";calendarController.showEventAction($(\"#daysOfMonth span.day.active.clicked\")[0],\"attendeeSent\",true,"+obj.attendeeId+"); return false'>Click to invite friends</a></span><div class='clearThis'></div>").css('cursor','default');
			else
				$('#slotId_'+obj.slotId).unbind('click').after("<span class='seats'>RSVP confirmed </span><div class='clearThis'></div>").css('cursor','default');
		}
	}

}


var errorChecking = {
	phoneinput : function (event, obj) {
		var key = event.keyCode;
		if (((47 < key) && (58 > key)) || ((95 < key) && (106 > key)) || (46 == key) || (8 == key) || (9 == key) || ((36 < key) && (41 > key))) {
			var areaCodeInput = document.getElementById('AreaCode');
			var cellInput = document.getElementById('inputCellPhonePart2');
			var cell2Input = document.getElementById('inputCellPhonePart3');
			var DOB1 = document.getElementById('DOB1');
			var DOB2 = document.getElementById('DOB2');
			var DOB3 = document.getElementById('DOB3');
			var objLength = obj.value
			var objId = obj.id;
			if (objLength.length > 2 && (objId == 'AreaCode' || objId == 'inputCellPhonePart2')) {
				switch (objId) {
				case 'AreaCode':
					cellInput.focus();
					break;
				case 'inputCellPhonePart2':
					cell2Input.focus();
					break;
				}
			} else if (objLength.length > 1) {
				switch (objId) {
				case 'DOB1':
					DOB2.focus();
					break;
				case 'DOB2':
					DOB3.focus();
					break;
				}
			}
			return;
		} else {
			event.preventDefault();
		}
	},
	echeck: function(str) {
			var at="@"
			var dot="."
			var lat=str.indexOf(at)
			var lstr=str.length
			var ldot=str.indexOf(dot)
			if (str.indexOf(at)==-1){
			   return false
			}
	
			if (str.indexOf(at)==-1 || str.indexOf(at)==0 || str.indexOf(at)==lstr){
			   return false
			}
	
			if (str.indexOf(dot)==-1 || str.indexOf(dot)==0 || str.indexOf(dot)==lstr){
				return false
			}
	
			 if (str.indexOf(at,(lat+1))!=-1){
				return false
			 }
	
			 if (str.substring(lat-1,lat)==dot || str.substring(lat+1,lat+2)==dot){
				return false
			 }
	
			 if (str.indexOf(dot,(lat+2))==-1){
				return false
			 }
			
			 if (str.indexOf(" ")!=-1){
				return false
			 }
	
			 return true					
	},
	calculateAge: function (pmonth, pday, pyear){
 
		if(pmonth > 12 || pmonth < 1)
			return false;
		if(pyear < 1900)
			return false;
		if(pday > 31 || pday < 1)
			return false;
		
		//Make sure input is a number
		var numTest = new Number(pmonth);
		var numTest1 = new Number(pday);
		var numTest2 = new Number(pyear);
		if(isNaN(numTest) || isNaN(numTest1) || isNaN(numTest2))
			return false;
			
		var daysInSubmittedMonth = calendarController.daysInMonth(pmonth,pyear)
		
		if(pday > daysInSubmittedMonth)
			return false;
			
		var age,
			// Today info
			today = new Date(),
			year = today.getFullYear(),
			month = today.getMonth() + 1,
			day = today.getDate();
																				                
		if ( month < pmonth ){
		age = year - pyear - 1;
		}
		else if ( month > pmonth ){
		age = year - pyear;
		}
		else if ( month == pmonth ){
		if ( day < pday ){
		age = year - pyear - 1;
		}
		else if ( day > pday ){
		age = year - pyear;
		}
		else if ( day == pday ){
		age = year - pyear;
		}
		}
		
		if(age < 21 || age == 'undefined')
			return false;
		else if(age >= 21){
			return true;	
		}
		else
			return false;
		},
	indicateError : function(objsArray){
		$("#errorBox").css('visibility','visible')
		
		for(var i=0; i < objsArray.length; i++){
			objsArray[i].css('border','solid 1px #F00').focus(function(){$(this).css('border','solid 1px #555555')});
			
			if($.browser.msie && objsArray[i][0].tagName == 'SELECT'){
				objsArray[i].css('background-color','#F00').focus(function(){$(this).css('background-color','#262626')});
			}
			
		}
		return true;		
	}
}


var user = {
	login : function(){
		FB.login(function(response) {
			if (window.console) {
			console.log("FB login callback with response %o",response);
			}
			if (response.session) {
				if (response.perms) {
			  		// user is logged in and granted some permissions.
			  		// perms is a comma separated list of granted permissions
			if (window.console) {
					console.log("FB login user logged in an granted perms, response.perms %o", response.perms);
			}
			  		$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_accepted-loggedIn');
			  		user.info();
				} else {
			  		// user is logged in, but did not grant any permissions
			if (window.console) {
					console.log("FB user logged in but no perms granted, response.perms %o", response.perms);
			}
			  		$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_Denied-perm');
				}
		  	} else {
				// user is not logged in
			if (window.console) {
					console.log("FB user not logged in action was canceled? response.session %o", response.session);
			}
				$("#trackingIFrame").attr('src','http://johnniewalker.wunderman-review.com/eventTrack/eventTracking.html?FB_Denied-login');
		  	}
		}, {perms:'email,user_birthday'});	
	},
	info : function(){
		FB.api('/me', function(response) {
			if (window.console) {
			console.log("FB user lookup with response %o", response);
			}
			//debug.log(response)
			$('#overlay input, #overlay select').each(function(){
				//debug.log(this.id)
				switch(this.id){
					case 'firstName':
						this.value = response.first_name;
					break;
					case 'lastName':
						this.value = response.last_name;
					break;
					case 'gender':
						this.value = response.gender.slice(0,1).capitalize();
					break;
					case 'DOB1':
						if(response.birthday)this.value = response.birthday.split('/')[0];
					break;
					case 'DOB2':
						if(response.birthday)this.value = response.birthday.split('/')[1];
					break;
					case 'DOB3':
						if(response.birthday)this.value = response.birthday.split('/')[2];
					break;
					case 'email':
						this.value = response.email;
					break;
				}
			});
			venueConstructor.setAttendee('overLay','facebook')
		});
	}
}

var dom = {
	insert : function(opt){
		$(opt.container).html(opt.html)
	}
}

var debug = function(){
	var logOn = false;
	return {
		log : function(msg){
			if(window.console && logOn)
				console.log(msg)
		}
	}
}();

var mktg_form = function(){
	window.open('http://diganjohnnie.com/johnniewalkerdotcom/form.html?id='+venueConstructor.attendeeId + '&email='+venueConstructor.attendeeEmail ,'RegisterForm','toolbar=0,menubar=0,location=0,resizeable=0,scrollbars=1,width=1050,height=700');		
}

function IsNumeric(input)
{
   return (input - 0) == input && input.length > 0;
}


var insertLoading = function(){
	return{
		set : function(location,opt){
			if(!opt)
				opt = {};
			
			var loadingDiv = $('<div class="loading"><img src="http://www.johnniewalker.com/uploadedImages/johnniewalkercom/Johnnie_Events/ajax-loader.gif" /></div>');
			if(opt.css)
				loadingDiv.css(opt.css);
			if(opt.imgcss)
				loadingDiv.find('img').css(opt.imgcss)
			$(location).append(loadingDiv);
			return loadingDiv;
		},
		remove : function(obj){
			obj.animate({'opacity':0},800,function(){$(this).remove()});
			return null;
		}
	}
}();

var locationMap = {537:36, 538:37, 539:38, 540:39, 541:40, 542:41, 543:42, 544:43, 545:44, 546:45, 547:46, 548:47, 549:48, 550:49, 551:50, 552:51, 553:52, 554:53, 555:54, 556:55, 557:56, 558:57, 559:58, 560:59, 561:60, 562:61, 563:62, 564:63, 565:64, 605:65}

function sendem(){
for(var i=1; i < att.length; i++){
	
		if(att[i].length == 8)		
		$.ajax({
				dataType: 'jsonp',
				type:'GET',
				data: {'firstname':att[i][0],'lastname':att[i][1],'mobile':att[i][2],'zip':att[i][3],'dob':att[i][4],'gender':att[i][5],'location':locationMap[att[i][6]],'confirmationId':att[i][7]},
				url: constant.serverString+'joule_api/',
				success:function(){
					//console.log('success')
				}
			});
	


}
}

