/**************************************************************************
 * MeetingStarter Meeting Creation Javascript Code
 * Jon Paris (jonparis@meetingstarter.com), July 2007
 **************************************************************************/

//<![CDATA[

var DEBUG = 0;
var HELPHEADER = "MeetingStarter Help:\n\n";
var mainTabber;
var firstload = true;
var gMap, gGeocoder; //for view page
var datesArr= new Array();
    var dateCalendar = new Calendar(0, null, onSelect, null);
    dateCalendar.setDateFormat("%m/%d/%Y");
    dateCalendar.setDateStatusHandler(dateStatus);

/**************************************************************************
 * General Page Layout Code
 **************************************************************************/

/* initPage
   Called when the page is loaded */
function initPage()
{
    if (viewpage) {
        // only load map when you switch to page 2
        var tabberOptions = {
            'onTabDisplay': function(argsObj){
                if (argsObj.index == 1 && has_location) 
                    initGoogleMap();
            }
        };
        //Required Fields
        requiredStar(document.appointmentsignupform,reqFieldArr);
    }
    else {
    var tabberOptions = {
        'onTabDisplay':function(argsObj)
        {
            if(argsObj.index == 2)
                toggleAdvancedTabs(argsObj.tabber, true, 3);
            else if(argsObj.index == 7)
                toggleAdvancedTabs(argsObj.tabber, false, 0);
        }
    };
    }
    mainTabber = tabberAutomatic(tabberOptions);
    toggleAdvancedTabs(mainTabber, false, 0);
    createCalendars("datecal");
    
    initialdate = new Date();
    var date = displayMDYDate(initialdate);
    var curDate = displayPrettyDate(initialdate);
    //refresh header
    var dateDesc = getObj("date");
    dateDesc.innerHTML =
        "<a title='go to last day with appointments'"+
        " href='javascript:showNextDay(-1)'>&lt;&lt;</a> " +
        curDate +
        " <a title='go to next day with appointments'"+
        " href='javascript:showNextDay(1)'>&gt;&gt;</a>";
    //refresh day display

        showNextDay(1);
    stripePageCommon();//found in utility.js
        if (typeof(initTab) != "undefined") {
        initTab = parseInt(initTab);
        mainTabber.tabShow(initTab);
    }
}

function toggleAdvancedTabs(tabber, toggle, newIndex)
{
    for(var i=0;i<tabber.tabs.length;i++)
    {
        if(tabber.tabs[i].hideOnAdvanced)
            tabber.tabs[i].li.style.display = (!toggle) ? "" : "none";
        else if(tabber.tabs[i].showOnAdvanced)
            tabber.tabs[i].li.style.display = (toggle) ? "" : "none";
    }
    if(!isNaN(newIndex))
        tabber.tabShow(newIndex);
}


function suggestHelp()
{
    alert(HELPHEADER +
        'Checking this box allows others to suggest new options to everyone');
}

function clearDef(obj)
{
    if(!obj.cleared)
    {
        obj.value = "";
        obj.cleared = true;
    }
}

/**************************************************************************
 * tooltips
 **************************************************************************/

var calTipOpen = false;
var duplicateOriginalDate = false;
var duplicateTempMonth = false;
var duplicateTempYear = false;
var e = window.event;

function openCalTip(e,date)
{
  calTipOpen = true;
  TagToTip('ttduplicateDates', FOLLOWMOUSE, false, STICKY, true, DELAY, 5);
  duplicateOriginalDate = date;
  var d = new Date;
  d = mdyToDate(date);
  
  duplicateTempMonth = d.getMonth();
  duplicateTempYear = d.getFullYear();
}

function closeCalTip() {
		Tip('', OPACITY, 0);
		calTipOpen = false;
        duplicateOriginalDate = false;
        duplicateOriginalMonth = false;
}

// copy all appointments on one date to another date
function copyDatesAppointments(dateCopy){

    if (!datesArr[dateCopy]) {
        datesArr[dateCopy] = new Array();
    }
    for (var x in datesArr[duplicateOriginalDate]) {
        if (datesArr[duplicateOriginalDate][x].start)
        datesArr[dateCopy].push(datesArr[duplicateOriginalDate][x]);
    }
    dateCalendar.refresh();  
}

/**************************************************************************
 * Time/Date Page
 **************************************************************************/
var appointmentTimeID = 0;
var lastEndTime = "3 pm";
var currentTime = new Date();
var month = currentTime.getMonth() + 1;
var day = currentTime.getDate();
var year = currentTime.getFullYear();


