var fk_alerts = false,
    fk_currentTab = 0,
    fk_currentSubTab = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0],
    fk_pageTitleBase = '',
    fk_loadedTab = [],
    fk_savedForm = [],
    fk_loadingContent = new Element('div', {'class':'loading'}).update('Loading content. Please wait...'),
    fk_loadingEventElement = null,
    fk_results = 'show',
    fk_withForm = 0,
    fk_withRating = 'talent',
    fk_withSkills = 'current',
    fk_withMfSkills = 0,
    fk_ntPlayersShow = '',
    fk_specialString = null;

function fk_newPage(tab, pageTitle, loadTabs) {
  fk_currentTab = tab;
  fk_pageTitleBase = pageTitle;
  if (loadTabs) {
    $('main-content').update(fk_loadingContent);
    fk_updateData(loadTabs + '&tab=' + fk_currentTab + '&ajax=2', null);
  }
}

function fk_loadContent(pars, tab, reload) {
  if (typeof fk_liveViewer != 'undefined' && fk_liveViewer.get('running')) {
    clearTimeout(liveTimer);
    fk_liveViewer.get('running') = false;
  }
  var loaded = 0, mainContent = $('main-content');
  fk_loadedTab[fk_currentTab] = mainContent.innerHTML + ' ';
  fk_saveForms(fk_currentTab);

  if (fk_loadedTab[tab] && !reload) {
    loaded = 1;
    mainContent.update(fk_loadedTab[tab]);
    fk_onComplete();
  } else {
    if (reload && reload != 1) {
      pars += (pars.length > 0 ? '&' : '') + $(reload).serialize();
    }
    mainContent.update(fk_loadingContent);
    var myAjax = new Ajax.Updater('main-content', '?', {
      evalScripts: true,
      parameters: pars,
      onSuccess: function (transport, json) {
        if (fk_alerts) {
          // Used to be able to see the error output for this type of server request.
          alert('fk_loadContent() response: ' + transport.responseText); 
        }
        var str, head = ((json.js || json.css) ? $$("head")[0] : null);
        if (json.js) {
          json.js.each(function(file){
            if (!head.select('script[type=text/javascript][src]').invoke('readAttribute','src').include(file))
              head.insert({'bottom':new Element('script',{'type':'text/javascript','src':file})});
          });
        }
        if (json.css) {
          json.css.each(function(file){
            if (!head.select('script[type=text/javascript][href]').invoke('readAttribute','href').include(file))
              head.insert({'bottom':new Element('link',{'type':'text/css','rel':'stylesheet','href':file,'media':'screen'})});
          });
        }
        if (json.check_tables) {
          check_tables(json.check_tables);
        }
        if (json.upload_mr) {
          fk_upload_mr(json.upload_mr.step);
        }
        if (json.fixname) {
          //console.log('rad 71 table = ' + json.fixname.table + ' firstlast = ' + json.fixname.firstlast + ' step =' + json.fixname.step + ' name = ' + json.fixname.name + ' ids =' + json.fixname.ids);
          fk_fixname(json.fixname.table, json.fixname.firstlast, json.fixname.step, json.fixname.name, json.fixname.ids, json.fixname.i, json.fixname.j, json.fixname.k);
         //   fk_fixname(json.fixname.step);

        }
        
        if (json.money) {
          $('club-money').update(json.money.amount);
        }
        if (json.content) {
          $(json.content.id).update(json.content.html);
          if (json.content.reference && json.content.container) {
            $(json.content.container).style.height = $(json.content.reference).offsetHeight + 'px';
          }
        }
        if (json.redirect) {
          mainContent.update(fk_loadingContent);
          str = '?loc=' + json.redirect.loc;
          if (json.redirect.error) {
            str += '&error=' + json.redirect.error;
          }
          if (fk_alerts) {
            alert(str); 
          }
          window.location = str;
        }
        if (json.initiateLoadTabs) {
          str = json.initiateLoadTabs.loadTabs + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
          if (fk_alerts) {
            alert('fk_loadContent initiateLoadTabs');
            alert(str);
          }
          fk_updateData(str, null);
        }
        if (json.loadTab) {
          str = 'loc=' + json.loadTab.loc + '&ajax=1';
          if (fk_alerts) {
            alert('fk_loadContent loadTab');
            alert(str);
          }
          mainContent.update(fk_loadingContent);
          fk_loadContent(str, fk_currentTab, 1);
        }
        if (json.unloadTabs) {
          if (fk_alerts) {
            alert('fk_loadContent unloadTabs');
          }
          var tabs = json.unloadTabs.tabs,
              length = tabs.length,
              i;
          for (i = 0; i < length; i++) {
            fk_loadedTab[tabs[i]] = null;
            fk_savedForm[tabs[i]] = null;
          }
        }
        if (json.switchTab) {
          str = '?loc=' + json.switchTab.loc + '&ajax=1';
          if (fk_alerts) {
            alert(str);
          }
          fk_loadContent(str, json.switchTab.tab, 1);
          fk_loadedTab[json.switchTab.unload] = null;
          fk_savedForm[json.switchTab.unload] = null;
        }
        if (json.updateTabs) {
          if (fk_alerts) {
            alert('fk_loadContent updateTabs');
          }
          var length = json.updateTabs.tab.length,
              tab,
              link,
              i;
          for (i = 0; i < length; i++) {
            tab = json.updateTabs.tab[i];
            link = $(tab.id);
            link.href = tab.url;
            link.onclick = new Function(tab.action);
          }
          length = fk_loadedTab.length;
          for (i = 0; i < length; i++) {
            fk_loadedTab[i] = null;
          }
          length = fk_savedForm.length;
          for (i = 0; i < length; i++) {
            fk_savedForm[i] = null;
          }
        }
        if (json.specialString) {
          fk_specialString = json.specialString.str;
        }
      }
    });
  }
  $('main-tabs_0').blur();
  if (tab >= 0) {
    var tabs = $$('.tab-active'),
        length = tabs.length,
        e, i;
    for (i = 0; i < length; i++) {
      e = tabs[i];
      if (e.id != ('main-tabs_' + tab) && e.id != ('footer-tabs_' + tab)) {
        e.addClassName('tab-hidden').removeClassName('tab-active');
      }
    }
    $('main-tabs_' + tab).addClassName('tab-active').removeClassName('tab-hidden').down('a').blur();
    if ($('main-tabs_' + tab).hasClassName('hidden')) {
      $('main-tabs_' + tab).removeClassName('hidden');
    }
                                      
    $('footer-tabs_' + tab).addClassName('tab-active').removeClassName($('footer-tabs_' + tab), 'tab-hidden').down('a').blur();
    
    fk_currentTab = tab;
    if (loaded) {
      fk_updateForms(tab);
    }
    document.title = fk_pageTitleBase + $('main-tabs_' + tab + '_name').innerHTML;
    $('blue-nav').update(document.title.replace(/ - /g, " &raquo; "));
    if (fk_ntPlayersShow != '') {
      fk_changeNtPlayersTab(false);
    }
    if (typeof fk_liveViewer != 'undefined' && fk_liveViewer.get('tab') == fk_currentTab && !fk_liveViewer.get('running')) {
      fk_liveViewer.get('running') = true;
      divScroll.activeScroll(true);
      liveTimer = setTimeout("fk_livePlay()", liveTimeout * liveTimeoutSpeed);
    }
  }
}

