
var theAddress;

$(document).ready(function(){
	clearCheckBoxes();
	theAddress = new $.swim.addresses.Address();
});


var remember = "";
var nextEventId = "";
var playEventId = "";
var webcastAddrId = "";
function setRemember(value){
	if(value+"" == "true"){
		remember = "on";
	}else{
		remember = "off";
	}
}
function readCookie(cookieValue){
	remember = "off";
	if(cookieValue.indexOf("remember:true") > -1) remember = "on";
	theAddress = $.swim.addresses.AddressFromCookie(cookieValue);
	return theAddress.clone();
}
function saveCookie(){
	var cookieValues = new StringBuffer();
	cookieValues.append(theAddress.toCookie());
	cookieValues.append(",remember:true");
	SetCookie("RegFormElements",cookieValues.toString());
}
function deleteCookie(){
	SetCookie("RegFormElements", "");
	remember = "off";
}
function submitEvent(title,errors,eventType,seriesKey,config){
	if (errors == null){
		theAddress = new $.swim.addresses.Address();
	}	
	var events = getEventsHtml(eventType,seriesKey,title);

//	var outHtml = "";
	var registerHtml = registerPrompt(title,events,errors);
	
	var cookieValue = GetCookie('RegFormElements');
	var configInfo = config;

	if(cookieValue != null) {
		if (cookieValue.length > 0)
			configInfo = readCookie(cookieValue);
	}
	
	$.prompt(registerHtml,{
		position: 'absolute',
		closeText: 'X Close',
		buttons: { Submit: true, Cancel: false }, 
		callback: function(v,m){
			if(v){
					var key;
					if(remember == 'on') saveCookie();
					else deleteCookie();
					if (title == 'Registration'){
						var xmlDoc = new StringBuffer();
						xmlDoc.append("<request name=\"eventRegisterRequest\" ",theAddress.toAttributes()," eventType='",eventType,"' seriesKey='",seriesKey, "'>");
						
						if (eventType == 'Multiple'){
							eventIds = getSelectedEvents();
							for (var i = 0 ; i < eventIds.length ; i++){
								xmlDoc.append("<event id='",eventIds[i], "'/>");
							}
						}else if (eventType == 'Single'){
							xmlDoc.append("<event id='",nextEventId,"'/>");
						}
						xmlDoc.append("</request>");
						registerEventRequest = new CATS.RequestMaker($.swim.uris.getUrl('registerEvent'),
												confirmEvent,null,xmlDoc.toString(),false,null);
						registerEventRequest.loadXMLDoc();
								
					} else if (title == 'Play Recorded Webcast'){
						var queryStr = new StringBuffer();
						if(playEventId == null || playEventId.length < 1) playEventId = nextEventId; 
						queryStr.append("<request name=\"eventRequest\" ",theAddress.toAttributes()," eventId='",playEventId,
								"' eventType='",eventType,"' seriesKey='",seriesKey,"'>");
						queryStr.append("</request>");
					//	alert(queryStr);
						playEventRequest = new CATS.RequestMaker($.swim.uris.getUrl('playEvent'),
												confirmPlayEvent,null,queryStr.toString(),false,null);
						playEventRequest.loadXMLDoc();
						
					}
				}else{
					
			}
		}
	}
	);
	activateForm(configInfo);
  }