// can be duplicateCal or datecal
function createCalendars()
{    
    if (!dateCalendar) 
        dateCalendar = new Calendar(0, null, onSelect, null);
    var calendarObj = dateCalendar;
    calendarObj.setDateFormat("%m/%d/%Y");
    calendarObj.setDateStatusHandler(dateStatus);
    calendarObj.weekNumbers = false;
    calendarObj.create(getObj("datecal"));
    calendarObj.refresh();
}


//Add Appointment
function addAppointment(date)
{
    if (datesArr[date]) {
        var lastIndex = datesArr[date].length;
        var lastAppointment = datesArr[date][lastIndex - 1];
        
        if (lastAppointment) {
        
            //set the start time to be the end time of the last appointment
            var lastApptStart = lastAppointment.start;
            var lastApptEnd = lastAppointment.end;
            
            //if they put just hours then covert it to a time that 
            //stringToTime can understand
            if (IsNumeric(lastApptStart) && lastApptStart <= 24) {
                lastApptStart = lastApptStart + ":00";
            }
            if (IsNumeric(lastApptEnd) && lastApptEnd <= 24) {
                lastApptEnd = lastApptEnd + ":00";
            }
            
            
            var note = lastAppointment.note;
            var quota = lastAppointment.quota;
            
            var lastApptStartAsTime = stringToTime(lastApptStart);
            var lastApptEndAsTime = stringToTime(lastApptEnd);
            
            // before we edit things set the next start time to the previous end time
            
            // set the new endtime as the differece between the last start time and end time
            
            if (lastApptEndAsTime >= 24 * 3600000) {               
                lastApptEndAsTime = lastApptEndAsTime - 12 * 3600000;
            }
            else if(lastApptEndAsTime >= 12 * 3600000 && lastApptEndAsTime < 13 * 3600000){
              lastApptEndAsTime = lastApptEndAsTime - 12 * 3600000;  
            }

            if (lastApptStartAsTime >= 24 * 3600000) {
                lastApptStartAsTime = lastApptStartAsTime - 12 * 3600000;
            }
            else if(lastApptStartAsTime >= 12 * 3600000 && lastApptStartAsTime < 13 * 3600000) {
            lastApptStartAsTime = lastApptStartAsTime - 12 * 3600000;  
            }
                        
            var endAsTime = lastApptEndAsTime + (lastApptEndAsTime - lastApptStartAsTime);
            var startAsTime = lastApptEndAsTime;             

            //alert((lastApptEndAsTime-lastApptStartAsTime)/60000);
            var endDate = new Date();
            endDate.setTime(endAsTime);
            
            var startDate = new Date();
            startDate.setTime(startAsTime);
            
            end = timeFormatUTC(endDate);
            start = timeFormatUTC(startDate);   
        }
        else {
            var start = "8:00 am";
            var end = "9:00 am"
            var note = "";
            var quota = 1;
        }
    }
    else {
            var start = "8:00 am";
            var end = "9:00 am"
            var note = "";
            var quota = 1;
        }
    
    setupTimes(date,start,end,note,0,0,quota,0,false);
    dateCalendar.refresh();   
}



//new functions

function setupTimes(dateformated,start,end,note,repeatInterval,repeatDuration,quota,all,fromDB){
    var arrtimes = new Object();
    arrtimes.start = start;
    arrtimes.end = end;
    if (fromDB) {
        note = decodeDelimiters(note);
    }
    arrtimes.note = unpackSpecialChars(note);
    arrtimes.all = all;
    arrtimes.quota = quota;
    arrtimes.repeatInterval = repeatInterval;
    arrtimes.repeatDuration = repeatDuration;
    if (datesArr[dateformated]) 
        datesArr[dateformated].push(arrtimes);
    else {
        datesArr[dateformated] = new Array();
        datesArr[dateformated][0] = arrtimes;
    }
    if(!firstload){
    refreshDay(dateformated);
    }
}

//new function display 
//sort function used by refresh day
function sortDay(a,b){
            
                a = a.start.toString().replace(/\s/, "").toUpperCase();
                b = b.start.toString().replace(/\s/, "").toUpperCase();
                if(parseInt(a) < 10)
                    a = '0' + a;
                if(parseInt(b) < 10)
                    b = '0' + b;
                
                if(a){
                    if (a.indexOf("P") > -1 && a.indexOf("12") != 0) {
                        a = '9' + a;
                    } 
                }
                if(b){
                    if (b.indexOf("P") > -1 && b.indexOf("12") != 0) {
                        b = '9' + b;
                    }
                }        
                    
                if (a < b)
                    return -1;
                if (a > b)
                    return 1;
                return 0;
            }

