function footer() {
   var user_agent = navigator.userAgent.toLowerCase();
   if (navigator.appName == "Microsoft Internet Explorer" && (user_agent.indexOf("msie 5")>-1 || user_agent.indexOf("msie 6")>-1)) {
      fixIE();
   }
}

function fixIE() {
   document.getElementById('left_column').style.height = document.getElementById('main').scrollHeight + 'px';
   document.getElementById('right_column').style.height = document.getElementById('main').scrollHeight + 'px';
}

function highlightImg(id, src) {
   document.getElementById(id).src = src;
}

function countChars(element, odd_wrap, odd, max_chars) {
   if (element.value.length > max_chars) {
      if (value) {
         element.value = value;
      } else {
         element.value = element.value.substring(0, max_chars);
      }
   } else {
      value = element.value;
      odd_wrap.style.display = 'inline';
      odd.innerHTML = max_chars-element.value.length;
   }
}

function selectTab(tabs, tab) {
   for (var i=0;i<tabs.length;i++) {
      document.getElementById('tab_' + tabs[i]).style.display = 'none';
      document.getElementById('a_' + tabs[i]).className = '';
   }
   document.getElementById('tab_' + tab).style.display = 'block';
   document.getElementById('a_' + tab).className = 'active';
   return true;
}

function showRateBars(element, bar) {
   labels = new Array('Schlecht', 'M&auml;&szlig;ig', 'Brauchbar', 'Gut', 'Genial!');
   for (i=bar+1;i<=5;i++) {
      document.getElementById(element + '_' + 'bar' + i).className = 'bar' + i;
   }
   for (i=1;i<=bar;i++) {
      document.getElementById(element + '_' + 'bar' + i).className = 'bar' + i + '_active';
   }
   switch (bar) {
      case 1:
         document.getElementById('rated_' + element).innerHTML = '<small>' + labels[0] + '</small>'; break;
      case 2:
         document.getElementById('rated_' + element).innerHTML = '<small>' + labels[1] + '</small>'; break;
      case 3:
         document.getElementById('rated_' + element).innerHTML = '<small>' + labels[2] + '</small>'; break;
      case 4:
         document.getElementById('rated_' + element).innerHTML = '<small>' + labels[3] + '</small>'; break;
      case 5:
         document.getElementById('rated_' + element).innerHTML = '<small>' + labels[4] + '</small>'; break;
   }
}

function showLogin() {
   document.getElementById('mask').style.display = 'block';
   document.getElementById('login').style.display = 'block';
   document.form_login.username.focus();
}

function hideLogin() {
   document.getElementById('mask').style.display = 'none';
   document.getElementById('login').style.display = 'none';
}

function selectHighlightType(type, types) {
   hideElements(types);
   var user_agent = navigator.userAgent.toLowerCase();
   if (navigator.appName == "Microsoft Internet Explorer" && (user_agent.indexOf("msie 5")>-1 || user_agent.indexOf("msie 6")>-1)) {
      document.getElementById(type).style.display = 'inline';
   } else {
      document.getElementById(type).style.display = 'table-row';
   }
}

function showDetailTopic(topic, topics) {
   hideElements(topics);
   showElement(topic);
}

function hideElement(element) {
   document.getElementById(element).style.display = 'none';
}

function showElement(element) {
   document.getElementById(element).style.display = 'inline';
}

function hideElements(elements) {
   for (i=0;i<elements.length;i++) {
      document.getElementById(elements[i]).style.display = 'none';
   }
}

function slideBox(slide, element, gfx) {
   if (!slide || slide == 'up') {
      new Effect.SlideUp(element, {duration: 0.5});
      gfx.src = '/gfx/boxes/box_open.jpg';
      slide = 'down';
   } else if (slide == 'down') {
      new Effect.SlideDown(element, {duration: 0.5});
      gfx.src = '/gfx/boxes/box_close.jpg';
      slide = 'up';
   }
   return slide;
}

function slideBattleComments(slide, element, gfx) {
   if (!slide || slide == 'up') {
      new Effect.SlideUp(element, {duration: 0.5});
      gfx.src = '/gfx/battles/comments_open.jpg';
      slide = 'down';
   } else if (slide == 'down') {
      new Effect.SlideDown(element, {duration: 0.5});
      gfx.src = '/gfx/battles/comments_close.jpg';
      slide = 'up';
   }
   return slide;
}

