var g_LastId = 0;
var g_NewWindow = 0;
var g_NewsletterInputCleared = false;
var search_mode = 1;
var min_input = 2;
//var serverIP = "https://api2.qtom.tv/" --Werden jetzt in der localconfig gesetzt
//var searchUrl = serverIP + "FlakeServerTV1/commands/" --Werden jetzt in der localconfig gesetzt
var asseturl = "http://www.qtom.tv/"
var searchObject = new SearchObject();
var min_lines = 14;
var height_small = 375;
var height_tall = 550;
var height_teaser = 256;
var colcount = 2;
var feedback_url = "/services/QFeedback/feedback/GenericFeedback.htm";
hints = new Array("","hint1.png", "hint2.png", "hint3.png");

function huelle(){
}

function SearchObject(){
    this.sortfield = "";
    this.resultfields = "artist,title"
    this.reverse = true;
    this.maxresults = 14;
    this.offset = 0;
    this.searchfields = "artist,title";
    this.displayMode = "table";
    this.small = true;
    this.cachedResults;
	
	this.has_entries = false;
    
    this.getSearchOptions = function(){
        var erg = $("#songsearch").val();
        var out = new huelle();
        out['text'] = erg;
        out['sortfield'] = this.sortfield;
        out['maxresults'] = this.maxresults;
        out['offset'] = this.offset;
        out['format'] = "json";
        out['cmd'] = "search";
        out['resultfields'] = this.resultfields;
        out['searchfields'] = this.searchfields;
        if (this.reverse == true) {
            out['reverseorder'] = true;
        }
		if(search_mode==3){out['reverseorder']=!out['reverseorder']};
        return out;
    }
    this.sortHeader = function(krit, thid){
        if (searchObject.sortfield == krit) {
            this.reverse = (this.reverse != true);
        }
        else {
            this.reverse = (false);
        }
        searchObject.sortfield = krit;
    }
    
    this.searchMore = function(){
        $("#sm").attr("src", "../common_player/images/search/kreisel_bot.gif");
        this.maxresults = this.maxresults + min_lines;
        search();
    }
    
    this.showMore = function(){
	if(searchObject.cachedResults){
        if (this.small) {
            min_lines = 21;
			this.searchMore();
            $("#searchResults").height(height_tall);
            hover_me($('#more'), "../common_player/images/search/pfeil_up_hi.png", "../common_player/images/search/pfeil_up_normal.png");
            $("#td_kachel").height(height_tall);
			this.repaintAll();
            this.small = false;
        }
        else {
            min_lines = 14;
            this.searchMore();
			$("#searchResults").height(height_small);
            $("#td_kachel").height(height_small);
            hover_me($('#more'), "../common_player/images/search/pfeil_hi.png", "../common_player/images/search/pfeil_normal.png");
            this.repaintAll()
            this.small = true;
        }
		}
    }
    
    this.clear = function(){
        this.offset = 0;
        this.maxresults = min_lines;
    }
	
    this.emptyTable = function(){
	this.has_entries = false;
	 $("#searchResults").height(height_teaser);
        var out ='<div style="height:' + height_teaser + ';width:657px;background-color:black;"> <img src="../common_player/images/search/' + hints[search_mode] + '"></div>'
        //$("#searchTable > tbody").empty();
		$("#inner").empty();
        //for (var i = 0; i <= min_lines; i++) {
            $("#inner").append(out);
       // }
      
    }
    
    this.repaintAll = function(){
        $("#searchResults").css("visibility", "visible");
        $('#searchResults').jScrollPane();
        var thid = $("#pfr");
        if (this.sortfield == "artist") {
            thid = $("#pfl");
        }
        if (this.sortfield == "title") {
            thid = $("#pfm");
        }
        $("#pfl,#pfm,#pfr").hide();
        if ((search_mode != 3 && this.reverse) || (search_mode==3 && !this.reverse)) {
            thid.attr("src", "../common_player/images/search/sortier_dreieck_down.png");
        }
        else {
            thid.attr("src", "../common_player/images/search/sortier_dreieck.png");
        }
        thid.show();
    }
}

