function isEmpty( inputStr ) { return ( null == inputStr || "" == inputStr ) }

function init()
{

    $('#displayEventDetails').hide();
    $('#eventRegistrationForm').hide();
    $('#eventRegistrationConfirmation').hide();
    
    var eventId = $.url.param("eventId");
	
    if (eventId != null)
    {
        getEventDetails(eventId);
    }
    var validator = $("#findEventForm").validate
    ({
        rules:
        {
			eventState: {
				required: true
			}        
        },
        messages:
        {
			eventState: {
				required: "Please select a state"
			}        
        },
        errorPlacement: function(error, element)
        {
            error.appendTo( element.parent().next('td.error'));         
        },
        submitHandler: function() 
        {
            findEvent();
        }         
    });    

}


function showFindEvent() {
	
	$('#listEventsContainer').hide()
	$('#displayEventTemplate').hide();
	$('#displayEventDetails').hide();
	$('#eventRegistrationConfirmation').hide();
	$('#findEvent').show();

} //showFindEvent

function findEvent()
{
    var HasRecords,ToolName,ToolDate;
    var eventState = $('#eventState').val();
    $.ajax({url:'/msasProject/portlet/events/findEvent.do', 
            dataType:'json',
            type: 'POST',
            data:
            ({
                state:eventState}),
                success: function(data, textStatus)
                {
                    var hasRecords = data.HasRecords;
                    if (!isEmpty(data) && hasRecords == true ) 
                    {
                        displayEvents(data);
                    }
                    else
                    {
                        init();
                         $('.nostate').html('<h3> Selected State: '+eventState+'</h3>Sorry, there are currently no events scheduled in your area. Please check again soon.');
                    }
				},
                failure: function()
                {
				    alert('Error finding events.  Please try again.');
				}
		  });                
}

function getEventDetails(eventId)
{
    $.ajax({url:'/msasProject/portlet/events/eventDetails.do', 
            dataType:'json',
            type: 'POST',
            data:
            ({
                eventId:eventId}),
                success: function(data, textStatus)
                {
                    if (!isEmpty(data)) 
                    {
                        displayEventDetails(data);				    
                    }
                    
				},
                failure: function()
                {
				    alert('Sorry we had a problem.  Please try again.');
				}
		  });                

    
}

function submitEventRegistration()
{

    var EventDate = $('#displayEventDetails .eventStartText').text() + ' - ' + $('#displayEventDetails .eventEndText').text();
    var EventCity =  $('#displayEventDetails .eventCityText').text();
    var EventState =  $('#displayEventDetails .eventStateText').text();
    var Event =  $('#eventRegistrationForm .eventTitleText').text(); 
    var salutation = $('#salutation').val();
    var firstName = $('#firstName').val();
    var lastName = $('#lastName').val();
    var address1 = $('#address1').val();
    var address2 = $('#address2').val();
    var city = $('#city').val();
    var state = $('#state').val();
    var zip = $('#zipcode').val();
    var phoneNumber = $('#phoneNumber').val();
    var emailAddress = $('#email').val();
    var guests = $('#guest').val();
    var adultGuests = $('#howManyAdults').val();
    var childGuest = $('#howManyChildrens').val();
    var referrer = $('#referrer').val();
    var gender = $("input[name='gender']:checked").val()
    var birthMonth = $('#birthMonth').val();
    var birthDay = $('#birthDay').val();
    var birthYear = $('#birthYear').val();
    var custType = $("input[name='custType']:checked").val()
    var currentTherapy = $('#currentTherapy').val();
    var previousTherapy = $('#previousTherapy:checked').val();
    var marketWilling = $('#marketWilling:checked').val() == "on"?"true":"false";

    
    $.ajax({url:'/msasProject/portlet/events/registerEvent.do', 
            dataType:'json',
            type: 'POST',
            data:
            ({
                Event:Event,
                EventDate:EventDate,
                eventCity:EventCity,
                eventState:EventState,
                salutation:salutation,
                firstName:firstName,
                lastName:lastName,
                address1:address1,
                address2:address2,
                city:city,
                state:state,
                zip:zip,
                phoneNumber:phoneNumber,
                emailAddress:emailAddress,
                guests:guests,
                adultGuests:adultGuests,
                childGuest:childGuest,
                referrer:referrer,
                gender:gender,
                birthMonth:birthMonth,
                birthDay:birthDay,
                birthYear:birthYear,
                custType:custType,
                currentTherapy:currentTherapy,
                previousTherapy:previousTherapy,
                marketWilling:marketWilling                
             }),
                success: function(data, textStatus)
                {
                    $('#eventRegistrationForm').hide();
                    $('#eventRegistrationConfirmation').show();  
				},
                failure: function()
                {
                   aler("Sorry, we experienced a problem.  Please submit again.");
				}
		  });     
        
}


