var isIE  = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var loginscreen_visible = false;

var amazonSearchString = "";
var amazonSearchIndex = "";
var amazonItemPage = 1;

$(document).ready( function()
{

  $( 'a.btn-tv-spot' ).fancybox(
  {
    'overlayShow' : false,
    'hideOnContentClick': false
  });

  $( 'a.winnerphoto' ).fancybox(
  {
    'overlayShow' : false
  });

  // Schließen der AJAX-Meldung
  $( "#a_ajaxmessage_close" ).click( function() { $( "#div_ajaxmessage" ).fadeOut( 350 ); });
  // Ein- & Ausblenden Uploadformulare
  $( ".a_show_upload_form" ).each( function()
  {
    $( this ).toggle(
      function()
      {
        var auctionId = getId( $( this ).attr( "id" ) );
        $( "#form_upload_winner_image_" + auctionId ).show();
      },
      function()
      {
        var auctionId = getId( $( this ).attr( "id" ) );
        $( "#form_upload_winner_image_" + auctionId ).hide();
      }
    );
  });
  // Ein- & Ausblenden Adressformularfelder
  $( "#a_address_form" ).click( function()
  {
    if ( parseInt( $( "#input_showaddressform" ).val() ) == 1 )
    {
      $( "#img_address_form_down" ).show();
      $( "#img_address_form_up" ).hide();
      $( "#div_address_form" ).hide();
      $( "#input_showaddressform" ).val( "0" );
    }
    else
    {
      $( "#img_address_form_down" ).hide();
      $( "#img_address_form_up" ).show();
      $( "#div_address_form" ).show();
      $( "#input_showaddressform" ).val( "1" );
    }
  });
  // Konto: Alle Treffer für aktuellen Wunschartikel anzeigen
  $( ".a-showallbidsforcurrentauction" ).each( function()
  {
    var auctionId = getId( $( this ).attr( "id" ) );
    $( "#a_showallbidsforcurrentauction_" + auctionId ).toggle( function()
    {
      $( "#div_konto-aktuell-alle-treffer_" + auctionId ).show( 500 );
      $( "#a_showallbidsforcurrentauction_" + auctionId ).html( "&raquo; Treffer ausblenden" );
    }, function() {
      $( "#div_konto-aktuell-alle-treffer_" + auctionId ).hide( 300 );
      $( "#a_showallbidsforcurrentauction_" + auctionId ).html( "&raquo; alle Treffer anzeigen" );
    });
  });
  // Schließen der Vote-Message
  $( "#button_closemessage_yourvote" ).click( function() { $( "#div_yourvote" ).hide( "slow" ); });
  // Eingabe eines Wunschartikels über Live-Suche auf Amazon.de:
  $("#input_mein_wunschartikel_search" ).keyup( function( e )
  {
    if ( amazonSearchString == $( "#input_mein_wunschartikel_search" ).val() ) return;
    amazonItemPage = 1;
    amazonItemSearch();
  });
  // Produktgruppe wählen bei Live-Suche
  $( "#input_productgroup" ).change( function() { amazonItemPage = 1; amazonItemSearch(); });
  // Eingabe PLZ
  $( "#input_areacode" ).keyup( function()
  {
    var plz = $( "#input_areacode" ).val();
    if ( plz.length < 5 ) return;
    getCity( plz );
  });
  // Löschen des Kontos (modules/account/templates/settingsSuccess.php):
  $( "#a_showdeleteaccount" ).click( function() { $( "#div_deleteaccount" ).show(); });
  $( "#a_hidedeleteaccount" ).click( function() { $( "#div_deleteaccount" ).hide(); return false; });
  // Anfordern eines neuen Passworts (modules/homepage/templates/loginSuccess.php):
  $( "#a_showrequestpass" ).click(   function() { $( "#div_requestpass" ).show( "fast" ); });
  $( "#a_hiderequestpass" ).click(   function() { $( "#div_requestpass" ).hide( "fast" ); return false; });
  // Eingabe eines Gebots (modules/homepage/templates/indexSuccess.php):
  $( "#a_redirecttologin"   ).click( function() { window.location.href = "/einloggen"; });
  //$( ".a_redirecttoaccount" ).each(  function() { $(this).click(function() { window.location.href = "/konto/guthaben-einzahlen"; }); });
  //$( ".a_placebid"          ).each(  function() { $(this).click(function() { placeBid( $( "#input_asin" ).val() ); }); });
  // Abonnieren des Newsletters:
  $( "#checkbox_subscribe" ).change( function()
  {
    if ( typeof( $(this).attr( "checked" ) ) != "undefined" ) setSubscribe( true );
    else setSubscribe( false );
  });
  // Aktivieren der allgemeinen Benachrichtigungen für neue Wunschartikel:
  $( "#checkbox_notify" ).change( function()
  {
    if ( typeof( $(this).attr( "checked" ) ) != "undefined" ) setNotify( true );
    else setNotify( false );
  });
  // Globales deaktivieren der allgemeinen Benachrichtigungen und Newsletter:
  $( "#checkbox_wantsemails" ).change( function()
  {
    if ( typeof( $(this).attr( "checked" ) ) != "undefined" ) setWantsEmails( false );
    else setWantsEmails( true );
  });
  // Abfrage Klamm Wechselkurs
  $( "#amount" ).keyup( function() { getKlammExchangeRate( $( "#amount" ).val() ) });
  // swatch images
  $( ".img_swatch" ).each( function()
  {
    $(this).mouseover( function() { switchImage( this ) });
    $(this).click( function()     { switchImage( this ) });
  });
  // Wechsel des Textes auf Auktionsseite:
  $( ".span_tabselect" ).each( function()
  {
    $( this ).click( function()
    {
      $( ".span_tabselect" ).each( function() { $( this ).removeClass( "active" ) });
      $( ".infotext" ).each( function() { $( this ).hide() });
      $( this ).addClass( "active" );
      $( "#div_" + getId( $( this ).attr( "id" ) ) ).show();
    });
  });

  $('#offer_link').click(
  function()
  {
    $.ajax(
    {
      url: "/ajax/ecatooffers",
      timeout: 10000,
      data: "ean="+$('#article_ean').text()+"&asin="+$('#article_asin').text(),
      success: function( html )
      {
        $('#ecato_offers').html(html);
      },
      error: function(){ $('#ecato_offers').html( "<div style=\"padding-top:10px;height:30px;\">Keine Angebote gefunden</div>" ); }
    });
  });

  // Einblenden Login screen / Aufforderung Login
  $( ".button_login" ).each( function() { $(this).click( function() { toggleLogin(); return false; }); });
  $( ".button_promptlogin" ).each( function() { $(this).click( function() { showLoginPrompt(); return false; }); });
  // Einblendestatus Login screen
  if ( $( "#input_errormessage" ).val() == '1' ) { toggleLogin(); }
  ////////////////////////////////////
  $( ".signup_btn" ).hide();
  $( "#form_login" ).hide();
  $('.signup_btn').click(function()
  {
    $('#form_login').animate({ opacity: "toggle" }, 400);
    $('#form_signup').animate({ opacity: "toggle" }, 400);
    $('#form_login').hide();
    $('#form_signup').show();
    $('.signup_btn').animate({ opacity: "toggle" }, 400);
  });
  $('.show_login').click(function()
  {
    var email = $('#form_signup input[name="reg_email"]').val();
    var pass = $('#form_signup input[name="reg_pass"]').val();
    if ( email != "" && pass != "" )
    {
      $( "#form_signup" ).attr( "action", $( "#form_login" ).attr( "action" ) );
      $( "#reg_email" ).attr( "name", "login_email" );
      $( "#reg_pass" ).attr( "name", "login_pass" );
      $( "#input_hidden_type" ).attr( "name", "login" );
      $( "#form_signup" ).submit();
    }
    else
    {
      if(!$(this).hasClass('active'))
      {
        $(this).toggleClass('active');
        $('a.register').toggleClass('active');
        $('#form_signup').animate({ opacity: "toggle" }, 400);
        $('#form_login').animate({ opacity: "toggle" }, 400);
        $('#form_signup').hide();
        $('#form_login').show();
        $('.signup_btn').animate({ opacity: "toggle" }, 400);
      }
    }
  });
  $('a.register').click(function()
  {
    if(!$(this).hasClass('active')) {
      $(this).toggleClass('active');
      $('a.login').toggleClass('active');
      $('#form_login').animate({ opacity: "toggle" }, 400);
      $('#form_signup').animate({ opacity: "toggle" }, 400);
      $('#form_login').hide();
      $('#form_signup').show();
    }
  });
  ////////////////////////////////////

  $('.flash').blink();
  $('.questionmark').blink();

  $('#a_arrow').mouseenter(function(){
  $('div.arrow').css({'background-position':'0 -83px'});}).mouseleave(function() {$('div.arrow').css({'background-position':'0 0'});});

  $( '#permission-prompt-button' ).click( function()
  {
    FB.login( function( res )
    {
      console.log( 'permission returned' );
      console.log( res );
      if ( res.perms == "publish_stream" ) facebookPermissionGrantedCallback();
    }, { perms: 'publish_stream' });
  });
});