function search(){
    var erg = $("#songsearch").val();
    $.ajaxSetup({
        cache: false
    });
    if (erg.length >= min_input) {
        $('#reset_bt').attr("src", "../common_player/images/search/kreisel.gif");
        var ob = searchObject.getSearchOptions();
        $.ajax({
            dataType: 'jsonp',
            jsonp: 'jsonp_callback',
            url: searchUrl,
            data: ob,
            jsonp: "jsonp",
            success: function(j){
                searchObject.cachedResults = j;
                processResults();
            }
        });
    }
    else {
        //searchObject.emptyTable();
    }
}

function processResults(){
if(searchObject.cachedResults){
	this.has_entries = true;
	if (searchObject.small){
	$("#searchResults").height(height_small);
	$("#td_kachel").height(height_small);
	}else{
	$("#searchResults").height(height_tall);
	$("#td_kachel").height(height_tall);
	}
    if (searchObject.displayMode == "table") {
        fillTable(searchObject.cachedResults);
        delay(function(){
            $(".display tr:odd ").addClass("alt");
        }, 100);
    }
    else {
        fillKacheln(searchObject.cachedResults);
    }
    searchObject.repaintAll();
    $('#reset_bt').attr("src", "../common_player/images/search/kreuz_normal.png");
	}
}

function fillTable(j){

	$("#inner").empty();
	var out = '<table id="searchTable" class="display"><tbody></tbody></table>'
	$("#inner").append(out);
	//$('#searchResults').jScrollPane();
  if (j) {
		$("#searchTable > tbody").html("");
		for (x in j['flake-data'].musicclips) {
			fillTableWith(j['flake-data'].musicclips[x]);
		}
		$('.str').hover(function(){
			$(this).children().addClass('trh');
		}, function(){
			$(this).children().removeClass('trh');
		});
		
		if (j['flake-data'].musicclips.length == searchObject.maxresults) {	
			var out = '<tr class="notvisible" onClick="searchObject.searchMore();"><td class="more_td" colspan="' + colcount + '"><img id="sm" src="../common_player/images/search/weitere_ergebnisse_normal.png"/></td></tr>';
			$("#searchTable > tbody").append(out);
		}
		var minus_rows =0;
		if (j['flake-data'].musicclips.length == 0) {
			var st = $("#songsearch").val();
			_gaq.push(['_trackEvent', 'Suche', 'no_results ' + st]);
			var out = '<tr class="notvisible"><td class="more_td" colspan="' + colcount + '"><img id="sm" src="../common_player/images/search/kein_treffer.png"/></td></tr>';
			$("#searchTable > tbody").append(out);
			minus_rows =1;
		}
		if (j['flake-data'].musicclips.length < searchObject.maxresults) {
			var out ='<tr class="notvisible"><td class="more_td" colspan="' + colcount + '"></td></tr>'
			for (var i = j['flake-data'].musicclips.length; i <= min_lines - minus_rows; i++) {
				$("#searchTable > tbody").append(out);
			}
		}
		// Spalten verkleinern
		if (search_mode == 1) {
			$('td.td_left').addClass('stretch_td_left');
    		$('td.td_mid').addClass('stretch_td_mid');
		}
		if (search_mode == 2) {
			$('td.td_left').removeClass('stretch_td_left');
    		$('td.td_mid').removeClass('stretch_td_mid');
		}
		if (search_mode == 3) {
			$('td.td_left').removeClass('stretch_td_left');
    		$('td.td_mid').removeClass('stretch_td_mid');
		}
	}
}
function fillTableWith(aClip){
	// Unterscheiden je nach Suchmodus
	var out = "<tr class=\"str\" onClick=\"play('" + aClip.id + "')\"><td class=\"td_left\">" + highlightCell(aClip.artist) + "</td><td class=\"td_mid\">" + highlightCell(aClip.title) + "</td>";
	if (search_mode == 1) {
	out = out + "</tr>";
	}
	if (search_mode == 2) {
	out = out + "<td class=\"td_right\">" + highlightCell(aClip.location) + "</td> </tr>";
	}	
	if (search_mode == 3) {
	out = out + "<td class=\"td_right\">&nbsp;&nbsp;" + aClip.lyrics.occurrences + " x <b>" + $("#songsearch").val() + "</b></td> </tr>";
	}
	$("#searchTable > tbody").append(out);
}