function displayEventRegistrationForm()
{
    userDetails = reqUserDetails;
    if(userDetails != null)
    {
        $('#firstName').val(userDetails.firstName);
        $('#lastName').val(userDetails.lastName);
        $('#address1').val(userDetails.address);
        $('#address2').val(userDetails.address2);
        
        $('#city').val(userDetails.city);
        $('#state').val(userDetails.state);
        $('#zipcode').val(userDetails.zipcode);
        
        $('#email').val(userDetails.email);
        $('#phoneNumber').val(userDetails.phoneNumber);
        
        if(userDetails.gender == 'M')
            $('input[name="gender"]')[1].checked = true;
        else if (userDetails.gender == 'F')
            $('input[name="gender"]')[0].checked = true;                        
        
        
        var dateEnt = Date.parse(userDetails.birthDate);
        $('#birthMonth').val(dateEnt.getMonth()+1);
        $('#birthDay').val(dateEnt.getDate());
        $('#birthYear').val(dateEnt.getFullYear());
        
        
        var userType = userDetails.userType;
        if( userType == 'patient')
            $('input[name="custType"]')[0].checked = true;
        else if (userType == 'caregiver')
            $('input[name="custType"]')[1].checked = true;        
        else if (userType == 'physician')
            $('input[name="custType"]')[2].checked = true;    
			
		if (portalName == 'msas') {
			
			$('#currentTherapy').val(userDetails.currentTherapy);

        	var previousTherapies = userDetails.previousTherapies;
        	if (previousTherapies != null)
			{
				for(i = 0 ; i < previousTherapies.length; i++)
				{
					if( previousTherapies[i] == 'Avonex')
						$('input[name="previousTherapy"]')[0].checked = true;
					else if (previousTherapies[i] == 'Betaseron')
						$('input[name="previousTherapy"]')[1].checked = true;        
					else if (previousTherapies[i] == 'Copaxone')
						$('input[name="previousTherapy"]')[2].checked = true;        
					else if (previousTherapies[i] == 'Other')
						$('input[name="previousTherapy"]')[3].checked = true;     
					else if (previousTherapies[i] == 'Tysabri')
						$('input[name="previousTherapy"]')[4].checked = true;  
					else if (previousTherapies[i] == 'Rebif')
						$('input[name="previousTherapy"]')[5].checked = true;  
					else if (previousTherapies[i] == 'None')
						$('input[name="previousTherapy"]')[6].checked = true;                                                                      
					
				}
			}
		} // end if portalName

    }    
    
    $('#findEvent').hide();
    $('#displayEventDetails').hide();
    $('#eventRegistrationForm').show();
    $('#eventRegistrationConfirmation').hide();
    var validator = $("#registrationForm").validate
    ({
        
        rules:
        {
			firstName: {
				required: true
			},
			lastName: {
				required: true
			},
            address1: {
				required: true
			},
			city: {
				required: true
			},
			state: {
				required: true
			},
			zipcode: {
				required: true,
				digits: true,
				minlength: 5,
				maxlength: 5
							
			},
			phoneNumber: {
				required: true,
				digits: true,
				minlength: 10,
				maxlength: 10
				
			},
			email: {
				required: true,
				email: true
			},            
			guest: {
				required: true
			},            
			howManyAdults: {
                  required: function(element) {
                    return $("#guest").val() == 'yes';
                  }
			}, 
			howManyChildrens: {
                  required: function(element) {
                    return $("#guest").val() == 'yes';
                  }				
			},                       
			referrer: {
				required: true
			},
			custType: {
				required: true
			},
            currentTherapy: {
                  required: function(element) {
                    return ($("input[name='custType']:checked").val() == 'patient' && portalName == 'msas');
                  }				
            },             
            previousTherapy: {
                  required: function(element) {
                    return ($("input[name='custType']:checked").val() == 'patient' && portalName == 'msas');
                  }				
            }         
        },
        messages:
        {
			firstName: {
				required: "Please provide your first name"
			},
			lastName: {
				required: "Please provide your last name"
			},        
			address1: {
				required: "Please provide your address"
			},
			city: {
				required: "Please provide your city"
			},
			state: {
				required: "Please provide your state"
			},
			zipcode: {
				required: "Please provide your zip"
			},
			phoneNumber: {
				required: "Please provide your phone number"
			},
            email: {
                required: "Please enter your e-mail address"
            }, 
            guest: {
                required: "Please let us know how many guests you will be bringing"
            },                                                                       
            howManyAdults: {
                required: "Please indicate how may adults will accompany you"
            },                                                                
            howManyChildrens: {
                required: "Please indicate how may children will accompany you"
            },        
            referrer: {
                required: "Please let us know of how you heard about us"
            },    
            custType: {
                required: "Please select what describes you best"
            },   
            currentTherapy: {
                required: "Please provide your current therapy"
            },                                           
            previousTherapy: {
                required: "Please provide your previous therapy"
            }                                                       
        },
        errorPlacement: function(error, element)
        {
            if ( element.is(":radio") ) 
                error.appendTo('#radioError');
            else if ( element.is(":checkbox") ) 
                error.appendTo('#checkBoxError');               
            else
            {                
                (element.parent().next() ).empty();
                 error.appendTo( element.parent().next('td.error'));        
            }
        }
        ,
        submitHandler: function() {
			 submitEventRegistration();
		}        
    });
}
function redisplayEvents()
{
    $('#listEventsContainer').show();
    $('#displayEventTemplate').hide();
    $('#displayEventDetails').hide();
    $('#eventRegistrationConfirmation').hide();

}