function activateForm(configInfo){
	if(configInfo == null) configInfo = new $.swim.addresses.Address();
	$("#countrySel199")
			 .countryList($('span#regionL199'),
					 $('select#regionS199'),
					 $('td#zipRow199'), 
					 $('td#regionR199'));
	var rememberOn = (remember != null && remember == "on");
	$("table#promptTable")
		.find("input.fname").val(configInfo.fname).end()
		.find("input.lname").val(configInfo.lname).end()
		.find("input.emailAddrC").val(configInfo.email).end()
		.find("input.addressC").val(configInfo.address).end()
		.find("input.cityC").val(configInfo.city).end()
		.find("input.zipC").val(configInfo.zip).end()
		.find("input.phoneC").val(configInfo.phone).end()
		.find("select.region").attr('st', configInfo.state).end()
		.find("select.countryCode").val(configInfo.country).trigger("change").end()
		.find("input#checker").attr('checked', rememberOn);
}
function confirmEvent(){
	var xml = this.req.responseXML;
	var root = xml.documentElement;
	var config ;
	var eventType; 
	var seriesKey ;
	var events = root.getElementsByTagName("eventRegisterRequest");
	if(events.length > 0){
		events = events[0];
	} else
		events = null;
	
	if (events != null){
		config = 		$.swim.addresses.AddressFromXML($(events));
		eventType 		= events.attributes.getNamedItem('eventType').value;
		seriesKey 		= events.attributes.getNamedItem('seriesKey').value;
	}	

	var errors = root.getElementsByTagName("Error");
	var message ="";
	if (errors.length > 0){
		errors = errors[0];
	    message = errors.attributes.getNamedItem('message').value;
	}	
		var status = root.getAttribute("status");
		var events = getEventsHtml(eventType,seriesKey,'Registration');
		var confirmHtml = new StringBuffer();
		if (status != null){
			if (status == 'success'){
				confirmHtml.append('<div style="font-size:16px;font-weight:bold">',
						'Registration Accepted',
						'</div>',
						'<div style="padding-top: 10px;">',
						'<div class="desc" style="position:relative;">Thank you for submitting your registration. You will receive a confirmation e-mail* shortly with calendar links to the following webcast(s):</div>' ,
						'<br/>',
						'<div class="events">', events.toString() , '</div>','<br/>',
						'<div class="desc" style="position:relative;">*Please add noreply@investools.com to your safe senders list.</div></div>');
				clearCheckBoxes();
				$.prompt(confirmHtml.toString(),{
					position: 'absolute',
					closeText: 'X Close',
					buttons: { Okay: true}});
				
			}else{
				var result = message.split(",");
				if(result[0]=='emailused'){
					var errorMsgEmailUsed= new StringBuffer();	
					errorMsgEmailUsed.append('You have already registered for the event(s):<br/>');
					for (i=1;i<result.length;i++)
					{
						errorMsgEmailUsed.append(result[i] + '<br/>')
					} 
					message=errorMsgEmailUsed;
				}
				clearCheckBoxes();
				confirmHtml.append('<div style="font-size:16px;font-weight:bold">',
						' Registration Problem</div>',
						'<div style="padding-top: 10px;">',
						'<div class="desc" style="position:relative;">' , message , '</div>','</div>');
				$.prompt(confirmHtml.toString(),{
					position: 'absolute',
					closeText: 'X Close',
					buttons: { Okay: true}});
			
			}
		}else{
				submitEvent("Registration",message, eventType,seriesKey,config);
				return;
		}
} 	
function confirmPlayEvent(){
	var xml = this.req.responseXML;
	var root = xml.documentElement;
	var config ;
	var eventType; 
	var seriesKey ;
	var title = 'Play Recorded Webcast';
	var events = root.getElementsByTagName("eventRequest");
	
	if(events.length > 0){
		events = events[0];
	} else
		events = null;

	if (events != null){
		config = 		$.swim.addresses.AddressFromXML($(events));
		eventType 		= events.attributes.getNamedItem('eventType').value;
		
		seriesKey 		= events.attributes.getNamedItem('seriesKey').value;
		
	}	
	var errors = root.getElementsByTagName("Error");
	var message ="";
	if (errors.length > 0){
		errors = errors[0];
		//alert(errors);
	    message = errors.attributes.getNamedItem('message').value;
		//alert(message);
	}	

	var status = root.getAttribute("status");
	var events = getEventsHtml(eventType,seriesKey,title);
	var confirmHtml = new StringBuffer();
	if (status != null){
		//alert(status);
		if (status == 'success'){
			var redirectUrl = root.getAttribute("redirectUrl");
			$.swim.uris.addUrl('playUrl', redirectUrl);
			$.swim.uris.openTab('playUrl');
			$.swim.uris.addUrl('playUrl', '');// un set this just to be safe.
			
		}
	}else{
		submitEvent(title,message, eventType,seriesKey,config);
		return;
	}
}		

function joinEvent(title,id,config,errors){
	var title = $('div#'+id).find('span.webcastTitle').html();
	var eventDate = $('div#'+id).find('span.eventDate').html();
	var instructor = $('div#'+id).find('span.instructor').html();
	var displayName = $('div#'+id).find('span.displayName').html();
	var joinEventId = $('div#'+id).find('span.id').html();
	var eventInfo = new StringBuffer();
	eventInfo.append( '<table cellpadding="0" cellspacing="0"><tr><td style="padding: 0px 10px 0px 5px; vertical-align: top;"><img src="/common/images/tdawebcasts/icon_',id,'40.gif" width="20" height="20" /></td>' ,
					'<td><div style="position: relative;"><b>', displayName ,':</b> ', eventDate , '&nbsp;' , '</div>' ,
					'<div>', title , '</div>' ,
					 '<div style="position:relative;">' , instructor , '</div></td></tr></table>');
	
	var joinHtml = registerPrompt("Join Live Webcast",eventInfo,errors);
	var seriesKey = id;
	var cookieValue = GetCookie('RegFormElements');
	var configInfo = config;
	if(cookieValue != null) {
		if (cookieValue.length > 0)	configInfo = readCookie(cookieValue);
	}
	
	
	$.prompt(joinHtml,{ 
		position: 'absolute',
		closeText: 'X Close',
		buttons: { Submit: true, Cancel: false }, 
		callback: function(v,m){
			if(v){
				if(remember == 'on') saveCookie();
				else deleteCookie();
				var queryStr = new StringBuffer();
				queryStr.append("<request name=\"eventRequest\" ",theAddress.toAttributes()," eventId='",joinEventId,"' seriesKey='",seriesKey,"'>");
				
				queryStr.append("</request>");
				joinEventRequest = new CATS.RequestMaker($.swim.uris.getUrl('joinEvent'),
											confirmJoinEvent,null,queryStr.toString(),false,null);
				joinEventRequest.loadXMLDoc();
			}
		}
	}
	);
	activateForm(configInfo);
}

