var migo = migo || {};
migo.controller = migo.controller || {};

migo.controller.SupportPageController = function() {

	dojo.require("dojo.NodeList-fx");
	
	this.swapPanel = this.swapPanel.bind(this);
	this._attachEvents = this._attachEvents.bind(this);
	this.faqsLoaded = this.faqsLoaded.bind(this);
	this.faqsActivated = this.faqsActivated.bind(this);
	this.faqsDeactivated = this.faqsDeactivated.bind(this);
	this.contactLoaded = this.contactLoaded.bind(this);
	this.contactActivated = this.contactActivated.bind(this);
	this.contactDeactivated = this.contactDeactivated.bind(this);
	this.newsLoaded = this.newsLoaded.bind(this);
	this.newsActivated = this.newsActivated.bind(this);
	this.newsDeactivated = this.newsDeactivated.bind(this);
	this.helpLoaded = this.helpLoaded.bind(this);
	this.helpActivated = this.helpActivated.bind(this);
	this.helpDeactivated = this.helpDeactivated.bind(this);
	this.mediaLoaded = this.mediaLoaded.bind(this);
	this.mediaActivated = this.mediaActivated.bind(this);
	this.mediaDeactivated = this.mediaDeactivated.bind(this);
	this._deactivatePanel = this._deactivatePanel.bind(this);
};

