function checkUncheckAll(boxController, which) {
    for (var i = 0; i < which.elements.length; i++) {
        var e = which.elements[i];
        e.checked = boxController.checked;
    }
}

function getStyleBySelector( selector )
   {
       var sheetList = document.styleSheets;
       var ruleList;
       var i, j;

       /*document.themeform.debug.value = "";
       document.themeform.debug.value += sheetList.length;*/

       /* look through stylesheets in reverse order that
          they appear in the document */
       var rv = null;
       for (j=sheetList.length-1; j >= 0; j--)
       {
         var styleSheet = sheetList[j];
         var ruleList = (typeof styleSheet.cssRules != "undefined") ? styleSheet.cssRules : ((typeof styleSheet.rules != "undefined") ? styleSheet.rules : null);
         if (ruleList) {
           for (var i = 0; i < ruleList.length; i++) {
             /*document.themeform.debug.value += " '";
             document.themeform.debug.value += ruleList[i].selectorText.toLowerCase();
             document.themeform.debug.value += "'";*/
             //debug(ruleList[i].selectorText.toLowerCase());
             if (ruleList[i].selectorText.toLowerCase() == selector.toLowerCase()) {
               var style = ruleList[i].style;
               if (rv == null) {
                 rv = style;
                 return rv;
               }
             }
           }
         }
       }
       return rv;
   }

function changeCssClass(obj, className, classProperty, preview)
{
  var target = getStyleBySelector(className);
  var value = obj.value;
  preview.style.backgroundColor = value;
  switch (classProperty.toLowerCase()) {
        case "color": target.color = value; break;
        case "background-color": target.backgroundColor = value; break;
        case "border-color": target.borderColor = value; break;
  }

  return false;
}

//6 '#dhtmlgoodies_colorpicker' '#dhtmlgoodies_colorpicker .colorpicker_toprow' '#dhtmlgoodies_colorpicker .colorpicker_statusbar' '#dhtmlgoodies_colorpicker .colorsquare' '.colorpickertab_inactive, .colorpickertab_active' '.colorpickertab_inactive span' '.colorpickertab_active span' '.colorpickertab_inactive span, .colorpickertab_active span' '.colorpickertab_inactive img, .colorpickertab_active img' '.colorpickerclosebutton' '#colorpicker_statusbartxt' 'form' '.form_widget_amount_slider' '.colorsliderlabel' '.colorslider' '.colorinput' '.colorpreviewdiv' '.colorcodediv' 'input, textarea, select' 'textarea' 'input[type="checkbox"], input[type="radio"]' 'input[type="submit"], input[type="button"], .submit-row input' 'input[type="submit"]:active, input[type="button"]:active' 'input.default[type="submit"], .submit-row input.default' 'input.default[type="submit"]:active' '.submit-row' '.submit-row input' '.submit-row .float-left' '.form-row' 'html > body .form-row' '.form-row:after' '.form-row img, .form-row input' 'form .form-row p' 'form h4' 'label' 'label.inline' '.required label, label.required' 'form ul.radiolist li' 'form ul.radiolist label' 'form ul.inline' 'form ul.inline li' '.aligned label' '.aligned label.inline' '.colms .aligned .vlargetextfield, .colms .aligned .vxmllargetextfield' 'form .aligned p, form .aligned ul' 'form .aligned table p' 'form .aligned p.help' '.aligned .vcheckboxlabel' '.colm .aligned .vlargetextfield, colm .aligned .vxmllargetextfield' '.checkbox-row p.help' '.wide label' 'form .wide p' 'form .wide p.help' '.colm fieldset.wide .vlargetextfield, .colm fieldset.wide .vxmllargetextfield' 'fieldset.collapsed *' 'fieldset.collapsed h2, fieldset.collapsed' 'fieldset.collapsed .collapse-toggle' 'fieldset.collapse h2 a.collapse-toggle' 'fieldset.collapse h2 a.collapse-toggle:hover' '.hidden' 'ul.messagelist' 'ul.messagelist li' '.errornote' 'ul.errorlist' '.errorlist li' 'td ul.errorlist' 'td ul.errorlist li' '.error' '.error input, .error select' 'ul.changelist' '.changelist li' '.changes' '.changes input, .changes select' 'body' 'a, a:link, a:visited' 'a:hover' '.topbar' '.topbar a, .topbar a:link, .topbar a:visited' '.mainlogo' '.main' '.centercolumn' '.logobar' '.navleft .menuitem' '.menuitem.selected' '.menuitem.expand' '.navleft a:link, .navleft a:visited' '.navleft a:hover' '.new' '.old' '.serverrow a:hover' 'tr.running' 'tr.notrunning' '.logmsgs' '.profiledata .label' '.profiledata .data' '.playerstats tr' '.numgames' '.win' '.middle' '.loss' '.aban' '.stathead' '.statfoot' 'img.cardback' '.choice label' '.votes' '.copyright' '.box' '.box .header' '.box .body' '.box .bottom' '.messagelist tr' '.messagelist tr.unread' '.messagelist td' '.messagelist .sender' '.messagelist .check' '.messagelistcontrol' '.privatemessage .subject' '.privatemessage .message' '.message .quote' '.message .msgerror' '.gamestats tr' '.gamestats .totalrow' 'table.sitestats' '.sitestats tr' '.sitestats td, .sitestats th' '.sitestats .totalrow' '.edittheme' '.edittheme td' 'body' 'tr, td' '.topbar' '.wrapper' '.mainlogo' '.mainlogo .img' '.main' '.leftcolumn' '.centercolumn' '.rightcolumn' '.logobar' '.logobar td' '.navleft div.menuitem' '.navleft .submenu' '.navleft a:link, .navleft a:visited, .navleft a:hover' '.news' '.new' '.old' '.endofpost' '.post' '.serverlist' '.serverrow a:link, .serverrow a:visited, .serverrow a:hover' 'table.statusform' 'td.name' '.logmsgs' '.profiledata' '.profiledata td' '.profiledata .label' '.profiledata .data' 'table.playerstats' '.numgames, .win, .middle, .loss, .aban, .statfoot' '.stathead, .statfoot' 'img.cardback' '.choices' '.votes' '.copyright' '.box' '.box input' '.box .header' '.box .body' '.box .bottom' 'form.avatars' 'input.avatar' 'table.messagelist' '.messagelist tr.unread' '.messagelist td' '.messagelist td a' '.messagelist .sender' '.messagelist .subject' '.messagelist .check' '.messagelistcontrol' '.privatemessage' '.privatemessage .subject' '.privatemessage .message' '.privatemessage .sender' '.message .quotelabel' '.message .quote' 'table.gamestats' '.gamestats td' '.gamestats .totalrow' '.gamestats .totalrow td' 'table.sitestats' '.sitestats td, .sitestats th' '.sitestats .totalrow' '.sitestats .totalrow td' '.edittheme' '.edittheme td' 'body' 'a, a:link, a:visited' 'a:hover' 'img' 'tr, td'