function fk_updateData(pars, form) {
  if (form && form != 1) {
    pars += (pars.length > 0 ? '&' : '') + $(form).serialize();
  }

  var myAjax = new Ajax.Request('?', { 
    parameters: pars,
    onSuccess: function (transport, json) {
      if (fk_alerts) {
        alert('fk_updateData() response: ' + transport.responseText); // Used to be able to see the error output for this type of server request.
      }
      var str, head = ((json.js || json.css) ? $$("head")[0] : null);
      
      if (json.js) { // Javascript
        json.js.each(function(file){
          if (!head.select('script[type=text/javascript][src]').invoke('readAttribute','src').include(file)) {
            head.insert({'bottom': new Element('script', { type: 'text/javascript', src: file }) });
          }
        });
      }
      if (json.css) {
        json.css.each(function(file){
          if (!head.select('script[type=text/javascript][href]').invoke('readAttribute','href').include(file)) {
            head.insert({'bottom': new Element('link', { 'type': 'text/css', 'rel': 'stylesheet', 'href': file, 'media': 'screen' }) });
          }
        });
      }
      if (json.check_tables) {
        if (json.check_tables.status && check_tables.table[(check_tables.counter-1)]) {
          var status = json.check_tables.status;
          $('results').update('Database: <b>' + (check_tables.zold ? 'zold' : 'freekick') + ' (' + check_tables.counter + ' / ' + check_tables.total + ')</b><br /><br />' + 'running: <b>' + (check_tables.table[check_tables.counter] ? (status.fail ? 'failed' : check_tables.table[check_tables.counter]) : 'ALL DONE! (' + check_tables.counter + ')') + '</b>' + '<br /><br />' + 'Table: <b>' + status.table + '</b>' + (status.fail ? '(failed)' : '') + '<br />' + 'Op: <b>' + status.op + '</b><br />' + 'Type: <b>' + status.type + '</b><br />' + 'Text: <b>' + status.text + '</b><br />');
          if (!status.fail) {
            check_tables();
          }
        }
      }
      if (json.upload_mr) {
        var tmp;
        if (json.upload_mr.step == '') $('running').remove(); 
        $('results').innerHTML += '<br />Running database: <b>' + json.upload_mr.table + '</b> (step) ' + json.upload_mr.step;
        if (json.upload_mr.step)
          fk_upload_mr(json.upload_mr.step, json.upload_mr.zold_tables);
      }
      if (json.fixname) {
        //console.log('rad 240 table = ' + json.fixname.table + ' firstlast = ' + json.fixname.firstlast + ' step =' + json.fixname.step + ' name = ' + json.fixname.name + ' ids =' + json.fixname.ids);
        $('results').innerHTML += '<br />' + json.fixname.table;
        if (json.fixname.step) {
          fk_fixname(json.fixname.table, json.fixname.firstlast, json.fixname.step, json.fixname.name, json.fixname.ids, json.fixname.i, json.fixname.j, json.fixname.k);
          }
      }

      if (json.removeBookmark) {
        var table = $(json.removeBookmark.table);
        table.deleteRow($(json.removeBookmark.id).rowIndex);  
        //table.deleteRow($(json.removeBookmark.id + "_dots").rowIndex);  
      }
      /* remove this av use json.confirm instead? */
      if (json.bidConfirm) {
        if (json.bidConfirm.type == 'alert') {
          alert(json.bidConfirm.alert);
        } else {
          if (confirm(json.bidConfirm.confirm)) {
            str = '?loc=' + json.bidConfirm.loc + '&bidvalue=' + json.bidConfirm.bidValue + '&agent_avg=' + json.bidConfirm.agentAvg + '&agent_max=' + json.bidConfirm.agentMax + '&control_id=' + json.bidConfirm.controlId + '&ajax=1';
            if (fk_alerts) {
              alert(str); 
            }
            fk_loadContent(str, json.bidConfirm.tab, 1);
          }
        }
      }
      
      if (json.confirm) {
        if (json.confirm.alert) {
          alert(json.confirm.alert);
        } else {
          if (confirm(json.confirm.confirm)) {
            str = '?loc=' + json.confirm.loc;
                
            if (json.confirm.params) {
              $H(json.confirm.params).keys().each(function (key) {
                str += '&' + key + '=' + json.confirm.params[key];
              });
            }
            
            if (json.confirm.ajax) {
              str += '&ajax=' + json.confirm.ajax;
            }
            
              
            if (fk_alerts) {
              alert('confirm:\n\n' + str); 
            }
            
            
            switch (json.confirm.ajax) {
              case 1:
                fk_loadContent(str, json.confirm.tab, (json.confirm.form ? json.confirm.form : 1));
                break;
              case 2:
                fk_updateData(str, (json.confirm.form ? json.confirm.form : 1));
                break;
              default:
                $('main-content').update(fk_loadingContent);
                window.location = str;
                break;
            }
          } else {
            if (json.confirm.deny) {
              str = '?loc=' + json.confirm.deny.loc;
                  
              if (json.confirm.deny.params) {
                $H(json.confirm.deny.params).keys().each(function (key) {
                  str += '&' + key + '=' + json.confirm.deny.params[key];
                });
              }
              
              if (json.confirm.deny.ajax) {
                str += '&ajax=' + json.confirm.deny.ajax;
              }
              
              if (fk_alerts) {
                alert('confirm (deny):\n\n' + str); 
              }
              
              switch (json.confirm.deny.ajax) {
                case 1:
                  fk_loadContent(str, json.confirm.deny.tab, (json.confirm.form ? json.confirm.form : 1));
                  break;
                case 2:
                  /* naz: test adding form */
                  fk_updateData(str, (json.confirm.form ? json.confirm.form : 1));
                  break;
                default:
                  $('main-content').update(fk_loadingContent);
                  window.location = str;
                  break;
              }
            }
          }
        }
      }
      if (json.money) {
        $('club-money').update(json.money.amount);
      }
      if (json.content) {
        $(json.content.id).update(json.content.html);
        if (json.content.reference && json.content.container) {
          $(json.content.container).style.height = $(json.content.reference).offsetHeight + 'px';
        }
      }
      if (json.contentContent) {
        $(json.contentContent.id).update(transport.responseText);
        if (json.contentContent.reference && json.contentContent.container) {
          $(json.contentContent.container).style.height = $(json.contentContent.reference).offsetHeight + 'px';
        }
      }
      if (json.killLink) {
        var obj = $(json.killLink.id);
        obj.addClassName('dead-link');
        obj.onclick = function () { return false; };
        //obj.href = 'javascript:void(0);';
      }
      if (json.messages) {
        fk_msgAction(json.messages);
      }
      if (json.redirect) {
        $('main-content').update(fk_loadingContent);
        str = '?loc=' + json.redirect.loc;
        if (json.redirect.error) {
          str += '&error=' + json.redirect.error;
        }
        if (fk_alerts) {
          alert(str); 
        }
        window.location = str;
      }
      if (json.initiateLoadTabs) {
        str = json.initiateLoadTabs.loadTabs + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
        if (fk_alerts) {
          alert('fk_updateData initiateLoadTabs');
          alert(str);
        }
        $('main-content').update(fk_loadingContent);
        fk_updateData(str, null);
      }
      if (json.loadTabs != null) {
        if (fk_alerts) {
          alert('fk_updateData loadTabs');
        }
        var part = transport.responseText.split('{{{[[[loadTabs]]]}}}'),
            length = part.length,
            content = true,
            number;
        if (fk_alerts) {
          alert(part[0]); // Used to be able to see the error output for this type of server request.
        }
        for (i = 0; i < length; i++) {
          content = !content;
          if (content) {
            if (number == json.loadTabs) {
              $('main-content').update(part[i]);
              part[i].evalScripts();
            } else {
              fk_loadedTab[number] = part[i];
            }  
          } else {
            number = Number(part[i]);
          }
        }
      }
      if (json.unloadTabs) {
        if (fk_alerts) {
          alert('fk_updateData unloadTabs');
        }
        var tabs = json.unloadTabs.tabs,
            length = tabs.length,
            i;
        for (i = 0; i < length; i++) {
          fk_loadedTab[tabs[i]] = null;
          fk_savedForm[tabs[i]] = null;
        }
      }
      if (json.loadTab) {
        str = 'loc=' + json.loadTab.loc + '&ajax=1';
        if (fk_alerts) {
          alert('fk_updateData loadTab');
          alert(str);
        }
        $('main-content').update(fk_loadingContent);
        fk_loadContent(str, fk_currentTab, 1);
      }
      if (json.collapseExpand) {
        if (fk_alerts) {
          alert('fk_updateData collapseExpand');
        }
        var list = json.collapseExpand.list,
            length = list.length,
            i;
        for (i = 0; i < length; i++) {
          fk_collapse(list[i], json.collapseExpand.action);
        }
      }
      if (json.updateResultsToggle) {
        fk_results = json.updateResultsToggle.status;
        var button = $('results_toggle');
        button.update(json.updateResultsToggle.text);
        button.blur();
      }
      if (json.updateFormToggle) {
        fk_withForm = Number(json.updateFormToggle.status);
        var button = $('form_toggle');
        if (fk_withForm) {
          button.removeClassName('off');
          button.addClassName('on');
          button.update(json.updateFormToggle.text);
        } else {
          button.removeClassName('on');
          button.addClassName('off');
          button.update(json.updateFormToggle.text);
        }
        button.blur();
      }
      if (json.updateRatingToggle) {
        fk_withRating = json.updateRatingToggle.status;
        var button = $('rating_toggle');
        button.update(json.updateRatingToggle.text);
        button.blur();
      }
      if (json.updateSkillsToggle) {
        fk_withSkills = json.updateSkillsToggle.status;
        var button = $('skills_toggle');
        button.update(json.updateSkillsToggle.text);
        button.blur();
      }
      if (json.updateMfSkillsToggle) {
        fk_withMfSkills = Number(json.updateMfSkillsToggle.status);
        var button = $('mf_skills_toggle');
        if (fk_withMfSkills) {
          button.removeClassName('off');
          button.addClassName('on');
          button.update(json.updateMfSkillsToggle.text);
        } else {
          button.removeClassName('on');
          button.addClassName('off');
          button.update(json.updateMfSkillsToggle.text);
        }
        button.blur();
      }
      if (json.siteHelp) {
        Tip(json.siteHelp.content, TITLE, json.siteHelp.title + $('blue-nav').innerHTML, DELAY, 0, STICKY, true, CLOSEBTN, true, WIDTH, 350, FOLLOWSCROLL, true, FIX, [10, 10]);
      }
      if (json.disableSubmit) {
        fk_disableSubmit();
      }
      if (json.removePlayerFromLineup) {
        fk_removePlayerFromLineup(json.removePlayerFromLineup.player, json.removePlayerFromLineup.row, json.removePlayerFromLineup.activeChoiceClass);
        if (json.removePlayerFromLineup.status) {
          fk_updateLineupStatus(json.removePlayerFromLineup.status);
        }
      }
      if (json.addPlayerInLineup) {
        if (json.addPlayerInLineup.failed) {
          $('add_player').disabled = false;
          alert(json.addPlayerInLineup.failed);
        } else {
          fk_addPlayerInLineup(json.addPlayerInLineup.player);
          if (json.addPlayerInLineup.status) {
            fk_updateLineupStatus(json.addPlayerInLineup.status);
          }
        }
      }
      if (json.editPlayerInLineup) {
        if (json.editPlayerInLineup.failed) {
          $('edit_player').disabled = false;
          $('cancel_edit').disabled = false;
          alert(json.editPlayerInLineup.failed);
        } else {
          fk_editPlayerInLineup(json.editPlayerInLineup.player, json.editPlayerInLineup.gkTab);
          if (json.editPlayerInLineup.status) {
            fk_updateLineupStatus(json.editPlayerInLineup.status);
          }
        }
      }
      if (json.teamOrderInfo) {
        id = $('team-order-info');
        if (id.innerHTML == '') {
          id.update(fk_loadingContent);
        }
        id.update(json.teamOrderInfo.text);
      }
      if (json.changeSearchLeagues) {
        $('search-division').update(json.changeSearchLeagues.division);
        $('search-series').update(json.changeSearchLeagues.series);
        $('num-series').update(json.changeSearchLeagues.numSeries);
      }
      if (json.forumlogin) {
        $('username').value = json.forumlogin.username;
        $('password').value = json.forumlogin.password;
        $('forum-form').submit();
      }
      if (json.forumopen) {
        $('forum-form').submit();
      }
      if (json.phpbb3login) {
        $('username').value = json.phpbb3login.username;
        $('password').value = json.phpbb3login.password;
        $('forum-form').submit();
      }
      if (json.dutyInfo) {
        $('dutyInfo').update(json.dutyInfo.content);
      }
      if (json.reSearch) {
        if (fk_loadedTab[json.reSearch.search]) {
          $('main-content').update(fk_loadedTab[json.reSearch.search]);
          var tabs = $$('.tab-active'),
              length = tabs.length,
              e, i;
          for (i = 0; i < length; i++) {
            e = tabs[i];
            if (e.id != ('main-tabs_' + json.reSearch.search) && e.id != ('footer-tabs_' + json.reSearch.search)) {
              e.addClassName('tab-hidden').removeClassName('tab-active');
            }
          }
          $('main-tabs_' + json.reSearch.search).addClassName('tab-active').removeClassName('tab-hidden');
          $('footer-tabs_' + json.reSearch.search).addClassName('tab-active').removeClassName($('footer-tabs_' + json.reSearch.search), 'tab-hidden');
          fk_currentTab = json.reSearch.search;
          fk_updateForms(json.reSearch.search);
          fk_loadContent('loc=transfers.results&ajax=1', json.reSearch.results, json.reSearch.form);
        }
      }
      if (json.moveListItem) {
        var id = $(json.moveListItem.id), sibling, list, imgs;
        switch (json.moveListItem.dir) {
          case -1:
            sibling = id.previous();
            sibling.insert({before: id});
            break;
          case 1:
            sibling = id.next();
            sibling.insert({after: id});
            break;
        }
        
        list = id.up('ul').select('li[id]');
        [id, sibling].each(function(el){
            imgs = el.down('.move-arrow').descendants();
            imgs.each(function(img){
              if (el === list.first()) {
                if (img.hasClassName('move-arrow-up')) {
                  img.removeClassName('move-arrow-up').addClassName('move-arrow-up-disabled');
                }
              } else {
                if (img.hasClassName('move-arrow-up-disabled')) {
                  img.removeClassName('move-arrow-up-disabled').addClassName('move-arrow-up');
                }
              }
              
              if (el === list.last()) {
                if (img.hasClassName('move-arrow-down')) {
                  img.removeClassName('move-arrow-down').addClassName('move-arrow-down-disabled');
                }
              } else {
                if (img.hasClassName('move-arrow-down-disabled')) {
                  img.removeClassName('move-arrow-down-disabled').addClassName('move-arrow-down');
                }
              }
            });
        });
      }
      if (json.set_pieces) {
        $('add-instruction').hide();
        $('edit-instruction').show();
        $('options').setValue(json.set_pieces.option);
        fk_addInstructionCheck($('options'));

        if (json.set_pieces.modification)
          $('modification').enable().removeClassName('invisible').setValue(json.set_pieces.modification);
        else
          $('modification').disable().addClassName('invisible');
        
        if (json.set_pieces.side)
          $('side').enable().removeClassName('invisible').setValue(json.set_pieces.side);
        else
          $('side').disable().addClassName('invisible');
        
        $$('.add-instruction input[type]').each(function(el){
          if (el.readAttribute('name') === 'number')
            // update editnumber
            el.setValue(json.set_pieces.edit);
          if (el.readAttribute('type') === 'submit')
            // enable submit
            el.enable();
        });
      }
      if (json.specialString) {
        fk_specialString = json.specialString.str;
      }
    }
  });
}