function fillKacheln(j){
	$("#inner").empty();
	var out = '<table id="searchTable" class="display"><tbody></tbody></table>'
	$("#inner").append(out);
    var kacheln = $("#searchTable > tbody");
    var colcount = 3;
    if (search_mode == 1) {
        colcount = 2
    }
	if (j) {
		kacheln.html("");
		if (j['flake-data'].musicclips.length < 7) {
			$("#td_kachel").height(height_small);
			$("#searchResults").height(height_small);
		}
		var out = "<tr><td colspan='" + colcount + "' id='td_kachel'>";
		for (x in j['flake-data'].musicclips) {
			var clip = j['flake-data'].musicclips[x];
			out = out + "<div class=\"kachel\" onClick=\"play('" + clip.id + "')\">"
			out = out + '<img src="' + asseturl + clip.teaserimage + '" class="asset">';
			out = out + '<img src="' + asseturl + clip.infoimage + '" class="typo"></div>'
		}
		if (j['flake-data'].musicclips.length == 0) {
			out = out + '<img id="sm" src="../common_player/images/search/kein_treffer.png" style="margin-left:19px;margin-top:5px;"/>';
		}
		if (j['flake-data'].musicclips.length == searchObject.maxresults) {
			out = out + '<div class="morekachel" onClick="searchObject.searchMore();"></div>'
		}
		out = out + ("</td></tr>");
		kacheln.append(out);
		$('.kachel').hover(function(){
			$(this).addClass('hover');
		}, function(){
			$(this).removeClass('hover');
		});
		$('.morekachel').hover(function(){
			$(this).addClass('hover_more');
		}, function(){
			$(this).removeClass('hover_more');
		});
	}
}

function highlightCell(celldata){
    var retval = celldata.text;
    var wordcount = 30;
    if (search_mode == 1) {
        wordcount = 45;
    }
    if (retval.length > wordcount) {
        retval = retval.substr(0, wordcount - 3) + "...";
    }
    if ("highlights" in celldata) {
        for (var i = celldata.highlights.length - 1; i >= 0; i--) {
		
            var high = celldata.highlights[i];
            var from = parseInt(high.start);
            var to = parseInt(high.end);
			if(from < wordcount && to < wordcount){
            retval = retval.substr(0, from) + "<span style=\"color:white;\"><b>" + retval.substr(from, to - from) + "</b></span>" + retval.substr(to, retval.length - (to));
			}
		}
        return "&nbsp;&nbsp;" + retval;
    }
    else {
        return "&nbsp;&nbsp;" + retval;
    }
}

var delay = (function(){
    var timer = 0;
    return function(callback, ms){
        clearTimeout(timer);
        timer = setTimeout(callback, ms);
    };
})();

function searchAvailable(flag){
	// Nur reagieren wenn die Suche gerade nicht verwendet wird
	var isHidden = $("#ergebnisse").css('visibility')=='hidden' 
	var state='hidden'
	if(flag){state='visible'}
    if(isHidden || flag){
		$("#topnav").css('visibility',state);
 	    $("#beta").css('visibility',state);	
		}
}

function swapBackground(imgSource){
    document.body.style.backgroundImage = 'url(' + imgSource + ')';
}

function getUrlParameter(name){
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regexS = "[\\?&]" + name + "=([^&#]*)";
    var regex = new RegExp(regexS);
    var results = regex.exec(window.location.href);
    if (results == null) {
        return null;
    }
    return results[1];
}

function hover_me(handle, url1, url2){
    handle.mouseenter(function(){
        $(this).attr("src", url1);
    });
    handle.mouseout(function(){
        $(this).attr("src", url2);
    });
}