// Show the debug window
function showDebug() {
  window.top.debugWindow =
      window.open("",
                  "Debug",
                  "left=0,top=0,width=300,height=700,scrollbars=yes,"
                  +"status=yes,resizable=yes");
  window.top.debugWindow.opener = self;
  // open the document for writing
  window.top.debugWindow.document.open();
  window.top.debugWindow.document.write(
      "<HTML><HEAD><TITLE>Debug Window</TITLE></HEAD><BODY><PRE>\n");
}

// If the debug window exists, then write to it
function debug(text) {
  if (window.top.debugWindow && !window.top.debugWindow.closed) {
    window.top.debugWindow.document.write(text+"\n");
  }
}

function hideAllThemeSections()
{
  var themeSections = new Array('main', 'topbar', 'menu', 'box', 'message', 'player', 'forum', 'forum.thread', 'forum.post', 'bestlist');
  for (var i = 0; i < themeSections.length; ++i) {
    document.getElementById('section_' + themeSections[i]).style.display = 'none';
  }
}

function showThemeSection(sectionName)
{
  var sectionObj = document.getElementById('section_' + sectionName);
  if (sectionObj.style.display == 'block') {
    sectionObj.style.display = 'none';
  }
  else {
    hideAllThemeSections();
    sectionObj.style.display = 'block';
  }
}

function grabElement(whichElement)
{
  var element;
  if (document.getElementById) {
    element = document.getElementById(whichElement);
  }
  else if (document.all) {
    element = document.all[whichElement];
  }
  else if (document.layers) {
    element = document.layers[whichElement];
  }

  return element;
}

function toggleElement(whichElement)
{
  var style = grabElement(whichElement).style;

  style.display = (style.display == 'block') ? 'none' : 'block';
}

function togglePlusMinus(element)
{
  var lastSlashInd = element.src.lastIndexOf('/');
  var path = element.src.substring(0, lastSlashInd + 1);
  var name = element.src.substring(lastSlashInd + 1);
  element.src = path + ((name == 'plus.png') ? 'minus.png' : 'plus.png');
}
