/**
 * @author ccortes
 */

var scCOKE = {};

scCOKE.init = function(){

	//Set cufon for footer links
	if (typeof(cufonize) != "undefined" && cufonize == false) {
	} else {
		Cufon.replace('.footer-bottom a');
		Cufon.replace('.gotham');
	}
	
}

scCOKE.socialWidget = {};
scCOKE.socialWidget.animationOver = true;
scCOKE.socialWidget.providers = new Array();

//Invoke social widget scripts
scCOKE.socialWidget.init = function(){
	
	//Show the first social network box - Facebook
	$('.social-content .feeds-list:first').show();
	$('.social-buttons li a:first').addClass('active');
	
	
	//Set tab button events
	$('.social-buttons li a').click(function(e){
		var sSocial = $(this).html();
		dcsMultiTrack("DCS.dcssip","www.coca-cola.com","DCS.dcsuri","www.coca-cola.com","WT.ti","Coca-Cola Home: "+sSocial+" PlugIn","WT.dl","40","WT.z_ll","Body","WT.z_ln","Right "+sSocial+" PlugIn","WT.cg_n","Banner","WT.cg_s","Right");

		if(!$(this).hasClass('btnMySpace')){
			
			e.preventDefault();
			
			if(!$(this).hasClass('active')){
				
				//Show the social network box
				var itemSelector = $(this).attr('rel');
				$('.social-content .feeds-list').hide();
				$('.social-content .feeds-list.'+ itemSelector).show();
				
				//Set Active state
				$('.social-buttons li a.active').removeClass('active');
				$(this).addClass('active');
			}
		}
	});
	
	this.getFeeds();
}

scCOKE.socialWidget.getFeeds = function(){
	this.doAjax('youtube');
	this.doAjax('flickr');
	this.doAjax('twitter');
}

scCOKE.socialWidget.getAjaxParams = function(providerName){
	var networkParams = {};
	
	//twitter
	networkParams.twitter = {
		url: 'http://www.twitter.com/statuses/user_timeline/cocacola.json',
		params: {
			count:30,
			cb:Math.random()
		}
	}
	
	//youtube
	networkParams.youtube ={
		url: 'http://gdata.youtube.com/feeds/api/users/cocacola/uploads',
		params: {
			v:2,
			alt:'json'
		}
	}
	
	//flickr
	networkParams.flickr = {
		url: 'http://api.flickr.com/services/rest/',
		params: {
			api_key: '80de19f9e4b1f17b509b4f8b44112728',
			method: 'flickr.groups.pools.getPhotos',
			group_id: '1334482@N24',// id for thecoca-colaco from http://idgettr.com/
			extras: 'description,url_o,url_t',
			per_page: 120,
			page: 1,
			format: 'json',
			jsoncallback: '?'
		}
	}

	return networkParams[providerName];	
}

scCOKE.socialWidget.doAjax = function(providerName){
	
	var _self = this;
	var network = this.getAjaxParams(providerName);
	var params = '';
	var concat = '';
	
	
	$.each(network.params,function(idx,value){
		params += concat + idx + '=' + value;
		concat = '&';
	});	
	
	//Get it as JSONP
	params += concat + 'callback=?';
	
	$.getJSON(network.url + '?' + params, function(response){
		_self.parseResponse(response,providerName);
		_self.fillSocialBox(providerName,1);
		_self.setSliderEvents(providerName);
	});

}

scCOKE.socialWidget.parseResponse = function(response, providerName){
	
	var provider = {
			name: providerName,
			feeds: []
	};
	
	switch (providerName){
		
		case 'twitter':
			provider.total = this.getAjaxParams(providerName).params.count;
			//@TODO: avoid to hardcode this param
			provider.perpage = 3;
			
			$.each(response, function(i,feed){
				var feed = {
					text: feed.text
				};
				provider.feeds.push(feed);
			});
		break;

		case 'youtube':
			provider.total = response.feed.entry.length; //About 25
			provider.perpage = 2;
			
			$.each(response.feed.entry, function(i,entry){
				var feed = {
					url: entry.media$group.media$player.url,
					image_src: entry.media$group.media$thumbnail[0].url,
					text: entry.title.$t
				};
				provider.feeds.push(feed);
			});
		break;
		
		case 'flickr':
			provider.total = this.getAjaxParams(providerName).params.per_page;
			//@TODO: avoid to hardcode this param
			provider.perpage = 6;

			$.each(response.photos.photo, function(i,photo){
				var feed = {
					//Sample - http://www.flickr.com/photos/nadbou/5691826702/in/pool-19419018@N00/
					url: 'http://www.flickr.com/photos/'+ photo.owner + '/' + photo.id + '/in/pool-' + photo.group_id,
					image_src: photo.url_t,
					text: photo.title
				};
				provider.feeds.push(feed);
			});
		break;
		
	}
	this.providers[providerName] = provider;
}

scCOKE.socialWidget.fillSocialBox = function(providerName, page){

	var _self = this;
	var provider = this.providers[providerName];
	var jqUL = $('.' + provider.name + ' .dynamic-content .slider ul');
	var i = provider.perpage * (page - 1);
	var limit = (provider.perpage * page < provider.total ? provider.perpage * page : provider.total); 

	while(i < limit){
		var feed = provider.feeds[i];
		var zebra = (((i+1)%2) == 0 ? 'even' : 'odd');
		var jqLI = $('<li></li>').addClass(zebra);
		if(i == 0){
			jqLI.addClass('first');
		}
		
		if(provider.name != 'twitter'){
			var jqAnchor = $('<a></a>');
			jqAnchor.
				attr('target','_blank').
				attr('rel','nofollow').
				attr('href',feed.url);
			
			if(provider.name != 'flickr'){
				
				jqAnchor.append(
					$('<span></span>').addClass('title').html(feed.text)
				)
			}
			jqAnchor.append(
				$('<img></img>').
					attr('src',feed.image_src).
					attr('alt',feed.text)
			).
			appendTo(jqLI);
		} else { //Draw twitter feeds
			jqLI.html(_self.buildTwitterFeed(feed.text));
		}
		jqLI.appendTo(jqUL);
		i++;
	}
	//Set a custom attribute named loaded to the UL to know which was the last page loaded 
	var lastPageLoaded = (typeof(jqUL.attr('loaded')) != 'undefined' ? parseInt(jqUL.attr('loaded')) + 1 : 1 );
	jqUL.attr('loaded',lastPageLoaded);
}

