var debug = false;
var mh_autocompleter = null;

function mh_displaySearchAdvancedMembers(e) {
	Event.stop(e);
	element = $('divfootpassionsearch');
	element2 = $('rechercherMembres');
	eltfrm = $('frmFootPassion');
	
	if (element.hasClassName('hide')) {
		element.removeClassName('hide');
		new Effect.ScrollTo(eltfrm, {duration: 0.5});
	} else {
		element.addClassName('hide');
		new Effect.ScrollTo(element2, {duration: 0.5});
	}
	
} // mh_displaySearchAdvancedMembers

function mh_genererStats(e) {
	var elt = Event.element(e);
	Event.stop(e);
  elt.request({
      onCreate : function(transport) {
        /*img = Builder.node('img', {src:'/resources/images/ajax-loader-small.gif',id:'loader'});
        $('messageStat').appendChild(img);
        if ($('messageStat').hasClassName('hide')) $('messageStat').removeClassName('hide');*/
	  	$('loader').show();
      },
      onComplete: function(transport){
        $('loader').hide();
        var result = transport.responseText;
        $('resultatsStats').innerHTML = result;
      }
  });
} // mh_genererStats

function mh_displayNouvelleCompetition(e) {
	var elt = Event.element(e);
	Event.stop(e);
	
	new Ajax.Request('/matchs/competition/nouvelle', {
		method: 'post',
		evalScripts: true,
    onCreate: function(transport) {
      img = Builder.node('img', {src:'/resources/images/ajax-loader-small.gif',id:'loader'});
      $('resultats').innerHTML = '';
      $('resultats').appendChild(img);
      if ($('resultats').hasClassName('hide')) $('messageStat').removeClassName('hide');
      if (!$('loader').visible()) $('loader').show();
    },
    onSuccess: function(transport) {
      $('loader').hide();
      $('resultats').innerHTML = transport.responseText;
      $$('#mesCompetitions a').each(function(element){
        if (element.hasClassName('active'))
          element.removeClassName('active');
      });
      $('onglet_nouvelle').addClassName('active');
      if ($('frm_competition')) {
          new Event.observe($('frm_competition'), 'submit', nfa_updateCompetition);
      }
      observe_onglets_compet();
      if ($('jsc_redim_tampon')) {
          sth_redimension();
      }
    }
	});
} // mh_displayNouvelleCompetition

function mh_displaySearchCompetition(e) {
	var elt = Event.element(e);
	Event.stop(e);
	
	new Ajax.Request('/matchs/competition/search',{
		method: 'post',
		onCreate: function(transport) {
      img = Builder.node('img', {src:'/resources/images/ajax-loader-small.gif',id:'loader'});
      $('resultats').innerHTML = '';
      $('resultats').appendChild(img);
      if ($('resultats').hasClassName('hide')) $('messageStat').removeClassName('hide');
      if (!$('loader').visible()) $('loader').show();
		},
		onSuccess: function(transport) {
			$('loader').hide();
			$('resultats').innerHTML = transport.responseText;
			$$('#mesCompetitions a').each(function(element){
				if (element.hasClassName('active'))
				  element.removeClassName('active');
			});
			$('onglet_search').addClassName('active');
			if ($('frm_chercher_competition')) {
                Event.observe($('frm_chercher_competition'), 'submit', mh_displayResultsSearchCompetition);
            }
            if ($('jsc_redim_tampon')) {
              sth_redimension();
            }
		}
	});
} // mh_displaySearchCompetition

function mh_displayResultsSearchCompetition(e) {
  var elt = Event.element(e);
  Event.stop(e);
  
  elt.request({
    method: 'post',
    parameters: 'action=chercherCompetition&',
    onCreate: function(transport) {
      img = Builder.node('img', {src:'/resources/images/ajax-loader.gif', id:'loader'});
      $('resultats').innerHTML = '';
      $('resultats').appendChild(img);
    },
    onSuccess: function(transport) {
      var result = transport.responseText;
      $('loader').hide();
      $('resultats').innerHTML = result;
      if ($('newSearch'))
        Event.observe($('newSearch'), 'click', mh_displaySearchCompetition);
      if ($('jsc_redim_tampon')) {
          sth_redimension();
      }
    }
  });
} // mh_displayResultsSearchCompetition

