$(function() {	
	/****
	* SPLASH
	****/
	if ($("#splash").length) {
		$("ul#locationList li").hover(function() {
			$(this).addClass("hover");
		}, function() {
			$(this).removeClass("hover");
		})
	}
	
	/****
	* SCROLL TO TOP
	****/
    $("#backToTop").live("click", function() {
        $.scrollTo(0, 600, "easeInOutQuart");
    });
	
	/****
	* SCROLL TO ANCHOR LINKS
	****/
	$("a[href*=#]").click(function(e) {
		if($(this).attr("href").length > 1) {
			e.preventDefault();
			var toAnchor = $(this).attr("href");
			$.scrollTo(toAnchor, 600, "easeInOutQuart");
		}
	});
	
    /****
    * FORM VALIDATION
    ****/
    $(".job-application-form .btnSubmit").click(function(e) {

        $(".job-application-form .form-error").remove();
        $(".job-application-form .job-name").css({ border: "1px solid #C4C4C4", background:"url(/assets/images/bg_white_25.png)" });
        $(".job-application-form .job-email").css({ border: "1px solid #C4C4C4", background:"url(/assets/images/bg_white_25.png)" });
        $(".job-application-form .filename").css({ border: "1px solid #C4C4C4", background:"url(/assets/images/bg_white_25.png)" });

        var formValid = true;

        if ($(".job-application-form .job-name").val() === "") {
            $(".job-application-form .job-name").css({ border: "1px solid #6F121A", background: "#EAD9D9" });
            $(".job-application-form .job-name").after("<p class='form-error'>Your name is required</p>");
            formValid = false;
        }
        if ($(".job-application-form .job-email").val() === "") {
            $(".job-application-form .job-email").css({ border: "1px solid #6F121A", background: "#EAD9D9" });
            $(".job-application-form .job-email").after("<p class='form-error'>Your email is required</p>");
            formValid = false;
        }
        else if (!validEmail($(".job-application-form .job-email").val())) {
            $(".job-application-form .job-email").css({ border: "1px solid #6F121A", background: "#EAD9D9" });
            $(".job-application-form .job-email").after("<p class='form-error'>Your email is not valid</p>");
            formValid = false;
        }
        if ($(".uploader .filename").html() === "No file selected") {
            $(".job-application-form .filename").css({ border: "1px solid #6F121A", background: "#EAD9D9" });
            $(".job-application-form .uploader").after("<p class='form-error'>Your resume is required</p>");
            formValid = false;
        }
        if (!formValid) {
            e.preventDefault();
        }
    });

    $("#signUp .btnSend").click(function(e) {

        var formValid = true;

        if ($("#signUp .signup-name").val() === "" || $("#signUp .signup-name").val() === "Your name is required") {
            $("#signUp .signup-name").css({ color: "#6F121A" });
            $("#signUp .signup-name").val("Your name is required");
            formValid = false;
        }
        if ($("#signUp .signup-email").val() === "" || $("#signUp .signup-email").val() === "Your email is required") {
            $("#signUp .signup-email").css({ color: "#6F121A" });
            $("#signUp .signup-email").val("Your email is required");
            formValid = false;
        }
        else if (!validEmail($("#signUp .signup-email").val())) {
            $("#signUp .signup-email").css({ color: "#6F121A" });
            $("#signUp .signup-email").val("Your email is invalid");
            formValid = false;
        }
        if (!formValid) {
            e.preventDefault();
        }
    });

    $("#signUp .signup-name").focus(function() {
        if ($(this).val() === "Your name is required") {
            $("#signUp .signup-name").css({ color: "#FFF" });
            $(this).val("");
        }
    });

    $("#signUp .signup-email").focus(function() {
        if ($(this).val() === "Your email is required" || $(this).val() === "Your email is invalid") {
            $("#signUp .signup-email").css({ color: "#FFF" });
            $(this).val("");
        }
    });

    function validEmail(email) 
    { 
        filter = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
        if (filter.test(email)) { return true; }
        else { return false; }
    }
	
	/****
	* SEARCH
	****/
	$("#search input.searchInput").val("search").focus(function() {
		if ($(this).val() == "search") {
			$(this).val("");
		}
	}).blur(function() {
		if ($(this).val() == "") {
			$(this).val("search");
		}
	});

    // Handles search form CLICK
    $("#search a.searchBtn").click(function() {
        performSearch();
    });

    // Handles search form ENTER
    $("#search #searchBoxInput").bind("keyup", function(e) {
        var code = e.keyCode || e.which;
        if (code ==  13) {
            performSearch();
        }
    });

    $(".jobSelectRadio").click(function(e) {
        var jobSelected = $(this).val();
        var currentValue = $(".position-text-box").val();
        if ($(this).is(':checked')) {
            $(".position-text-box").val((currentValue + jobSelected));
        }
        else {
            $(".position-text-box").val(currentValue.replace(jobSelected, ""));
        }
    });
	
	/****
	* CONTENT DROP INTERACTIONS
	****/
	$("#signUpButton, #locationSelectorButton").click(function(e) {
		e.preventDefault();
		
		$(this).contentDrop();
		
		if($(this).attr("id") == "signUpButton") {
			$(this).parent().css("z-index", 100);	
			$("#locationSelector").css("z-index", 99);
		}
		else {
			$(this).parent().css("z-index", 100);	
			$("#signUp").css("z-index", 99);
		}
	});
	
	// Close dropped content
	$("#locationSelector .close, #signUp .close").click(function(e) {
		e.preventDefault();
		
		$(this).contentDrop();
	});
	
	/****
	* CHANGE VENUE
	****/
	$("a.changeVenue").click(function() {
		setTimeout(function() { $("#locationSelectorButton").trigger("click"); }, 300);
	});
	
	/****
	* FORM STYLING input:checkbox, 
	****/
	$("select, input[type=file]").uniform();
	
	/****
	* CALENDAR
	****/
	calendar.createCalendar();
	
	/****
	* HOME SLIDESHOW
	****/
	$("#homeSlideshow .slides").cycle({
		prev: "li#prev a",
		next: "li#next a",
		speed: 1500
	});

    $(".facebook-comments").click(function() {
        var currentItem = $(this).attr("fb");
        $(".facebook-container").each(function() {
            if ($(this).attr("fb") == currentItem) {
                $(this).slideToggle();
            }
        });
    });
});

