var timerlen = 5;
var slideAniLen = 500;

var timerID = new Array();
var startTime = new Array();
var obj = new Array();
var endHeight = new Array();
var moving = new Array();
var dir = new Array();

function slidedown(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display != "none")
                return; // cannot slide down something that is already visible

        moving[objname] = true;
        dir[objname] = "down";
        startslide(objname);
}

function slideup(objname){
        if(moving[objname])
                return;

        if(document.getElementById(objname).style.display == "none")
                return; // cannot slide up something that is already hidden

        moving[objname] = true;
        dir[objname] = "up";
        startslide(objname);
}

function startslide(objname){
        obj[objname] = document.getElementById(objname);

        endHeight[objname] = parseInt(obj[objname].style.height);
        startTime[objname] = (new Date()).getTime();

        if(dir[objname] == "down"){
                obj[objname].style.height = "1px";
        }

        obj[objname].style.display = "block";

        timerID[objname] = setInterval('slidetick(\'' + objname + '\');',timerlen);
}

function slidetick(objname){
        var elapsed = (new Date()).getTime() - startTime[objname];

        if (elapsed > slideAniLen)
                endSlide(objname)
        else {
                var d =Math.round(elapsed / slideAniLen * endHeight[objname]);
                if(dir[objname] == "up")
                        d = endHeight[objname] - d;

                obj[objname].style.height = d + "px";
        }

        return;
}

function endSlide(objname){
        clearInterval(timerID[objname]);

        if(dir[objname] == "up")
                obj[objname].style.display = "none";

        obj[objname].style.height = endHeight[objname] + "px";

        delete(moving[objname]);
        delete(timerID[objname]);
        delete(startTime[objname]);
        delete(endHeight[objname]);
        delete(obj[objname]);
        delete(dir[objname]);

        return;
}


function musicToggle(divid){
  
  box = divid+'_box';
  icon = divid+'_icon';
  
  if (divid != 'search_stats') {
  
    if(document.getElementById('upload_song_box').style.display != 'none'){
      
      slideup('upload_song_box');

    }
    
  }

  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);
    swapIcon(icon);
    

  }else{
    slideup(box);
    swapIcon(icon);
    

  }
      
}

function swapIcon(icon) {
    
  if (document.getElementById(icon).innerHTML=='+') {

    document.getElementById(icon).innerHTML='-';

  } else {

    document.getElementById(icon).innerHTML='+';

  }
  
}

function songToggle(which_song){
  
  var row_box
  
  var id_array = document.getElementById('valid_list').value.split(",")
  
  for (x in id_array) {
    
    id=id_array[x];
    row_box = id+'_box'

    if(id!=which_song) {
      slideup(row_box);   
    }
    
  }
  
  box = which_song+'_box';

  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);    
  }else{
    slideup(box);    
  }
      
}

function toggleAddGenre(box){
  
  if(box=='second_genre_form_box') {
    
    if (document.getElementById('second_genre_link').innerHTML=="Add a 2nd Genre") {
    
      document.getElementById('second_genre_link').innerHTML="Cancel this genre"
      
    } else {
      
      document.getElementById('second_genre_link').innerHTML="Add a 2nd Genre"
      document.getElementById('genre2').value=0
    
    }
  
  } else {
    
    if (document.getElementById('third_genre_link').innerHTML=="Add a 3rd Genre") {
    
      document.getElementById('third_genre_link').innerHTML="Cancel this genre"
      
    } else {
      
      document.getElementById('third_genre_link').innerHTML="Add a 3rd Genre"
      document.getElementById('genre3').value=0
    
    }
    
  }
  
  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);    
  }else{
    slideup(box);    
  }
      
}

function toggleUploadDiv(box) {
  
  document.getElementById('upload_song_box').style.height="850px"

  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);    
  }else{
    slideup(box);    
  }
      
}

function togglePreferences(box) {
  
  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);    
    document.getElementById('show_preferences_span').innerHTML='Hide'
    document.getElementById('preferences_arrow').src='/images/down_arrow.png'
    
  }else{
    slideup(box);    
    document.getElementById('show_preferences_span').innerHTML='Show'
    document.getElementById('preferences_arrow').src='/images/nav_arrow.png'
    
  }
      
}

function toggleAccountInfo(box) {
  
  if(document.getElementById(box).style.display == 'none'){
    slidedown(box);    
  }else{
    slideup(box);    
  }
      
}

function toggleSongInfo(box) {
  
  var target = box+'_container'
  var nav_target = box+'_nav'
  var text_target = box+'_text'
  
  if(document.getElementById(target).style.display == 'none'){
    slidedown(target);    
    document.getElementById(nav_target).src='/images/down_arrow.png'
    document.getElementById(text_target).innerHTML='Hide'
    
  }else{
    slideup(target);    
    document.getElementById(nav_target).src='/images/nav_arrow.png'
    
    document.getElementById(text_target).innerHTML='More'
    
  }
      
}

function toggleSearchHeader() {
  
  if(document.getElementById('advanced_search_header').style.display == 'none'){
    slidedown('advanced_search_header');    
  }else{
    slideup('advanced_search_header');    
  }
      
}

function togglePublisherName() {
  
  if(document.getElementById('publisher_name_box').style.display == 'none'){
    slidedown('publisher_name_box');    
  }else{
    slideup('publisher_name_box');    
  }
      
}

function toggleRegionChecklist() {
  
  if(document.getElementById('region_checklist').style.display == 'none'){
    slidedown('region_checklist');    
  }else{
    slideup('region_checklist');    
  }
  
  if(document.getElementById('tribe_checklist').style.display != 'none'){
  
    slideup('tribe_checklist');    
      
  }     
}

function toggleTribeChecklist() {
  
  if(document.getElementById('tribe_checklist').style.display == 'none'){
    slidedown('tribe_checklist');    
  }else{
    slideup('tribe_checklist');    
  }
  
  if(document.getElementById('region_checklist').style.display != 'none'){
  
    slideup('region_checklist');    
      
  }
}

function toggleBothChecklist() {
  

  if(document.getElementById('tribe_checklist').style.display != 'none'){
  
    slideup('tribe_checklist');    
      
  }  
  if(document.getElementById('region_checklist').style.display != 'none'){
  
    slideup('region_checklist');    
      
  }
}

function toggleRequirementsBox(direction) {
  
  if(direction=='open'){
    slidedown('requirements_box');    
  }else{
    slideup('requirements_box');    
  }
  
}

function toggleDateClosed(direction) {
  
  if(direction=='open'){
    slidedown('date_closed_box');    
  }else{
    slideup('date_closed_box');    
  }
  
}

function toggleFinalistsBox(direction) {
  
  if(direction=='open'){
    slidedown('finalists_box');    
  }else{
    slideup('finalists_box');    
  }
  
}

function toggleShareUpload(type) {
  
  if (type=='sidebar') {
    
    document.getElementById('upload_type').value='sidebar'
  
    if(document.getElementById('share_upload_box').style.display == 'none'){
      slidedown('share_upload_box');    
    }else{
      slideup('share_upload_box');    
    }
  
  } else {
    
    document.getElementById('upload_type').value='contest'
    
    if(document.getElementById('contest_share_upload_box').style.display == 'none'){
      slidedown('contest_share_upload_box');    
    }else{
      slideup('contest_share_upload_box');    
    }
    
  }
  
}




