if (typeof console == "undefined") { console = { log: function(){} }; };

/*
 * timeago: a jQuery plugin, version: 0.9.3 (2011-01-21)
 * @requires jQuery v1.2.3 or later
 *
 * Timeago is a jQuery plugin that makes it easy to support automatically
 * updating fuzzy timestamps (e.g. "4 minutes ago" or "about 1 day ago").
 *
 * For usage and examples, visit:
 * http://timeago.yarp.com/
 *
 * Licensed under the MIT:
 * http://www.opensource.org/licenses/mit-license.php
 *
 * Copyright (c) 2008-2011, Ryan McGeary (ryanonjavascript -[at]- mcgeary [*dot*] org)
 */
(function($) {
  $.timeago = function(timestamp) {
    if (timestamp instanceof Date) {
      return inWords(timestamp);
    } else if (typeof timestamp === "string") {
      return inWords($.timeago.parse(timestamp));
    } else {
      return inWords($.timeago.datetime(timestamp));
    }
  };
  var $t = $.timeago;

  $.extend($.timeago, {
    settings: {
      refreshMillis: 60000,
      allowFuture: false,
      strings: {
        prefixAgo: null,
        prefixFromNow: null,
        suffixAgo: "ago",
        suffixFromNow: "from now",
        seconds: "less than a minute",
        minute: "about a minute",
        minutes: "%d minutes",
        hour: "about an hour",
        hours: "about %d hours",
        day: "a day",
        days: "%d days",
        month: "about a month",
        months: "%d months",
        year: "about a year",
        years: "%d years",
        numbers: []
      }
    },
    inWords: function(distanceMillis) {
      var $l = this.settings.strings;
      var prefix = $l.prefixAgo;
      var suffix = $l.suffixAgo;
      if (this.settings.allowFuture) {
        if (distanceMillis < 0) {
          prefix = $l.prefixFromNow;
          suffix = $l.suffixFromNow;
        }
        distanceMillis = Math.abs(distanceMillis);
      }

      var seconds = distanceMillis / 1000;
      var minutes = seconds / 60;
      var hours = minutes / 60;
      var days = hours / 24;
      var years = days / 365;

      function substitute(stringOrFunction, number) {
        var string = $.isFunction(stringOrFunction) ? stringOrFunction(number, distanceMillis) : stringOrFunction;
        var value = ($l.numbers && $l.numbers[number]) || number;
        return string.replace(/%d/i, value);
      }

      var words = seconds < 45 && substitute($l.seconds, Math.round(seconds)) ||
        seconds < 90 && substitute($l.minute, 1) ||
        minutes < 45 && substitute($l.minutes, Math.round(minutes)) ||
        minutes < 90 && substitute($l.hour, 1) ||
        hours < 24 && substitute($l.hours, Math.round(hours)) ||
        hours < 48 && substitute($l.day, 1) ||
        days < 30 && substitute($l.days, Math.floor(days)) ||
        days < 60 && substitute($l.month, 1) ||
        days < 365 && substitute($l.months, Math.floor(days / 30)) ||
        years < 2 && substitute($l.year, 1) ||
        substitute($l.years, Math.floor(years));

      return $.trim([prefix, words, suffix].join(" "));
    },
    parse: function(iso8601) {
      var s = $.trim(iso8601);
      s = s.replace(/\.\d\d\d+/,""); // remove milliseconds
      s = s.replace(/-/,"/").replace(/-/,"/");
      s = s.replace(/T/," ").replace(/Z/," UTC");
      s = s.replace(/([\+\-]\d\d)\:?(\d\d)/," $1$2"); // -04:00 -> -0400
      return new Date(s);
    },
    datetime: function(elem) {
      // jQuery's `is()` doesn't play well with HTML5 in IE
      var isTime = $(elem).get(0).tagName.toLowerCase() === "time"; // $(elem).is("time");
      var iso8601 = isTime ? $(elem).attr("datetime") : $(elem).attr("title");
      return $t.parse(iso8601);
    }
  });

  $.fn.timeago = function() {
    var self = this;
    self.each(refresh);

    var $s = $t.settings;
    if ($s.refreshMillis > 0) {
      setInterval(function() { self.each(refresh); }, $s.refreshMillis);
    }
    return self;
  };

  function refresh() {
    var data = prepareData(this);
    if (!isNaN(data.datetime)) {
      $(this).text(inWords(data.datetime));
    }
    return this;
  }

  function prepareData(element) {
    element = $(element);
    if (!element.data("timeago")) {
      element.data("timeago", { datetime: $t.datetime(element) });
      var text = $.trim(element.text());
      if (text.length > 0) {
        element.attr("title", text);
      }
    }
    return element.data("timeago");
  }

  function inWords(date) {
    return $t.inWords(distance(date));
  }

  function distance(date) {
    return (new Date().getTime() - date.getTime());
  }

  // fix for IE6 suckage
  document.createElement("abbr");
  document.createElement("time");
}(jQuery));



// Rundle lantern: main script
// updated November 10 2010 
// u.bautista@adelaidecitycouncil.com

// Global data 

// Configuration data 
var LANTERN_CONF = {
	JSONP_CALLBACK_TWITTER : 'twitter_feed_response',
	JSONP_CALLBACK_TOPSY : '_g_json_callback_2',
	JSONP_CALLBACK_TWITTER_SEARCH : '_g_json_callback_3',
	MAX_TWEETS : 4,
	TIME_LANTERN : '6:30pm',
	LANTERN_UTC_OFFS : 34200,
	T_LANTERN_START : { h : 19, m: 30},
	T_LANTERN_END : { h : 24, m: 0 },
	T_LANTERN_TZ_OFFS : -570,
	TXT_GALLERY_INTRO : 'View the current animations playing on the Lantern.',
	URL_BASE : 'http://rundlelantern.com.au',
	URL_CAM_SRC : 'http://www.adelaidecitycouncil.com/netcatapps/webcam/images/rundleEast.jpg',
	URL_CREATE : 'create.htm',
	URL_HOME : 'index.htm',
	URL_SITE_GALLERY : 'gallery.htm',
	URL_TWEETS : 'http://stage.rl-dev.net/ajax/twitter_feed',
	URL_VIDEO_JS : 'js/video-js-1.1.4/video.js',
	VID_THUMBS_PER_PAGE : 9,
	VID_W : 610,
	VID_H : 415,
	VID_DFLT : 'videos/fringe_2011.mov.flv',
	FB_LIKE_HTML : '<iframe src="http://www.facebook.com/plugins/like.php?href={href_url}&amp;layout=button_count&amp;show_faces=false&amp;width=140&amp;action=like&amp;height=30&amp;font=verdana&amp;colorscheme=light" scrolling="no" frameborder="0" style="border:none; overflow:hidden;height:30px;width:140px; " allowtransparency="true" background="transparent"></iframe>'
};