document.observe("dom:loaded",function(){fk_onComplete();});
Ajax.Responders.register({
  onCreate: function () {
    $$('body')[0].addClassName('progress');
    // naz: need to add to trigger node aswell
    fk_loadingEventElement = Event.findElement(window.event);
    fk_loadingEventElement.addClassName('progress');
  },
  onComplete: function () { 
    fk_onComplete();
    $$('body')[0].removeClassName('progress');
    fk_loadingEventElement.removeClassName('progress');
    fk_loadingEventElement = null;
  },
  onFailure: function (json) {
    if (json.redirect) {
      $('main-content').update(fk_loadingContent);
      str = '?loc=' + json.redirect.loc + '&error=' + json.redirect.error;
      if (fk_alerts) {
        alert(str); 
      }
      window.location = str;
    }
    $$('body')[0].removeClassName('progress');
  }
});

function fk_wrap(wrapper) {
  var __method = this;
  return function() {
    var a = update([__method.bind(this)], arguments);
    return wrapper.apply(this, a);
  }
}


var fk_onComplete = function(){
  /* Placeholder */
  if (!Prototype.Browser.WebKit) {
    $$('input[placeholder]', 'textarea[placeholder]').each(function(el){
      new addPlaceholder(el);
    });
  }

  /* Toggle row (table, list)
    table:
      * not .no-highlight
      * not tr th
    list:
      * not .no-highlight
  */
  $$('table.highlightable tr:not(.no-highlight)', 'ul.highlightable li:not(.no-highlight)').each(function(el){
    if (el.firstDescendant() && el.firstDescendant().tagName.toLowerCase() === 'th')
      return;
    el.stopObserving('click').observe('click', function(ev){
      var clickedElement = ev.findElement();
      if (clickedElement.hasClassName('no-highlight') || clickedElement.up('.no-highlight'))
        /* check if clickedElement has class 'no-highlight' or if a parent has class 'no-highlight' */
        return; 
      
      /* toggles marked classes */
      //$$('#player_lineup tr').invoke('removeClassName', '(?:even|odd)-marked');
      
      if (el.hasClassName('odd')) 
        el.toggleClassName('odd-marked');
      else if (el.hasClassName('even'))
        el.toggleClassName('even-marked');
      else
        el.toggleClassName('marked');
    });
  });
};
/*
naz: used to extend the fk_onComplete function
     can be used from other files

Object.extend(fk_onComplete,(function(){
  console.log('loaded');
})(fk_onComplete));
*/
function fk_inputType(el) {
  var type = 0;
  if ('textarea' == el.tagName.toLowerCase())
    type = 5;
  else if ('select' == el.tagName.toLowerCase())
    type = 6;
  else if ('input' == el.tagName.toLowerCase())
    if ('text' == el.readAttribute('type').toLowerCase())
      type = 1;
    else if ('checkbox' == el.readAttribute('type').toLowerCase())
      type = 2;
    else if ('radio' == el.readAttribute('type').toLowerCase())
      type = 3;
    else if ('hidden' == el.readAttribute('type').toLowerCase())
      type = 4;
    else
      type = 0;
  return type;
}