function slideLeftColumn(slide, gfx) {
   if (!slide || slide == 'left') {
      percent = (100 / document.getElementById('inner_column').scrollWidth) * (document.getElementById('inner_column').scrollWidth + 185);
      new Effect.Parallel([
         new Effect.Move(document.getElementById('left_column'), {x: -185, y: -0, duration: 0.5}),
         new Effect.Move(document.getElementById('inner_column'), {x: -185, y: -0, duration: 0.5}),
         new Effect.Scale('inner_column', percent, {scaleY: false, scaleContent: false, duration: 0.5})
      ], {duration: 0.5});
      gfx.src = '/gfx/arrow_left_open.jpg';
      slide = 'right';
   } else if (slide == 'right') {
      percent = (100 / document.getElementById('inner_column').scrollWidth) * (document.getElementById('inner_column').scrollWidth - 185);
      new Effect.Parallel([
         new Effect.Scale('inner_column', percent, {scaleY: false, scaleContent: false, duration: 0.5}),
         new Effect.Move(document.getElementById('left_column'), {x: +185, y: -0, duration: 0.5}),
         new Effect.Move(document.getElementById('inner_column'), {x: +185, y: -0, duration: 0.5})
      ], {duration: 0.5});
      gfx.src = '/gfx/arrow_left_close.jpg';
      slide = 'left';
   }
   return slide;
}

function slideRightColumn(slide, gfx) {
   if (!slide || slide == 'right') {
      percent = (100 / document.getElementById('inner_column').scrollWidth) * (document.getElementById('inner_column').scrollWidth + 185);
      document.body.style.overflow = 'hidden';
      new Effect.Parallel([
         new Effect.Move(document.getElementById('right_column'), {x: +185, y: -0, duration: 0.5}),
         new Effect.Scale('inner_column', percent, {scaleY: false, scaleContent: false, duration: 0.5})
      ], {duration: 0.5, afterFinish: function() {
         document.getElementById('right_column').style.display = 'none';
         document.body.style.overflow = 'auto';
      }});
      gfx.src = '/gfx/arrow_right_open.jpg';
      slide = 'left';
   } else if (slide == 'left') {
      document.body.style.overflow = 'hidden';
      document.getElementById('right_column').style.display = 'block';
      percent = (100 / document.getElementById('inner_column').scrollWidth) * (document.getElementById('inner_column').scrollWidth - 185);
      new Effect.Parallel([
         new Effect.Scale('inner_column', percent, {scaleY: false, scaleContent: false, duration: 0.5}),
         new Effect.Move(document.getElementById('right_column'), {x: -185, y: -0, duration: 0.5})
      ], {duration: 0.5, afterFinish: function() {
         document.body.style.overflow = 'auto';
      }});
      gfx.src = '/gfx/arrow_right_close.jpg';
      slide = 'right';
   }
   return slide;
}

function slideContentDown(box, scale_box, element, slide, max_slides) {
   if (slide != max_slides) {
      /* tmp */ //if (scale_box) document.getElementById(box).style.height = document.getElementById(element + (slide+1)).offsetHeight-20 + 'px';
      document.getElementById(element + '_page').innerHTML = slide+1;
      element = element + slide;
      Effect.SlideUp(element, {duration: 0.5});
      return slide+1;
   } else {
      return slide;
   }
}

function slideContentUp(box, scale_box, element, slide) {
   if (slide != 1) {
      document.getElementById(element + '_page').innerHTML = slide-1;
      slide = slide-1;
      element = element + slide;
      Effect.SlideDown(element, {duration: 0.5, afterFinish: function() {
         /* tmp */ //if (scale_box) document.getElementById(box).style.height = document.getElementById(element).offsetHeight-20 + 'px';
      }});
      return slide;
   } else {
      return 1;
   }
}

function shakeElement(element) {
   new Effect.Move(element, { x: -30, y: 0, duration: 0.06, afterFinishInternal: function(effect) {
      new Effect.Move(element, { x: 30, y: 0, duration: 0.06, afterFinishInternal: function(effect) {
         new Effect.Move(element, { x: -30, y: 0, duration: 0.09, afterFinishInternal: function(effect) {
            new Effect.Move(element, { x: 30, y: 0, duration: 0.09 });
         }});
      }});
   }});
}

