var mootime = function(timepickerInput) {
    mootime_jim(timepickerInput, '0', '00', 'am', null);
};
var mootime_jim = function (timepickerInput, starting_hour, starting_min, starting_ampm, showTimeId) {
    var mootimeID = timepickerInput + "_mootimewrap";
    var mootimeHTML = unescape("%3Ctable%20class%3D%22pop_dialog_table%22%20id%3D%22pop_dialog_table%22%3E%0A%3Ctbody%3E%0A%09%3Ctr%3E%0A%09%09%3Ctd%20class%3D%22pop_topleft%22/%3E%0A%09%09%3Ctd%20class%3D%22pop_border%20pop_top%22/%3E%0A%09%09%3Ctd%20class%3D%22pop_topright%22/%3E%0A%09%3C/tr%3E%0A%09%3Ctr%3E%0A%09%09%3Ctd%20class%3D%22pop_border%20pop_side%22/%3E%0A%09%09%3Ctd%20id%3D%22pop_content%22%20class%3D%22pop_content%22%3E%0A%09%09%09%3Ch2%20class%3D%22dialog_title%22%3E%3Cspan%3EEdit%20Show%20Time");
    if (showTimeId != null) mootimeHTML += " (ID#" + showTimeId + ")";
    mootimeHTML += unescape("%3C/span%3E%3C/h2%3E%0A%09%09%09%3Cdiv%20class%3D%22dialog_content%22%3E%0A%09%09%09%09%3Cdiv%20class%3D%22dialog_body%22%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%27timepicker%27%3E%0A%09%09%09%09%09%09%3Cdiv%20class%3D%27time%27%3E");
    mootimeHTML += "<span class='display_hour'>" + starting_hour + "</span>:<span class='display_min'>" + starting_min.substring(0, 1) + "</span><span class='display_mintwo'>" + starting_min.substring(1, 2) + "</span><span class='display_ampm'>" + starting_ampm + "</span>";
    mootimeHTML += unescape('%09%3C/div%3E%0A%09%0A%09%3Cdiv%20class%3D%27amorpm%27%3E%0A%09%09%3Cspan%20class%3D%27ampm%20am%20mootimeampm_active%27%3Eam%3C/span%3E%0A%09%09%3Cspan%20class%3D%27ampm%20pm%27%3Epm%3C/span%3E%0A%09%3C/div%3E%0A%09%09%0A%09%3Cdiv%20class%3D%27sep%27%3E%3C/div%3E%20%0A%09%0A%09%3Cul%20class%3D%27hours%27%3E%0A%09%09%3Cli%20class%3D%27legend%27%3Ehr%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr1%20mootime_active%27%3E%3Cspan%3E1%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr2%27%3E%3Cspan%3E2%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr3%27%3E%3Cspan%3E3%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr4%27%3E%3Cspan%3E4%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr5%27%3E%3Cspan%3E5%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr6%27%3E%3Cspan%3E6%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr7%27%3E%3Cspan%3E7%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr8%27%3E%3Cspan%3E8%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr9%27%3E%3Cspan%3E9%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr10%27%3E%3Cspan%3E10%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr11%27%3E%3Cspan%3E11%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27hrs%20hr12%27%3E%3Cspan%3E12%3C/span%3E%3C/li%3E%0A%09%3C/ul%3E%0A%09%0A%09%3Cul%20class%3D%27min_first%27%3E%0A%09%09%3Cli%20class%3D%27minlegend%27%3Emn%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min0%20mootime_active%27%3E%3Cspan%3E0%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min1%27%3E%3Cspan%3E1%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min2%27%3E%3Cspan%3E2%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min3%27%3E%3Cspan%3E3%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min4%27%3E%3Cspan%3E4%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27min%20min5%27%3E%3Cspan%3E5%3C/span%3E%3C/li%3E%20%0A%09%3C/ul%3E%0A%09%0A%09%3Cul%20class%3D%27min_second%27%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min00%20mootime_active%27%3E0%3C/span%3E%3C/li%3E%20%0A%09%09%3Cli%20class%3D%27mintwo%20min01%27%3E%3Cspan%3E1%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min02%27%3E%3Cspan%3E2%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min03%27%3E%3Cspan%3E3%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min04%27%3E%3Cspan%3E4%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min05%27%3E%3Cspan%3E5%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min06%27%3E%3Cspan%3E6%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min07%27%3E%3Cspan%3E7%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min08%27%3E%3Cspan%3E8%3C/span%3E%3C/li%3E%0A%09%09%3Cli%20class%3D%27mintwo%20min09%27%3E%3Cspan%3E9%3C/span%3E%3C/li%3E%0A%09%3C/ul%3E%0A%3C/div%3E');
    mootimeHTML += "<input type='hidden' class='hour_memory' value='" + starting_hour + "'>";
    mootimeHTML += "<input type='hidden' class='min_memory' value='" + starting_min.substring(0, 1) + "'>";
    mootimeHTML += "<input type='hidden' class='mintwo_memory' value='" + starting_min.substring(1, 2) + "'>";
    mootimeHTML += "<input type='hidden' class='ampm_memory' value='" + starting_ampm + "'>";

    mootimeHTML += "					<div class='clear' style='clear:both;border:0;height:1px;'>&nbsp;</div>";

    if (showTimeId != null) {
        mootimeHTML += "<fieldset id='priceModeEvent" + showTimeId + "Field'><legend><label for='priceModeEvent" + showTimeId + "'>Default Event Prices</label></legend><div id='currentPrices" + showTimeId + "'></div></fieldset>";

        var req = new Request.HTML({
            url: 'ajax/get_editshowtime_tickets.php?showTimeSpecific=0&eventTimeId=' + showTimeId,
            update: "currentPrices" + showTimeId,
            onFailure: function () {
                alert('Could not get tickets.');
            }
        });
        req.get();

        mootimeHTML += "<fieldset id='priceModeSpecial" + showTimeId + "Field'><legend><label for='priceModeSpecial" + showTimeId + "'>ShowTime Specific Prices</label></legend><div id='specialPrices" + showTimeId + "'></div></fieldset>";

        var req2 = new Request.HTML({
            url: 'ajax/get_editshowtime_tickets.php?showTimeSpecific=1&eventTimeId=' + showTimeId,
            update: "specialPrices" + showTimeId,
            onFailure: function () {
                alert('Could not get tickets.');
            }
        });
        req2.get();

        mootimeHTML += "<fieldset style='display:none;' id='ticketSummary" + showTimeId + "Field'><legend>Ticket Summary</legend><div id='ticketSummary" + showTimeId + "'></div></fieldset>";

        var req3 = new Request.HTML({
            url: 'ajax/get_ticket_summary.php?eventTimeId=' + showTimeId,
            update: "ticketSummary" + showTimeId,
            onFailure: function () {
                alert('Could not get purchased tickets.');
            }
        });
        req3.get();
    }

    mootimeHTML += "</div>";
    mootimeHTML += "				</div>";
    mootimeHTML += "				<div class='dialog_buttons'>";
    mootimeHTML += "                    <input type='button' value='Delete' name='delete' class='delete_timepicker' style='float:left;margin-left:5px;margin-right:auto;color:red;' />";
    mootimeHTML += "					<input type='button' value='Close' name='close' class='close_timepicker' />";
    mootimeHTML += "					<input type='button' value='Save' name='save' class='save_timepicker' />";
    mootimeHTML += "				</div>";
    mootimeHTML += "			</div>";
    mootimeHTML += "		</td>";
    mootimeHTML += "		<td class='pop_border pop_side'/>";
    mootimeHTML += "	</tr>";
    mootimeHTML += "	<tr>";
    mootimeHTML += "		<td class='pop_bottomleft'/>";
    mootimeHTML += "		<td class='pop_border pop_bottom'/>";
    mootimeHTML += "		<td class='pop_bottomright'/>";
    mootimeHTML += "	</tr>";
    mootimeHTML += "</tbody></table>";




    //mootimeHTML += unescape("%3C/div%3E%0A%09%09%09%09%09%3Cdiv%20class%3D%22clear%22%20style%3D%22clear%3Aboth%3B%22%3E%26nbsp%3B%3C/div%3E%0A%09%09%09%09%3C/div%3E%0A%09%09%09%09%3Cdiv%20class%3D%22dialog_buttons%22%3E%0A%09%09%09%09%09%3Cinput%20type%3D%22button%22%20value%3D%22Close%22%20name%3D%22close%22%20class%3D%22close_timepicker%22%20/%3E%0A%09%09%09%09%09%3Cinput%20type%3D%22button%22%20value%3D%22Save%22%20name%3D%22save%22%20class%3D%22save_timepicker%22%20/%3E%0A%09%09%09%09%3C/div%3E%0A%09%09%09%3C/div%3E%0A%09%09%3C/td%3E%0A%09%09%3Ctd%20class%3D%22pop_border%20pop_side%22/%3E%0A%09%3C/tr%3E%0A%09%3Ctr%3E%0A%09%09%3Ctd%20class%3D%22pop_bottomleft%22/%3E%0A%09%09%3Ctd%20class%3D%22pop_border%20pop_bottom%22/%3E%0A%09%09%3Ctd%20class%3D%22pop_bottomright%22/%3E%0A%09%3C/tr%3E%0A%3C/tbody%3E%0A%3C/table%3E");
    var newMooTime = new Element('div', {
        'id': mootimeID,
        'class': 'timepickerwrap',
        'html': mootimeHTML
    });



    newMooTime.inject(timepickerInput, 'after');
    var createMootime = $(timepickerInput + "_mootimewrap");

    //shows the timepicker when user focuses on timepicker input field
    $(timepickerInput).addEvent('dblclick', function () {
        //calculates various positions to decide where to place the timepicker
        var windowSize = $(window).getSize();
        var windowScroll = $(window).getScroll();
        var mootimeInput = $(timepickerInput).getCoordinates();
        var mootimeInputBottom = mootimeInput.bottom;
        var mootimeInputTop = mootimeInput.top;
        var mootimeInputLeft = mootimeInput.left;
        var mootimeInputRight = mootimeInput.right;
        var adjustTopInput = mootimeInputBottom - windowScroll.y;
        var halfWindow = windowSize.y / 2;
        var distanceRight = windowSize.x - mootimeInputRight;



        //sets all timepickers back one, so that one can be called to the front on focus
        $$('.timepickerwrap').each(function (item) {
            item.setStyle('z-index', '999');
        });

        //chooses whether to place the timepicker above or below the input field
        $(createMootime).setStyle('display', 'block');
        var mootimePickerLeft = mootimeInputLeft + 10;
        if (adjustTopInput < halfWindow) {
            var mootimePickerTop = mootimeInputBottom + 10;
            mootimePickerTop = Math.max(0, mootimePickerTop);
            $(createMootime).setStyle('top', mootimePickerTop);
            $(createMootime).setStyle('z-index', '1000');

            //chooses wheter to align the timepicker left of right of the input field
            if (mootimeInputLeft < distanceRight) {
                $(createMootime).setStyle('left', mootimePickerLeft);
            }

            else {
                var timepickerSize = $(createMootime).getSize();
                var mootimeInputSize = $(timepickerInput).getSize();
                var timepickerLeftLeft = (mootimeInputLeft + mootimeInputSize.x) - timepickerSize.x;
                $(createMootime).setStyle('left', timepickerLeftLeft);
            };
        }

        else {
            var mootimePickerBottom = mootimeInputTop - 10;
            var mootimePickerHeight = $(createMootime).getSize();
            mootimePickerBottom = mootimePickerBottom - mootimePickerHeight.y;
            mootimePickerBottom = Math.max(0, mootimePickerBottom);
            $(createMootime).setStyle('top', mootimePickerBottom);
            $(createMootime).setStyle('z-index', '1000');

            //chooses wheter to align the timepicker left of right of the input field
            if (mootimeInputLeft < distanceRight) {
                $(createMootime).setStyle('left', mootimePickerLeft);
            }

            else {
                var timepickerSize = $(createMootime).getSize();
                var mootimeInputSize = $(timepickerInput).getSize();
                var timepickerLeftLeft = (mootimeInputLeft + mootimeInputSize.x) - timepickerSize.x;
                $(createMootime).setStyle('left', timepickerLeftLeft);
            };
        }
    });


    //closes timepicker when user clicks "close" 
    $(createMootime).getElement('.close_timepicker').addEvent('click', function () {
        $(createMootime).setStyle('display', 'none');
    });

    //removes the current class from current row only
    var removeActive = function (times) {
        $(createMootime).getElements('.' + times).each(function (item, index) {
            var currentClass = item.hasClass('mootime_active');
            if (currentClass) {
                item.removeClass('mootime_active');
            }
        });
    };

    //applies to the following 4 functions:
    //adds a click event to each time row that changes the clicked number to an active class, 
    //removes the active class from the previous current element
    //and sets the time in the upper left display 

    //adds click event to hours
    $(createMootime).getElements('.hrs').each(function (item) {
        var hour = item.get('text');
        item.addEvent('click', function () {
            $(createMootime).getElement('.display_hour').set('text', hour);
            removeActive('hrs');
            item.addClass('mootime_active');
        });
    });

    //adds click event to top minute row
    $(createMootime).getElements('.min').each(function (item) {
        var minute = item.get('text');
        item.addEvent('click', function () {
            $(createMootime).getElement('.display_min').set('text', minute);
            removeActive('min');
            item.addClass('mootime_active');
        });
    });

    //adds click event to bottom minute row
    $(createMootime).getElements('.mintwo').each(function (item) {
        var minuteTwo = item.get('text');
        item.addEvent('click', function () {
            $(createMootime).getElement('.display_mintwo').set('text', minuteTwo);
            removeActive('mintwo');
            item.addClass('mootime_active');
        });
    });

    //adds click event to am/pm
    $(createMootime).getElements('.ampm').each(function (item) {
        var amPm = item.get('text');
        item.addEvent('click', function () {
            $(createMootime).getElement('.display_ampm').set('text', amPm);
            $(createMootime).getElement('.mootimeampm_active').removeClass('mootimeampm_active');
            item.addClass('mootimeampm_active');
        });
    });

    //grabs the current selected time and pushes it into the value property of the mootime input field
    var chosenTime = function () {
        //gets time from the timechooser display
        var hour = $(createMootime).getElement('.display_hour').get('text');
        var min = $(createMootime).getElement('.display_min').get('text');
        var minTwo = $(createMootime).getElement('.display_mintwo').get('text');
        var amPm = $(createMootime).getElement('.display_ampm').get('text');
        var newChosenTime = hour + ':' + min + minTwo + amPm;

        //sets the mootime input field to the time on the timechooser
        $(timepickerInput).setProperty('value', newChosenTime);

        //sets memory
        $(createMootime).getElement('.hour_memory').setProperty('value', hour);
        $(createMootime).getElement('.min_memory').setProperty('value', min);
        $(createMootime).getElement('.mintwo_memory').setProperty('value', minTwo);
        $(createMootime).getElement('.ampm_memory').setProperty('value', amPm);
    };

    // DELETE
    $(createMootime).getElement('.delete_timepicker').addEvent('click', function () {
        if (confirm("WARNING\n\nThis will destroy all tickets that have been purchased for this event time. They cannot be recovered.\n\nAre you sure you wish to delete this showtime?")) {
            $(createMootime).setStyle('display', 'none');
            $(timepickerInput).fireEvent('delete');
        }
    });

    // SAVE
    $(createMootime).getElement('.save_timepicker').addEvent('click', function () {
        chosenTime();
        $(createMootime).setStyle('display', 'none');
        $(timepickerInput).fireEvent('change');
    });

    //CLOSE
    $(createMootime).getElement('.close_timepicker').addEvent('click', function () {
        //removes active class from rows
        removeActive('hrs');
        removeActive('min');
        removeActive('mintwo');
        $(createMootime).getElement('.mootimeampm_active').removeClass('mootimeampm_active');

        //grabs saved time from "memory"
        var memoryHour = $(createMootime).getElement('.hour_memory').getProperty('value');
        var memoryMin = $(createMootime).getElement('.min_memory').getProperty('value');
        var memoryMinTwo = $(createMootime).getElement('.mintwo_memory').getProperty('value');
        var memoryAmPm = $(createMootime).getElement('.ampm_memory').getProperty('value');

        //resets active class from "memory"
        $(createMootime).getElement("'.hr" + memoryHour + "'").addClass('mootime_active');
        $(createMootime).getElement("'.min" + memoryMin + "'").addClass('mootime_active');
        $(createMootime).getElement("'.min0" + memoryMinTwo + "'").addClass('mootime_active');
        $(createMootime).getElement('.' + memoryAmPm + "'").addClass('mootimeampm_active');

        //resets timepicker time display from "memory"
        $(createMootime).getElement('.display_hour').setProperty('text', memoryHour);
        $(createMootime).getElement('.display_min').setProperty('text', memoryMin);
        $(createMootime).getElement('.display_mintwo').setProperty('text', memoryMinTwo);
        $(createMootime).getElement('.display_ampm').setProperty('text', memoryAmPm);

        //hides the timepicker
        $(createMootime).setStyle('display', 'none');
    });
};