function mh_selectEquipeRaccourcis(e) {
  var elt = Event.element(e);
  Event.stop(e);

  new Ajax.Request($('choisirEquipeRaccourcis').readAttribute('action'), {
  	method: 'post',
  	parameters: 'equipeSelectRaccourcis='+$F('equipeSelectRaccourcis'),
    onCreate: function(transport) {
      img = Builder.node('img', {src:'/resources/images/ajax_green.gif', id:'loader'});
      $('resultatsEquipe').innerHTML = '';
      $('resultatsEquipe').appendChild(img);
    },
    onSuccess: function(transport) {
      var result = transport.responseText;
      $('loader').hide();
      $('resultatsEquipe').innerHTML = '';
      $('resultatsEquipe').innerHTML = result;
      if ($('addMatch')) {
      	new Event.observe($('addMatch'), 'click', mh_ajouterNouveauMatch);
      }
    }
  });

}// mh_selectEquipeRaccourcis

function mh_ajouterNouveauMatch(e) {
	Event.stop(e);
	window.location.href = '/raccourcis/creermatch/ajoutermatch';
}// mh_ajouterNouveauMatch

function mh_updateElement_equipe(item) {
    // L'equipe n'existe pas
    if (0 == item.id) {
          // recuperation du nom de l'equipe
        var teamName = $('autocomplete').value;
        // Creation du club et de l'equipe
        new Ajax.Request('/raccourcis/creermatch/createteam', {
            method: 'post',
            parameters: 'team=' + teamName,
            onCreate: function(transport){
                img = Builder.node('img', {
                    src: '/resources/images/ajax_green.gif',
                    id: 'loader'
                });
                $('indicator1').innerHTML = '';
                $('indicator1').appendChild(img);
            },
            onSuccess: function(transport){
                $('loader').hide();
                var result = transport.responseText.evalJSON();
                if (0 != result.id) {
                    mh_createUlAdversaire(result);
                } else {
                    alert('une erreur est intervenue dans la creation de l\'equipe');
                }
            }
        });
    }
    else {
        mh_createUlAdversaire(item);
        $$('#listeEquipe a').each(function(element){
            element.observe('click', mh_removeEquipeSelectionnee);
        });
    }
    $('autocomplete').value = '';
}// mh_updateElement_equipe

function mh_createUlAdversaire(item) {
  if(!$('listeEquipe')) {
    ul = Builder.node('ul', {id:'listeEquipe', 'class':'border-bottom-green padding-left-1 margin-bottom-1'});
    $('containerEquipe').appendChild(ul);
  }
  if ($('listeEquipe') && $('listeEquipe').descendants()) {
    var descendants = $('listeEquipe').descendants();
    descendants.each(function(element) {
      if ('LI' == element.nodeName) {
        $('listeEquipe').removeChild(element);
      }
    });
  }
  if(!$('equipe') ) {
    input = Builder.node('input', {'type':'hidden', id:'adversaire', 'name':'adversaire', 'value':item.id});
    span_1 = Builder.node('span', {'class': 'column span-9'}, item.innerHTML);
    span_2 = Builder.node('span', {'class': 'column last span-4 align-right'}, Builder.node('a',{href:'#', 'class': 'erase', 'rel':item.id, 'title':'Enlever cette equipe'}, Builder.node('img',{src:'/resources/images/pictos/trash.gif', 'alt':'Enlever cette �quipe'})));
    br = Builder.node('br',{'class': 'clear'});
    li = Builder.node('li', {id:'equipe-'+item.id, 'class': 'border-bottom'},[input, span_1, span_2, br]);
    $('listeEquipe').appendChild(li);
  }
}// mh_createUlAdversaire

