
/*	Shiny JS, Framework
	This code is copyright (c) Ernesto Mendez 2010.
	http://der-design.com */

$ = jQuery;

IE = $.browser.msie;

NOT_IE = ! $.browser.msie;


function get_metavar(meta) {

	var selector = 'meta[name=' + meta + ']';

	return $(selector).attr('content');

}

function append_slash(url) {

	url += ( url[url.length-1] != '/' ) ? '/' : '';

	return url;

}

function add_action(where, callback) {

	try {hooks;} catch(e) {hooks = [];}

	if ( ! hooks[where] ) {hooks[where] = [];}

	hooks[where].push(callback);

}

function do_action(where) {

	try {hooks} catch(e) {return false;}

	if ( ! hooks[where] )  {return false;}

	for ( var i in hooks[where] ) {

		var c = hooks[where][i];

		c();

	}
}

function is_ie7() {

	return (navigator.appVersion.indexOf("MSIE 7.")==-1) ? false : true;

}

function is_ie8() {

	return (navigator.appVersion.indexOf("MSIE 8.")==-1) ? false : true;

}

function maxval(values) {

	var max = 0;

	for ( var i in values ) {

		max = ( values[i] >= max ) ? values[i] : max;

	}

	return max;

}

function cycle(increment, current, length) {

	increment = parseInt(increment);

	current = parseInt(current);

	length = parseInt(length);

    var pos = current + increment;

    if (pos == 0) {return length;}

    if (pos > length) {return 1;}

    return pos;

}

function basename(url) {

	url = url.split('/');

	var name = url[url.length-1];

	return name;
}

function in_array(needle, haystack) {

	for ( var i=0; i < haystack.length; i++) {

		if ( needle == haystack[i]) { return true; }
		
	}
	
	return false;
}

function common_lib_functions() {

	$('a[rel=_blank]').attr('target', '_blank');

}

function theme_path(file) {

	var color_theme = get_metavar('shiny_color_theme');

	switch(color_theme) {

		case 'default':
			return template_directory +  '/core/images/' + file;
			break;

		default:
			return template_directory + '/core/styles/' + color_theme + '/' + basename(file);
			break;

	}
	
}

// Extensions

// TWITTER
(function($){
	$.fn.tweets = function(options) {
		$.ajaxSetup({ cache: true });
		var defaults = {
			tweets: 1
		};
		var options = $.extend(defaults, options);
		return this.each(function() {
			var obj = $(this);

			$.getJSON('http://twitter.com/statuses/user_timeline/' + options.username +'.json?count=' + options.tweets +'&callback=?', function(data) {

				$.each(data, function(i, tweet) {

					if( tweet.text !== undefined ) {
							tweet.text = tweet.text
							.replace(/#(.*?)(\s|$)/g,'<span class="hash">#$1 </span>')
							.replace(/(\b(https?|ftp|file):\/\/[-A-Z0-9+&@#\/%?=~_|!:,.;]*[-A-Z0-9+&@#\/%=~_|])/ig,'<a href="$&">$&</a> ')
							.replace(/@(.*?)(\s|\(|\)|$)/g,'<a href="http://twitter.com/$1">@$1 </a>$2');
		                   options.callback(tweet.text);
					}

				});

			});

		});
	};
})(jQuery);

// FLICKR WIDGET
function init_flickr_widgets() {

	var c = 1;

	$('.der-flickr').each(function() {$(this).attr('id','flickr-widget-' + c);c+=1;});

	$('.der-flickr').each(function() {

		var query = $(this).find('.query').attr('href');

		query = $.base64Encode(query);

		query = encodeURIComponent(query);

		var id = $(this).attr('id');

		var url = append_slash(template_directory) + 'includes/ajax/flickr_ajax.php?id=' + id + '&q=' + query;

		$.ajax({
		  url: url,
		  cache: false,
		  success: function(code){
			eval(code);
		  }

		});

	});

}