/****
* CONTENT DROP ANIMATION
****/
// Use only for content drop buttons
$.fn.contentDrop = function() {
	if ($(this).parent().css("top") == "0px") {
		$(this).parent().animate({
			top: "-264px"
		}, 900, "easeOutBounce");
	}
	else {
		$(this).parent().animate({
			top: 0
		}, 400, "easeInSine");
	}
}

/****
* CALENDAR
****/
var calendar = {
    createCalendar: function () {
        $("#calendar").calendarLite({
            showYear: true,
            prevArrow: 'Previous month',
            nextArrow: 'Next month',
            callback: function (dates, currentMonth) {
                calendar.retrieveEvents(dates, currentMonth);
                $("#calendar").append("<p><span>What's the Craic?</span><br />Select a day to see what's on.</p>");
            },
            linkFormat: 'http://' + window.location.host + "/" + getCurrentVenue() + '/entertainment?d={%dd}-{%mm}-{%yyyy}'
        });
    },
    retrieveEvents: function (dates, currentMonth) {
        dates.each(function (date) {
            var cell = $(this).parent();
            var link = $(this).attr("rel");
            if (eventItems != null) {
                $.each(eventItems.eventItems, function (i) {
                    var currentItem = eventItems.eventItems[i];
                    if (link === currentItem.Date) {
                        var truncText = truncateText(currentItem.Text, 27);

                        cell.addClass("event");
                        cell.append("<div class='events'>" + truncText + "</div>");
                    }
                });
            }
            $(this).hover(function () {
                cell.find(".events").show();
            },
            function () {
                cell.find(".events").hide();
            });
        });
    },
};

function truncateText(text, length) {
    var string = text.toString();
    if (string.length > length) {
        string = string.substring(0,length) + "...";
    }
    return string;
}

function getCurrentVenue() {
    var path = window.location.pathname.substring(1);
    return path.substring(0, path.indexOf("/"));
}

function performSearch() {
    if ($("#search input.searchInput").val().trim() == "search" || $("#search input.searchInput").val().trim() == "") {
        alert("What are you searching for?");
        return;
    }

    var searchUrl = "http://" + window.location.hostname + "/" + getCurrentVenue() + "/search/?search=" + $("#search input.searchInput").val().trim();
    window.location = searchUrl;
}