function mh_removeEquipeSelectionnee(e) {
	Event.stop(e);
  $('containerEquipe').removeChild($('listeEquipe'));
}// mh_removeEquipeSelectionnee

function mh_changeSelectCompetition(e) {
  var idCompetition = $('competition').options[$('competition').selectedIndex].value;
  if (debug) console.log('idCompetition: '+idCompetition);

  $('autocomplete').value = '';
}// mh_changeSelectCompetition

function mh_checkAllCheckbox(e) {
	if ($$('.checkSelect')) {
		$$('.checkSelect').each(function(element) {
			//alert('check('+element.id+'): '+element.readAttribute('CHECKED'));
			if (true == element.checked) {
				element.checked = false;
			} else if (!element.hasAttribute('disabled')) {
				element.checked = true;
			}
		});
	}
}// mh_checkAllCheckbox

function mh_resetFormAjoutMatch(e) {
	Event.stop(e);
	new Ajax.Request('/raccourcis/creermatch/annuler',{
		method: 'post',
		parameters: '',
		onCreate: function(transport) {
      img = Builder.node('img', {src:'/resources/images/ajax_green.gif', id:'loader'});
      $('resultatsEquipe').innerHTML = '';
      $('resultatsEquipe').appendChild(img);
		},
		onSuccess: function(transport) {
			var result = transport.responseText.evalJSON();
      $('loader').hide();
      window.location.href = result.url;
		}
	});
}// mh_resetFormAjoutMatch

function mh_optionsLogistique(e) {
	elt = Event.element(e);
  Event.stop(e);
	
	Modalbox.show(this.href, {afterLoad: setObserversOfLogistique, title: elt.innerHTML, overlayClose: false});
}// mh_optionsLogistique

function setObserversOfLogistique() {
	if ($('mb_heureDepart')) { 
		$('mb_heureDepart').focus(); 
	}
	
	if ($('btnAnnuler')) {
		new Event.observe($('btnAnnuler'), 'click', function(e) { 
			Event.stop(e); 
			Modalbox.hide();
		});
	}
	if ($('btnSubmit')) {
		new Event.observe($('btnSubmit'), 'click', function(e) {
			Event.stop(e);
			// Verifier l'exactitude des informations fournies
			if ($('formEvent')) {
				$('heureDepart').value = $('mb_heureDepart').value;
				$('lieuDepart').value = $('mb_lieuDepart').value;
				$('heureArrivee').value = $('mb_heureArrivee').value;
				$('lieuArrivee').value = $('mb_lieuArrivee').value;
				$('infosPratiques').update($('mb_infosPratiques').value);
				if (debug) {
					console.log('infosPratiques.innerHTML: '+$('mb_infosPratiques').innerHTML);
					console.log('infosPratiques.value: '+$('mb_infosPratiques').value);
					console.log('infosPratiques.inspect: '+$('mb_infosPratiques').inspect());
				}
			}
			Modalbox.hide();
		});
	}
}

function mh_changeParamsAutocompleter(element, entry) {
  var idCompetition = $('competition').options[$('competition').selectedIndex].value;
  
  return entry + '&' + encodeURIComponent('competition') + '=' + encodeURIComponent(idCompetition);
}// mh_changeParamsAutocompleter

/*

        Testing the use of an Object method as a callback parameter.
        The tables className has been given the class "rowselectcallback-myObject-testMethod"
        which is translated to the Object reference "myObject.testMethod"

*/
var myObject = {
        testMethod:function(details) {
                var total;
                // We are removing a row, always enable this action
                if(details.remove) {
                        total = details.rows.length ? details.rows.length - 1 : 0;
                // We are adding a row
                } else {
                        // Only if no TH tags located
                        if(details.row.getElementsByTagName("th").length != 0) {
                                // return false to tell the script not to select this row
                                return false;
                        };
                        total = details.rows.length + 1;
                };
                $('selectResults').innerHTML = total + " row" + (total != 1 ? "s" : "") + " currently selected";
                // Return TRUE or FALSE to tell the script to enable the ADD/REMOVE action
                return true;
        }
};