(function($)
{
  $.fn.blink = function(options)
  {
    var defaults = { delay:500 };
    var options = $.extend(defaults, options);
    return this.each(function()
    {
      var obj = $(this);
      setInterval(function()
      {
        if($(obj).css("visibility") == "visible")
        {
          $(obj).css('visibility','hidden');
        }
        else
        {
          $(obj).css('visibility','visible');
        }
      }, options.delay);
    });
  }
}(jQuery))

function toggleLogin()
{
  if ( loginscreen_visible )
  {
    loginscreen_visible = false;
    $( "#div_loginscreen" ).animate( { height: "0", opacity: "0" }, 500 );
  }
  else
  {
    loginscreen_visible = true;
    $( "#div_loginscreen" ).animate( { height: "180px", opacity: "1" }, 1000 );
    $.getScript(
      'http://www.google-analytics.com/ga.js',
      function() {
        var pageTracker = _gat._getTracker('UA-11948643-1');
        pageTracker._setDomainName(".xgewinnt.de");
        pageTracker._trackPageview("/einloggen");
      }
    );
  }
}

function toggleSteps()
{
  if ( loginscreen_visible )
  {
    loginscreen_visible = false;
    $( "#steps123" ).hide( 'fast' );
  }
  else
  {
    loginscreen_visible = true;
    $( "#steps123" ).show( 'fast' );
  }
}

