$(function(){
	cab.init(); // geddit? cab.init? cabinet? ahahaha. I kill me.
})

cab = {
	themeFolder: {
		local: "",
		live: "http://collections.europarchive.org/tna/+/http://www.cabinetforum.org/themes/site_themes/cabinet/"	
	},
	isLive: true,
	init: function(){
		var loc = document.location.href.split("/");
		var livedomain = "cabinetforum.org";
		
		if(loc[2].substr(loc[2].length-livedomain.length, livedomain.length) != livedomain){
			cab.isLive = false;
		}
		
		cab.tweakSearch();
		cab.alignAmbassadors();
		cab.alignSpeakers();
		cab.amends();
		cab.externaliseLinks();
		cab.tweakAgendaTable();
		cab.grabReminderForm();
		cab.embedVideo();
	},
	tweakSearch: function(){
		var sVal = $("div#searchbox input#navSearch").val();
		$("div#searchbox input#navSearch").focus(function(){
			if( $(this).val() == sVal ){
				$(this).val("");
			}
		}).blur(function(){
				if( $(this).val() == "" ){
					$(this).val(sVal);
				}
		});
	},
	alignAmbassadors: function(){
		$("div#ambassadors > div.ambassador:even").addClass("left");
		$("div#ambassadors > div.ambassador:odd").addClass("right");
	},
	alignSpeakers: function(){
		$("div#speakersOuter > div.speakerDiv").addClass("norm");
		$("div#speakersOuter > div.speakerDiv:nth-child(3n-2)").addClass("first");
		$("div#speakersOuter > div.speakerDiv:nth-child(3n)").removeClass("norm").addClass("end");

		$("div#delegatesOuter > div.speakerDiv").addClass("norm");
		$("div#delegatesOuter > div.speakerDiv:nth-child(3n-2)").addClass("first");
		$("div#delegatesOuter > div.speakerDiv:nth-child(3n)").removeClass("norm").addClass("end");
	},
	externaliseLinks: function(){
		$("a[href^='http']:not(a[href*=cabinetforum.org]):not(.partnerlink)").addClass("extLink").attr("rel","external");
		$("a[rel*='external']").addClass("extLink");
		
		$("a.extLink").unbind("click").click(function(){
			window.open(this.href, "_blank");
			return false;
		}).each(function(){
			$(this).attr("title",$(this).text() + " - opens in a new window");
		});
	},
	amends: function(){
		// if any stuff needs doing on load to general links or classes or whatever, do it here
		$("p#jsBackLink").empty().append('&laquo; <a href="javascript:history.go(-1)">Return to previous page</a>');
		
		if( document.getElementById("twitterPosts") ){ //  so we're on the homepage, that's established, go ahead and do all the APIs
			cab.getTwitter();
			cab.getYoutube();
		}
		

		$("div.postContent").each(function(){
			$(this).find("p:eq(1), p:eq(2)").addClass("firstPara");
			$("div.lg-poll p.firstPara").removeClass("firstPara");
		});
		
		
		
		if( $("div#watchTweets").length > 0 ){
			cab.getWatchTweets();
			$("#refreshTweets").show();
			$("#refreshTweets a").click(function(){
				cab.getWatchTweets();
				return false;
			});
		}

	},
	getWatchTweets: function(){
		//var searchStr = "#profero";
		var searchStr = "#cabinetforum";
		var numTweets = 5;
		
		$.ajax({
			type: 		"GET",
			url: 		"http://collections.europarchive.org/tna/+/http://search.twitter.com/search.json?q="+escape(searchStr)+"&rpp="+numTweets+"&callback=?",
			beforeSend: function(x) {
				if(x && x.overrideMimeType) {
					x.overrideMimeType("application/j-son;charset=UTF-8");
				}
			},
			dataType: 	"jsonp",
			success: 	function(json){
				cab.showWatchTweets(json);
			},
			error: 		function(msg, xhr){
				alert("msg:"+msg);
			}
		});
	},
	showWatchTweets: function(json){
		var obj = $(json.results).sort("id","asc");
		
		// alert(obj.length);
		
		if(obj.length > 0){
			$("div#watchTweets").empty();
			
			$(obj).each(function(i){
				$("div#watchTweets").prepend( '<div class="tweet" id="t'+this.id+'"><div class="avatar"><a href="http://twitter.com/'+this.from_user+'"><img src="'+this.profile_image_url+'" /></a></div><div class="text"><a href="http://twitter.com/'+this.from_user+'" class="idLink">'+this.from_user+'</a>: <a href="http://twitter.com/'+this.from_user+'/statuses/'+this.id+'" class="tweetLink">'+this.text+'</a></div>');
			});
			
			$("div#watchTweets div.tweet:last").addClass("last");

			cab.externaliseLinks();
		}

	},
	getTwitter: function(){
		$.getJSON("http://collections.europarchive.org/tna/+/http://twitter.com/status/user_timeline/cabinetforum.json?count=5&callback=?", function(json){
			
			$.each(json, function(i){
				$('<div class="tweet"></div>').html('<p><a rel="external"  href="http://twitter.com/'+json[i].user.screen_name+'/status/'+json[i].id+'">'+json[i].text+'</a></p>').appendTo("#twitterPosts");
			});
			cab.externaliseLinks();
		});
	},
	getYoutube: function(){
		// youtube removed for now. 
	},
	tweakAgendaTable: function(){
		$("div#agendaTable table tr.sessionCopy").hide();
		$("div#agendaTable table td.sessionLink").wrapInner('<a href="#" class="sessionInfoShowLink"></a>');
		$("div#agendaTable table td.sessionLink a.sessionInfoShowLink").click(function(){
			$(this).parents("tr").next("tr.sessionCopy").toggle();
			this.blur();
			return false;
		});
		$("div#agendaTable table td.closeLink").html('<a href="#">Close</a>');
		$("div#agendaTable table td.reminderLink").html('<a href="#">Remind me</a>');
		
		$("div#agendaTable table td.closeLink a").click(function(){
			$(this).parents("tr").hide();
			this.blur();
			return false;
		});
		
		$("ul#agendaDays li a").unbind("click").click(function(){
			$("div#agendaTable").load( this.href+" #agendaTable table", {}, function(){
				cab.tweakAgendaTable();
			} );
			this.blur();
			$("ul#agendaDays li.current").removeClass("current");
			$(this).parents("li").addClass("current");
			return false;
		});
		
		
		// temporary tweak to remove the "reminder" column
		// $("div#agendaTable:not(.test) table th.remCol, div#agendaTable:not(.test) table td.reminderLink").remove();
		// $("div#agendaTable:not(.test) table tr td:last-child, div#agendaTable:not(.test) table tr th:last-child").addClass("last");
		// $("div#agendaTable:not(.test) table tr.sessionCopy td:nth-child(1)").attr("colspan", "1");
		
		
		// if the reminder link is there, make it do something
		$("div#agendaTable table td.reminderLink a").each(function(){
			var sessionID = $(this).parents("tr").attr("id");
			var sessionTitle = $(this).parents("tr").find("td.sessionLink").text();
			var sessionSpeaker = $(this).parents("tr").find("td.presenterLink").text();
			var sessionTime = $(this).parents("tr").find("td:first-child").text();
			var sessionDay = $("ul#agendaDays li.current").text();
			//var qs = "id=" + sessionID.substr(8) + "&session=" + sessionTitle + "&speaker=" + sessionSpeaker + "&time=" + sessionTime + "&day=" + sessionDay;
			
			var qs = sessionID.substr(8) + "/" + escape(cab.encodeString(sessionTitle)) + "/" + escape(cab.encodeString(sessionSpeaker)) + "/" + cab.encodeString(sessionTime) + "/" + cab.encodeString(sessionDay);
			
			this.href = "http://collections.europarchive.org/tna/+/http://www.cabinetforum.org/conference/reminder/"+qs;
			
			$(this).click(function(){
				document.location.href = "http://collections.europarchive.org/tna/+/http://www.cabinetforum.org/conference/reminder/"+qs;
				return false;
			});
		});
		
		
		// make the reminder form itself decode the garbage passed to it in the URL from previous function
		if( $("div.reminderFormDiv").length > 0){
			var wTitle = cab.decodeString( $("#getTitle").val() );
			var wSpeaker = cab.decodeString( $("#getSpeaker").val() );
			var wTime = cab.decodeString( $("#getTime").val() );
			var wDay = cab.decodeString( $("#getDay").val() );
			$("#s-title").text(wTitle);
			$("#s-speaker").text(wSpeaker);
			$("#s-time").text(wTime);
			$("#s-day").text(wDay);
		}
		
	},
	encodeString: function(str){
		str = str.replace(/\ /g, "_");
		str = str.replace(/\é/g, "EEE");
		str = str.replace(/\ô/g, "OOO");
		str = str.replace(/\&/g, "AAA");
		str = str.replace(/\?/g, "QQQ");
		str = str.replace(/\//g, "SSS");
		str = str.replace(/\,/g, "CCC");
		str = str.replace(/–/g, "-");
		
		return str;
	},
	decodeString: function(str){
		str = str.replace(/\_/g, " ");
		str = str.replace(/EEE/g, "é");
		str = str.replace(/OOO/g, "ô");
		str = str.replace(/AAA/g, "&");
		str = str.replace(/QQQ/g, "?");
		str = str.replace(/SSS/g, "/");
		str = str.replace(/CCC/g, ",");
		
		return str;
	},
	embedVideo: function(){
		var themeFolder = (cab.isLive ? cab.themeFolder.live : cab.themeFolder.local);
		
		if( $("div#watchVideo.lowflash").length > 0){
			$('#watchVideoInner').flash(
				{
					src: themeFolder+'swf/dcms_mid.swf',
					width: 540,
					height: 288,
					allowFullScreen: true
				},
				{
					version: 9
				}
		    );
		    
		}

		if( $("div#watchVideo.highflash").length > 0){
			$('#watchVideoInner').flash(
				{
					src: themeFolder+'swf/dcms_high.swf',
					width: 540,
					height: 288,
					allowFullScreen: true
				},
				{
					version: 9
				}
		    );
		    
		}
	},
	grabReminderForm: function(){
		$("form#reminder_form").submit(function(){ 
			
			var args = "user_name="+this.user_name.value+"&user_email="+this.user_email.value+"&session_code="+this.session_code.value+"&XID="+this.XID.value+"&ACT="+this.ACT.value+"&RET="+this.RET.value+"&site_id="+this.site_id.value;
			//alert(args);
			
			$.ajax({
				type: 		this.method,
				url: 		this.action,
				data: 		args,
				dataType: 	"json",
				success: function(data, msg){
					//alert( "Success: " + data.message );
					if(data.status == "failure"){
						alert(data.message);
					} else {
						document.location.href = "http://collections.europarchive.org/tna/+/http://www.cabinetforum.org/conference/message/"+data.message;
					}
				},
				error: function(data, msg){
					alert( "Error: " + msg );
				}

			});
			
			return false;
		});
	}
}



function printSuccess(data, textStatus){
	//Handle data as a JSON object
	alert(data);
}