function slideLeft(element, x, y, duration, count, slide_pos) {
   
   if ((count/4)==slide_pos) {
      
      new Effect.Move(element, { x: -x, y: y, duration: duration, afterFinish: function() {
         //setTimeout(function() { new Effect.Shake(element); }, 100);
      }});
      
   } else {
      new Effect.Move(element, { x: -x, y: y, duration: duration });
   }
   
}

function slideRight(element, x, y, duration) {
   new Effect.Move(element, { x: x, y: y, duration: duration });
}

function checkUsername(username, check) {
   new Ajax.Request('/ajax.html?action=check_username', {
      method: 'post',
      parameters: {username: username},
      onLoading: function() {
         check.style.display = 'inline';
      },
      onSuccess: function(transport) {
         check.src = transport.responseText;
      }
   });
}

function rateWebsite(uid, website_id, detail, rating) {
   for (i=1;i<rating;i++) {
      document.getElementById(detail + '_' + 'bar' + i).className = 'bar' + i + '_active';
   }
   if (rating == 1) {
      document.getElementById(detail + '_' + 'bar' + rating).className = 'bar_active_start';
   } else {
      document.getElementById(detail + '_' + 'bar' + rating).className = 'bar_active';
   }
   document.getElementsByName('rate_' + detail)[0].value = rating;
   for (i=1;i<=5;i++) {
      document.getElementById(detail + '_bar' + i).onmouseover = function() { void(0) };
      document.getElementById(detail + '_bar' + i).onmouseout = function() { void(0) };
      document.getElementById(detail + '_bar' + i).onclick = function() { void(0) };
   }
   rate_count++;
   if (rate_count > 0) {
      document.getElementById('rate_reset').style.display = 'inline';
   }
   if (rate_count == 4) {
      document.getElementById('rate_ok').disabled = '';
   }
}

function autocompleteTag(element, choices, type) {
   new Ajax.Autocompleter(element, choices, '/ajax.html?action=autocomplete_tags&type=' + type, {paramName: 'tag', tokens: ',', frequency: 0.1, minChars: 1});
}

function suggestWebsites(element, choices, type) {
   new Ajax.Autocompleter(element, choices, '/ajax.html?action=suggest_websites&type=' + type, {paramName: 'website', frequency: 0.1, minChars: 2, updateElement: function(item) {
      
      item = item.innerHTML.replace(/ _extended=\"true\"/gi, '');
      item = item.replace(/;/, '');
      
      if (navigator.appName == 'Microsoft Internet Explorer') {
         
         full_url = item.split('<INPUT type=hidden value=');
         full_url = full_url[1].split(' name=url>');
         item = item.replace(/<INPUT type=hidden value=(.*) name=url>/gi, '');
         document.getElementById('q_suggest').value = full_url[0];
         
         full_title = item.split('<INPUT type=hidden value=');
         full_title = full_title[1].split(' name=title>');
         document.getElementById('q_suggests').value = full_title[0].replace(/\"/gi, '');
         
      } else {
         
         full_url = item.split('<input name=\"url\" value=\"');
         full_url = full_url[1].split('\" type=\"hidden\">');
         document.getElementById('q_suggest').value = full_url[0];
         
         full_title = item.split('<input name=\"title\" value=\"');
         full_title = full_title[1].split('\" type=\"hidden\">');
         document.getElementById('q_suggests').value = full_title[0];
         
      }
      
      document.forms.form_rankings.submit();
      
   }});
}

function suggestUsers(element, choices) {
   new Ajax.Autocompleter(element, choices, '/ajax.html?action=suggest_users', {paramName: 'user', frequency: 0.1, minChars: 2, updateElement: function(item) {
      item = item.innerHTML.replace(/ _extended=\"true\"/gi, '').toLowerCase();
      parts = item.split('<br>');
      username = parts[0].split('<strong>');
      username = username[1].split('</strong>');
      document.getElementById(element).value = username[0];
      document.forms.form_rankings.submit();
   }});
}