var $tabs;

$(function() {
    $tabs = $("#tabs").tabs({
        select: function(event, ui) {
            if(ui.index == 4)
            {
                setUpDirections();
            }
			//else if (ui.index == 2)
			//{
			//	var url = $.data(ui.tab, 'load.tabs');
	        //	if(url) 
			//	{
		    //        //location.href = url;
			//		window.open(url, "_blank");
		    //       return false;
		    //    }
			//}
            return true;
        }
    });

    $('#contact').dialog({
        autoOpen: false,
        show: 'blind',
        hide: 'blind',
        minWidth: 400,
        width: 400,
        resizable: false
    });
    
    $('#contact-submit').mouseenter(function() {
        $('#contact-submit').switchClass('button', 'button-hover', 0);
    });
    
    $('#contact-submit').mouseleave(function() {
        $('#contact-submit').switchClass('button-hover', 'button', 0);
    });
	
	$('#register-submit').mouseenter(function() {
        $('#register-submit').switchClass('button', 'button-hover', 0);
    });
    
    $('#register-submit').mouseleave(function() {
        $('#register-submit').switchClass('button-hover', 'button', 0);
    });
    
    $("#contact-submit").click(function() {        
        var name = $("#name");
        var email = $("#email");
        var comments = $("#message");
        var allFields = $([]).add(name).add(email);
        
        var valid = true;
    
        valid = valid && checkIfNotEmpty(name, "Name");
        valid = valid && checkRegexp(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i,
                                       "Please provide a valid e-mail address.");
        valid = valid && checkIfNotEmpty(comments, "Message");
     
        if (valid)
        {
            $.post('ajax/contact.php',
                {
                    name: name.val(),
                    email: email.val(),
                    message: $("#message").val()
                },
                function(data) {
                    // close and clear form
                    $('#contact').dialog('close');
                    $("#message").val('');
                    allFields.val('');
                }
            );
            
            $('#validate-tips').text('');
        }
    });
	
	$("#register-submit").click(function() {        
        var fname = $("#reg-fname");
		var lname = $("#reg-lname");
		var addr = $("#reg-addr");
		var city = $("#reg-city");
		var state = $("#reg-state");
		var zip = $("#reg-zip");
		var phone = $("#reg-phone");
        var email = $("#reg-email");
		var how = $("#reg-how");
        var allFields = $([]).add(fname).add(lname).add(addr).add(city).add(state).add(zip).add(phone).add(email).add(how);
		
		var fname_error = $("#reg-fname-error");
		var lname_error = $("#reg-lname-error");
		var addr_error = $("#reg-addr-error");
		var city_error = $("#reg-city-error");
		var state_error = $("#reg-state-error");
		var zip_error = $("#reg-zip-error");
		var phone_error = $("#reg-phone-error");
        var email_error = $("#reg-email-error");
		var how_error = $("#reg-how-error");
		var allErrors = $([]).add(fname_error).add(lname_error).add(addr_error).add(city_error).add(state_error).add(zip_error).add(phone_error).add(email_error).add(how_error);
        
        var valid = true;
    
        if (fname.val() == "")
		{
			valid = false;
			fname_error.text("Pleae provide your first name");
		}
		else
		{
			fname_error.text("");
		}
		
		if (lname.val() == "")
		{
			valid = false;
			lname_error.text("Pleae provide your last name");	
		}
		else
		{
			lname_error.text("");
		}
		
		if (addr.val() == "")
		{
			valid = false;
			addr_error.text("Please provide your address");
		}
		else
		{
			addr_error.text("");
		}
		
		if (city.val() == "")
		{
			valid = false;
			city_error.text("Please provide your city");
		}
		else
		{
			city_error.text("");
		}
		
		if (state.val() == "")
		{
			valid = false;
			state_error.text("Please provide your state");
		}
		else
		{
			state_error.text("");
		}
		
		if (zip.val() == "")
		{
			valid = false;
			zip_error.text("Please provide your zip");
		}
		else
		{
			zip_error.text("");
		}
		
		if (phone.val() == "")
		{
			valid = false;
			phone_error.text("Please provide your phone number");
		}
		else
		{
			phone_error.text("");
		}
		
        if (!checkRegexp2(email, /^((([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+(\.([a-z]|\d|[!#\$%&'\*\+\-\/=\?\^_`{\|}~]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])+)*)|((\x22)((((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(([\x01-\x08\x0b\x0c\x0e-\x1f\x7f]|\x21|[\x23-\x5b]|[\x5d-\x7e]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(\\([\x01-\x09\x0b\x0c\x0d-\x7f]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF]))))*(((\x20|\x09)*(\x0d\x0a))?(\x20|\x09)+)?(\x22)))@((([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|\d|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.)+(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])|(([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])([a-z]|\d|-|\.|_|~|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])*([a-z]|[\u00A0-\uD7FF\uF900-\uFDCF\uFDF0-\uFFEF])))\.?$/i))
		{
			valid = false;
			email_error.text("Please provide your valid email address");
		}
		else
		{
			email_error.text("");
		}
		
		if (how.val() == "")
		{
			valid = false;
			how_error.text("Please tell us how you heard about this event");
		}
		else
		{
			how_error.text("");
		}
     
        if (valid)
        {
            $.post('ajax/register.php',
                {
                    fname: fname.val(),
					lname: lname.val(),
					addr: addr.val(),
					city: city.val(),
					state: state.val(),
					zip: zip.val(),
					phone: phone.val(),
                    email: email.val(),
					how: how.val()
                },
                function(data) {
                    allFields.val('');
					allErrors.text('');
					
					$('#registration').fadeOut('slow', function () {
						$('#registration-thanks').fadeIn('slow');
					});
                }
            );
        }
    });
});

function updateTips(t)
{
    $('#validate-tips').text(t);
}

function checkIfNotEmpty(o,n)
{
    if (o.val() == "")
    {
        //o.addClass('ui-state-error');
        updateTips("Please provide a " + n + ".");
        return false;
    }
    else
    {
        return true;
    }
}

function checkRegexp(o,regexp,n)
{
    if ( !( regexp.test( o.val() ) ) )
    {
        //o.addClass('ui-state-error');
        updateTips(n);
        return false;
    }
    else
    {
        return true;
    }
} 

function checkRegexp2(o,regexp)
{
    if ( !( regexp.test( o.val() ) ) )
    {
        return false;
    }
    else
    {
        return true;
    }
}

function contact()
{
    $('#contact').dialog('open');
}

function register()
{
    $tabs.tabs('select', 2);
}

function news()
{
    $tabs.tabs('select', 1);
}

function dir_tab()
{
    $tabs.tabs('select', 4);
}

function highlights()
{
    $tabs.tabs('select', 5);
}

function goLite(element)
{
   element.style.color = "#FFFFFF";
   element.style.backgroundColor = "#b32317";
}

function goDim(element)
{
   element.style.color = "";
   element.style.backgroundColor = "#FFFFFF";
}

var maps_setup = false;
var geocoder;
var directions;
var dirRenderer;
var latlng;
var map;

function setUpDirections()
{
    if (!maps_setup)
    {
        // Initialize google maps
        initialize();
        
        $('#dirDialog').dialog({
            autoOpen: false,
            show: 'blind',
            hide: 'blind',
            minWidth: 560,
            width: 560,
            resizable: false
        });
            
            
        $('#dirButton').mouseenter(function() {
            $('#dirButton').switchClass('button', 'button-hover', 0);
        });
        
        $('#dirButton').mouseleave(function() {
            $('#dirButton').switchClass('button-hover', 'button', 0);
        });
        
        $('#dirButton').click(function() {
            getDirections();
            
            $('#dirDialog').dialog('open');
            
            return false;
        });
        
        maps_setup = true;
    }
}

function initialize()
{
    geocoder = new google.maps.Geocoder();
    directions = new google.maps.DirectionsService();
    dirRenderer = new google.maps.DirectionsRenderer();
    
    // Lat/Lon of the carwash
    latlng = new google.maps.LatLng(41.8919750,-87.6096150);
    
    var myOptions = {
        zoom: 14,
        center: latlng,
        mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    
    map = new google.maps.Map(document.getElementById("map_canvas"), myOptions);
    
    // Set a marker on the map
    var marker = new google.maps.Marker({
        map: map, 
        position: latlng
    });
}

function codeAddress(address)
{
    if (geocoder)
    {
        geocoder.geocode( { 'address': address}, function(results, status) {
            if (status == google.maps.GeocoderStatus.OK)
            {
                map.setCenter(results[0].geometry.location);
                var marker = new google.maps.Marker({
                map: map, 
                position: results[0].geometry.location
                });
            }
            else
            {
                // Geocode failed for some reason
                //alert("Geocode was not successful for the following reason: " + status);
            }
        });
    }
}

function getDirections()
{
    var street = $("#dir_str_add").val();
    var city = $("#dir_city").val();
    var state = $("#dir_state").val();
    var zip = $("#dir_zip").val();
    
    var address = street + ", " + city + ", " + state + " " + zip;
    
    if (directions)
    {
        var dirRequest = {
            origin: address,
            destination: "600 East Grand Avenue Chicago, IL 60611",
            travelMode: google.maps.DirectionsTravelMode.DRIVING
        };
        
        directions.route(dirRequest, function(results, status) {
            if (status == google.maps.DirectionsStatus.OK)
            {
                // clear any previous directions
                dirRenderer.setMap(null);
                
                // set the map
                dirRenderer.setMap(map);
                
                // set the directions
                dirRenderer.setDirections(results);
                
                // set the text directions
                dirRenderer.setPanel(document.getElementById("direction-text"));
            }
            else
            {
                // Directions request failed for some reason
                //alert("Directions request was not successful for the following reason: " + status);
            }
        });
    }
}