function refreshDay(date){
    var tbody = getObj("daysappointments");
    var rows = tbody.rows;
    if (rows){
        for(var x = rows.length-1; x >= 0; x--){
            tbody.deleteRow(x);
        }
    }
    
    if (datesArr[date] && datesArr[date].length > 0) {
       /* using this prototype function I solve all the business */
       datesArr[date] = datesArr[date].uniq();
        // sort this stuff before display
        datesArr[date].sort(sortDay);
        
        for (x in datesArr[date]) {
            if(datesArr[date][x].start){
                var row = document.createElement("TR");
    
                var td = document.createElement("TD");
                function createInput(value,objectType)
                {
                    var timeChecker = "";
                    if(objectType=="start" || objectType=="end"){
                        timeChecker = "timeChecker(this);";
                    }
                    return "<input class='discrete fullwidth'" +
                    " value='" + value + "'" +
                    "onblur=\""+timeChecker+"updateValue('" +
                    date + "','" + x + "','"+objectType+"',this.value);\"" +
                    " >";
                }
                var td = document.createElement("TD");
                td.innerHTML = createInput(datesArr[date][x].start,"start");
                row.appendChild(td);
                
                var td = document.createElement("TD");
                td.innerHTML = createInput(datesArr[date][x].end,"end");
                row.appendChild(td);
                
                var td = document.createElement("TD");
                td.innerHTML = createInput(datesArr[date][x].note,"note");
                row.appendChild(td);
                
                var td = document.createElement("TD");
                td.innerHTML = createInput(datesArr[date][x].quota,"quota");
                row.appendChild(td);
                
                var td = document.createElement("TD");
                td.innerHTML = "<a href='javascript:void(null)'" +
                    "onclick=\"deleteAppointment('" +
                    date + "','" + x +"')\" onkeypress=\"deleteAppointment('" +
                    date + "','" + x +"')\">" +
                    "<img height='16' width='16' src='../common/icons/cross.png' /></a>";
                row.appendChild(td);
                tbody.appendChild(row);  
                
       
            }
        }
                var row = document.createElement("TR");
                var td = document.createElement("TD");
                td.colSpan = "5";
                td.align ="center";
                td.innerHTML = "<p><a href=\"javascript:void(null);\"" +
                " onclick=\"openCalTip(e,'"+date+"');\">Copy These Times to Other Days</a></p>";
                row.appendChild(td);  
                tbody.appendChild(row);  
    }
    else {
        var row = document.createElement("TR");
        var td = document.createElement("TD");
        td.colSpan = "5";
        td.align ="center";
        td.innerHTML = "No Appointments On This Day";
        row.appendChild(td);
        tbody.appendChild(row);
    }
    
    var row = document.createElement("TR");
        var td = document.createElement("TD");
        td.colSpan = "5";
        td.align ="center";
        td.innerHTML = "<p><a href=\"javascript:void(null);\"" +
        " onclick=\"addAppointment('"+date+"')\">Add New Time</a></p>";
        row.appendChild(td);
        tbody.appendChild(row); 
        
    stripePageCommon();//found in utility.js 
}

function showNextDay(steps)
{
    var curDate = dateCalendar.date;
    var dates = new Array();
    dates[-1] = curDate;
    dates[1]  = curDate;
    for (i in datesArr) {
        if (datesArr[i].length != 0) {
            var di = new Date(i);
            if (di < curDate) {
                if (dates[-1] == curDate || di > dates[-1]) 
                    dates[-1] = di;
            }
            else 
                if (di > curDate) {
                    if (dates[1] == curDate || di < dates[1]) 
                        dates[1] = di;
                }
        }
    }
    dateCalendar.setDate(dates[steps]);
    var newDate = dateCalendar.date;
    if (viewpage){var messageword = "available";}
    else{var messageword = "scheduled";}
    
    if(curDate == newDate && !firstload){
        if(steps==-1){
            alert("there are no appointments "+messageword+" before "+
            displayMDYDate(dateCalendar.date));
        }
        else{
            alert("there are no appointments available after "+
            displayMDYDate(dateCalendar.date));
        }
        
    }
    firstload=false;
    onSelect(dateCalendar);
}