function init(){
	$("#songsearch").val("Suche nach...");
    $("#beta").position({
        my: "right top",
        at: "left top",
        of: "#suchrahmen"
    });
	$('#beta').click(function(){
        $('#feedback').css("visibility", "visible");
    });
	$('#abbrbut2').click(function(){
				$("#fform").css("display", "block");
			    $("#thanks").css("display", "none");
                $('#feedback').css("visibility", "hidden");
            });
    $('#view_switch').click(function(){
        toggle_results();
    });
    $('#abbrbut').click(function(){
        $('#feedback').css("visibility", "hidden");
    });
    $('#formokbut').click(function(){
        postFeedback();
    });
    $('#mask').click(function(){
        hideSearch();
    });
    $('#songsearch').focus(function(){
	if($("#songsearch").val() == "Suche nach..."){
	$("#songsearch").val("");
	$("#songsearch").css("color", "black");
	}
        showSearch();
    });
    $('#songsearch').keyup(function(){
        delay(function(){
            searchObject.clear();
            search();
        }, 500);
    });
    $('#more').click(function(){
        searchObject.showMore();
    });
    $('#th_lefttop').click(function(){
        searchObject.sortHeader("artist", "#pfl");
        search();
    });
    $('#th_middletop').click(function(){
        searchObject.sortHeader("title", "#pfm");
        search();
    });
	$('#th_righttop').click(function() {
		searchObject.sortHeader(searchObject.searchfields,"#pfr");
		search();
	});
	// Suchkriterien
	$('#s_clips').click(function() {
  		changeSearch(1);
	});	
	$('#s_locations').click(function() {
  		changeSearch(2);
	});	
	$('#s_lyrics').click(function() {
  		changeSearch(3);
	});	
	
    $('#reset_bt').click(function(){
        hideSearch();
        searchObject.maxresults = min_lines;
		$("#songsearch").val("Suche nach...");
		$("#songsearch").css("color", "darkgrey");
		$("#searchTable > tbody").html("");
		searchObject.emptyTable();
		searchObject.cachedResults=null;
    }); 
	
    hover_me($('#reset_bt'), "../common_player/images/search/kreuz_hi.png", "../common_player/images/search/kreuz_normal.png");
    hover_me($('#more'), "../common_player/images/search/pfeil_hi.png", "../common_player/images/search/pfeil_normal.png");
    hover_me($('#view_switch'), "../common_player/images/search/anzeige_hi.png", "../common_player/images/search/anzeige_normal.png");
    hover_me($('#formokbut'), "../common_player/images/search/ok_button_hi_sl.png", "../common_player/images/search/ok_button_normal_sl.png");
    hover_me($('#abbrbut'), "../common_player/images/search/abbrechen_button_hi_sl.png", "../common_player/images/search/abbrechen_button_normal_sl.png");
    changeSearch(1);
	searchObject.emptyTable();
    searchObject.sortHeader("artist", "#pfl");
    searchObject.reverse = false;
    $('#searchResults').jScrollPane();
    hideSearch();
	searchAvailable(true);
    $(window).resize(function(){
        $("#beta").position({
            my: "right top",
            at: "left top",
            of: "#suchrahmen"
        });
        $("#ergebnisse").position({
            my: "right top",
            at: "right bottom",
            of: "#suchrahmen",
            offset: "30 10"
        });
    });
}

function toggle_results(){
    if (searchObject.displayMode == "table") {
        searchObject.displayMode = "kachel";
        hover_me($('#view_switch'), "../common_player/images/search/anzeige_liste_hi.png", "../common_player/images/search/anzeige_liste_normal.png");
    }
    else {
        searchObject.displayMode = "table";
        hover_me($('#view_switch'), "../common_player/images/search/anzeige_hi.png", "../common_player/images/search/anzeige_normal.png");
    }
    processResults();
}

function hideSearch(){
    $("#mask").css("display", "none");
    var options = {};
    $("#ergebnisse").css("visibility", "hidden");
    $("#searchResults").css("visibility", "hidden");
}

function showSearch(){
	_gaq.push(['_trackEvent', 'Suche', 'open']);
    if ($("#mask").css("display") == "none") {
        $("#mask").css("display", "block");
        $("#ergebnisse").css("visibility", "visible");
        $("#ergebnisse").position({
            my: "right top",
            at: "right bottom",
            of: "#suchrahmen",
            offset: "52 1"
        });
    }
    searchObject.repaintAll();
}