function sortAlphaNumeric(a, b){
        // Get the previously prepared array
        var aa = a[fdTableSort.pos];
        var bb = b[fdTableSort.pos];

        // If they are equal then return 0
        if(aa[0] == bb[0] && aa[1] == bb[1]) { return 0; };

        // Check numeric parts if not equal
        if(aa[0] != bb[0]) {
                if(aa[0] != "" && bb[0] != "") { return aa[0] - bb[0]; };
                if(aa[0] == "" && bb[0] != "") { return -1; };
                return 1;
        };
        
        // Check alpha parts if numeric parts equal
        if(aa[1] == bb[1]) return 0;
        if(aa[1] < bb[1])  return -1;
        return 1;
}

function sortScore(a,b) {
  var calc = function(v) {
    v = v.match(/^(\d{1,2}) - (\d{1,2})$/,"$1");
    if (0 != v[1] && 0 == v[2]) {
      var num = parseFloat(v[1]);
      if (debug) console.log('num: '+num);
      return num; 
    }
    var num = parseFloat(v[1])+parseFloat(v[2]);
    if (debug) console.log('num: '+num);
    return isNaN(num) ? 0 : num;
  }
  var aa = a[fdTableSort.pos];
  var bb = b[fdTableSort.pos];
  
  if (debug) {
    console.log('a: '+aa);
    console.log('b: '+bb);
  }
      
  if ('' == aa && '' == bb) return 0;
  else if ('' == aa && '' != bb) return -1;
  else if ('' != aa && '' == bb) return 1;
  else {
    var aac = calc(aa);
    var bbc = calc(bb);
    
    if (aac == bbc) return 0;
    else if (aac < bbc) return -1;
    else return 1;
  }
}// sortScore

function mh_updateStats(e) {

    Event.stop(e);
    elt=Event.element(e);

    var param = $('equipeStats').value.replace(/_/g,"&idEquipe=");
    //var param = elt.options[elt.selectedIndex].value.replace(/_/g,"&idEquipe=")
    var saison = $('saisonsStats').value;

    window.location.href = URL_SITE+'mes-statistiques/?idJoueur=' + param + '&saisonsStats='+saison;

}// mh_updateStats