migo.controller.SupportPageController.prototype = {

	onLoad : function() {

		Nifty("div.page");
		Nifty("ul.nav a","transparent top");

		if(dojo.isFF){
			dojo.doc.body.addClass("ff");
		}
	
		var hash = window.location.hash;
		var initialLink = dojo.query(".default-view")[0];

		dojo.query("[migo-type=InternalLink]").onclick(this.swapPanel).forEach(this._attachEvents);
		
		if(hash && hash.length>0){

			var links = dojo.query("[migo-type=InternalLink]");
			var link;
			
			for(var x=0,len=links.length; x<len; x++){

				link = links[x];

				if(link.href == window.location){
					initialLink = link;
					break;
				}
			}
		}
		this.swapPanel({target:initialLink});//hack: pass in a fake event obj because swapPanel just uses event.target

	},

	swapPanel : function(evt) {

		var panels = dojo.query(".active-content");

		if(panels.length > 0){
			if(panels[0].id !== dojo.attr(evt.target,"migo-contentId")){
				panels.fadeOut( {
					onEnd : function() {
		
						panels.style("display", "none").removeClass("active-content").forEach(this._deactivatePanel);
						this._activatePanel(evt.target);
					}.bind(this)
				}).play();
			}
		} else {
			this._activatePanel(evt.target);
		}
	},

	_deactivatePanel: function(node, idx, nodes){
		dojo.query("#tab-".concat(node.id.slice(node.id.lastIndexOf("-") + 1))).removeClass("selected");
		this[node.id.slice(node.id.lastIndexOf("-") + 1).concat("Deactivated")]();
	},
	
	_activatePanel : function(link){
		
		var contentId = dojo.attr(link, "migo-contentId");
		var panel = dijit.byId(contentId);
		var areaSplash = dojo.query("#area-splash");
		

		if (!panel.isLoaded) {
			panel.refresh();
		} else {
			this[contentId.slice(contentId.lastIndexOf("-") + 1).concat("Activated")]();
		}

		document.title = dojo.attr(link, "migo-title");
			
//		if(dojo.isIE){
//			areaSplash[0].className = dojo.attr(link, "migo-areaClass");
//		} else {
//			areaSplash.fadeOut({onEnd:function(){
//				areaSplash[0].className = dojo.attr(link, "migo-areaClass");
//				areaSplash.fadeIn().play();
//			}}).play();
//		}
		
		dojo.query("#" + contentId).style("display", "block").addClass("active-content").fadeIn().play();
		dojo.query("#tab-".concat(link.id.slice(link.id.lastIndexOf("_") + 1))).addClass("selected");
	},
	
	faqsLoaded : function() {

		var myAccordion = new Accordion($('support-conmigo-faqs'), 'div.faq-q', 'div.faq-a', {
			opacity: true,
			alwaysHide: true,
			onActive: function(toggler, element){
			},
			onBackground: function(toggler, element){
			}
		});
	
		this.faqsActivated();
	},

	faqsActivated : function(){
		
	},
	
	faqsDeactivated : function(){
		
	},
	
	contactLoaded : function() {

//		var myAccordion = new Accordion($('support-conmigo-contact'), 'div.faq-q', 'div.faq-a', {
//			opacity: true,
//			onActive: function(toggler, element){
//			},
//			onBackground: function(toggler, element){
//			}
//		});
		
//		new TWTR.Widget({
//			  version: 2,
//			  type: 'profile',
//			  rpp: 4,
//			  interval: 6000,
//			  width: 250,
//			  height: 300,
//			  theme: {
//			    shell: {
//			      background: '#ffe6ad',
//			      color: '#000000'
//			    },
//			    tweets: {
//			      background: '#fff5ee',
//			      color: '#000000',
//			      links: '#b35614'
//			    }
//			  },
//			  features: {
//			    scrollbar: false,
//			    loop: false,
//			    live: true,
//			    hashtags: true,
//			    timestamp: true,
//			    avatars: true,
//			    behavior: 'all'
//			  }
//			}).render().setUser('conmigolife').start();
	
		this.contactActivated();
	},

	contactActivated : function(){
		
	},
	
	contactDeactivated : function(){
		
	},
	
	mediaLoaded : function() {
		var delayedFunc = function(){
			var data = {
				"conmigo_v1.1.0_welcome.png" : {
					caption : "Welcome to Conmigo",
					thumbnail : "conmigo_v1.1.0_welcome.png"
				},
				"conmigo_v1.1.0_prefs_availability.png" : {
					caption : "Specify availability for the week",
					thumbnail : "conmigo_v1.1.0_prefs_availability.png"
				},
				"conmigo_v1.1.0_prefs_edit_timeslot.png" : {
					caption : "Specify which sports and when",
					thumbnail : "conmigo_v1.1.0_prefs_edit_timeslot.png"
				},
				"conmigo_v1.1.0_my_events.png" : {
					caption : "Quick access to your events",
					thumbnail : "conmigo_v1.1.0_my_events.png"
				},
				"conmigo_v1.1.0_public_events.png" : {
					caption : "Find public events",
					thumbnail : "conmigo_v1.1.0_public_events.png"
				},
				"conmigo_v1.1.0_join_public_event.png" : {
					caption : "Found a public event? Join it!",
					thumbnail : "conmigo_v1.1.0_join_public_event.png"
				},
				"conmigo_v1.1.0_create_event.png" : {
					caption : "Create your own public or private events",
					thumbnail : "conmigo_v1.1.0_create_event.png"
				},
				"conmigo_v1.1.0_progress_active.png" : {
					caption : "Get real-time stats on all participants",
					thumbnail : "conmigo_v1.1.0_progress_active.png"
				},
				"conmigo_v1.1.0_progress_ended.png" : {
					caption : "Who won?",
					thumbnail : "conmigo_v1.1.0_progress_ended.png"
				},
				"conmigo_v1.1.0_prefs_running.png" : {
					caption : "Setup your fitness preferences",
					thumbnail : "conmigo_v1.1.0_prefs_running.png"
				}
			};
			
			this.mediaShow = new Slideshow("media_show", data, {
				thumbnails : true,
				captions : true,
				controller: true,
				delay : 4500,
				hu : "/images/support/conmigo/media/screenshots/",
				width : 320,
				height : 480,
				loader : true
			});
			this.mediaActivated();
		}.bind(this);
		delayedFunc.delay(200);
	},

	mediaActivated : function(){
		
		this.mediaShow.pause(0);
	},
	
	mediaDeactivated : function(){
		
		this.mediaShow.pause(1);
	},

	newsLoaded : function() {

		var myAccordion = new Accordion($('support-conmigo-news'), 'div.topic-subject', 'div.topic-body', {
			alwaysHide: true,
			opacity: true,
			onActive: function(toggler, element){
			},
			onBackground: function(toggler, element){
			}
		});
	
		this.newsActivated();
	},

	newsActivated : function(){
		
	},
	
	newsDeactivated : function(){
		
	},
	
	helpLoaded : function() {

		var myAccordion = new Accordion($('support-conmigo-help'), 'div.topic-subject', 'div.topic-body', {
			alwaysHide: true,
			opacity: true,
			onActive: function(toggler, element){
			},
			onBackground: function(toggler, element){
			}
		});

		this.helpActivated();
	},

	helpActivated : function(){
		
	},
	
	helpDeactivated : function(){
		
	},
	
	_attachEvents : function(node, idx, nodes) {

		var viewName = dojo.attr(node, "migo-viewName");
		var method = this[viewName.slice(viewName.lastIndexOf("-") + 1).concat("Loaded")];
		var panel = dijit.byId(dojo.attr(node, "migo-contentId"));

		dojo.connect(panel, "onLoad", this, method);
	}
};