/*FB_LIKE_HTML : '<iframe src="http://www.facebook.com/plugins/like.php?href=http://www.facebook.com/pages/GoodLife-Modern-Organic-Pizza/101688746564643&amp;layout=button_count&amp;show_faces=false&amp;width=95&amp;action=like&amp;font=verdana&amp;colorscheme=light&amp;height=21" scrolling="no" frameborder="0" style="border:none; overflow:hidden; width:95px; height:21px;" allowtransparency="true"></iframe>'*/




// Global variables 
var _v_data = [];
var args = {};
var current_movie_idx = 0;
var day_or_nite = null;
var months = { 'jan': 0, 'feb': 1, 'mar': 2, 'apr': 3, 'may': 4, 'jun': 5, 'jul': 6, 'aug': 7, 'sep': 8, 'oct': 9, 'nov': 10, 'dec': 11 };
var n_ajax_calls = 0; //test all ajax calls have completed
var tweet_count = 0;
var tweet_max = 3;
var tweets_list = [];
var tweets_html = {};
var lantern_start = new Date();
var lantern_end = new Date();
var cat_children = {};
var cat_parent = {};
var current_cat = null;
var playlist = [];
var playlist_ids = {};

// Global code 

// Helper functions 
var is_ipad = function() { return (navigator.userAgent.match(/iPad/i) !== null); };
var is_iphone = function() { return (navigator.userAgent.match(/iPhone/i) !== null); };
var is_apple_mobile = function(){ return (is_ipad() || is_iphone()); };

// split up any arguments in the query string 
var get_args = function(){
	var u = location.href;
	var t = u.split('#');
	var q = null;
	var z = null;

	if (t.length > 1){	
		q = t[1];
		z = q.split('&');
		for (var i = 0 ; i < z.length; ++i){
			var m = z[i].split('=');
			args[m[0]] = m[1];
		}
	}

	t = u.split('?');
	if (t.length > 1){	
		q = t[1];
		z = q.split('&');
		for (var i = 0 ; i < z.length; ++i){
			var m = z[i].split('=');
			args[m[0]] = m[1];
		}
	}
};


// scroll animation to top of page 
function scroll_to_top(){
	if (!jQuery.browser.opera){ jQuery('html,body').stop().animate({ scrollTop: 0 }, 500); }
}

// call flash interface to set movie 
function set_swf_movie(s) {
	try {
		var _t = setTimeout(
			function(){
				/*if (navigator.appName.indexOf("Microsoft") != -1) { window["swfMovie"].setMovie(s); }
				else { document["swfMovie"].setMovie(s); }*/
				if (typeof swfVideo != "undefined" && typeof swfVideo.setMovie != "undefined"){ swfVideo.setMovie(s); }
				clearTimeout(_t);
			}, 200
		);
	} catch(ex){
	}
}

// Callback for flash player extern. interface 
function swf_movie_stopped(){ 
	var q = "";

	try {
		if (++current_movie_idx >= playlist.length){ current_movie_idx = 0; }
		if (jQuery('body.section-rundle-lantern-home').length && typeof playlist[current_movie_idx] != "undefined"){
			if (!is_apple_mobile()){
				if (/force_no_swf_stop_callback/gi.test(location.href)) { return; }
				set_swf_movie("../" + playlist[current_movie_idx].src);
				q = "#home_playlist_item_" + current_movie_idx.toString();
				if (jQuery(q).length){ jQuery('#current-playlist li').removeClass('current-playing'); jQuery(q).addClass('current-playing'); }
			}
		}
	} catch (ex){ }
}

// start a jsonp query 
var jsonp_query_run = function(u, cb){
	u += '?r=' + Math.random().toString();
	jQuery.ajax({
		'url' : u,
		'dataType' : 'jsonp',
		'jsonp' : cb,
		'success' : function(d) {},
		'error' : function(d) {}
	});
};

// initialize topsy api search results  
var json_topsy_init = function(){
	/*var u = LANTERN_CONF.URL_TWEETS_TOPSY;
	jsonp_query_run(u, LANTERN_CONF.JSON_CALLBACK_TOPSY);*/
};

// initialize twitter api search results 
var json_twitter_init = function(){
	var u = LANTERN_CONF.URL_TWEETS; 
	jsonp_query_run(u, LANTERN_CONF.JSON_CALLBACK_TWITTER);
	console.log('initializing twitter');
};

var json_twitter_search_init = function(){
	/*var u = LANTERN_CONF.URL_TWEETS_2; 
	jsonp_query_run(u, LANTERN_CONF.JSON_CALLBACK_TWITTER_SEARCH);*/
};

// convert twitter date to friendly format 
var twitter_to_js_date = function(s){
	var p = s.split(' ');
	var d = null; 
	var ym = null;
	var t = null;
	try {
		ym = s.match(/[\ ]{1}[0-9]{4}/);
		if (ym !== null && parseInt(ym[0], 10) > 0){
			s = s.replace(/[\ ]{1}[0-9]{4}/, '');
			s += ym[0].toString();
			p = s.split(' ');
		}
		
		t = p[3].split(':'); 
		if (/[0-9]/.test(p[2].toString())){
			d = new Date(parseInt(p[5],10), months[p[1].toLowerCase()], parseInt(p[2],10), parseInt(t[0], 10), parseInt(t[1], 10), parseInt(t[2], 10));
		} else {
			d = new Date(parseInt(p[5],10), months[p[2].toLowerCase()], parseInt(p[1],10), parseInt(t[0], 10), parseInt(t[1], 10), parseInt(t[2], 10));
		}
	} catch(ex) { d = new Date(); }
	return d;
};