function confirmJoinEvent(){
	var xml = this.req.responseXML;
	var root = xml.documentElement;
//	alert(this.req.responseText);
	var config ;
	var eventType; 
	var seriesKey ;
	var title = 'Join Live Webcastt';
	var events = root.getElementsByTagName("eventRequest");
	
	if(events.length > 0){
		events = events[0];
	} else
		events = null;

	if (events != null){
		config = 		$.swim.addresses.AddressFromXML($(events));
		
		seriesKey 		= events.attributes.getNamedItem('seriesKey').value;
	}	
	var errors = root.getElementsByTagName("Error");
	var message ="";
	if (errors.length > 0){
		errors = errors[0];
	    message = errors.attributes.getNamedItem('message').value;
		//alert(message);
	}	

		var status = root.getAttribute("status");
		if (status != null){
			if (status == 'success'){
				var redirectUrl = root.getAttribute("redirectUrl");
				//alert(redirectUrl);
				$.swim.uris.addUrl('joinUrl', redirectUrl);
				$.swim.uris.openTab('joinUrl');
				$.swim.uris.addUrl('joinUrl', ''); // just to be safe.
			}
		}else{
			joinEvent(title,seriesKey,config,message);
			return;
		}
}

function getEventsHtml(eventType,seriesKey,title){
	var displayName ;
	var webcastTitle;
	var webcastDate;
	var webcastTime;
	var instructor ;
	var events = new StringBuffer();
// The event type is used to distinguish if multiple events are selected from upcomingEvents or a single event is selected in nextevent.jsp or eventDetail.jsp
	if (eventType == 'Multiple'){
		if (title == 'Registration'){
			var eventIds = getSelectedEvents();
			if (eventIds.length > 0){
					$('tr.tdawebcasts_table_rowcontents').each(function(){  
				        if($(this).find('input.tdawebcasts_checkbox').attr('checked')){		 
				        	displayName = $(this).attr('categoryName');
					       	webcastTitle=$(this).find('span.webcastTitle').html();
					       	webcastDate=$(this).find('td.date').html();
					       	webcastTime=$(this).find('td.time').html();
					       	series=$(this).find('span.seriesKey').html().toLowerCase();
					       	var regInfo = new StringBuffer();
					       	regInfo.append('<div style="padding-bottom: 8px;"><table cellpadding="0" cellspacing="0"><tr><td style="padding: 0px 10px 0px 5px; vertical-align: top;"><img src="/common/images/tdawebcasts/icon_',series,'40.gif" width="20" height="20" /></td>' ,
											'<td><div><b>', displayName ,':</b>&nbsp;', webcastDate , '&nbsp;' , webcastTime , '</div>' ,
											'<div>', webcastTitle , '</div></td></tr></table></div>');
				        	events.append(regInfo.toString());
				        } 
				   });
				}
		}else if (title == 'Play Recorded Webcast'){
			displayName = $('tr#'+seriesKey).attr('archiveName');
			webcastTitle =$('tr#'+seriesKey).find('span.archiveTitle').html();
			webcastDate = $('tr#'+seriesKey).find('span.archiveDate').html();
			webcastTime =$('tr#'+seriesKey).find('span.archiveTime').html();
			playEventId = $('tr#'+seriesKey).attr('archiveId');
	       	series = $('tr#'+seriesKey).find('span.seriesKey').html().toLowerCase();
			var regInfo = new StringBuffer();
			regInfo.append('<div style="padding-bottom: 8px;"><table cellpadding="0" cellspacing="0"><tr><td style="padding: 0px 10px 0px 5px; vertical-align: top;"><img src="/common/images/tdawebcasts/icon_', series ,'40.gif" width="20" height="20" /></td>' ,
							'<td><div><b>', displayName ,':</b>&nbsp;', webcastDate , '&nbsp;' , webcastTime , '</div>' ,
							'<div>', webcastTitle , '</div></td></tr></table></div>');
	        events.append(regInfo.toString());
		}
	}else if (eventType == 'Single'){
		displayName = $('div#'+seriesKey).find('span.displayName').html();
		webcastTitle = $('div#'+seriesKey).find('span.webcastTitle').html();
		webcastDate = $('div#'+seriesKey).find('span.eventDate').html();
		//instructor = $('div#'+seriesKey).find('span.instructor').html();
		nextEventId = $('div#'+seriesKey).find('span.id').html();
		var info = new StringBuffer();
	    info.append('<table cellpadding="0" cellspacing="0"><tr><td style="padding: 0px 10px 0px 5px; vertical-align: top;"><img src="/common/images/tdawebcasts/icon_', seriesKey.toLowerCase() ,'40.gif" width="20" height="20" /></td>' ,
							'<td><div><b>', displayName ,':</b> ', webcastDate , '&nbsp;' , webcastTime , '</div>' ,
							'<div>', webcastTitle , '</div></tr></td></table>');
	    events.append(info.toString());
	}
	return events;
}