function fk_saveForms(tab) {
  if (navigator.appName != "Microsoft Internet Explorer") {
    var arrForm = $('main-content').getElementsByTagName('form'),
        formLength = arrForm.length,
        arrElement,
        elementLength,
        forms = [],
        inputs,
        i, j, k;
    for (i = 0; i < formLength; i++) {
      inputs = [];
      arrElement = $(arrForm.item(i).id).getElements();
      elementLength = arrElement.length;
      for (j = 0; j < elementLength; j++) {
        switch (fk_inputType(arrElement[j])) {
        case 1:
          // text
        case 4:
          // hidden
        case 5:
          // textarea
          inputs[j] = $F(arrElement[j]);
          break;
        case 2:
          // checkbox
        case 3:
          // radio
          if ($F(arrElement[j]) == null) {
            inputs[j] = 0;
          } else {
            inputs[j] = 1;
          }
          break;
        case 6:
          // select
          if (arrElement[j].multiple) {
            inputs[j] = [];
            for (k = 0; k < arrElement[j].options.length; k++) {
              if (arrElement[j].options[k].selected) {
                inputs[j][k] = 1;
              } else  {
                inputs[j][k] = 0;
              }
            }
          } else{
            inputs[j] = arrElement[j].selectedIndex;
          }
          break;
        }
      }
      forms[i] = inputs;
    }
    fk_savedForm[tab] = forms;
  }
}

