
//show/hide the help
function help(show) {
  var box = $('help');
  var display = (show===true||show===false) ? show : (box.style.display!='');
  if (display) {
    box.style.display = '';
    about(false);
    author(false);
    $('results').style.display = 'none';
  } else {
    box.style.display = 'none';
    $('results').style.display = '';
  }
}

//show/hide the about
function about(show) {
  var box = $('about');
  var display = (show===true||show===false) ? show : (box.style.display!='');
  if (display) {
    box.style.display = '';
    help(false);
    author(false);
    $('results').style.display = 'none';
  } else {
    box.style.display = 'none';
    $('results').style.display = '';
  }
}

//show/hide the author
function author(show) {
  var box = $('author');
  var display = (show===true||show===false) ? show : (box.style.display!='');
  if (display) {
    box.style.display = '';
    help(false);
    about(false);
    $('results').style.display = 'none';
  } else {
    box.style.display = 'none';
    $('results').style.display = '';
  }
}

//stop the music
function playerClose() {
  $('player').innerHTML = '';
  $('playerCloseLink').style.display = 'none';
}

//play the music
function play(url) {
  $('playerCloseLink').style.display = '';
  var p = new SWFObject('inc/mp3player.swf', 'line', '306', '20', '7');
  p.addVariable('file', 'inc/proxy.php?url='+url);
  p.addVariable('autostart', 'true');
	p.addVariable('showdownload', 'true');
  p.addVariable('width', '306');
  p.addVariable('height', '20');
  p.write('player');
}

//create navigation bar
function createNavigation(nav) {
  if (nav.end == 0) {
    $('pages').innerHTML = '';
  } else {
    cur_page = parseInt(nav.start / 10);
    num_pages = parseInt(parseInt(nav.total) / 10) + parseInt((nav.total % 10) ? 1 : 0);
    $('pages').innerHTML = (cur_page + 1) +' de '+ num_pages;
  }
  var links = $('nav').getElementsByTagName('a');
  var a_rev = links[0];
  var a_for = links[1];
  a_rev.className = (cur_page <= 0) ? 'disabled' : '';
  a_for.className = (cur_page >= (num_pages-1)) ? 'disabled' : '';
}

//do navigation
function go(where) {
  if (where == -1 && cur_page <= 0) return;
  if (where == +1 && cur_page >= (num_pages-1)) return;
  cur_page += parseInt(where);
  search(true);
}

//show/hide the loading gif
function loading(display) {
  var obj = $('loading');
  display = (display===false||display===true) ? display : (obj.style.visibility=='visible');
  obj.style.visibility = display ? 'visible' : 'hidden';
}

//show/hide results messages
function resultsToggle() {
  $('start').style.display = 'none';
  $('norows').style.display = (result.getElementsByTagName('tr').length > 0) ? 'none' : '';
}

//mouse onver/out handler
function mouse(what, tr) {
  var tds = tr.getElementsByTagName('td');
  var className = (what=='over') ? 'over' : '';
  for (var i=0; i<tds.length; i++) {
    tds[i].className = className;
  }
}

//add new row on results
function addRow(obj) {
  //artist
  var td_artist = document.createElement('td');
  td_artist.innerHTML = obj.artist;
  //music
  var td_music = document.createElement('td');
  td_music.innerHTML = obj.music;
  //url
  var a_url = document.createElement('a');
  //a_url.href = 'inc/proxy.php?url='+ obj.url;
  a_url.href = obj.url;
  a_url.title = 'Baixar música: '+ obj.music;
  a_url.innerHTML = 'Download';
  var a_play = document.createElement('a');
  a_play.href = 'javascript:play("'+ obj.url +'");';
  a_play.title = 'Tocar música: '+ obj.music;
  a_play.innerHTML = 'Tocar';
  var td_url = document.createElement('td');
  //td_url.appendChild(a_play);
  //td_url.appendChild(document.createTextNode(' '));
  td_url.appendChild(a_url);
  //appends
  var tr = document.createElement('tr');
  tr.onmouseover = function(){mouse('over',this);};
  tr.onmouseout = function(){mouse('out',this);};
  tr.appendChild(td_artist);
  tr.appendChild(td_music);
  tr.appendChild(td_url);
  result.appendChild(tr);
}

//well, this clear the results!
function clearResults() {
  try {
    result.innerHTML = '';
  } catch(e) {
    var rows = result.getElementsByTagName('tr');
    for (var i=rows.length-1; i>=0; i--) {
      rows[i].parentNode.removeChild(rows[i]);
    }
  }
}

//on search complete
function searchComplete(text, xml) {
  loading(false);
  clearResults();
  $('btSearch').disabled = false;
  var error = xml.getElementsByTagName('error');
  if (error[0]) {
    alert('Error: '+ error[0].firstChild.data);
    return;
  }
  var nav = {};
  var playlist = xml.getElementsByTagName('playlist');
  if (playlist[0]) {
    nav = {
      start: 1 + parseInt(playlist[0].getAttribute('start')),
      end: 1 + parseInt(playlist[0].getAttribute('end')),
      total: parseInt(playlist[0].getAttribute('total'))
    }
  }
  var tracklist = xml.getElementsByTagName('track');
  if (tracklist[0]) {
    for (var i=0; i<tracklist.length; i++) {
      var artist = tracklist[i].getElementsByTagName('creator')[0].firstChild.data;
      var music = tracklist[i].getElementsByTagName('title')[0].firstChild.data;
      var url = tracklist[i].getElementsByTagName('location')[0].firstChild.data;
      var obj = {
        artist: artist,
        music: music,
        url: url
      }
      addRow(obj);
    }
  }
  //if (nav.start == 1) $('q').value = '';
  resultsToggle();
  createNavigation(nav);
  //$('ads').src = 'ads.php?q='+ query;
}

//do a new search
function search(navigation) {
  var q = $('q');
  var args = [];
  query = navigation ? query : q.value;
  if (!navigation) {
    cur_page = 0;
    num_pages = 0;
  }
  if (!query.length) {
    alert('Por favor, preencha o campo antes de fazer a busca.\nObrigado.');
    return;
  }
  help(false);
  about(false);
  author(false);
  loading(true);
  args.push('q=' + query);
  args.push('i=' + parseInt(cur_page * 10));
  new Ajax('zearch.php', {
    postBody: args.join('&'),
    onComplete: searchComplete
  }).request();
  $('btSearch').disabled = true;
  setTimeout(function(){try{$('btSearch').disabled=false;}catch(e){}},5000);
  return;
}

//do a search
function goSearch(q) {
  $('q').value = q;
  cur_page = 0;
  num_pages = 0;
  search();
}

//start function: on page load
function init() {
  $('q').focus();
  result = $('result');
  $('start').style.display = '';
}
window.onload = init;