function amazonPreviousPage() { amazonItemPage--; if ( amazonItemPage < 1 ) amazonItemPage = 1 ; amazonItemSearch(); }
function amazonNextPage()     { amazonItemPage++; amazonItemSearch(); }

/**
 *  makes AJAX request to xgewinnt server
 *  server returns JSON object
 */
function amazonItemSearch()
{
  amazonSearchIndex  = $( "#input_productgroup" ).val();
  amazonSearchString = $( "#input_mein_wunschartikel_search" ).val();
  if ( amazonSearchString.length < 3 ) return;
  $(document.body).css( "cursor", "wait" );
  $.ajax(
  {
    url: "/ajax/amazonsearch",
    timeout: 36000,
    type: "GET",
    dataType: "html",
    data: "searchstring=" + amazonSearchString + "&searchindex=" + amazonSearchIndex + "&page=" + amazonItemPage,
    success: function( response )
    {
      if ( response == "error" )
      {
        alert( "örror" );
        return;
      }
      Wishlist.setResult( eval( response ), amazonItemPage );
      $(document.body).css( "cursor", "default" );
    },
    error: function() { $(document.body).css( "cursor", "default" ); }
  });
}

// Hilfsfunktion zum Extrahieren der ASIN
function getAsinFromUrl( url )
{
  var pos = url.indexOf( "ASIN=" );
  if ( pos < 0 )
  {
    pos = url.indexOf( "/dp/" );
    if ( pos < 0 )
    {
      alert( "Internal error: malformed URL" );
    }
    else
    {
      pos += 4;
      url = url.substr( pos );
      pos = url.indexOf( "%3F" );
      return url.substr( 0, pos );
    }
  }
  else
  {
    pos += 5;
    url = url.substr( pos );
    pos = url.indexOf( "%26" );
    return url.substr( 0, pos );
  }
  return false;
}

function switchImage( el )
{
  var elId  = $(el).attr( "id" );
  var pos   = elId.indexOf( "_" );
  var setId = elId.substr( 0, pos );
  elId      = elId.substr( pos+1 );
  pos       = elId.indexOf( "_" );
  var asin  = elId.substr( 0, pos );
  var url   = elId.substr( pos+1 );
  $( "#img_large_"+asin ).attr( "src", url );
}

function decreaseVotes()
{
  var currentVotes = parseInt( $( "#span_yourvotes" ).html() );
  if ( currentVotes > 0 )
  {
    currentVotes--;
    $( "#span_yourvotes" ).html( "" + currentVotes );
    return true;
  }
  popupMessage( "Du hast keine Stimmen mehr. Kaufe weitere Treffer um mehr Stimmen zu erhalten." );
  return false;
}