function displayEvents(data) {
	
    
    $('#listEventsContainer').show();
    $('#findEvent').hide();
    $('#displayEventDetails').hide();
    $('#eventRegistrationConfirmation').hide();
    
    //var displayEventTemplateClone = $('#listEventsContainer').html();
    var toolData = data.ToolData;
    
	// reset table of events
	
	$('#displayEventTable tbody').empty();
	
	//iterate through events using template and append template to body of table
	
    $.each(toolData, function(arrayNum, event) 
    {
    	
		//create unique class for container
		var entryIdClass = 'entryId_' + arrayNum;
		
		// add entryId class to template 
		$('#displayEventTemplate .displayEvent').addClass(entryIdClass);
		            
		// populate new clone -- elemClass container -- with array values, both span and initially hidden inputs
		var elemClass = '.' + entryIdClass;
		
		var eventTitleSpanClass = elemClass + ' .eventTitleText';
        var eventInformationSpanClass = elemClass + ' .eventInformationText';
        var eventDescriptionSpanClass = elemClass + ' .eventDescriptionText';
        var eventCitySpanClass = elemClass + ' .eventCityText';
        var eventStateSpanClass = elemClass + ' .eventStateText';
        var eventStartSpanClass = elemClass + ' .eventStartText';
		
		//eventObj.title = event.title;
        //eventObj.Information = event.Information;
        
		$(eventTitleSpanClass).html('<a href="javascript:getEventDetails(\''+event.siebelId+'\');">'+event.title+'</a>');
        $(eventCitySpanClass).text(event.city);
        $(eventStateSpanClass).text(event.state);
        $(eventStartSpanClass).text(new Date(event.start).toString("MM/d/yyyy"));
		$(eventDescriptionSpanClass).html(event.Description+'&nbsp;<a href="javascript:getEventDetails(\''+event.siebelId+'\');">More</a>');
		
		//displayEventTemplateClone = displayEventTemplateClone + $('#displayEventTemplate').html(); 
		
		var eventRow = $('#eventTableTemplate tbody').html(); 
		
		//remove entryId class from template
		$('#displayEventTemplate .displayEvent').removeClass(entryIdClass);
		
		$('#displayEventTable tbody').append(eventRow);
        
	});	
    
    //$('#existingEventEntries').html(displayEventTemplateClone);
    //$('#existingEventEntries').show();
    //$('#listEventsContainer').show();
    

} // buildEntries function