// convert javascript date to twitter date 
var js_date_to_twitter = function(d){
	var cd = new Date(); // current date
	var da = null;
	var delta = null;
	var h = null;
	var m = null;
	var r = cd.toString();  //result 
	var utc_offs = -cd.getTimezoneOffset() * 60; //convert local time to utc

	var a_few_months_ago = function(da){
		return (da >= 30);
	};
	var a_few_days_ago = function(da) {
		return (da >= 1);
	};
	var a_few_seconds_ago = function(cd, d){ 
		return (cd.getMinutes() == m && cd.getHours() == h  && cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear());
	};
	var a_few_minutes_ago = function(cd, d){
		return (cd.getHours() == h  && cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear());
	};
	var a_few_hours_ago = function(cd, d){ 
		return (cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear());
	};

	try {
		d.setTime(d.getTime() + (utc_offs * 1000)); //add the utc offset to the date
		da =  Math.round((cd.getTime() - d.getTime()) / (86400000));
		h = d.getHours();
		m = d.getMinutes();

		if (a_few_months_ago(da)) {
			delta = Math.abs(cd.getMonth() - d.getMonth());
			r = 'about ' + ((delta > 0) ? delta.toString() : '1') + ' month' + ((delta > 1) ? 's': '') + ' ago';
		}
		else if (a_few_days_ago(da)) {
			r = 'about ' + da.toString() + ' day' + ((da == 1) ? '': 's') + ' ago';
		} else { 
			if (a_few_seconds_ago(cd, d)){
				delta = (cd.getSeconds() - d.getSeconds()); 
				r = 'about ' + delta.toString() + ' second' + ((delta > 1)? 's' :'')+ ' ago';
			} else if (a_few_minutes_ago(cd, d)){
				delta = (cd.getMinutes() - m); 
				if (delta <= 2){
					r = "a few minutes ago";
				} else {
					r = ((delta === 0) ? '1' : delta.toString()) + ' minute' + ((delta > 1)? 's' :'')+ ' ago';
				}
			} else if (a_few_hours_ago(cd, d)){
				delta = (cd.getHours() - h); 
				r = 'about ' + delta.toString() + ' hour' + ((delta > 1) ? 's' : '') + ' ago';
			}
		}
	} catch(ex) {
	}

	return r;
};

// Display twitter date as local friendly format 
var twitter_friendly_date = function(s, utc_offs, r_var){
	var cd = new Date();
	var da = null;
	var delta = null;
	var d = null;
	var h = null;
	var m = null;
	var ms = null;
	var p = null; 
	var t = null; 
	var r = s;
	var ym = null; 
	
	utc_offs = -cd.getTimezoneOffset() * 60;
	try {
		ym = s.match(/[\ ]{1}[0-9]{4}/);
		if (ym !== null && parseInt(ym[0], 10) > 0){
			s = s.replace(/[\ ]{1}[0-9]{4}/, '');
			s += ym[0].toString();
			r = s;
		}
		p = s.split(' ');
		t = p[3].split(':');  //time
		if (/[0-9]/.test(p[2].toString())){
			d = new Date(parseInt(p[5],10), months[p[1].toLowerCase()], parseInt(p[2],10), parseInt(t[0], 10), parseInt(t[1], 10), parseInt(t[2], 10));
		} else {
			d = new Date(parseInt(p[5],10), months[p[2].toLowerCase()], parseInt(p[1],10), parseInt(t[0], 10), parseInt(t[1], 10), parseInt(t[2], 10));
		}
		if (typeof r_var != "undefined"){
			r_var = d.getTime();
		}
		ms = d.getTime() + (utc_offs * 1000); 
		d.setTime(ms);
		da = Math.round((cd.getTime() - d.getTime()) / (86400000));
		h = d.getHours();
		m = d.getMinutes();
		if (da >= 30) {
			delta = Math.abs(cd.getMonth() - d.getMonth());
			r = 'about ' + ((delta > 0) ? delta.toString() : '1') + ' month' + ((delta > 1) ? 's': '') + ' ago';
		} if (da >= 1) {
			r = 'about ' + da.toString() + ' day' + ((da == 1) ? '': 's') + ' ago';
		} else { 
			if (cd.getMinutes() == m && cd.getHours() == h  && cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear()){
				delta = (cd.getSeconds() - d.getSeconds()); 
				r = 'about ' + delta.toString() + ' second' + ((delta > 1)? 's' :'')+ ' ago';
			} else if (cd.getHours() == h  && cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear()){
				delta = (cd.getMinutes() - m); 
				if (delta <= 2){
					r = "a few minutes ago";
				} else {
					r = ((delta === 0) ? '1' : delta.toString()) + ' minute' + ((delta > 1)? 's' :'')+ ' ago';
				}
			} else if (cd.getDate() == d.getDate() && cd.getMonth() == d.getMonth() && cd.getYear() == d.getYear()){
				delta = (cd.getHours() - h); 
				r = 'about ' + delta.toString() + ' hour' + ((delta > 1) ? 's' : '') + ' ago';
			}
		}
	} catch(ex){ r = s; }
	return r;
};

// Create link tags inside text 
var mk_links = function(s, n){
	var r = s;
	var i = 0;
	var m = null;
	var _f = null;

	m = s.match(/[A-Z0-9._%+\-]+@[A-Z0-9.\-]+\.[A-Z]{2,4}/gim);
	if (typeof m != "undefined" && m !== null && m.length){
		_f = function(i){
			r = r.replace(
				m[i],
				'<a href="mailto:' + m[i] + '?subject=Enquiry%20From%20Rundle%20Lantern%20Website">' +  m[i] + '</a>'
			); 
		};
		for (i = 0; i < m.length; ++i){ _f(i); }	
	}
	m = s.match(/((http:\/\/)|(www)|(https:\/\/))[\/A-Z0-9._%+-@]+/gim);
	if (typeof m != "undefined" && m !== null && m.length){
		_f = function(i){
			if (/^http/.test(m[i]) || /^https/.test(m[i])){
				r = r.replace(m[i], '<a href="' + m[i] + '">' +  ((typeof n == "undefined") ? m[i] : n)+ '</a>');
			} else {
				r = r.replace(m[i], '<a href="http://' + m[i] + '">' +  ((typeof n == "undefined") ? m[i] : n) + '</a>');
			}
		};
		for (i = 0; i < m.length; ++i){ _f(i); }	
	}
	return r;
};

// Selection sort on an array of integers
function sort_int_array(q){
	var r = [];
	var i = 0;
	var j = 0;
	var ln = 0; 
	var min = 0;
	var v = null;

	for (i = 0; i < q.length; ++i){ r[i] = q[i]; ++ln; }

	for (i = 0, min = 0; i < ln; ++i, ++min){
		for (j = (i + 1); j < ln; ++j){
			if (parseInt(r[j], 10) > parseInt(r[min], 10)){
				min = j;
			}
		}
		if ( i != min){
			v = r[min];
			r[min] = r[i];
			r[i] = v;
		}
	}
	return r;
}

