/*
* Helper functions
*/
function isInt(x)
{
  var y=parseInt(x);
  if (isNaN(y)) return false;
  return x==y && x.toString()==y.toString();
};
function olderIE()
{
  if ( window.ActiveXObject )
  {
    if ( window.XMLHttpRequest ) return false;
  }
  else return false;
  return true;
};

/*
* sdClient
* Klasse mit Methoden für die Sparduell-Webseiten.
*/
var sdClient = function()
{
  this.id1 = null;
  this.id2 = null;
/*
* public method rewriteLinks
* @params
* - id : integer
* - isId2 : Boolean
*
* Passt die Hyperlinks auf der Seite an,
* wenn der Benutzer einen Artikel für
* ein Duell ausgewählt hat.
*/
  this.rewriteLinks = function( id, isId2 )
  {
    if ( isId2 ) this.id2 = id;
    else this.id1 = id;
    // paging links
    var pagingButtonDiv = $("#pagingButtonDiv");
    var linktags = $(pagingButtonDiv).children();
    var href = "";
    for ( var it = 0 ; it < linktags.length ; it++ )
    {
      var link = linktags[it];
      href = this._rewriteHref( ""+$(link).attr( "href" ), id, isId2 );
      $(link).attr( "href", href );
    }
    // duell-link
    var duellStartButton = $(".duellbuilder_background a");
    href = this._rewriteHref( ""+$(duellStartButton).attr( "href" ), id, isId2 );
    $(duellStartButton).attr( "href", href );
    // search form
    var searchForm = $(".category_search");
    /*href = this._rewriteHref( ""+$(searchForm).attr( "action" ), id, isId2 );
    $(searchForm).attr( "action", href );*/
    var input = $( '<input type="hidden"/>' );
	if ( isId2 ) {
		$("#preload_article_id2").remove();
		$(input).attr("name", "id2");
		$(input).attr("id", "preload_article_id2");
	} else {
		$("#preload_article_id1").remove();
		$(input).attr("name", "id1");
		$(input).attr("id", "preload_article_id1");
	}
	$(input).attr("value", id);
    $(searchForm).append(input);
  };

/*
* private method _rewriteHref
* @params
* - href : String
* - id : integer
* - isId2 : Boolean
* @returns
* - href : String
*/
  this._rewriteHref = function( href, id, isId2 )
  {
    // id1 oder id2
    var varname = "id1";
    if ( isId2 ) varname = "id2";

    // Parameter URL-kodiert vorbereiten
    var getVar = varname + "=";
    var addToHref = getVar + id;

    // Feststellen, ob der Parameter schon gesetzt ist
    var pos = href.indexOf( getVar );
    if ( pos < 0 )  // Parameter noch nicht gesetzt, einfach anhängen
    {
      // Separator ? oder &
      var separator = "?";
      if ( href.indexOf( "?" ) > -1 ) separator = "&";
      href += separator + addToHref;
      return href;
    }
    else  // Parameter ist gesetzt, Wert ersetzen
    {
      pos += getVar.length;
      var tmp1 = href.substring( 0, pos );
      var tmp2 = href.substring( pos );
      pos = tmp2.indexOf( "&" );
      if ( pos < 0 ) return tmp1 + id;
      else
      {
        var tmp3 = tmp2.substring ( pos );
        return tmp1 + id + tmp3;
      }
    }
  };

/*
* public function sendSortRequest
*
* Fängt Sortierungs-Auswahl ab und ruft die Seite neu auf.
*/
  this.sendSortRequest = function()
  {
    var sep = "&";
    var selectedSorting = $("#select_sort").val();
    hrefParams = "";
    if ( this.id1 != null ) hrefParams += "?id1=" + this.id1;
    if ( this.id2 != null )
    {
      if ( hrefParams.length == 0 ) sep = "?";
      hrefParams += sep + "id2=" + this.id2;
    }
    if ( hrefParams.length == 0 ) sep = "?";
    else sep = "&";
    if ( selectedSorting != "" ) hrefParams += sep + "srt=" + selectedSorting;
    locationHref = window.location.href;
    var pos = locationHref.indexOf( "?" );
    if ( pos > -1 )
    {
      locationHref = locationHref.substring( 0, pos );
    }
    window.location.href = locationHref + hrefParams;
  };
};


/*
 * duel ajax functions
 * 
 * @author Andreas Mauf
 */

function duel_get (duel_id) {
	$.get("/", { fn: "vote_get", duel: duel_id },
		function(data){
			duel_reload(duel_id, data);
		});
}
function duel_vote (duel_id, a_id) {
	duel_vote_deactive(duel_id);
	$.get("/", { fn: "vote_add", duel: duel_id, vote: a_id }, 
		function(data){
			duel_reload(duel_id, data);
		});
}
function duel_vote_deactive (duel_id) {
	$(".button_"+duel_id).fadeTo("normal", 0.5);
	$(".button_"+duel_id).addClass('button_off');
}
function duel_reload (duel_id, data_json) {
	var data_object = eval('(' + data_json + ')');
	var vote_cnt_total = data_object[0].votes;
	jQuery.each(data_object[0].articles, function(i, article){
		var id = duel_id+"_"+article["id"];
		if (article["votes"] == 1) var votes_text = "1 Stimme"; else var votes_text = article["votes"]+" Stimmen";
		$("#votes_summary_"+id).html(votes_text);
		$("#votes_percent_"+id).html(article["votes_perc"]+"%");
		$("#duell_bar_"+id).css("background-position", "left -"+article["votes_perc"]+"px");
		$("#votes_summary_"+id+", #votes_percent_"+id).fadeIn("slow");
	});
}