function onSelect(calendar)
{   
    var date = displayMDYDate(calendar.date);
    var curDate = displayPrettyDate(calendar.date);
    
    var dateDesc = getObj("date");
    dateDesc.innerHTML =
        "<a  title='go to last day with appointments'"+
        " href='javascript:showNextDay(-1)'>&lt;&lt;</a> " +
        curDate +
        " <a  title='go to next day with appointments'"+
        " href='javascript:showNextDay(1)'>&gt;&gt;</a>";
    
    // if called from the copy function then 
    // copy to the appropriate date 
    if(calTipOpen){
        if (duplicateOriginalDate) {
            // prevent it from automatically copying when 
            // changed the month or year
            var m = calendar.date.getMonth();
            var y = calendar.date.getFullYear();
            if (m != duplicateTempMonth || y != duplicateTempYear) {
                duplicateTempMonth = m;
                duplicateTempYear = y;
            }
            else {
                copyDatesAppointments(date);
            }
        }
    }
    
    if (viewpage) {
        refreshDayView(date);
    }
    else {
        refreshDay(date);
    }
    
    
}

function dateStatus(date, y, m, d) {
    var dateview = m + 1 + "/" + d + "/" + y;
    if (datesArr[dateview]) {
        if (datesArr[dateview].length != 0) {
            return "special";
        }
    }
    else{
        return false;
    }
};

function updateValue(date,elem,field,value){
    var item = datesArr[date][elem];

    if (item) {
        if (field == "start") {
        item.start = value;
        }
        if (field == "end") {
            item.end = value;
        }
        if (field == "note") {
            item.note = encodeSingleQuoteDisplay(value);
        } 
        if (field == "quota") {
            item.quota = value;
        }          
    }
}