// Sort the tweets by their timestamps
function sort_tweets(){
	var i = 0;
	var _f = null;

	tweets_list = sort_int_array(tweets_list);
	_f = function(i){
		try {
			jQuery('#tweet-widget ul.list').append(tweets_html[tweets_list[i].toString()]);
		} catch(ex){ }
	};
	for (i = 0 ; i < tweets_list.length; ++i){
		if (i == LANTERN_CONF.MAX_TWEETS) {
			break;
		}
		_f(i);
	}
}

// Core callback function for twitter 
var ___g_json_callback = function(d, fn, t){
	var i = 0;
	var _f = null;


	var setISO8601 = function (dt, s) {
	    var regexp = "([0-9])(-([0-9])(-([0-9])" +
		"(T([0-9]):([0-9])(:([0-9])(\.([0-9]+))?)?" +
		"(Z|(([-+])([0-9]):([0-9])))?)?)?)?";
	    var d = s.match(new RegExp(regexp));
 
	    var offset = 0;
	    var date = new Date(d[1], 0, 1);
 
	    if (d[3]) { date.setMonth(d[3] - 1); }
	    if (d[5]) {date.setDate(d[5]);}
	    if (d[7]) {date.setHours(d[7]);}
	    if (d[8]) {date.setMinutes(d[8]);}
	    if (d[10]) {date.setSeconds(d[10]);}
	    if (d[12]) { date.setMilliseconds(Number("0." + d[12]) * 1000); }
	    if (d[14]) {
		offset = (Number(d[16]) * 60) + Number(d[17]);
		offset *= ((d[15] == '-') ? 1 : -1);
	    }
 
	    offset -= date.getTimezoneOffset();
	    time = (Number(date) + (offset * 60 * 1000));
	    dt.setTime(Number(time));
	}

				var K = function () {
					    var a = navigator.userAgent;
					    return {
						ie: a.match(/MSIE\s([^;]*)/)
					    }
					}();
					 
				var H = function (a, hours_offs) {
					    var b = new Date();
					    var c = new Date();
					    setISO8601(c,a);
 
					    if (K.ie) {
						/*c = Date.parse(a.replace(/( \+)/, ' UTC$1'))*/
					    }
					    c.setHours(c.getHours()+hours_offs);
					    var d = b - c;
 
					//jQuery('.temp-debug').append('<p>' + b.toString() + ', ' + c.toString() + '</p>');
 
					    var e = 1000,
						minute = e * 60,
						hour = minute * 60,
						day = hour * 24,
						week = day * 7;
					    if (isNaN(d) || d < 0) {
						return ""
					    }
					    if (d < e * 7) {
						return "now"
					    }
					    if (d < minute) {
						return Math.floor(d / e) + "less than a minute ago"
					    }
					    if (d < minute * 2) {
						return "about 1 minute ago"
					    }
					    if (d < hour) {
						return Math.floor(d / minute) + " minutes ago"
					    }
					    if (d < hour * 2) {
						return "about 1 hour ago"
					    }
					    if (d < day) {
						return Math.floor(d / hour) + " hours ago"
					    }
					    if (d > day && d < day * 2) {
						return "yesterday"
					    }
					    if (d < day * 365) {
						return Math.floor(d / day) + " days ago"
					    } else {
						return "long ago"
					    }
					};



	console.log('processing callback');

	if (jQuery('#tweet-widget ul.list').length === 0){ jQuery('#tweet-widget').append('<ul class="list"></ul>'); }
	
	if (t == 'status'){	//using a list of statuses, typical format of twitter API
		 _f = function(i){
			var v = d[i];
			var usr = v.from_user;
			var id = twitter_to_js_date(v.timeago).getTime();
			var h = null;
			utc_offs = 34200;

			if ((tweet_count > tweet_max) ||
			(jQuery('#tweet_item_' + id.toString()).length > 0) ||
			(typeof tweets_html[id.toString()] != "undefined")) {
				return;
			}

			h = '<li class="tweet" id="tweet_item_' + id + '"><a href="http://twitter.com/' + usr + '"><img class="thumb" src="' + v.profile_image_url + '" /></a><p class="desc"><span class="p userid"><a href="http://twitter.com/' + v.from_user + '">' + v.from_user + '</a></span>&nbsp;<span class="created_at">' + jQuery.timeago(v.timeago) + '</span><br />' + mk_links(v.text) + '</p></li>';
			tweets_list[tweets_list.length] = id;
			tweets_html[id.toString()] = h;
		};

		for (i = 0 ; i < d.length; ++i){ _f(i); }
	}
};
// Remote callback wrappers
var twitter_feed_response = function(data){ ___g_json_callback(data, json_twitter_init, 'status'); ++n_ajax_calls; sort_tweets(); };