function fk_updateForms(tab) {
  if (navigator.appName != "Microsoft Internet Explorer" && fk_savedForm[tab]) {
    var arrForm = $('main-content').getElementsByTagName('form'),
        formLength = arrForm.length,
        arrElement,
        elementLength,
        i, j, k;
    for (i = 0; i < formLength; i++) {
      arrElement = $(arrForm.item(i).id).getElements();
      elementLength = arrElement.length;
      for (j = 0; j < elementLength; j++) {
        switch (fk_inputType(arrElement[j])) {
        case 1:
          // text
        case 4:
          // hidden
        case 5:
          // textarea
          arrElement[j].value = fk_savedForm[tab][i][j];
          break;
        case 2:
          // checkbox
        case 3:
          // radio
          if (fk_savedForm[tab][i][j]) {
            arrElement[j].checked = true;
          } else {
            arrElement[j].checked = false;
          }
          break;
        case 6:
          // select
          if (arrElement[j].multiple) {
            for (k = 0; k < arrElement[j].options.length; k++) {
              if (fk_savedForm[tab][i][j][k]) {
                arrElement[j].options[k].selected = true;
              } else {
                arrElement[j].options[k].selected = false;
              }
            }
          } else{
            arrElement[j].selectedIndex = fk_savedForm[tab][i][j];
          }
          break;
        }
      }
    }
  }
}