function getKlammExchangeRate( amount )
{
  $(document.body).css( "cursor", "wait" );
  $.ajax(
  {
    url: "/ajax/klammexchangerate",
    timeout: 6000,
    type: "GET",
    dataType: "html",
    data: "amount_in_millions="+amount,
    success: function( html )
    {
      $(document.body).css( "cursor", "default" );
      $( "#label_exchange_amount" ).html( html );
    },
    error: function() { $(document.body).css( "cursor", "default" ); popupMessage( "HTTP Error" ); }
  });
}

function getCity( plz )
{
  $(document.body).css( "cursor", "wait" );
  $.ajax(
  {
    url: "/ajax/getcity",
    timeout: 6000,
    type: "GET",
    dataType: "html",
    data: "plz="+plz,
    success: function( html )
    {
      $(document.body).css( "cursor", "default" );
      $( "#select_city" ).html( "" );
      $( "#select_city" ).append( $( '<option value="0">---</option>' ) );
      var pos = html.indexOf( "Exception:" );
      if ( pos < 0 )
      {
        // okay
        $( "#span_error_city" ).html( "" );
        var cities = eval( html );
        if ( cities.length > 0 )
        {
          // work some markup mojo
          var firstVal = 0;
          for ( var it = 0 ; it < cities.length ; it++ )
          {
            if ( it == 0 ) firstVal = cities[it].id;
            var opt = $( '<option value="' + cities[it].id + '">' + cities[it].name + '</option>' );
            $( "#select_city" ).append( opt );
          }
          $( "#select_city" ).val( firstVal );
          $( "#div_areacode" ).removeClass( "form-content-error" );
        }
      }
      else
      {
        var message = html.substr( 10 );
        message = message.replace( / /, "" );
        $( "#span_error_city" ).html( message );
        $( "#div_areacode" ).addClass( "form-content-error" );
      }
    },
    error: function() { $(document.body).css( "cursor", "default" ); popupMessage( "HTTP Error" ); }
  });
}

function setSubscribe( subscribe )
{
  $(document.body).css( "cursor", "wait" );
  var val = "false";
  if ( subscribe ) val = "true";
  $.ajax(
  {
    url: "/ajax/subscribe",
    timeout: 6000,
    type: "GET",
    dataType: "html",
    data: "subscribe="+val,
    success: function( html )
    {
      var pos = html.indexOf( ":" );
      var start = html.substr( 0, pos );
      var message = html.substr( pos+1 );
      message = message.replace( / /, "" );
      switch ( start )
      {
        case "Exception":
          $(document.body).css( "cursor", "default" );
          popupMessage( message );
          break;
        case "Success":
          $(document.body).css( "cursor", "default" );
          if ( parseInt( message ) == 1 ) $( "#div_subscribe_message" ).html( "E-Letter abonniert." );
          else $( "#div_subscribe_message" ).html( "E-Letter abbestellt." );
          $( "#div_subscribe_message" ).show();
          $( "#div_subscribe_message" ).fadeOut( 3000 );
          break;
      }
    },
    error: function() { popupMessage( "HTTP Error" ); }
  });
}

function setNotify( notify )
{
  $(document.body).css( "cursor", "wait" );
  var val = "false";
  if ( notify ) val = "true";
  $.ajax(
  {
    url: "/ajax/auctionnotify",
    timeout: 6000,
    type: "GET",
    dataType: "html",
    data: "notify="+val,
    success: function( html )
    {
      var pos = html.indexOf( ":" );
      var start = html.substr( 0, pos );
      var message = html.substr( pos+1 );
      message = message.replace( / /, "" );
      switch ( start )
      {
        case "Exception":
          $(document.body).css( "cursor", "default" );
          popupMessage( message );
          break;
        case "Success":
          $(document.body).css( "cursor", "default" );
          if ( parseInt( message ) == 1 ) $( "#div_notify_message" ).html( "Benachrichtigungen aktiviert." );
          else $( "#div_notify_message" ).html( "Benachrichtigungen deaktiviert." );
          $( "#div_notify_message" ).show();
          $( "#div_notify_message" ).fadeOut( 3000 );
          break;
      }
    },
    error: function() { popupMessage( "HTTP Error" ); }
  });
}