function encodeSpecialChars(text){
    var str = "";
    if (text) 
        str = new String(text);
        str = str.replace(/'/g, "q%q");
        str = str.replace(/"/g, "dq%dq");
        str = str.replace(/</g, "lt%lt");
        str = str.replace(/>/g, "gt%gt");
        str = str.replace(/&/g, "am%am");
    return str;
}

function decodeSpecialChars(text){
    var str = "";
    if (text) 
        str = new String(text);
    str = str.replace(/q\%q/g, "'");
    str = str.replace(/dq\%dq/g, '"');
    str = str.replace(/lt\%lt/g, "<");
    str = str.replace(/gt\%gt/g, ">");
    str = str.replace(/am\%am/g, "&");
    return str;
}

function encodeSingleQuoteDisplay(text){
    var str = "";
    if (text) 
        str = new String(text);
    str = str.replace(/'/g, "&#39;");
    return str;
}

function decodeSingleQuoteDisplay(text){
    var str = "";
    if (text) 
    str = new String(text);
    str = str.replace(/&#39;/g, "'");
    return str;
}

function unpackSpecialChars(text){
var str = "";
    if (text) 
        str = new String(text);
    str = decodeSpecialChars(text);
    str = encodeSingleQuoteDisplay(str);
    return str;
}

function packSpecialChars(text){
var str = "";
    if (text) 
        str = new String(text);
    str = decodeSingleQuoteDisplay(str);
    str = encodeSpecialChars(str);
    return str;
}


function deleteAppointment(date,x){
    datesArr[date].splice(x,1);
    var tbody = getObj("daysappointments");
    refreshDay(date);

    if(datesArr[date].length==0){
       //TODO: remove date from array...
       // datesArr.splice(datesArr.indexOf(date),1);
    }
    dateCalendar.refresh();   
}

/* removeAppointmentTime (isKey: 1 if keyboard initiated survey, appointmentTimeID: item id)
   Hides the answers specified and removes it from appointmentTimes array */
function removeAppointmentTime(isKey, appointmentTimeID)
{
    /* reject keys that aren't enter */
    if(isKey == 1 && !bEnter())
        return true;
    var strReplace = ","+appointmentTimeID+",";
    var strTest = document.mainform.timesIDlist.value;
    document.mainform.timesIDlist.value = strTest.replace(strReplace,',');
    getObj("appointmentTime" + appointmentTimeID).style.display = 'none';
    
    return false;
}
 /**************************************************************************
 * View
 **************************************************************************/

var googleInitialized = false;
function initGoogleMap() { // initialize google stuff
    if(googleInitialized)
        return;

    var script = document.createElement("script");
    script.setAttribute("src", "http://maps.google.com/maps?file=api&v=2.x&key="+
        mapKey + "&async=2&callback=loadMap");
    script.setAttribute("type", "text/javascript");
    document.documentElement.firstChild.appendChild(script);
        
    googleInitialized = true;
}

function refreshDayView(date){
    var tbody = getObj("daysappointments");
    var rows = tbody.rows;
    var checked = "checked='checked'"; //create variable to ensure selected time
    if (rows){
        for(var x = rows.length-1; x >= 0; x--){
            tbody.deleteRow(x);
        }
    }
    
    if (datesArr[date] && datesArr[date].length > 0) {
        // sort this stuff before display
      //if one item ignore sort
      if (datesArr[date].length > 1) {
          datesArr[date].sort(sortDay);
      }
        
        for (x in datesArr[date]) {
            if(datesArr[date][x].start){
                var row = document.createElement("TR");

                var td = document.createElement("TD");
                var divonclick = "onclick = \"document.getElementById('radio"+x+
                "').checked = true;\"";
                var td = document.createElement("TD");
                td.innerHTML = "<div " + divonclick + " ><input id='radio"+x+
                "' type='radio' "+ checked +
                " name='signupTimes' value='"+datesArr[date][x].all+"'></div>";
                row.appendChild(td);
                checked = ""; //set checked to nothing after initial selection.
                var td = document.createElement("TD");
                td.innerHTML = 
                "<div " + divonclick + " ><b>"+ datesArr[date][x].start +
                " - " + datesArr[date][x].end + 
                "</b><br/>" + datesArr[date][x].note + "</div>";
                row.appendChild(td);
                
                tbody.appendChild(row);          
            }
        }
    }
    else if(optionsCount==0){
        var row = document.createElement("TR");
        var td = document.createElement("TD");
        td.colSpan = "2";
        td.align ="center";
        //td.style = "font-weight:bold;";
        td.innerHTML = "<b>There Are No Available Times</b>";
        row.appendChild(td);
        tbody.appendChild(row);
    }
    else {
        var row = document.createElement("TR");
        var td = document.createElement("TD");
        td.colSpan = "2";
        td.align ="center";
        td.innerHTML = "<b>No times on this day.<br/>Try another day.</b>";
        row.appendChild(td);
        tbody.appendChild(row);
    }
    
            tbody.appendChild(row); 
    stripePageCommon();//found in utility.js    
}


function showAddress(address) {
      gGeocoder.getLocations(address, addAddressToMap);
    }

function addAddressToMap(response) {
  gMap.clearOverlays();
  if (!response || response.Status.code != 200) {
    alert("\"" + address + "\" not found");
  } else {
    place = response.Placemark[0];
    point = new GLatLng(place.Point.coordinates[1],
                        place.Point.coordinates[0]);
    marker = new GMarker(point);
    gMap.addOverlay(marker);
	addressName = document.mainform.appointmentLocationName.value;
    marker.openInfoWindowHtml('<b>' + addressName + '</b><br>' + place.address);
  }
}

function loadMap()
{
    if (GBrowserIsCompatible() && !gMap) {
        gMap = new GMap2(document.getElementById("locMap"));
        gMap.setCenter(new GLatLng(37.4419, -122.1419), 13);
        gGeocoder = new GClientGeocoder();
        gMap.addControl(new GSmallMapControl());
        gMap.addControl(new GMapTypeControl());
		
		address = document.mainform.appointmentLocation.value;
		
	  if(address!=""){
		showAddress(address);	  
	  }
    }
}

function loadDirections() {
	  var directionsPanel;
	  var directions;
      directionsPanel = document.getElementById("route");
	  directionsPanel.innerHTML = "";
      directions = new GDirections(gMap, directionsPanel);
	  addressfrom = document.mainform.fromAddress.value;
      directions = directions.load(addressfrom + " to " + address);
	  document.mainform.directionsbutton.value= "update";
    }

/**************************************************************************
 * Submission
 **************************************************************************/
function appointmentActivate(){
    elem = document.getElementById('status');
    done = document.getElementById('done');
    if (elem.value == '3') {
        elem.value = '2';
        
    }
    else{
        elem.value='3';
    }
    done.value="listing.z";
    submitAppointment(0);return false;
}


 function trimcomma(stringToTrim) {
	return stringToTrim.replace(/^,+|,+$/g,"");
}
 
function escTrim(text) {
    var str = "";
    if(text)
        str = new String(text);
    return escape(str.replace(/^\s+|\s+$/g,""));
}

function submitAppointment(isKey)
{
    /* reject keys that aren't enter */
    if(isKey == 1 && !bEnter())
        return true;

	/*Stop submit if appointmentName is blank is found */
	if (document.mainform.appointmentName.value == "") {
		alert("Your appointment is missing a name.");
		return false;
	}
    
        /*Stop submit if paymentConfm != payment is blank is found */
    if (document.mainform.appointmentOnlinePaymentIDconfirm.value
        !=document.mainform.appointmentOnlinePaymentID.value){
          alert("Your online payment Paypal email doesn't match the Paypal email confirmation. Go to the payments tab to fix this.");
		return false;
        }
    
        
    // bring together all the appointments
    var tempStr = "";
    var x;
    for (x in datesArr){
        for (y in datesArr[x]) {
            if (x != "") {
                var appStart = datesArr[x][y].start;
                var appEnd = datesArr[x][y].end;
                var appNote = datesArr[x][y].note;
                var appQuota = datesArr[x][y].quota;
                
                if (appStart) {
                
                    if (appStart) {
                        if (IsNumeric(appStart) && appStart <= 24) {
                            appStart = appStart + ":00";
                        }
                        
                        if (!IsValidTime(appStart, "a start time on " + x)) {
                            mainTabber.tabShow(0);
                            return false;
                        }
                    }
                    if (appEnd) {
                        if (IsNumeric(appEnd) && appEnd <= 24) {
                            appEnd = appEnd + ":00";
                        }
                        
                        if (!IsValidTime(appEnd, "an end time on " + x)) {
                            mainTabber.tabShow(0);
                            return false;
                        }
                    }
                    
                    
                    tempStr += encodeDelimiters(x) + ",";
                    tempStr += encodeDelimiters(appStart) + ",";
                    tempStr += encodeDelimiters(appEnd) + ",";
                    tempStr += encodeDelimiters(packSpecialChars(appNote)) + ",";
                    tempStr += encodeDelimiters(appQuota) + ";";
                }
            }
        }
    }
    
    // from survey.js bring together custom questions
    bringTogetherQuestions();
    
    if(tempStr == ""){
		if (confirm("You haven't provided any appointment times. \n" + "Would you like to preview anyway?")) {
		
		}
		else {
			mainTabber.tabShow(0);
			return false;
		}
	}	
    
    
    document.mainform.appointments.value = tempStr;
    updateLink(document.mainform.appointmentName);
    document.mainform.action='edit-update.z';

    if(LETSAUTH)
        auth_module.showLogin(function() {
            document.mainform.submit();
        });
    else
        document.mainform.submit();
        
    return false;
}

function submitSignup(send)
{
        //Required Fields
    if(!requiredCheck(document.appointmentsignupform,reqFieldArr,reqDescArr)){
        return false;
    }
    if(getObj('termsConfirm')){
        if(!getObj('termsConfirm').checked){
           alert("You must agree to the terms of the release to signup for this appointment.")
           return false;
        }
    }

    var signupTimeChecked = "";
    // set selected signup time to make sure it is not empty
    if (document.appointmentsignupform.signupTimes) {
        for (i = 0; i < document.appointmentsignupform.signupTimes.length; i++) {
            if (document.appointmentsignupform.signupTimes[i].checked) {
                signupTimeChecked = document.appointmentsignupform.signupTimes[i].value;
            }
        }
        //deal with situation with one option 
        if (!document.appointmentsignupform.signupTimes.length) {
            if (document.appointmentsignupform.signupTimes.checked) {
                signupTimeChecked = document.appointmentsignupform.signupTimes.value;
            }
        }
    }
    /*Stop submit if appointmentName is blank is found */
	if (signupTimeChecked == "") {
        if (!confirm("Either no appointments are currently available " +
        "or you didn't choose an appointment time. " +
        "Would you still like to sign up?")) {
            return false;
        }
    }

    if (getObj('termsConfirm')) {
        if(getObj('termsConfirm')){

        }
        if (!confirm("Either no appointments are currently available " +
        "or you didn't choose an appointment time. " +
        "Would you still like to sign up?")) {
            return false;
        }
    }
    if(send && getObj("displayPayment")){
        var displayPayment = getObj("displayPayment").value;
        // in modules/payments/payment.js
         if(!paymentConfirmation("appointment", displayPayment)){
            return false;
        }
    }
    
     
    document.appointmentsignupform.submit();
    return true;
}

//]]>