function fk_siteHelp(loc) {
  var str = 'loc=' + loc + '&site_help=' + fk_currentTab + '&ajax=2';
  if (fk_alerts) {
    alert(str); 
  }
  fk_updateData(str, null);
  return false;
}

function fk_toggleSetting(type, loc) {
  var str;
  switch (type) {
  case 'results':
    if (fk_specialString) {
      loc = fk_specialString;
    }
    str = 'loc=' + loc + '&toggle_results=' + (fk_results == 'hide' ? 'show' : 'hide') + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
    break;
  case 'form':
    str = 'loc=' + loc + '&toggle_form=' + (fk_withForm == 0 ? 1 : 0) + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
    break;
  case 'rating':
    str = 'loc=' + loc + '&toggle_rating=' + (fk_withRating == 'talent' ? 'current' : 'talent') + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
    break;
  case 'skills':
    str = 'loc=' + loc + '&toggle_skills=' + (fk_withSkills == 'potential' ? 'current' : 'potential') + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
    break;
  case 'mf_skills':
    str = 'loc=' + loc + '&toggle_mf_skills=' + (fk_withMfSkills == 0 ? 1 : 0) + '&tab=' + fk_currentTab + '&subtab=' + fk_currentSubTab[fk_currentTab] + '&ajax=2';
    break;
  }
  if (fk_alerts) {
    alert(str); 
  }
  fk_updateData(str, null);
  return false;
}