function setWantsEmails( wants )
{
  $(document.body).css( "cursor", "wait" );
  var val = "false";
  if ( wants ) val = "true";
  $.ajax(
  {
    url: "/ajax/wantsEmails",
    timeout: 6000,
    type: "GET",
    dataType: "html",
    data: "wants="+val,
    success: function( html )
    {
      var pos = html.indexOf( ":" );
      var start = html.substr( 0, pos );
      var message = html.substr( pos+1 );
      message = message.replace( / /, "" );
      switch ( start )
      {
        case "Exception":
          $(document.body).css( "cursor", "default" );
          popupMessage( message );
          break;
        case "Success":
          $(document.body).css( "cursor", "default" );
          if ( parseInt( message ) == 1 )
          {
            $( "#div_wantsemails_message" ).html( "Allgemeiner E-Mail-Versand aktiviert." );
            $( "#checkbox_subscribe" ).removeAttr( "disabled" );
            $( "#checkbox_notify"    ).removeAttr( "disabled" );
            $( '#label_subscribe' ).css( 'text-decoration', 'none' );
            $( '#label_notify'    ).css( 'text-decoration', 'none' );
          }
          else
          {
            $( "#div_wantsemails_message" ).html( "Allgemeiner E-Mail-Versand deaktiviert." );
            $( "#checkbox_subscribe" ).attr( "disabled", "disabled" );
            $( "#checkbox_notify"    ).attr( "disabled", "disabled" );
            $( '#label_subscribe' ).css( 'text-decoration', 'line-through' );
            $( '#label_notify'    ).css( 'text-decoration', 'line-through' );
          }
          $( "#div_wantsemails_message" ).show();
          $( "#div_wantsemails_message" ).fadeOut( 3000 );
          break;
      }
    },
    error: function() { popupMessage( "HTTP Error" ); }
  });
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

function exceptionRaised( type, code, message )
{
  switch ( code )
  {
    case 99:  // Nicht eingeloggt
      toggleLogin();
      break;
    case 102: // Guthaben zu niedrig
      window.location.href = "/konto/guthaben-einzahlen";
      break;
    case 101: // Wunschartikel zur Zeit nicht online
    case 103: // Auktion bereits beendet
      $( "#div_message_auctionend" ).show();
      break;
    case 100: // Treffer aufdecken zur Zeit nicht möglich
    case 200: // Keine Daten zu User ID (Datenbankfehler)
    case 201: // Fehlender Parameter ASIN
    case 202: // Datenbankfehler (Transaktion schlug fehl)
    case 203: // Interner Fehler
      popupMessage( message );
      break;
    case 401: // Facebook Permissions required
      break;
  }
}

function showLoginPrompt()
{
  //toggleSteps();
  popupMessage( "Du bist nicht eingeloggt." );
}

function auctionWon()
{
  $(document.body).css( "cursor", "wait" );
  window.setTimeout( redirectToWinPage, 3000 );
}

function auctionWasWonBySomeoneElse()
{
  $( "#a_arrow" ).attr( "href", "/wunschzettel" );
  $( "#img_arrow" ).attr( "src", "/images/grey_arrow.png" );
  $( "#div_yourbid" ).hide();
  $( "#span_auctionbids" ).hide();
  $( "#div_message_auctionend" ).show( "slow" );
}

function googleTrackBid( bidId, asin, title, userId, campaign )
{
  $.getScript( 'http://www.google-analytics.com/ga.js',
    function() {
      var pageTracker = _gat._getTracker( 'UA-11948643-1' );
      pageTracker._setDomainName( ".xgewinnt.de" );
      pageTracker._trackPageview( "/ajax/bid?asin=" + asin );
      pageTracker._addTrans( bidId, campaign, "0.49", "0.08", "0", "", "", "" );
      pageTracker._addItem( bidId, asin, title, "", "0.49", "1" );
      pageTracker._trackTrans();
    });
  if ( userId != '0' )
  {
    var markUp = '<script ';
    markUp += 'language="Javascript" ';
    markUp += 'src="http://tracking.v1.de.eutrack.adaos-ads.net/?inv=js;cmp=762;event=10676;leadid=' + userId + ';ignore="';
    markUp += '></script>';
    $('#product').append( markUp );
  }
}

/////////////////////////////////////////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////////////////////////////////////////

function placeBid( asin ) // deprecated
{
  $(document.body).css( "cursor", "wait" );
  $("#div_placebid").hide();
  $("#a_arrow").hide();
  $.ajax(
  {
    url: "/ajax/bid",
    timeout: 36000,
    type: "POST",
    dataType: "html",
    data: "asin="+asin,
    success: function( html )
    {
      $(document.body).css( "cursor", "default" );
      var pos = html.indexOf( ":" );
      var start = html.substr( 0, pos );
      var user_pos = html.indexOf("-");
      var param_position = html.indexOf("-", user_pos+1);
      var user_id  = html.substr(user_pos+1, param_position-user_pos-1);
      var message = html.substr( pos+1, user_pos-pos-1 );
      if(user_pos == -1) message = html.substr(pos+1);
      var params = html.substr(param_position +1).split("&");
      message = message.replace( / /, "" );
      switch ( start )
      {
        case "Exception":
          if ( message == "Guthaben zu niedrig!" ) window.location.href = "/konto/guthaben-einzahlen";
          else if ( message == "Auktion bereits beendet!" )
          {
            $( "#a_arrow" ).attr( "href", "/wunschzettel" );
            $( "#img_arrow" ).attr( "src", "/images/grey_arrow.png" );
            $( "#div_yourbid" ).hide();
            $( "#span_auctionbids" ).hide();
            $( "#div_message_auctionend" ).show( "slow" );
          }
          else popupMessage( message );
          break;
        case "Success":
          $.getScript( 'http://www.google-analytics.com/ga.js',
           function() {
            var pageTracker = _gat._getTracker('UA-11948643-1');
            pageTracker._setDomainName(".xgewinnt.de");
            pageTracker._trackPageview("/treffer-zeigen/"+$('#article_asin').text());
            pageTracker._addTrans(params[1], params[0], "0.49", "0.08", "0", "", "", "");
            pageTracker._addItem(params[1], $('#article_asin').text(), $('#article_title').text(), "", "0.49", "1");
            pageTracker._trackTrans();
           });
          if(user_id !='0') $('#product').append("<script language=\"Javascript\"  src=\"http://tracking.v1.de.eutrack.adaos-ads.net/?inv=js;cmp=762;event=10676;leadid="+user_id+";ignore=\" ></script>");
          if ( message == "0" )
          {
            $( "#a_arrow" ).hide();
            decreaseCredits();
            uncoverWinningBid();
            fadeInHourglass();
            window.setTimeout( redirectToWinPage, 3000 );
          }
          else
          {
            decreaseCredits();
            var auctionBids = getAuctionBids();
            var lenDiff = auctionBids.length - message.length;
            if ( lenDiff > 0 )
            {
              var prefix = "";
              while ( lenDiff > 0 )
              {
                prefix += "0";
                lenDiff--;
              }
              message = prefix + message;
            }
            $("#div_yourbid").html( message );
            $("#div_yourbid").show( "fast" );
          }
          break;
      }
      $('#a_arrow').show();
    },
    error: function( e, textStatus )
    {
      $(document.body).css( "cursor", "default" );
      if ( parseInt( e.status ) != 403 ) popupMessage( "HTTP Error: " + textStatus );
      else
      {
        // error 403
        $.ajax(
        {
          url: "/ajax/clickedTooFast",
          timeout: 36000,
          type: "POST",
          success: function( html ) {},
          error: function( html ) {}
        });
      }
      $('#a_arrow').show();
    }
  });
}

function getAuctionBids()
{
  var str = $( "#span_auctionbids" ).html();
  return trim( str.substring( str.indexOf( ":" ) + 1 ) );
}

function uncoverWinningBid()
{
  $("#div_yourbid").html( getAuctionBids() );
}

function fadeInHourglass()  { $( "#div_hourglass" ).fadeIn ( 500, fadeOutHourglass ) }
function fadeOutHourglass() { $( "#div_hourglass" ).fadeOut( 500, fadeInHourglass  ) }

function redirectToWinPage()
{
  $( "#div_hourglass" ).hide( "slow" );
  window.location.href = "/wunschartikel/gewonnen";
}

function decreaseCredits()
{
  var str = $("#span_status_credits_string").html();
  var pos = str.indexOf( " EUR" );
  str = str.substr( 0, pos );
  str = str.replace( ",", "." );
  var num = parseFloat( str );
  num -= 0.49;
  num = ( Math.round( num * 100 ) / 100 );
  var addLink = false;
  if ( num < 0.49 ) addLink = true;
  str = "" + num;
  str = str.replace( ".", "," );
  pos = str.indexOf( "," );
  if ( pos < 0 )
  {
    str = str + ",00";
  }
  else
  {
    pos += 3;
    if ( str.length < pos ) str = str + "0";
  }
  str = str + ' EUR';
  if ( addLink ) str = '<a href="/konto/guthaben-einzahlen">' + str + '</a>';
  $("#span_status_credits_string").html( str );
}

function facebookPermissionGrantedCallback()
{
  $.ajax(
  {
    url: '/ajax/facebookPermissionGranted',
    type: 'POST',
    data: 'perm=publish_stream',
    success: function()
    {
      console.log( "stop displaying prompt" );
      $( '#facebook-permission-prompt' ).hide();
    },
    complete: function()
    {
      console.log( "completed: stop displaying prompt" );
      $( '#facebook-permission-prompt' ).hide();
    }
  });
}

function facebookWallpostCallback( response )
{
  if ( response.error )
  {
    if ( response.error.message )
    {
      $.ajax(
      {
        url: '/ajax/facebookResponse',
        type: 'POST',
        data: 'response=' + response.error.message,
        success: function() {}
      });
      var msg = '' + response.error.message;
      if ( msg.indexOf( 'authorized' ) > -1 ) // as in "not authorised"
      {
        $( '#facebook-permission-prompt' ).show();
        $.ajax(
        {
          url: '/ajax/facebookPermissionRequired',
          type: 'POST',
          data: 'perm=publish_stream',
          success: function() {}
        });
      }
    }
  }
}

function postToUserFacebookFeed( message, link, picture, description, name )
{
  console.log( 'sending post to facebook if possible...' );
  if ( typeof FB != 'undefined' )
  {
    FB.api( '/me/feed', 'post', { message: message, link: link, picture: picture, name: name, description: description }, facebookWallpostCallback );
  }
}

function postBidToUserFacebookFeed( bidNumber, articleAsin, articleTitle, articlePicture, saving, bidsSpent, moneySpent )
{
  console.log( 'sending bid to facebook if possible...' );
  articlePicture = articlePicture + "";
  articlePicture = articlePicture.replace( /%2B/, '+' );
  console.log( 'bid ' + bidNumber );
  console.log( 'asin ' + articleAsin );
  console.log( 'title ' + articleTitle );
  console.log( 'picture ' + articlePicture );
  if ( typeof userId == 'undefined' ) userId = 0;
  var message = 'hat schon ' + bidsSpent + ' Treffer aufgedeckt!';
  if ( saving > 0 )
  {
    message  = 'Gewinntreffer ' + bidNumber + ' aufgedeckt! ';
    message += 'Wunschartikel ';
    if ( bidsSpent > 0) message += 'mit nur ' + bidsSpent + ' Treffern für ' + moneySpent + ' ';
    if ( saving    > 0) message += '(Ersparnis: ' + saving + '%) ';
    message += 'gewonnen.';
  }
  var link = 'http://xgewinnt.de/wunschartikel/' + articleAsin;
  link += '?utm_source=facebook&utm_medium=feed&utm_content=Treffer+' + bidNumber + '&utm_campaign=Nutzer+' + userId;
  var description = 'Gewinntreffer aufdecken und Wunschartikel gewinnen. Kostenlose Lieferung durch Amazon.de.';
  console.log( 'bid post data prepared' );
  if ( typeof FB != 'undefined' )
  {
    var response = FB.api( '/me/feed', 'post', { message: message, link: link, picture: articlePicture, name: articleTitle, description: description }, facebookWallpostCallback );
  }
}

function postBidToUserFacebookFeedAndTrack( userId, bidNumber, articleAsin, articleTitle, articlePicture, saving, bidsSpent, moneySpent )
{
  console.log( 'sending bid to facebook if possible...' );
  articlePicture = articlePicture.replace( /%2B/, '+' );
  var message = 'hat schon ' + bidsSpent + ' Treffer aufgedeckt!';
  if ( saving > 0 )
  {
    message  = 'Gewinntreffer ' + bidNumber + ' aufgedeckt! ';
    message += 'Wunschartikel ';
    if ( bidsSpent > 0) message += 'mit nur ' + bidsSpent + ' Treffern für ' + moneySpent + ' ';
    if ( saving    > 0) message += '(Ersparnis: ' + saving + '%) ';
    message += 'gewonnen.';
  }
  var link = 'http://xgewinnt.de/wunschartikel/' + articleAsin;
  link += '?utm_source=facebook&utm_medium=feed&utm_content=Treffer+' + bidNumber + '&utm_campaign=Nutzer+' + userId;
  var description = 'Gewinntreffer aufdecken und Wunschartikel gewinnen. Kostenlose Lieferung durch Amazon.de.';
  if ( typeof FB != 'undefined' )
  {
    var response = FB.api( '/me/feed', 'post', { message: message, link: link, picture: articlePicture, name: articleTitle, description: description }, facebookWallpostCallback );
  }
}

function switchAccountTab( tab )
{
  if ( tab == active ) return;
  document.getElementById('content-' + tab).style.display = 'block';
  document.getElementById('content-' + active).style.display = 'none';
  document.getElementById('menu-' + tab).className = 'box-1000-menu-elem-active';
  document.getElementById('menu-' + active).className = 'box-1000-menu-elem';
  active = tab;
}

function popupMessage( str )
{
  $( "#div_ajaxmessage" ).show();
  var c = $( "#div_ajaxmessage" ).find( ".msg-content-text" );
  if ( c.length != "undefined" && c.length > 0 )
  {
    var div = $( c[0] );
    div.html( str );
  }
}

function countUp( id )
{
  var seconds = parseInt( $( "#span-countup-seconds_" + id ).html() );
  if ( seconds < 59 )
  {
    seconds++;
    $( "#span-countup-seconds_" + id ).html( seconds );
    if ( seconds == 1 ) $( "#span-display-countup-seconds-plural_" + id ).hide();
    else $( "#span-display-countup-seconds-plural_" + id ).show();
    return;
  }
  $( "#span-countup-seconds_" + id ).html( "0" );
  $( "#span-display-countup-minutes_" + id ).show();
  var minutes = parseInt( $( "#span-countup-minutes_" + id ).html() );
  if ( minutes < 59 )
  {
    minutes++;
    $( "#span-countup-minutes_" + id ).html( minutes );
    if ( minutes == 1 ) $( "#span-display-countup-minutes-plural_" + id ).hide();
    else $( "#span-display-countup-minutes-plural_" + id ).show();
    return;
  }
  $( "#span-countup-minutes_" + id ).html( "0" );
  $( "#span-display-countup-minutes_" + id ).hide();
  $( "#span-display-countup-hours_" + id ).show();
  var hours = parseInt( $( "#span-countup-hours_" + id ).html() );
  if ( hours < 23 )
  {
    hours++;
    $( "#span-countup-hours_" + id ).html( hours );
    if ( hours == 1 ) $( "#span-display-countup-hours-plural_" + id ).hide();
    else $( "#span-display-countup-hours-plural_" + id ).show();
    return;
  }
  $( "#span-countup-hours_" + id ).html( "0" );
  $( "#span-display-countup-hours_" + id ).hide();
  $( "#span-display-countup-days_" + id ).show();
  var days = parseInt( $( "#span-countup-days_" + id ).html() );
  days++;
  $( "#span-countup-days_" + id ).html( days );
  if ( days == 1 ) $( "#span-display-countup-days-plural_" + id ).hide();
  else $( "#span-display-countup-days-plural_" + id ).show();
}

//////////////////////
// Helper functions //
//////////////////////

function centToEuroString( centValue )
{
  var str = "" + centValue;
  var len = str.length;
  var euros = str.substring( 0, len - 2 );
  var cents = str.substring( len - 2 );
  return euros + "," + cents + " EUR";
}

function euroStringToCents( str )
{
  str = trim( "" + str );
  var tmp = str.split( " " );
  var amount = tmp[0];
  var tmp = amount.split( "," );
  var euros = tmp[0];
  if ( euros.length == 0 ) euros = "0";
  euros = parseInt( euros );
  cents = 0;
  if ( tmp.length > 1 )
  {
    var cents = "" + tmp[1];
    if ( cents.length < 2 ) cents += "0";
    cents = parseInt( cents );
  }
  return ( ( euros * 100 ) + cents );
}

function snipstring( str, length )
{
  if ( str.length > length ) str = str.substr( 0, length );
  return str;
}

function getId( str )
{
  var pos = str.lastIndexOf( "_" ) + 1;
  if ( pos < 0 ) return false;
  return str.substr( pos );
}

function var_dump( obj )
{
  if ( typeof obj == "object" )
  {
    return "Type: "+typeof(obj)+((obj.constructor) ? "\nConstructor: "+obj.constructor : "")+"\nValue: " + obj;
  } else {
    return "Type: "+typeof(obj)+"\nValue: "+obj;
  }
}

function trim( str )
{
  str = "" + str;
  return str.replace(/^\s+|\s+$/g, '');
}

function trace( str )
{
  console.log( str );
}

function loginFromFlash()
{
  window.open_fb = window.open;
  window.open = function( url, name, specs, replace )
  {
    login_handler = window.open_fb( url, name, specs, replace );
    if ( !login_handler )
    {
      alert( "Bitte erlaube Facebook, ein Popup-Fenster für das Login zu öffnen." );
    }
  }
  FB.login(
    function response()
    {
      window.open = window.open_fb;
      if ( response.session )
      {
        window.location.href = 'http://xgewinnt.de/einloggen';
      }
    }, { 'perms' : 'email,publish_stream' }
  );
}