// main initializer for lantern pages 
var lantern_init = function(){
	var datetime = new Date();
	var system_tz_offs = datetime.getTimezoneOffset(); 
	var g_apos_last_new_h = 0;

	get_args();

	// convert client time to adelaide lantern 
	var get_lantern_time = function(){
		var dt = new Date();
		var ndt = dt; 
		ndt.setTime((dt.getTime() + (system_tz_offs * 60 * 1000)) - (LANTERN_CONF.T_LANTERN_TZ_OFFS * 60 * 1000));
		return ndt;
	};

	// init start and end times of lantern - default to 5:30pm 
	var local_time_init = function(){
		lantern_start = get_lantern_time();
		lantern_end = get_lantern_time();

		/* 5:30pm */
		lantern_start.setMinutes(LANTERN_CONF.T_LANTERN_START.m); 
		lantern_start.setHours(LANTERN_CONF.T_LANTERN_START.h); 

		/* midnite - following day */
		lantern_end.setMinutes(LANTERN_CONF.T_LANTERN_END.m); 
		lantern_end.setHours(LANTERN_CONF.T_LANTERN_END.h); 
	};

	// set position and height of footer automatically 
	var apos_footer  = function(f_sel, f_h){
		var n_h = 0;
		var b_h = 0;
		var b_w = 0;
		var f_y = 0;
		var h = 0;
		var jb = jQuery('body');

		try {
			b_h = jb.attr('offsetHeight');
			b_w = jb.width();
			jQuery('.main-menu-bg').css('width', b_w.toString() + 'px');
			jQuery('.tabs-top-bg').css('width', b_w.toString() + 'px'); 
			f_y = jQuery(f_sel).offset().top;
			h = b_h - f_y;
			n_h = ((f_y + f_h) < b_h) ? h : f_h;		
			if (n_h != g_apos_last_new_h){
				jQuery(f_sel).css('height', ((n_h).toString() + 'px'));
				g_apos_last_body_h = n_h;
			}
		} catch (ex){  } 

		return n_h;
	};


	// Set lantern status 
	var status_init = function(){
		var s = jQuery('#lantern-status');
		if (s.length > 0){
			jQuery.getScript('js/plugin-moon-phase.js', function(){}); //load moonphase plugin
			jQuery('#lantern-status .status-time').html(
				'<p>Screen times <span class="when" id="screen-time"></span></p><span class="when" id="cur_time"></span><br />'
			);
			jQuery('#lantern-status span.when#screen-time').text(LANTERN_CONF.TIME_LANTERN);
		}
	};

	// quick sort video list 
	var qsort_video_list = function(d){
		var q = function(d, left, right){
			var i = left;
			var j = right;
			var t = null;
			var p = d[parseInt((left + right) / 2, 10)];
			while (i <= j){
				while (d[i].title < p.title) { i++; }
				while (d[j].title > p.title) { j--; }
				if (i <= j) {
					t = d[i];
					d[i] = d[j];
					d[j] = t;
					++i; --j;
				}
			}
			if (left < j) { q(d, left, j); }
			if (i < right) { q(d, i, right); }
		};
		q(d, 0, d.length - 1);
		return d;
	};

	// main initializer 
	jQuery(document).ready(function(){
		var video_js_init_play = function(){
			if (typeof swfVideo == "undefined" || typeof swfVideo.setMovie == "undefined"){
				if (typeof VideoJS == "undefined"){
					jQuery.getScript(LANTERN_CONF.URL_VIDEO_JS, function(){
						try {
							if (typeof VideoJS != "undefined"){ jQuery("#video").VideoJS(); jQuery('#video').player.play(); }
						} catch(ex){ }
					});
				} else {
					jQuery("#video").VideoJS();
					if (typeof jQuery('#video').player != "undefined" &&
					jQuery('#video').player.play != "undefined"){
						jQuery('#video').player.play();
					}
				}
			}
		};
		video_js_init_play();

		//make link to create button
		if (jQuery('li.link-create a').length){ jQuery('li.link-create a').attr('href', LANTERN_CONF.URL_CREATE); }

		local_time_init(); //offset current local time to adelaide time
		status_init(); //initialize lantern status	 

		jQuery(window).resize(function(){ apos_footer('.footer', 50); return false; }); //initialize footer positioning
		apos_footer('.footer', 50); 

		// Homepage  section
		if (jQuery('body.section-rundle-lantern-home').length){
			//check if in lantern day mode 
			var is_day = function() {
				return true; //override

				var dt = (get_lantern_time()).getTime();
				var r = true;
				r = !(dt > lantern_start.getTime() && dt < lantern_end.getTime());
				return r;
			};
			//var is_day = function(){ return true; } 

			//set homepage to daytime 
			var set_day = function() {
				var h = "";
				var e = null;

				if (day_or_nite != 'day'){
					day_or_nite = 'day';
					local_time_init(); //offset current local time to adelaide time
					jQuery('.content-wrapper').addClass('day').removeClass('night');
					h = '<object height="' + LANTERN_CONF.VID_H + '" id="swfVideo" width="' + LANTERN_CONF.VID_W + '" data="flash/rundlelantern_web.swf" type="application/x-shockwave-flash" style="width: 610px !important">' +
						'<param value="flash/rundlelantern_web.swf" name="movie"/>' +
						'<param name="allownetworking" value="all" />' + 
						'<param name="allowscriptaccess" value="always" />' +
						'<param value="videoSource=../' + LANTERN_CONF.VID_DFLT + '" name="flashVars"/>' +
						'<!-- html5 fallback --><video class="video-js" id="video" width="' + LANTERN_CONF.VID_W + '" height="' + LANTERN_CONF.VID_H + '" controls="controls" autoplay>' +
							'<source src="' + LANTERN_CONF.VID_DFLT + '.mp4" type="video/mp4">' +
							'<!-- d/l fallback --><p class="vjs-no-video"><a href="' + LANTERN_CONF.VID_DFLT + '.mp4">Download the video for local playback</a></p>' +
						'</video>' +
					'</object>';
					jQuery('#home-vid-wrap').html(h);

					//autoplay on ipad or iphone 
					if (is_apple_mobile()){
						e = document.getElementById('video');
						if (e !== null){ e.load(); e.play(); }
					}
				}
			};

			//set homepage to night 
			var set_nite = function(){
				if (day_or_nite != 'nite'){
					day_or_nite = 'nite';
					local_time_init(); //offset current local time to adelaide time
					jQuery('.content-wrapper').addClass('night').removeClass('day');
					jQuery('#home-vid-wrap').html(
						'<div class="plugin_acc_webcam_fade webcam-feed" id="webcam"><div class="option"><div class="name">width</div><div class="value">' +
						LANTERN_CONF.VID_W + '</div></div><div class="option"><div class="name">interval</div><div class="value">3000</div></div>' +
						'<img class="src_image" style="DISPLAY: none" alt src="' + LANTERN_CONF.URL_CAM_SRC + '" /></div>'
					);
					if (typeof _init_plugin_webcam == "undefined") {
						jQuery.getScript(
							'js/plugin-coa-webcam.js',
							function(){ _init_plugin_webcam(); }
						);
					} else {
						_init_plugin_webcam();
					}
				}
			};


			// init video category listing  
			var init_home_feeds = function(p){	
				var vid_data = {};
				var npp = LANTERN_CONF.VID_THUMBS_PER_PAGE; 
				var nvisible = 7;
				var artist_data = {};
				var _f = null;

				var upd_home_vid = function(v){
					var h;
					if (is_apple_mobile()){
						h = '<video class="video-js" id="video" width="' + LANTERN_CONF.VID_W + '" height="' + LANTERN_CONF.VID_H + '" controls="controls">' +
						'<source src="' + v.src + '.mp4" type="video/mp4">' +
						'<p class="vjs-no-video"><a href="' + v.src + '.mp4" autoplay>Download the video for local playback</a></p>' +
						'</video>';

						jQuery('#home-vid-wrap').html(h);
						var e = document.getElementById('video');
						if (e !== null){ e.load(); e.play(); }
					} else {
						//if (jQuery('#swfVideo').length === 0 || jQuery.browser.mozilla || typeof swfVideo == "undefined" || typeof swfVideo.setMovie == "undefined") {
						if (jQuery.browser.mozilla || typeof swfVideo == "undefined" || typeof swfVideo.setMovie == "undefined") {
							h = '<object id="swfVideo" height="' + LANTERN_CONF.VID_H + '" width="' + LANTERN_CONF.VID_W + '"' +
							' data="flash/rundlelantern_web.swf" type="application/x-shockwave-flash" style="width:610px !important;">' +
							'<param value="flash/rundlelantern_web.swf" name="movie"/>' +
							'<param name="allownetworking" value="all" />' +
							'<param name="allowscriptaccess" value="always" />' +
							'<param value="videoSource=../' + v.src + '&hideLogo=true&imagePath=../' + v.src + '.png" name="flashVars"/>' + 
							'<!-- html5 fallback --><video class="video-js" id="video" width="' + LANTERN_CONF.VID_W + '" height="' + LANTERN_CONF.VID_H + '" controls="controls" autoplay>' +
								'<source src="' + v.src + '.mp4" type="video/mp4">' +
								'<!-- d/l fallback --><p><a href="' + v.src + '.mp4">Download the video for local playback</a></p>' +
							'</video>' +
							'</object>';
							jQuery('#home-vid-wrap').html(h);
						} else {
							set_swf_movie("../" + v.src);
							q = "#home_playlist_item_0";
							if (jQuery(q).length > 0){
								jQuery('#current-playlist li').removeClass('current-playing');
								jQuery(q).addClass('current-playing'); 
							}
						}
					}
				}
				video_js_init_play();

				// update the playlist on homepage 
				var upd_playlist = function(p, force_p){
					var i = 0;
					var j = 0;
					jQuery('#current-playlist').html('');
					if (_v_data.length && p < _v_data.length){
						_f = function(i, j, x){
							var h = '';
							var q = parseInt(Math.floor(Math.random() * _v_data.length), 10);
							//var v = _v_data[q];
							var v = _v_data[i];
							//var u = LANTERN_CONF.URL_SITE_GALLERY + '#c_id=comeout&v_id=' + escape(v['_id']);
							var u = LANTERN_CONF.URL_SITE_GALLERY + '#c_id=art&v_id=' + escape(v['_id']);
							var id = 'home_playlist_item_' + i.toString();
							var cls = '';

							cls += ((j >= nvisible) ? 'hidden' : 'visible');
							cls += (i === 0) ? ' current-playing' : '';
		
							h = '<li class="' + cls + '" id="' + id + '"><a href="' + u + '"><div class="thumb"><img src="' + v.src + '.png"/></div><p class="desc"><span class="p title">' + v.title + ' <span class="duration">(' + v.duration + ')</span></span><br/><span class="p artist">' + 
							((typeof artist_data[v.artist_id] != "undefined") ? artist_data[v.artist_id].name : '') +
							((typeof v.artist_name != "undefined") ? v.artist_name : '') +
							 '</span></p></a></li>';
							jQuery('#current-playlist').append(h);

							playlist[playlist.length] = v;

						};
						for (i = p, j =0 ; i < _v_data.length && j < 4; ++i, ++j){ _f(i, j); }
					}

					//force display of webcam
					if (/force_webcam/gi.test(location.href)){
						set_nite();
					} else  {
						if (is_day()){
							if (!force_p){
								if (playlist.length > 0 ){
									upd_home_vid(playlist[0]);
								} 
							} else {
								upd_home_vid(vid_data.video["0"]);
							}
						} else { set_nite(); }
					}
				};

				// Start homepage  video json request  
				var json_video_init_2 = function(){
					var u = 'data/data-comeout.js';

					jQuery.ajax({
						url : u + '?r=' + Math.random().toString(),
						type: 'get',
						dataType: 'json',
						success: function(json){
							var n = 0;
							var k = 0;
							var _f = null;

							vid_data = json;
							artist_data = json.artist;
							for (k in artist_data){
								if (k !== null){
									artist_data[artist_data[k].id] = artist_data[k];
								}
							} 
							_f = function(k){
								_v_data[n] = vid_data.video[k];
								_v_data[n]['_id'] = k.toString();
								++n;
							};
							for (k in vid_data.category){
								if (k !== null){
									/*if (/comeout/.test(k.toString())){
										for (var i = 0 ; i < vid_data.category[k].items.length; ++i){
											_f(vid_data.category[k].items[i]);
										}
									}*/
									if (/art/.test(k.toString())){
										for (var i = vid_data.category[k].items.length - 4; i < vid_data.category[k].items.length; ++i){
											_f(vid_data.category[k].items[i]);
										}
									}
								}
							}
							upd_playlist(0, false);
						},
						error: function(x, x2){ }
					});
				};
				var json_video_init = function(){
					var u = 'data/data-comeout.js';

					jQuery.ajax({
						url : u + '?r=' + Math.random().toString(),
						type: 'get',
						dataType: 'json',
						success: function(json){
							var n = 0;
							var k = 0;
							var _f = null;

							vid_data = json;
							artist_data = json.artist;
							for (k in artist_data){
								if (k !== null){
									artist_data[artist_data[k].id] = artist_data[k];
								}
							} 
							_f = function(k){
								_v_data[n] = vid_data.video[k];
								_v_data[n]['_id'] = k.toString();
								++n;
							};
							for (k in vid_data.video){
								if (k !== null){
									_f(k);
								}
							}
							upd_playlist(0, true);
						},
						error: function(x, x2){ }
					});
				};
				if (/adccbrandstg/.test(document.domain)){
					json_video_init_2();
				} else {
					//json_video_init();
					json_video_init_2();
				}
			};
			init_home_feeds();
		} 

		// Gallery page 
		if (jQuery('body.section-rundle-lantern-site-gallery').length){

			var init_fb_like = function(c_id, v_id){
				if (c_id != null){
					if (typeof cat_parent[c_id] != "undefined"){ c_id = cat_parent[current_cat]; }
					if (c_id.toString() == "comeout"){
						var u = "http://rundlelantern.com/gallery.htm"; 
						var h = u.split('#');
						if (h.length > 1){ u = h[0]; }
						u += "?v_id=" + v_id;
						var s = LANTERN_CONF.FB_LIKE_HTML.replace('{href_url}', u);
						if (jQuery('.video-feed .title #fb_like').length == 0){
							jQuery('.video-feed .title').append('<div id="fb_like"></div>');
							jQuery('#fb_like').html(s);
						}
					}
				}
			}

			// Init video list on gallery page 
			var init_site_gallery = function(){
				var artist_data = {};
				var cat_data = {};
				var npp = LANTERN_CONF.VID_THUMBS_PER_PAGE;
				var n_all_v_data = 0;
				var n_v_data = 0;
				var vid_data = {}; 

				// update the current selected video 
				var upd_video = function(v){
					var h = "";	
					var q = "";
					var e = null;
					var c_id = null;

					// display a title 
					if (typeof artist_data[v.artist_id] != "undefined" && artist_data[v.artist_id].name.length > 0){
						jQuery('.video-feed .title').html(
							'<h1>' + LANTERN_CONF.TXT_GALLERY_INTRO + '</h1><h2>' + v.title + '&nbsp;<span>By ' + artist_data[v.artist_id].name + '</span></h2>'
						);
					} else if (typeof v['artist_name'] != "undefined" && (v['artist_name'].length > 0)){
						jQuery('.video-feed .title').html(
							'<h1>' + LANTERN_CONF.TXT_GALLERY_INTRO + '</h1><h2>' + v.title + '&nbsp;<span>By ' + v.artist_name + '</span></h2>'
						);
					} else {
						jQuery('.video-feed .title').html(
							'<h1>' + LANTERN_CONF.TXT_GALLERY_INTRO + '</h1><h2>' + v.title + '<span></span></h2>'
						);
					}

					/* set up url */
					var u = location.href.split('#');
					var cc = (typeof v.category != "undefined") ? v.category : "all"; 
					if (cc != "all"){
						if (typeof cat_parent[v.category] != "undefined"){
							cc = cat_parent[v.category];	
						}
					}
					u = (u.length > 1) ? u[0]  : location.href;
					u += '#c_id=' + cc + '&v_id=' + v.id;

					location.href = u;

					// display fb like
					init_fb_like(cc, v.id);

					if (is_apple_mobile()){
						h = '<video class="video-js" id="video" width="' + LANTERN_CONF.VID_W + '" height="' + LANTERN_CONF.VID_H + '" controls="controls">' +
						'<source src="' + v.src + '.mp4" type="video/mp4">' +
						'<p class="vjs-no-video"><a href="' + v.src + '.mp4" autoplay>Download the video for local playback</a></p>' +
						'</video>';

						jQuery('.video').html(h);
						e = document.getElementById('video');
						if (e !== null){ e.load(); e.play(); }
					} else {
						if (jQuery('#swfVideo').length === 0 || jQuery.browser.mozilla || typeof swfVideo == "undefined" || typeof swfVideo.setMovie == "undefined") {
							h = '<object id="swfVideo" height="' + LANTERN_CONF.VID_H + '" width="' + LANTERN_CONF.VID_W + '"' +
							' data="flash/rundlelantern_web.swf" type="application/x-shockwave-flash" style="width:610px !important;">' +
							'<param value="flash/rundlelantern_web.swf" name="movie"/>' +
							'<param name="allownetworking" value="all" />' +
							'<param name="allowscriptaccess" value="always" />' +
							'<param value="videoSource=../' + v.src + '&hideLogo=true&imagePath=../' + v.src + '.png" name="flashVars"/>' + 
							'<!-- html5 fallback --><video class="video-js" id="video" width="' + LANTERN_CONF.VID_W + '" height="' + LANTERN_CONF.VID_H + '" controls="controls" autoplay>' +
								'<source src="' + v.src + '.mp4" type="video/mp4">' +
								'<!-- d/l fallback --><p><a href="' + v.src + '.mp4">Download the video for local playback</a></p>' +
							'</video>' +
							'</object>';
							jQuery('.video').html(h);
						} else {
							set_swf_movie("../" + v.src);
							q = "#home_playlist_item_0";
							if (jQuery(q).length > 0){
								jQuery('#current-playlist li').removeClass('current-playing');
								jQuery(q).addClass('current-playing'); 
							}
						}
					}
					video_js_init_play();



				};

				//update video list
				var videos_update = function(p){
					var n = 0;
					var h = "";
					var i = 0;
					var k = null;
					var _f = null;
					var n_pages = 12;
					var n_act_pages = 0;
					var last_sel = 0;
					var _vd = { video : [] };

					n_v_data = 0;

					if (current_cat !== null && typeof cat_data[current_cat] != "undefined"){
						_f = function(i){
							var k = cat_data[current_cat].items[i];
							var id = _vd.video.length;
							_vd.video[id] = vid_data.video[k];
							_vd.video[id].id = k;
							_vd.video[id].category = current_cat;
							n_v_data++;
						};
						for (i = 0 ; i < cat_data[current_cat].items.length; ++i){ _f(i); }
					} else {
						for (k in vid_data.video){
							if (k !== null){
								var id = n_v_data;
								_vd.video[id] = vid_data.video[k];
								_vd.video[id].id = k;
								n_v_data++;
							}	
						}
					}

					/* keep video count */
					for (k in vid_data.video){ if (k !== null){ ++n_all_v_data; } } 
					_vd.video = qsort_video_list(_vd.video); 
				
					/* display page numbers */
					jQuery('#video-gallery .page-numbers:first').html('');
					jQuery('#video-gallery .page-numbers:last').html('');

					var display_nums = function(j){
							var j2 = j - (n_pages / 2);
							var j3 = j + (n_pages / 2);
							if (j2 < 0) { j2 = -j2; } else { j2 = 0; }
							if (j3 > n_act_pages) { j3 = (n_act_pages - j3); } else { j3 = 0; }

							if (n_act_pages > n_pages){
								jQuery('.page-numbers .num').each(function(){
									var n = parseInt(jQuery(this).attr('data-num'), 10);
									if (n >= (j - (n_pages / 2) + j3) && (n < (j + (n_pages / 2) + j2))){
										jQuery(this).css('display', 'inline');
									} else {
										jQuery(this).css('display', 'none');
									}
								});	
							}
					}
					var num_append = function(i, visible){
						var s = (!visible) ? ' style="display: none;" ' : '';
						jQuery('#video-gallery .page-numbers:first').append(
							'<div data-num="' + i.toString() + '" ' + s + ' id="page-top-' + (i + 1).toString() + '" class="num ' + ((last_sel == 0) ? "first_sel" : "" ) + " " + ((i == p) ? 'selected': '') + '"><a href="#">' + (i + 1).toString() + '</a></div>'
						);
						jQuery('#video-gallery .page-numbers:last').append(
							'<div data-num="' + i.toString() + '" ' + s + 'id="page-bottom-' + (i + 1).toString() + '" class="num ' + ((last_sel == 0) ? "first_sel" : "" ) +  " " + ((i == p) ? 'selected': '') + '"><a href="#">' + (i + 1).toString() + '</a></div>'
						);
						var _f = function(){
							videos_update(i.toString());
							display_nums(i);
							return false;
						};
						jQuery('#page-top-' + (i + 1).toString()).click(_f);
						jQuery('#page-bottom-' + (i + 1).toString()).click(_f);
					};
					for (i = 0 ; i < parseInt(n_v_data  / npp, 10); ++i, ++n_act_pages){ num_append(i, (i < n_pages )); }
					if (n_v_data % npp){ num_append(i, (i < n_pages)); ++n_act_pages; }

					n = 0;
					jQuery('#video-gallery .item').remove();

					_f = function(i, n){
						var v = _vd.video[i];
						var h = "";
						if (typeof v != "undefined"){
							if (typeof v.artist_name != "undefined"){
								artist_data[v.artist_id] = { 'name' : v.artist_name };
							} else if (typeof artist_data[v.artist_id] == "undefined"){
								artist_data[v.artist_id] = { 'name' : '' };
							} 
							h = '<div class="item" id="video-item-' + n.toString() + '" style="display: none;"><div class="thumb"><img src="' + v.src + '.png" /></div><div class="title">' + v.title + '</div><div class="artist">'+ artist_data[v.artist_id].name + '</div><div class="stats"><div id="fb_like" class="views"></div></div></div>';
							jQuery('#video-gallery .thumbs').append(h);

							/* display video */
							jQuery('#video-item-' + n.toString()).click(function(){
								scroll_to_top();
								upd_video(v);
								return false;
							});
						}
					};

					/* initialize each thumbnail */
					for (i = 0; i < _vd.video.length; ++i, ++n){
						if (n >= (p * npp + npp) || n < (p * npp)) { continue; }
						_f(i, n);
					}
					jQuery('#video-gallery .item').fadeIn('fast');
					jQuery('#video-gallery .thumbs').append('<div style="clear: both"></div>');
				};


				// display list of categories 
				var categories_init = function(){
					var h = '<li data-categ="categ-item-all" id="categ-item-all-p"><a href="#" id="categ-item-all">ALL <span class="count">(' + n_all_v_data + ')</span></a></li>';
					var k = null;
					var _f =null;

					jQuery('ul.categories').append(h);
					jQuery('#categ-item-all-p').click(
						function(){
							jQuery('#head-category-name').text('All');
							jQuery('.categories li.child').hide();

							jQuery('.categories li').removeClass('highlight');
							jQuery('#categ-item-all-p').addClass('highlight');

							current_cat = null;
							videos_update(0);
							return false;
						}
					);
					 _f = function(k){
						var v = cat_data[k];
						var n = 0;
						var s = (typeof cat_parent[k] != "undefined") ? 'class="child" style="display: none;" ' : '';

						if (typeof v.items != "undefined"){ n = v.items.length; }

						h = '<li ' + s + 'data-categ="categ-item-' + k.toString() + '"><a href="#">' + v.title + ' ' + ((n > 0) ? '<span class="count">(' + n.toString() + ')</span>' : '') + '</a></li>';
						jQuery('ul.categories').append(h);
						jQuery('.categories li[data-categ=categ-item-' + k.toString() + ']').click(
							function(){
								jQuery('#head-category-name').text((typeof v['full_title'] != "undefined") ? v.full_title : v.title);
								if (typeof cat_children[k] == "undefined" && typeof cat_parent[k] == "undefined"){
									jQuery('.categories li.child').hide();
								} else {
									jQuery('.categories li.child').show();
								}

								//highlight category
								if (!jQuery(this).hasClass('child')){
									jQuery('.categories li').removeClass('highlight');
									jQuery(this).addClass('highlight');
								}

								current_cat = k;
								videos_update(0);
								return false;
							}
						);
					};

					// create a list of parents 
					for (k in cat_data){
						(function(){
							var q = k.toString().split('/');
							if (q.length > 1){
								if (typeof cat_children[q[0]] == "undefined"){ cat_children[q[0]] = {}; } 
								cat_children[q[0]][k] = k;
								cat_parent[k] = q[0]; 
								for (var j  = 0; j < cat_data[k].items.length ; ++j) {
									(function(){
										cat_data[q[0]].items[cat_data[q[0]].items.length] = cat_data[k].items[j]; 
										var p = vid_data.video[cat_data[k].items[j]];
										if (typeof p != "undefined" && p != null){
											p.category = k;
										}
									})();
								}
							}
						})();
					}
					for (k in cat_data){
						if (k !== null){ _f(k); }
					}
				};

				// fetch video data json 
				var json_video_init = function(){
					var u = 'data/data-comeout.js';

					jQuery.ajax({
						url : u + '?r=' + Math.random().toString(),
						type: 'get',
						dataType: 'json',
						success: function(d){
							var k = null;

							vid_data = d;
							cat_data = d.category;
							artist_data = d.artist;

							for (k in artist_data){ if (k !== null){ artist_data[artist_data[k].id] = artist_data[k]; } }

							videos_update(0);
							categories_init();

							if (typeof args['c_id'] != "undefined"){
								current_cat = args['c_id'];
								if (typeof cat_data[current_cat] != "undefined"){
									jQuery('.categories li[data-categ=categ-item-' + current_cat.toLowerCase() + ']').click();
									jQuery('#head-category-name').text(cat_data[current_cat].title);
								}
							} else {
								jQuery('.categories li[data-categ=categ-item-all]').click();
							}
							if (typeof args['v_id'] != "undefined"){
								upd_video(vid_data.video[args['v_id']]);
							} else {
								upd_video(vid_data.video["850"]);
							}
						},
						error: function(x, x2){

						}
					});
				};
				json_video_init();
			};
			init_site_gallery();
		}

		//initialize proxied results from twitter and topsy
		json_twitter_init();
	});
};
lantern_init();