function fk_cleanNumber(elem) {
  var num = Math.abs(parseInt(elem.value));
  if (isNaN(num)) {
    elem.clear();
  } else {
    elem.value = num;
  }
}

function placeholder(el) { 
  new addPlaceholder($(el));
}

var addPlaceholder = Class.create({
  initialize: function(element, klass){
    this.klass = klass || 'placeholder';
    this.element = $(element);
    this.element.store('placeholder', this);
    
    this.placeholder = this.element.readAttribute('placeholder');

    this.element.observe('focus', this.focus.bind(this));
    this.element.observe('blur', this.blur.bind(this));
    this.element.removeClassName(this.klass);
    this.element.writeAttribute('autocomplete', 'off');
    
    this.reset();
  },
  focus: function(){
    if(this.placeholder && (this.element.value == this.placeholder) && this.active) {
      this.element.value = '';
      this.element.removeClassName(this.klass);
			this.active = false;
    }
  },
  
  blur: function(){
    if(this.placeholder && this.element.value == '') {
      this.element.addClassName(this.klass);
      this.element.value = this.placeholder;
      this.active = true;
    }
  },
  
  reset: function(){
    this.focus();
    this.blur();
    return this;
  }
});


Element.addMethods('TEXTAREA', {
  autogrow: function(element){
    element = $(element);
    
    this.autogrowOriginalHeight = this.autogrowOriginalHeight || null;
    this.autogrowShadow = this.autogrowShadow || null;
    
    this.grow = function(){
      if (this.autogrowShadow == null){
        this.autogrowShadow = new Element('div', {
          'class':'autogrow_shadow'
        }).setStyle({
          'fontSize'      : element.getStyle('fontSize'),
          'fontFamily'    : element.getStyle('fontFamily'),
          'lineHeight'    : element.getStyle('lineHeight'),
          'paddingTop'    : element.getStyle('paddingTop'),
          'paddingRight'  : element.getStyle('paddingRight'),
          'paddingBottom' : element.getStyle('paddingBottom'),
          'paddingLeft'   : element.getStyle('paddingLeft'),
          'width'         : Math.max(element.getWidth() - 8, 0)+'px'
        });
        $$('body')[0].insert({bottom: this.autogrowShadow});
      } 
      if (this.autogrowOriginalHeight == null){
        this.autogrowOriginalHeight = parseInt(element.getStyle('minHeight'), 10) || 
                                      parseInt(element.getStyle('height'), 10) || 
                                      element.getHeight();
      }
      // Strip HTML tags
      var html = element.value;
      html = html.gsub(/(<|>)/, '').gsub(/&/,'&amp;').gsub(/"/,'&quot;').gsub(/'/,'&#039;');
    
      // IE is different, as per usual
      if (Prototype.Browser.IE) {
        html = html.gsub(/\n/, '<BR />');
      } else {
        html = html.gsub(/\n/, '<br />');
      }
      
      if (this.autogrowShadow.innerHTML != html){
        this.autogrowShadow.update(html);
        
        if (element.getHeight() < this.autogrowShadow.getHeight() || this.autogrowShadow.getHeight() < element.getHeight()){
          element.setStyle({ height: (Math.max(this.autogrowOriginalHeight,(this.autogrowShadow.getHeight()+parseInt(this.autogrowShadow.getStyle('lineHeight'),10))))+'px' });
        }
      }
    }.bind(this);
    
    if (!element.hasClassName('autogrow')) {
      var grow = this.grow.bind(this);
      grow();
      element.addClassName('autogrow').observe('keydown', grow).observe('keyup', grow).observe('keypress', grow).observe('change', grow);
    }
    return;
  },
  autogrowShadow: null,
  autogrowOriginalHeight: null
});

function fk_addAutogrow(el) {
  return $(el).autogrow();
}

function fk_toggleActiveListItem(el) {
  el=$(el);
  if (el.tagName.toLowerCase() != 'li') el=el.up('li');
  el.addClassName('active').siblings().invoke('removeClassName', 'active');
}
function fk_toggleListItems(el) {
  el=$(el);
  var p=el.up();
  el.toggleClassName('list-icon-expanded').toggleClassName('list-icon-collapsed');
  el.next().toggleClassName('hidden');
  
  if (!el.next().hasClassName('hidden')) {
    p.siblings().each(function(e){
      e.down('a').removeClassName('list-icon-expanded').addClassName('list-icon-collapsed')
       .next('ul').addClassName('hidden')
       .down('li').removeClassName('hidden');
      
    });
  }
}

// new clock function by naz
var fk_clock = (function(){
  var clock = $('fk-clock'),
    timer = null,
    diff = null,
    start = function(y, m, d, h, min, sec){
      if (timer) {
        clearInterval(timer);
        timer = null;
      }
  //  diff = client - server
      diff = new Date() - new Date(y, m, d, h, min, sec); 
      timer = setInterval(update, 1000);
    },
    update = function(){
      var now = new Date(), h, m, s, value;
      now.setTime(now.getTime() - diff);
      h = now.getHours();
      m = now.getMinutes();
      s = now.getSeconds();
      
      if (h < 10) h = '0' + h;
      if (m < 10) m = '0' + m;
      if (s < 10) s = '0' + s;
      
      value = h + ':' + m + ':' + s;
      clock.update(value);
    }
    return {
      clock: clock,
      timer: timer,
      diff: diff,
      start: start,
      update: update
    }
})();
if (!fk_startclock) {
  var fk_startclock = fk_clock.start;
}
