var current_template_directory = "/wp-content/themes/fastlane-2008/";

$(document).ready(function(){
	// rounded corners on boxes
	var box = $("div.box");
	if (box){
		$("<div class='box_top' />").appendTo(box);
		$("<div class='box_bottom' />").appendTo(box);
	}
	
	// add bubbles
	var branding = $("div#branding");
	if (branding){
		$("<div id='bubbles' />").appendTo(branding);
	}
	
	// call randomCar function
	var randomcarReady = $("p#randomcar");
	if (randomcarReady){
		var template_directory = $("p#randomcar").attr("rel");
		randomCar(template_directory);
	}
	
	// toggle link lists open/closed
	if ($('div#links').length > 0){
		$('div#links:eq(0)> ul').hide();
		$('div#links:eq(0)> h3').click(function() {
			$(this).next().slideToggle('fast', function () {
				if ($.browser.msie) {
					var boxHeight = $(this).parent().height();
					if(boxHeight > 100){
						$('#links div.box_bottom').remove();
						$("<div class='box_bottom' />").appendTo('#links');
					}else{
						$('#links div.box_bottom').remove();
						$("<div class='box_bottom' />").appendTo('#links');
					}
				}
			});
			$(this).toggleClass('open');
		});
	}
	
	if ($('#months').length > 0){
		attachEvents();
	}
	
	if ($('a').length > 0){
		blankwin();
	}
	
	
	// get latest youtube video
	$.get(current_template_directory+"javascripts/get-youtube.php", function(data){
		$('#video').attr('class', 'box');
		$(data).appendTo('#video');
		$("<div class='box_top' />").appendTo('#video');
		$("<div class='box_bottom' />").appendTo('#video');
	});
	
	// get tweets
	if($('#twitter ul').length>0){
		$('head').append('<script type="text/javascript" src="http://twitter.com/statuses/user_timeline/gmblogs.json?callback=twitterCallback2&count=3"></script>');
	}
		
});

function twitterCallback2(obj) {
	var twitters = obj;
	var statusHTML = "";
	var username = "";
	for (var i=0; i<twitters.length; i++){
		username = twitters[i].user.screen_name
		statusHTML += ('<li><span>'+twitters[i].text+'</span> <a style="font-size:85%" href="http://twitter.com/'+username+'/statuses/'+twitters[i].id+'">'+relative_time(twitters[i].created_at)+'</a></li>')
	}
	$('#twitter ul').append(statusHTML);
	$('#twitter').attr('class', 'box');
	$('#twitter ul').before('<h3>As it happens&hellip;</h3>');
	$('#twitter ul').after('<p>Follow GMblogs at <a href="http://twitter.com/GMblogs" target="_blank">twitter.com/gmblogs</a></p>');
	$("<div class='box_top' />").appendTo('#twitter');
	$("<div class='box_bottom' />").appendTo('#twitter');
}

// Monthly archive jump menu
function nav(e) {
	var sel = getTarget(e);
	if (sel.selectedIndex == -1) return;
	var opt = sel.options[sel.selectedIndex];
	if (opt && opt.value){
		location.href = opt.value;
	}
}

function getTarget(e) {
	if(!e) {
		e = window.event;
	}
	if (e.target) {
		var tg = e.target;
	} else if (e.srcElement) {
		var tg = e.srcElement;
	}
	return tg;
}

function attachEvents(){
	// Attach onchange event to monthly archive select menu
	if (!document.getElementById("months")) return false;
	var archiveSelect = document.getElementById('months');
	archiveSelect.onchange = nav;
}

// Adds 'target="_blank"' to links that go off site
function blankwin(){
	var hostname = window.location.hostname;
	hostname = hostname.replace("www.","").toLowerCase();
	var a = document.getElementsByTagName("a");	
	this.check = function(obj){
		var href = obj.href.toLowerCase();
		return (href.indexOf("http://")!=-1 && href.indexOf(hostname)==-1) ? true : false;				
	};
	this.set = function(obj){
		obj.target = "_blank";
		obj.className = "external";
	};	
	for (var i=0;i<a.length;i++){
		if(check(a[i])) set(a[i]);
	};		
};

// needed for twitter
function relative_time(time_value) {
  var values = time_value.split(" ");
  time_value = values[1] + " " + values[2] + ", " + values[5] + " " + values[3];
  var parsed_date = Date.parse(time_value);
  var relative_to = (arguments.length > 1) ? arguments[1] : new Date();
  var delta = parseInt((relative_to.getTime() - parsed_date) / 1000);
  delta = delta + (relative_to.getTimezoneOffset() * 60);

  if (delta < 60) {
    return 'less than a minute ago';
  } else if(delta < 120) {
    return 'about a minute ago';
  } else if(delta < (60*60)) {
    return (parseInt(delta / 60)).toString() + ' minutes ago';
  } else if(delta < (120*60)) {
    return 'about an hour ago';
  } else if(delta < (24*60*60)) {
    return 'about ' + (parseInt(delta / 3600)).toString() + ' hours ago';
  } else if(delta < (48*60*60)) {
    return '1 day ago';
  } else {
    return (parseInt(delta / 86400)).toString() + ' days ago';
  }
}

// carousel functions
function mycarousel_itemLoadCallback(carousel, state){
    if (carousel.prevFirst != null) {
        for (var i = carousel.prevFirst; i <= carousel.prevLast; i++) {
            carousel.remove(i);
        }
    }
    var per_page = carousel.last - carousel.first + 1;
    var currPage = 0;
    var f,l;
    var cr = carousel;
    for (var i = carousel.first; i <= carousel.last; i++) {
        var page = Math.ceil(i / per_page);
        if (currPage != page) {
            currPage = page;
            f = ((page - 1) * per_page) + 1;
            l = f + per_page - 1;
            f = f < carousel.first ? carousel.first : f;
            l = l > carousel.last ? carousel.last : l;
            if (carousel.has(f, l)) {
                continue;
            }
            mycarousel_makeRequest(carousel, f, l, per_page, page);
        }
    }
};

function mycarousel_makeRequest(carousel, first, last, per_page, page){
    carousel.lock();
    jQuery.get(
        current_template_directory+'javascripts/dynamic_flickr_api.php',
        {
            'per_page': per_page,
            'page': page
        },
        function(data) {
            mycarousel_itemAddCallback(carousel, first, last, data, page);
        },
        'xml'
    );
};

function mycarousel_itemAddCallback(carousel, first, last, data, page){
    carousel.unlock();
    carousel.size($('photos', data).attr('total'));
    var photos = $('photo', data);
    var per_page = carousel.last - carousel.first + 1;
    for (var i = first; i <= last; i++) {
        var pos = i - 1;
        var idx = Math.round(((pos / per_page) - Math.floor(pos / per_page)) * per_page);
        carousel.add(i, mycarousel_getItemHTML(photos.get(idx)));
    }
};

function mycarousel_getItemHTML(photo){
    var url = 'http://farm'+$(photo).attr('farm')+'.static.flickr.com/'+$(photo).attr('server')+'/'+$(photo).attr('id')+'_'+$(photo).attr('secret')+'_s.jpg';
    return '<a href="http://www.flickr.com/photos/gmblogs/'+$(photo).attr('id')+'/" target="_blank" title="'+$(photo).attr('title')+'"><img src="' + url + '" border="0" width="75" height="75" alt="'+$(photo).attr('title')+'" /></a>';
};

jQuery(document).ready(function() {
    jQuery('#mycarousel').jcarousel({
		visible: 7,
        itemLoadCallback: mycarousel_itemLoadCallback
    });
});