function registerPrompt(title, events, errors) {
	
	var registerForm = $('div#registerForm').html();
	var webcastAddrId = $('div#registerForm').attr('webcastId');
	
	registerForm = registerForm.replace('sourceTable', 'promptTable');
	
	while(registerForm.indexOf(webcastAddrId) > -1)
		registerForm = registerForm.replace(webcastAddrId, '199');
	
	var registerStr = new StringBuffer();
	var desc = "";
	if (title == 'Registration')
		desc = "Please submit contact information to register ";
	else
		desc = "Please submit contact information for access";
	
	registerStr.append('<div>',
					   '<div style="font-size:11px;float:right;padding-right:10px;">* Required Fields</div>',
					  '<span style="font-size:16px;font-weight:bold">' , title , '</span>',
					  '<div style="padding-top: 20px;">');
	if (title == 'Registration'){
		registerStr.append('<div class="desc">Upon registration you will receive a confirmation email with schedule information and calendar links for each of your selected webcasts.</div>' );
	}
	registerStr.append('<div style="padding-top:10px;"><div class="events">' , events.toString() , '</div>' ,
						'<div class="desc" style="padding-top:10px">', desc ,'</div></div>');
	
	if (errors == null){			
		registerStr.append('<div id="submitForm" webcastId="" style="padding-top:10px;">', registerForm , '</div>');
	}else{
		registerStr.append('<div style="padding-top:10px; font-weight:bold;color:red">*', errors , '</div><div id="submitForm" style="padding-top:10px;" webcastId="" >' ,  registerForm , '</div></div>');
		
	}
	registerStr.append('</div>');
	return registerStr.toString();			
	
}

function getSelectedEvents(){
	var eventList = new Array();
	$('tr.tdawebcasts_table_rowcontents').each(function(){  
          if($(this).find('input.tdawebcasts_checkbox').attr('checked')){ 
               eventList.push($(this).attr('id')); 
          } 
     }); 
    
	return eventList;
}

function enableRegisterButton(){
	var eventsChecked = getSelectedEvents();
	if (eventsChecked.length > 0){
		$('div#enableButton').show();
		$('div#disableButton').hide();
		
	}else{
		$('div#enableButton').hide();
		$('div#disableButton').show();
	}
}



function closeW(){
	window.opener = self;
	window.close();
} 

function clearCheckBoxes(){
	$('tr.tdawebcasts_table_rowcontents')
		.find('input.tdawebcasts_checkbox').attr('checked',false);
}

function td_getETDate(serverTime){
	
		//offset for East coast time
	    var offset = gl_getETOffset();
	    var zone = "ET";
		
		var now = new Date();
		now.setTime(serverTime);

		//utc = current time + offset (the offset is mins so convert to millisec x60x1000)
		//add/sub the timezone to which we want to convert (convert hours to millisec x60x60x1000) 
		var newZoneTimeInMilliSec = now.getTime() + now.getTimezoneOffset() * 60000 + offset * 3600000;
		var newZoneTime = new Date(newZoneTimeInMilliSec);
		
		var dayOfWeek = newZoneTime.getDay();
		
		var dateString = gl_getMonth(newZoneTime) + ' ' + newZoneTime.getDate() +  ' ' + gl_getDayOfWeek(newZoneTime);
	    return dateString;
}