scCOKE.socialWidget.setSliderEvents = function(providerName){
	
	var _self = this;
	
	//Set slider buttons events
	$('.'+ providerName + ' a.prev, .'+ providerName+' a.next').live('click',function(e){
		e.preventDefault();
		
		if(_self.animationOver){
			
			_self.animationOver = false;
		
			var jqUL = $('.' + providerName + ' .dynamic-content .slider ul');
			var height = $(this).parent().find('.slider').height();
			var clicksLimit = _self.providers[providerName].total / _self.providers[providerName].perpage;
			var newPosition = 0;
			//Use loaded attribute of the UL to limit pagination
			var lastPageLoaded = (typeof(jqUL.attr('loaded')) != 'undefined' ? parseInt(jqUL.attr('loaded')) : 1 );
			//Use page attribute to the UL to limit animation
			var page = (typeof(jqUL.attr('page')) != 'undefined' ? parseInt(jqUL.attr('page')) : 1 );
			
			if($(this).hasClass('next')){
				
				//Draw feeds
				if(lastPageLoaded < clicksLimit){
					_self.fillSocialBox(providerName, page + 1);
					jqUL.attr('loaded', page + 1);
				}
				
				newPosition = (page < clicksLimit ? jqUL.position().top - height : jqUL.position().top);
				page = (page < clicksLimit ? page + 1 : page);

			} else { //Previous button
				newPosition = (((jqUL.position().top + height) < 0) ? jqUL.position().top + height : 0);
				page = (page > 1 ? page - 1 : 1);
			}
			
			//Animate the Slider
			jqUL.animate({top:newPosition}, 'slow', function(){_self.animationOver = true});
			jqUL.attr('page',page);
		}
	
	});
}

scCOKE.socialWidget.buildTwitterFeed = function(tweet){
	
	//@TODO: Use regex looking for multiple users and external urls
	
	//Search for the user
	var user = (tweet.indexOf('@') > -1 ? tweet.substring(tweet.indexOf('@'),tweet.indexOf(' ',tweet.indexOf('@'))) : '').replace(' ','');
	//Search for links
	var url = (tweet.indexOf('http://') > -1 ? tweet.substring(tweet.indexOf('http://'),tweet.indexOf(' ',tweet.indexOf('http://'))) : '');
	//Build the anchor to the user's twitter profile
	var userLinkHTML = (user != '' ? '<a target="blank" href="http://twitter.com/'+$.trim(user.replace('@',''))+'">'+user+'</a>' : '')
		
	return userLinkHTML+tweet.replace(user,'');
}

$(function(){
	
	scCOKE.init();

});

function scCarousel_initCallback(carousel) {
	$(".jcarousel-container li").css("visibility","visible");
	
	jQuery('.jcarousel-control a').bind('click', function() {
		carousel.scroll(jQuery.jcarousel.intval(jQuery(this).text()));
		return false;
	});
	
	var objFrameTop = $('<div></div>').addClass('carousel-frame').addClass('frame-top').appendTo($('.content-top'));
	var objFrameLeft = $('<div></div>').addClass('carousel-frame').addClass('frame-left').appendTo($('.content-top'));
	var objFrameRight = $('<div></div>').addClass('carousel-frame').addClass('frame-right').appendTo($('.content-top'));
	var objFrameBottom = $('<div></div>').addClass('carousel-frame').addClass('frame-bottom').appendTo($('.content-top'));
};


/** Specific Webtrends Tagging **/
function dropDownTagging(objId,menu){
	var oItems = $(objId+" ul li a");
	for(var i = 1; i < oItems.length; i++)
	{
		$(oItems[i]).click(function(){
			var title = $(this).attr("title");
			dcsMultiTrack("DCS.dcssip","www.coca-cola.com","DCS.dcsuri","www.coca-cola.com","WT.ti","Coca-Cola Home: "+menu+" Drop Down Menu "+title,"WT.dl","40","WT.z_ll","Top Nav","WT.z_ln","Top Nav "+menu+" Drop Down Menu "+title,"WT.cg_n","Coca-Cola Top Nav","WT.cg_s","Login");
		});
	}
}
function footerTagging(objId,menu){
	var oItems = $(objId+" a");
	for(var i = 0; i < oItems.length; i++)
	{
		$(oItems[i]).click(function(){
			var title = $(this).attr("title");
			dcsMultiTrack("DCS.dcssip","www.coca-cola.com","DCS.dcsuri","www.coca-cola.com","WT.ti","Coca-Cola Home: "+menu+" "+title,"WT.dl","40","WT.z_ll","Bottom Nav","WT.z_ln",menu+" "+title+" Button","WT.cg_n",menu,"WT.cg_s",title);
		});
	}
}
$(function(){
	dropDownTagging(".header #menu","Coke in the USA");
	dropDownTagging(".header #menu-right","Change Country");
	footerTagging(".footer .grid_6:not(.text-right)","Bottom Nav");
	footerTagging(".footer .grid_6.text-right","Footer");
});