function displayEventDetails(data)
{ 
    var somedate = new Date();
	
	if (data.ToolData != "" && data.ToolData != undefined) {
		
		
		
		$.each(data.ToolData, function(arrayNum, msEvent) 
		{
			
			
			$('#displayEventDetails .eventTitle').text(msEvent.title);
			$('#displayEventDetails .eventCityText').text(msEvent.city);
			$('#displayEventDetails .eventStateText').text(msEvent.state);
						
			//remove time zone abbreviation from string value of start time
			var evStart = msEvent.start;
			evStart = evStart.replace('EDT', '');
			evStart = evStart.replace('EST', '');
			
			//remove time zone abbreviation from string value of end time
			var evEnd = msEvent.end;
			evEnd = evEnd.replace('EDT', '');
			evEnd = evEnd.replace('EST', '');
			
			//change to date object, timezone will not be set to est now, times will show as text entered
			var evStartTime = new Date(evStart).toString('hh:mm tt');
			var evEndTime = new Date(evEnd).toString('hh:mm tt');
			
			$('#displayEventDetails .eventStartText').text(new Date(msEvent.start).toString("MM/d/yyyy"));
			$('#displayEventDetails .eventEndText').html(evStartTime+'&nbsp;to&nbsp;'+evEndTime);
			$('#displayEventDetails .eventLocationText').html(msEvent.Description);
			
			$('#displayEventDetails .chooseAnotherEvent').html('<div class="btn-container"><a href="javascript:redisplayEvents();" class="buttonAction ui-corner-all">Choose another event</a></div>');        
			$('#eventState').val(msEvent.state)   
			
			var chkString = replaceYogaStrings(msEvent.information);
			$('#displayEventDetails .eventInformationText').html(chkString);
			
			// Build the event registration form now which will be used later
			$('#eventRegistrationForm .eventTitleText').text(msEvent.title);
			$('#eventRegistrationForm .eventLocationText').text(msEvent.Description);
			$('#eventRegistrationForm .source').val(msEvent.source);
			
			if (msEvent.allowRegister == 'Yes') {
			
				$('.registerButton').show();
			
			} else {
				
				$('.registerButton').hide();
			}
			
		});   
		
		
		
		
		$('#findEvent').hide();
		$('#listEventsContainer').hide()
		$('#displayEventTemplate').hide();
		$('#displayEventDetails').show();
		$('#eventRegistrationConfirmation').hide();
		
	} else {
		
		$('#findEventForm').prepend('<p class="noEvent">The event requested no longer exists.<p>');
		
		$('#findEvent').show();
	}
	
	
}


function enablePatientFields() {
	
	if ($('.patientClassRadio:checked').val() == 'physician') {
        $('#therapySel input[type=checkbox]').val = " ";
        $('#therapySel input[type=checkbox]').attr('disabled', false);
		$('#patientFields :label').css('color', '#C3C3C3');
		$('#patientFields :input').attr('disabled', true);
		$('#patientFields input[type=radio]').attr('disabled', true).removeAttr('checked');
		$('#patientFields input[type=checkbox]').attr('disabled', true).removeAttr('checked');
		$('#patientFields :select').attr('disabled', true);

        
        
	} else {
        
		$('#patientFields :label').css('color', '#000000');
		$('#patientFields :input').attr('disabled', false);
		$('#patientFields input[type=radio]').attr('disabled', false);
		$('#patientFields input[type=checkbox]').attr('disabled', false);
		$('#patientFields :select').attr('disabled', false);
		$('#patientFields font').css('color', '#FF0000');
        
        
	}
}

function clearCheckboxes() {
	if (!($('.patientClassRadio:checked').val() == 'physician')) {
		if ($('.noneChkbx').attr('checked')) {
			$('#therapySel input[type=checkbox]').attr('disabled', true).removeAttr('checked');
			$('.noneChkbx').attr('checked', true).attr('disabled', false);
		} else {
			$('#therapySel input[type=checkbox]').attr('disabled', false);
		}
	}
}

function checkLocation() {
	
	var urlLoc = window.top.location;
	
	var patt = /msas.portal/i;
	
	var inMSAS = patt.test(urlLoc);
	
	if (inMSAS) {
	
		$('#tabNav').hide();
	
	} else {
		
		$("#tabs").tabs();
		
	}
}

// regex function for replace value
function replaceYogaStrings(aString) {
	
	var finalString,findString,replaceString,pattern;
	
	// find Baron Baptiste
	findString = "Baron Baptiste";
	replaceString = '<a href="http://www.mymsyoga.com/yoga/en_US/msyoga/home/my-ms-yoga/index.xml">Baron Baptiste</a>';
	pattern = new RegExp(findString);
	finalString = aString.replace(pattern,replaceString);
	
	// find my ms yoga
	findString = "My MS Yoga";
	replaceString = '<a href="http://www.mymsyoga.com">My MS Yoga</a>';
	pattern = new RegExp(findString);
	finalString = finalString.replace(pattern,replaceString);
	
  	return finalString;
	
}
