// Namespace function
function namespace(ns) {
    ns = ns.split('.');
    var cur = window, i;
    while ( i = ns.shift() ) {
        if ( !cur[i] ) cur[i] = {};
        cur = cur[i];
    }
}
// Put all tictoc functions into the tictoc object like:
// quartz.test = function() { alert("Test"); }
namespace("tictoc");


// Setup JS events when the DOM is ready
$(document).ready(function(){
	
	// Drop-down menu for IE
	if (document.all) $("#menu li").hoverClass ("sfHover");
	
	// Content area images
	$(".pagebody img[@align='left']").addClass("left");
	$(".pagebody img[@align='right']").addClass("right");
	
	// Popup links
	$("a.popup").each(tictoc.website.popup);
	
	// Admin links
	$("a.adminedit").click(tictoc.admin.edit);
	
	// Folder banner animation
	if ($("#banners").length > 0) $.slideshow('banners', 4500);
	
	// Sign in
	//if ($("#signup_button")) $("#signup_button").click (tictoc.website.signup);
    //if ($("#signup_submit")) $("#signup_submit").click (tictoc.website.do_signup);
    
    $('a.mov').quicktime({ 
        width: 432, 
        height: 324
    });
    
    $('#body a[href*="youtube.com"]').flash(
        { width: 425, height: 350, wmode: 'transparent' },
        { version: 8 },
        function(htmlOptions) {
            htmlOptions.src = "http://www.youtube.com/v/" + this.href.match(/v=(.+)/)[1];
            $(this).before($.fn.flash.transform(htmlOptions));
            $(this).remove();
        }
    );

    $('#body a[href*="vimeo.com"]').flash(
        { width: 460, height: 343, quality:'best', allowfullscreen:'true', scale:'showAll' },
        { version: 8 },
        function(htmlOptions) {
            htmlOptions.src = "http://vimeo.com/moogaloop.swf?clip_id=" + this.href.match(/(\d+)/)[1] + "&amp;server=vimeo.com&amp;fullscreen=1&amp;show_title=0&amp;show_byline=0&amp;show_portrait=0&amp;color=008DD3";
            $(this).before($.fn.flash.transform(htmlOptions));
            $(this).remove();
        }
    );

});

$.fn.hoverClass = function(c) {
	return this.each(function(){
		$(this).hover( 
			function() { $(this).addClass(c);  },
			function() { $(this).removeClass(c); }
		);
	});
};


// jQuery fader
// Based on: http://portfolio.gizone.co.uk/applications/slideshow/
$.slideshow = function (containerId, timeout) {
	var current = 0;
	var id = '#' + containerId;
	$(id).css({position:'relative'});
	var slides = $(id).children().get();
	for ( var i = 0; i < slides.length; i++ ) {
		$(slides[i]).css({zIndex:(slides.length - i), position:'absolute', top:'0', left:'0'});
	}
	setTimeout((function(){$.slideshow.next(slides, timeout, current);}), timeout);
}
$.slideshow.next = function (slides, timeout, current) {
	for (var i = 0; i < slides.length; i++) {
		var slide = slides[(current + i) % slides.length];
		$(slide).css({zIndex:(slides.length - i)});
	}
	// IE doesn't seem to support .show() after it has been faded out, so we use .fadeIn("fast")
	$(slides[current]).fadeOut('slow', 
			function(){$(slide).css({zIndex:'0', opacity:1}).fadeIn("fast");}
			);
	
	current = (current + 1) % slides.length;
	setTimeout((function(){$.slideshow.next(slides, timeout, current);}), timeout);
}
// General website functions
tictoc.website = {
  
	// Hide labels, set text to targets value
	hide_labels: function() {
		$(this).find("label").each(function() {
			$('#' + this.htmlFor).val(this.innerHTML);
			$(this).hide();
			$('#' + this.htmlFor).click(tictoc.website.clearbox);
		})
	},

    // Clear default text in an input box
    clearbox: function() {
        if (!this.default_value) this.default_value = this.value;
    
        if (this.value == '') {
            this.value = this.default_value;
			this.select();
        } else if (this.value == this.default_value) {
            this.value = '';
        }
    },
    
    // Jump to URL
    jump_to_url: function(url) {
        if (url == "") return false;
	    location.href = "/" + url;
    },
    
    // Popup link
    popup: function() {
        this.target = "_blank";
        this.title =  this.title ? this.title += ". " : "";
        this.title += "Link opens in a new window."
    },

	// Show signup
	signup: function() {
		if ($("#signup_form")) $("#signup_form").toggle();
		return false;
	},
	
    do_signup: function() {
	    $.ajax({
	        type: "POST",
	        url: "/account/subscribe",  
	        dataType: "html",
	        data: "user[username]=" + $("#user_username").val() + "&user[email]=" + $("#user_email").val() + "&unsubscribe=" + $("#unsubscribe:checked").val(),
	        success: function(data){
	            // Returned data would be html of options list
	            $("#signup_form").html(data);
				if ($("#signup_form")) $("#signup_form").css({display: "block" });
    			if ($("#signup_submit")) $("#signup_submit").click (tictoc.website.do_signup);
	        }
	    });
		return false;
    }
};


// Admin functions
tictoc.admin = {
    popup_width: 675,
    popup_height: 650,
    
    edit: function() {
        var win = window.open(this.href, "_adminedit","height=" + tictoc.admin.popup_height + ",width=" + tictoc.admin.popup_width + ",resizable=yes,dependent,scrollbars=yes");
	    win.focus();
	    return false;
    }
};