function changeSearch(mode){
    search_mode = mode;
    anim = "";
	($("#s_clips").css("background-image", "url('../common_player/images/search/videobut_normal.png')"));
	($("#s_locations").css("background-image", "url('../common_player/images/search/locationbut_normal.png')"));
	($("#s_lyrics").css("background-image", "url('../common_player/images/search/lyricsbut_normal.png')"));

if (search_mode == 1) {
	_gaq.push(['_trackEvent', 'Suche', 'change clip']);
	($("#s_clips").css("background-image", "url('../common_player/images/search/videobut_hi.png')"));
    $('th.th_middle').addClass('stretchm');
    $('th.th_left').addClass('stretchl');
    searchObject.sortfield = "artist";
    searchObject.searchfields = "artist,title";
    searchObject.resultfields = "artist,title";
	$('td:nth-child(3)').hide(anim);
        $('td:nth-child(3),th:nth-child(3)').hide(anim);
		searchObject.sortfield="artist";
		searchObject.searchfields="artist,title";
		searchObject.resultfields="artist,title";
		colcount = 2;
		
	}
	//location small_td_l
	if (search_mode == 2) {
	_gaq.push(['_trackEvent', 'Suche', 'change location']);
		($("#s_locations").css("background-image", "url('../common_player/images/search/locationbut_hi.png')"));
		$('th.th_middle').removeClass('stretchm');
		$('th.th_left').removeClass('stretchl');
		$('th#th_righttop').removeClass('th_right_lyrics').addClass('th_right_location');
		$('td:nth-child(3)').show(anim);
        $('td:nth-child(3),th:nth-child(3)').show(anim);
		searchObject.resultfields="artist,title,location";
		searchObject.sortfield="location";
		searchObject.searchfields="location";
		colcount = 3;
		
	}
	//lyrics
	if (search_mode == 3) {
	_gaq.push(['_trackEvent', 'Suche', 'change lyrics']);
		($("#s_lyrics").css("background-image", "url('../common_player/images/search/lyricsbut_hi.png')"));
		$('th.th_middle').removeClass('stretchm');
		$('th.th_left').removeClass('stretchl');
		$('th#th_righttop').removeClass('th_right_location').addClass('th_right_lyrics');
		$('td:nth-child(3)').show(anim);
        $('td:nth-child(3),th:nth-child(3)').show(anim);	
		searchObject.resultfields="artist,title,lyrics";
		searchObject.searchfields="lyrics";
		searchObject.sortfield="lyrics";
		colcount = 3;
		
	}
	if($("#songsearch").val() != "Suche nach..."){
	search(); 
	var erg = $("#songsearch").val();
    
	if(!(erg.length >= min_input)){
			searchObject.emptyTable();
		}
		}
}

function thisMovie(movieName){

    if (navigator.appName.indexOf("Microsoft") != -1) {
        return window[movieName];
    }
    else {
	var x = document[movieName];
        return document[movieName];
    }
}

function playAsset(assetID){
    thisMovie("qtom").playAssetCallback(assetID);
}

function swapBackground(imgSource){
    document.body.style.backgroundImage = 'url(' + imgSource + ')';
}

function postFeedback(){
	var eMailExpr = new RegExp('^([a-zA-Z0-9\-\.\_]+)'+
					 '(\@)([a-zA-Z0-9\-\.]+)'+
					 '(\.)([a-zA-Z]{2,4})$');
					 
    var out = new huelle();
    out['text'] = $('#beta_text').val();
    out['email'] = $('#beta_mail').val();
    
    if ($('#beta_text').val() == "") {
        alert("Bitte gib dein Feedback in das Kommentarfeld ein");
        return;
    }
	if (($('#beta_mail').val()!="" )&& !eMailExpr.test($('#beta_mail').val())){
        alert("Bitte gib eine korrekte Emailadresse an. Wir schicken Dir dann gerne unseren Newsletter zu.");
        return;
    }
    if (($('#beta_chk:checked').val() !== undefined) && $('#beta_mail').val() == "") {
        alert("Bitte gib eine korrekte Emailadresse an. Wir schicken Dir dann gerne unseren Newsletter zu.");
        return;
    }
    if ($('#beta_chk:checked').val() !== undefined) {
        out['newsletter'] = $('#beta_chk').val();
        $.get('http://www.qtom.tv/newsletter/form.do?agnCI=1&agnFN=doi_user_feedback_register&agnSUBSCRIBE=1&agnMAILINGLIST=1&GENDER=0&FIRSTNAME=Unknown&LASTNAME=Unknown&MAILTYPE=1&EMAIL=' + $('#beta_mail').val());
    }
    $.ajax({
        url: feedback_url,
        type: "POST",
        data: out,
        success: function(){
            $("#fform").toggle();
			$("#thanks").toggle();
			hover_me($('#abbrbut2'), "../common_player/images/search/abbrechen_button_hi_sl.png", "../common_player/images/search/abbrechen_button_normal_sl.png");
        },
 		error: function(){
           alert(unescape("Dein Feedback konnte leider nicht %FCbermittelt werden. Bitte versuche es sp%E4ter noch einmal"));
        }
    });
}


