/*
 * Little script to get some XML and parse it to my specifics.
 * Rip it, but leave my name in it. Thanks.
 *   - Michaël de Bondt 2008
 */
 
var voorlopigLigtSeeqpodEruit = true;

$(document).ready(function(){
  gQ=$("#q");gRv=$("#resultview");gL=$("#loading");gMsg=$("#msg");gR=$("#r");gB=$("input:button,input:submit");
  gQ.focus();
  $("#smiley").click(function(){clickedImg()});
  var imgs = new Array(); // preloading
  imgs[0] = 'download_red.png';
  imgs[1] = 'download_orange.png';
  imgs[2] = 'download_green.png';
  for(i=0;i<imgs.length;i++){
    var oImage = new Image();
    oImage.src = imgs[i];
  }
  setTimeout(function(){getFeed(gNr,true,0);}, 150);
});
var gQ,gRv,gL,gMsg,gR,gB,gNr;
var gLast,gIntervalId,gTimes=0,gElem,gInitTxt="Resultaten worden hier getoond.";
function getFeed(rnum,radio,offset) { // max value of rnum is 100
  gQ.val(gQ.val().replace(/['\-\(\)_]/g," "));
  $("#l").hide();
  if (((gQ.val() != "") && (gQ.val() != " ")) || (radio)) {
    gB.each(function(){$(this).attr("disabled", "disabled")});
    gL.css("visibility", "visible");
    //gQ.focus();
    setTimeout(function(){ajax(gQ.val(),rnum,radio,offset);},10); // TODO: get.php moet xml parsen en html uitspugen!
  } else {
    gTimes = 0;
    gElem = gQ[0];
    gIntervalId = setInterval("blink('#fee','#ddd',4)",75);
  }
}
function getFilename(s){
  return s;
  // works, but takes time...
  //var fn = new String();
  //fn = s;
  //return fn.substr(fn.lastIndexOf("/")+1, fn.length);
}
function blink(/*elem, */colorTo, colorFrom, times) {
  if (++gTimes >= times) clearInterval(gIntervalId);
  gElem.style.backgroundColor = (gLast == colorTo) ? gLast = colorFrom : gLast = colorTo;
}
function ajax(val,rnum,radio,offset) {
  var num = (rnum == 0 ? 5 : rnum);
  var url = 'get.php?text=' + val + "&num=" + num + "&offset=" + offset;

  if (radio) url += '&radio=true';
  $.ajax({
    url: url,
    cache: (!radio), // if radio, don't cache, changes every 3 minutes or so
    async: false,
    success: function(html) {
      pageTracker._trackPageview(url);
      if (html != "kaput") {
        gRv.html(parseResult(html,radio));
        setTimeout(function(){$('#resultview a.goto').linkChecker({linksAtOnce:2,timeout:4});},100);
      } else {
        gRv.html("Seeqpod is kapot.");
      }
    },
    error: function(html) {
      gRv.html("Seeqpod is kapot.");
    }
  });
  gL.css("visibility","hidden");
  gB.each(function(){$(this).removeAttr("disabled")});
}
function expandPlayer(url,div) {
  $("td").find("div").hide();
  if ($("#container"+div+":hidden")) {
    var s1=new SWFObject('/play/player.swf','ply'+div,'328','20','9','#FFFFFF');
    s1.addParam('flashvars','file='+escape(url));
    s1.addParam('playlist','bottom');
    s1.addParam('allowfullscreen','false');
    s1.addParam('wmode','opaque');
    s1.write('container'+div);
    $("#container"+div).show();
  } else {
    $("#container"+div).hide();
  }
}
var gHTML;
function getLyrics(artist, title) {
  $.ajax({
    url: "get.php?lyrics=6&artist=" + escape(artist) + "&title=" + escape(title),
    cache: false,
    async: false,
    success: function(html) {
      pageTracker._trackPageview(url);
      gHTML = html;
      $("#l").html(html);
      $("#l").show();
    }
  });
}
function ext(url) {
  pageTracker._trackPageview("/play/?q=" + escape(url));
  window.open("/play/?q=" + escape(url),"seeqpodripp0r portable player", "location=0,status=0,scrollbars=0,width=300,height=100");
}
function browse(s){
  var fn = new String();
  fn = s;
  s = fn.substr(0, fn.lastIndexOf("/")+1);
  window.open(s);
}
function sP(total) {
  var nr = Math.round(total/gNr), res = Array();
  if ((total > gNr) && (total % gNr > 0)) nr++;
  res[0] = (total > 0 && nr == 0) ? 1 : nr;
  res[1] = "";
  for (var i = 1; i < nr+1; i++) {
    res[1] += " | <a href='javascript:getFeed(gNr,false," + i*gNr + ")'>pagina " + i + "</a>";
  }
  return res;
}
function parseResult(inputXML,radio) {
  //if (console) console.log('This is utter crap, someone know how to do this is PHP?');
  if (!radio) {
    var result = "";
    var root = inputXML.getElementsByTagName("playlist")[0];
    var total = root.getAttribute("total");
    if (total > 0) {
      var pages = sP(total);
      $("#content p").html(total + " resultaten" + " ("+pages[0]+" pagina's)" + pages[1]);
      var tracks = root.getElementsByTagName("track");
      for (var i = 0 ; i < tracks.length ; i++) {
        // for each track listed
        var track = tracks[i];
        var location = track.getElementsByTagName("location")[0].firstChild.nodeValue;
        var artist = (track.getElementsByTagName("creator")[0]) ? ((track.getElementsByTagName("creator")[0].firstChild) ? track.getElementsByTagName("creator")[0].firstChild.nodeValue : "onbekend") : "onbekend";
        var title = track.getElementsByTagName("title")[0].firstChild.nodeValue;
        result += "<tr><td>&nbsp;&nbsp;<img src='play.png' onclick=\"expandPlayer('"+location+"',"+i+");return false;\"><a href='"+location+"' class='goto'><img src='download_orange.png' alt='[download]' title='download' /></a><img src='lyrics.png' alt='Zoek lyrics' title='Zoek lyrics' onclick=\"getLyrics('"+artist.replace(/'/g,"")+"','"+title.replace(/'/g,"")+"')\" /><div id='container"+i+"'></div>";

        result += "</td><td width='740px'><a href='"+location+"' title='"+getFilename(location)+"'>"+title+" - "+artist+"</a>&nbsp;<a href='#' onclick=\"ext('" + location + "');return false\" title='Open external player' class='g'>[^]</a>&nbsp;<a href='#' onclick=\"browse('" + location + "');return false\" title='Browse' class='g'><img src='browse-icon.gif' /></a></td></tr>";
      }
    } else {
      result = "<tr><td colspan='2'>Niets gevonden... <b>Tip</b>: probeer een minder specifieke opdracht.</td></tr>";
      return result;
    }
    return result;
  } else {
    if (inputXML) {
      var song = inputXML.getElementsByTagName("song")[0];
      var artist = (song.getElementsByTagName("artist")[0].firstChild) ? song.getElementsByTagName("artist")[0].firstChild.nodeValue : '';
      var title = (song.getElementsByTagName("title")[0].firstChild) ? song.getElementsByTagName("title")[0].firstChild.nodeValue : '';
      var result = artist + ' ' + title;
      if (voorlopigLigtSeeqpodEruit) {
        $("#TEMP2").html(result.toLowerCase());
        var agent=navigator.userAgent.toLowerCase();
        var is_iphone = (agent.indexOf('iphone')!=-1);
        if (is_iphone) { $("body").html(result.toLowerCase()) }
        return;
      } else {
        gQ.val(result.toLowerCase());
        //document.forms[0].submit();
      }
      return getFeed(gNr,false,0);
    } else {
      return "<tr><td colspan=\"2\">Er is iets misgegaan. <span style='font-weight:bold' onclick='brokenAction();'>Breng Michaël op de hoogte.</span></td></tr>";
    }
  }
}
function sendFeatureRequest() {
  $.ajax({
    url: "mail.php?t=1&msg=" + $("#feature").val(),
    cache: false,
    async: false,
    success: function(html) {
      var tmp = $("#feature").val();
      $("#feature").val("Ik dank u van harte!");
      setTimeout(function(){$("#fr").trigger("click")}, 1500);
      $("#feature").val(tmp);
    }
  });
  gQ.focus();
}
var gTextHeader = "",gMode = "";
function toggleUpdates() {
  if ((gTextHeader == "") || (gMode != "upd")) {
    $.ajax({
      url: "index.php?updates",
      cache: false,
      async: false,
      success: function(html) {
        pageTracker._trackPageview("index.php?updates");
        gTextHeader = html.replace(/\n/g,"<br />");
        gMode = "upd";
        $("#control span i").html(gTextHeader);
      }
    });
  } else {
    if ($("#control span i").html() == "") $("#control span i").html(gTextHeader);
    else $("#control span i").html("");
  }
  gQ.focus();
}
function toggleRequests() {
  if ((gTextHeader == "") || (gMode != "req")) {
    $.ajax({
      url: "index.php?reqs",
      cache: false,
      async: false,
      success: function(html) {
        pageTracker._trackPageview("index.php?reqs");
        gTextHeader = html;//.replace(/\n/g,"<br />");
        gMode = "req";
        $("#control span i").html(gTextHeader);
        $("#control span i ul li").each(function(){this.onclick = function(){gQ.val(this.innerHTML);gQ.focus()}});
      }
    });
  } else {
    if ($("#control span i").html() == "") $("#control span i").html(gTextHeader);
    else $("#control span i").html("");
  }
  gQ.focus();
}
function clickedImg() { // sorry! :-D
  $("#smiley").removeAttr("onclick");
  $("#smiley").hide("slow");
  $.ajax({url:"mail.php?t=3",cache:false,async:false});
  gQ.focus();
}

