/**
 * @author Dave
 */
var bandsCount = 0;
var dateProvided = false;
var venueProvided = false;
var bandsProvided = false;
var selectedDate = '';

function trim(sString) {
	while (sString.substring(0,1) == ' ' || sString.substring(0,1) == '\t') {
		sString = sString.substring(1, sString.length);
	}
	while (sString.substring(sString.length-1, sString.length) == ' ' || sString.substring(sString.length-1, sString.length) == '\t') {
		sString = sString.substring(0,sString.length-1);
	}
	return sString;
}
function createBand() {
	bandsCount++;
    var tabindex = bandsCount+2;
	$("#bandsDiv").append('<input class="bandsInput" id="bandsInput'+bandsCount+'" type="text" tabindex="'+tabindex+'">');
    $("#bandsInput"+bandsCount).change(function(e) {
        var $bandInputId = $(this);
        var bandName = trim($bandInputId.val());
        $bandInputId.val(bandName);
        if ( bandName == '' ||  bandName == ' ') {
            $bandInputId.val('');
            $bandInputId.removeClass('completed');
        } else {
            $bandInputId.addClass('completed');
        }
        if (bandName.indexOf('+') !== -1 || bandName.indexOf('&') !== -1) {
            var oneBand = confirm('Please confirm that '+bandName+' is just one band.\n\nHit OK to confirm or CANCEL to rekey.');
            if (! oneBand ) {
                $bandInputId.val('');
                $bandInputId.removeClass('completed');
                $bandInputId.focus();         
            }
        }
    	var count = 0;
    	var out   = 0;
    	var band  = '';
    	var bands = '';
    	while ( count < bandsCount ) {
    		count++;
    		band = $("#bandsInput"+count).val();
    		if ( band > '') {
    			if ( out > 0 ) {
    				bands += '||';
    			}
    			out++;
    			bands += band;		
    		}
    	}
    	if ( bands == '') {
    		bandsProvided = false;
            $("#stage3").removeClass('add-heading-done');
    	} else {
    		bandsProvided = true;
            $("#stage3").addClass('add-heading-done');
    	}
    	$("#submitFormBands").val(bands);
    });
}

function changeVenue() {
    var $venueInput = $("#venueInput");
    var venue = trim($venueInput.val());
    $venueInput.val(venue);
    if ( venue == '' ||  venue == ' ') {
        $venueInput.val('');
        $venueInput.removeClass('completed');
        $("#stage2").removeClass('add-heading-done');
        venueProvided = false;
    } else {
        $venueInput.addClass('completed');
        $("#stage2").addClass('add-heading-done');
        venueProvided = true;
    }
	$("#submitFormVenue").val(venue);
}

$(document).ready(function(){

    $my.allTabs = $("#tabs");
    
    $("#tab1").attr("href", "#tab-all");

    $my.allTabs.show().tabs();
    $my.allTabs.bind('tabsselect', function(event, ui) {
        if (ui.panel.id == 'tab-all') {
            event.preventDefault();
            location.href = 'guide.html';
        }
    });
    
    createBand(); 
    createBand();
    createBand();

    $("#datepicker").datepicker({
        duration: 'fast',
        dateFormat: 'yy-mm-dd',
        minDate: '+0d',
        maxDate: '+4m',
        altField: '#displayDate',
        altFormat: 'DD, d MM yy',
        onSelect: function(dateText, inst){
        	dateProvided = true;
        	$("#submitFormDate").val(dateText);
            $("#displayDate").addClass('completed');
            $("#stage1").addClass('add-heading-done');
            selectedDate = $("#displayDate").val();
            $("#venueSelect").focus();
        }
    });

    $("#displayDate").val('');

    $("#previewInput").change(function() {
        var $previewInput = $(this);
        var preview = trim($previewInput.val());
        $previewInput.val(preview);
        if ( preview == '' ||  preview == ' ') {
            $previewInput.val('');
            $previewInput.removeClass('completed');
            $("#stage4").removeClass('add-heading-done');
        } else {
            $previewInput.addClass('completed');
            $("#stage4").addClass('add-heading-done');
        }
    	$("#submitFormPreview").val(preview);
    });

    $("#displayDate").change(function(){
        var $displayDate = $(this);
        var displayDate = trim($displayDate.val());
        if ( selectedDate != displayDate) {
            alert('Do not edit this box. Please use the calendar instead.');
            $displayDate.val(selectedDate);
            $("#datepicker").datepicker().focus();
            location.hash = 'stage1';                        
        }
    });
    
    $("#venueInput").change(changeVenue);

    $("#venueSelect").change(function() {
        var $choice = $("#venueSelect :selected");
        var venue = $choice.val();
        if(venue == 'invalid') {
            venue = '';
        }
        $("#venueInput").val(venue);
        changeVenue();
    });
    $("#submitForm").submit(function(e) {
  		e.preventDefault();
    	if ( bandsProvided && venueProvided && dateProvided ) {
            $("#submitForumButton").text('Loading...');
            $message = $("#submitForm .permaLink");
            $message.show();
            var vars = {
                "date": $("#submitFormDate").val(),
                "venue": $("#submitFormVenue").val(),
                "bands": $("#submitFormBands").val(),
                "preview": $("#submitFormPreview").val()
            }
            $.ajax({
                url: "/php/gig_add.php",
                data: vars,
                async: false,
                cache: false,
                type: "POST",
                success: function(data, textStatus) {
                    $("#stage5").addClass('add-heading-done');
                    $("#submitForumButton").text('Complete');
                    $message.css('background-image', 'none').css('padding-left', '0').html('Your gig has been loaded.');
                    alert("Thank you. Your gig has been loaded.\n\nPlease wait 24-48 hours before it will appear in our listings.\n\nYou will now be returned to our Add A Gig page.");
                    location.href = 'add.html';
                },
                error: function(XMLHttpRequest, textStatus, errorThrown) {
                    $("#submitForumButton").text('Submit Gig!'); 
                    $message.hide();
                    alert("There has been an error with the submission.\n\nPlease try again in 30 seconds.");                               
                }
            });
           

    	} else {
    		if ( ! dateProvided ) {
    			alert ("You must provide a date.");
                $("#datepicker").datepicker().focus();
                location.hash = 'stage1';
    		} else if ( ! venueProvided ) {
    			alert ("You must provide a venue name.");
                $("#venueInput").focus();
                location.hash = 'stage2';
    		} else if ( ! bandsProvided ) {
    			alert ("You must provide at least one band.");
                $("#bandsInput1").focus();
                location.hash = 'stage3';
    		}
    	}
  		return false;
    });
    
});

