/* elisaviihde.fi scripts */
$(document).ready(function(){

 // Effects for text-boxes
 $(".text").focus(function(e){  
    $(this).addClass("active");  
 });  
 $(".text").blur(function(e){  
    $(this).removeClass("active");  
 }); 
 //
 $("#main_navigation .menuSub").hover(
	function(){
 	$("#main_navigation .menuSub ul").css("display","block");
 	},
	function(){
 	$("#main_navigation .menuSub ul").css("display","none");
 	}
 )
 
 $.tablesorter.addParser({
	 id: "dotDate",
	 is: function(s) {
	 	return /\d{1,2}\.\d{1,2}\.\d{2,4}/.test(s);
 	 },
	 format: function(s,table) {
 		s = s.replace(/(\d{1,2})\.(\d{1,2})\.(\d{2,4})/, "$2/$1/$3");
	    return $.tablesorter.formatFloat(new Date(s).getTime());
 	 },
 	 type: "numeric"
 });
 $.tablesorter.addParser({
	 id: "dotDate2",
	 is: function(s) {
	 	return /\d{1,2}\.\d{1,2}\.\d{2,4}/.test(s);
 	 },
	 format: function(s,table) {
 		s = s.substring(2)
 		s = s.replace(/(\d{1,2})\.(\d{1,2})\.(\d{2,4})/, "$2/$1/$3");
	    return $.tablesorter.formatFloat(new Date(s).getTime());
 	 },
 	 type: "numeric"
 });
 
 function parseWildcardPrograms(context, programs) {
	 var contextId = $(context).attr("id"),
	 contextClass = $(context).attr("class");
	 
	 $(context).after(
		"<tr class='wc_future_row wildcard " + contextClass + "'><td colspan='6' style='padding: 0;'><div class='wildcard_future'>" +	
	 	"<strong>S&auml;&auml;nn&ouml;ll&auml; tallentuvat ohjelmat</strong>" +
		"</div></td></tr>"
	 );
	 
	 if(programs.length === 0) {
		 $("#" + contextId + " + tr .wildcard_future").append("<p><span class='wildcard_name'>S&auml;&auml;nn&ouml;ll&auml; ei ole tallentuvia ohjelmia</span></p>");
	 }
	 else {
		 $.each(programs, function() {
			 $("#" + contextId + " ~ tr:first .wildcard_future").append(
				 "<p><a href='program.sl?programid=" + this.id + "'>" +
				 "<span class='wildcard_name'>" + decodeURIComponent(this.name) + "</span>&nbsp;-&nbsp;" +
				 "<span class='wildcard_starttime'>" + (this.start_time).substring(0,(this.start_time).lastIndexOf(":")) + "</span>" +
				 "</a></p>" 
			 );
		 });
	 }
	 
	 $("#" + contextId + " + tr.wc_future_row").show();
 }
 
 function loadWildcardPrograms(element) {
	 var context = $(element).parents(".wildcardrow"),
	 //var context = $(this).parent(),
	 contextId = $(context).attr("id"),
	 link = $(element),
	 wildcard = $("td:eq(1)", context).text(),
	 channel = $("td:eq(2)", context).text(),
	 re, wc_length = 0, wc_new = "";
	 
	 // show load animation
	 $(link).addClass("wildcard_loading");
	 
	 // temporary fixes to channels Liv and Jim, remove when proper fix is implemented
	 if(channel === "JIM")
		 channel = "Jim";
	 else if(channel === "LIV")
		 channel = "Liv";
	 
	 // form regexp to filter results
	 wc_new = wildcard.replace(/\*/g, "");
	 wc_length = wildcard.length;
	 
	 if(wildcard.indexOf("*") === -1) {	
		 wc_new = "^" + wc_new + "$";
	 }
	 else {
		 if(wildcard.indexOf("*") > 0) {
			 wc_new = "^" + wc_new;
		 }
		 if(wildcard.lastIndexOf("*") < wc_length - 1) {
			 wc_new = wc_new + "$";
		 }
	 }

	 re = new RegExp(wc_new, "i"),
	 
	 // retrieve and filter programs
	 $.ajax({
			type: "GET",
			url: "ajaxprograminfo.sl?channel=" + channel,
			dataType: "json",
			context: $(link),
			success: function(data) {
				var resultArr = [], contextParent = $(link).parents(".wildcardrow");
				$.each(data.programs, function() {
					if(re.test(decodeURIComponent(this.name)) == true) {
						resultArr.push(this);
					};
				});
				
				parseWildcardPrograms(context, resultArr);
				
				// future clicks only show/hide
				$(this).replaceWith("<span class='show_programs link_active'><img src='/images/tvrecorder/elisa/icon_lista.png' alt='N&auml;yt&auml; s&auml;&auml;nn&ouml;ll&auml; tallennettavat ohjelmat' title='N&auml;yt&auml; s&auml;&auml;nn&ouml;ll&auml; tallennettavat ohjelmat' /></span>");
				$(contextParent).find(".show_programs").click(function() {
					$(this).parents(".wildcardrow").next("tr.wc_future_row").toggle();
					$(this).toggleClass("link_active");
				});
			}
	 });
 }
 
 $(".wildcardrow span.load_programs").one("click", function() {
	 loadWildcardPrograms(this);
 });
 
 $("#recordings.tablesorter th").click(function () {
	 // table sort has to restore initial status	 
	 $(".wc_future_row").remove();
	 $("span.show_programs").replaceWith("<span class='load_programs'>ABC</span>");
	 
	 $(".wildcardrow span.load_programs").unbind("click").one("click", function() {
		 loadWildcardPrograms(this);
	 });
 });
 
});