function bindLoad(e) {

	if ($('search_advanced_members')) {
		new Event.observe($('search_advanced_members'), 'click', mh_displaySearchAdvancedMembers);
	}
	
	if ($$('.ongletCompetition')) {
		$$('.ongletCompetition').each(function(element) {
			element.observe('click', function(e){
				var elt = Event.element(e);
				Event.stop(e);
				var id = (elt.id.match(/(.*)\_(\d{1,2})/));
				var onglet = id[1];
				var index = id[2];
				var form = $('formBasenames_'+index);
				var basename = $F('basename_'+index).replace(/\_\d/,'');
				var basenameSaison = $F('basenameSaison_'+index).replace(/\_\d/,'');
				var basenameRegionSportive = $F('basenameRegionSportive_'+index).replace(/\_\d/,'');
				var basenameNiveau = $F('basenameNiveau_'+index).replace(/\_\d/,'');
				var basenameCategorieAge = $F('basenameCategorieAge_'+index).replace(/\_\d/,'');
				var typeCompetition = $F('typeCompetition_'+index).replace(/\_\d/,'');
				if (debug) {
	        console.log('index : '+index);
	        console.log('onglet: '+onglet);
					console.log('basename: '+basename);
					console.log('basenameSaison: '+basenameSaison);
					console.log('basenameRegionSportive: '+basenameRegionSportive);
					console.log('basenameNiveau: '+basenameNiveau);
					console.log('basenameCategorieAge: '+basenameCategorieAge);
					console.log('typeCompetition: '+typeCompetition);
				}
				var div_result = $('classementsStats_'+index);
				if (debug) console.log('visible: '+div_result.visible());
				if (!div_result.visible()) {
					new Ajax.Request('/matchs/'+onglet+'/index', {
						method: 'post',
						parameters: 'basename='+basename+'&basenameSaison='+basenameSaison+'&basenameRegionSportive='+basenameRegionSportive+'&basenameNiveau='+basenameNiveau+'&basenameCategorieAge='+basenameCategorieAge+'&typeCompetition='+typeCompetition,
	          onCreate: function(transport) {
	            img = Builder.node('img', {src:'/resources/images/ajax-loader.gif', id:'loader'});
	            div_result.innerHTML = '';
	            div_result.appendChild(img);
	            div_result.show();
	          },
						onSuccess: function(transport) {
							$('loader').hide();
							var result = transport.responseText;
							div_result.innerHTML = result;
							if ($('frmStats'))
							 Event.observe($('frmStats'), 'submit', mh_genererStats);
						},
						onComplete: function(){
							initBilletClassement();
						}
					});
				} else {
					new Effect.BlindUp(div_result, {duration: 2});
          if ($('frmStats'))
            Event.observe($('frmStats'), 'submit', mh_genererStats);
				}
			});
		});
	}
	
	try {
    if ($('frmStats'))
      Event.observe($('frmStats'), 'submit', mh_genererStats);
      
    if ($('onglet_search'))
      Event.observe($('onglet_search'), 'click', mh_displaySearchCompetition);
      
    if ($('onglet_nouvelle'))
      Event.observe($('onglet_nouvelle'), 'click', mh_displayNouvelleCompetition);
      
	} catch(e){}
	
  try{
    if ($('choisirEquipeRaccourcis')) {
      new Event.observe($('equipeSelectRaccourcis'), 'change', mh_selectEquipeRaccourcis);
    }
    if ($('addMatch')) {
    	new Event.observe($('addMatch'), 'click', mh_ajouterNouveauMatch);
    }
  } catch(e){}
  
  try {
  	if ($('formEvent')) {
  		if ($('optionsLogistique')) {
  			new Event.observe($('optionsLogistique'), 'click', mh_optionsLogistique);
  		}
  		if ($('listeEquipe')) {
  			$$('#listeEquipe a').each(function(elt){
  				new Event.observe(elt, 'click', mh_removeEquipeSelectionnee);
  			});
  		}
  		if ($('btnAnnuler')) {
  			new Event.observe($('btnAnnuler'), 'click', mh_resetFormAjoutMatch);
  		}
  		if ($('checkall')) {
  			new Event.observe($('checkall'), 'click', mh_checkAllCheckbox);
  		}
  		if ($('autocomplete')) {
	      if ($('competition')) {
	        new Event.observe($('competition'), 'change', mh_changeSelectCompetition);
	      }
	      var myteam = 0;
	      if ($('myteam')) {
	      	myteam = $('myteam').value;
	      }
			  mh_autocompleter = new Ajax.Autocompleter('autocomplete','autocomplete_equipes',URL_AJAX, {
			    parameters: 'action=autocompletequipe&equipe='+myteam,
			    paramName: "value",
			    minChars: 2,
			    indicator: 'indicator1',
			    updateElement: mh_updateElement_equipe,
			    callback: mh_changeParamsAutocompleter
			  });
  		}
  	}
  	
  	if ($('saisonsStats')) {
  		new Event.observe($('saisonsStats'), 'change', mh_updateStats);
  	}
  } catch(e){}
  
/*
  try {
      if ($('frm_competition')) {
          new Event.observe($('frm_competition'), 'submit', mh_addCompetition);
      }
  } catch(e){}
*/
} // bindLoad


Event.observe(window, "load", bindLoad);

