$(document).ready(function()
{
    /*
     * global button
     */
    $("button, input:submit, input:button").livequery(function()
    {
        $(this).button();
    });
    
    /*
     * company pages
     */
     $('form#company').live('submit', function(event)
     {
         event.preventDefault();

         var data = $(this).serialize();
         var parent = $(this).parent();
         $.post($(this).attr('action'), data, function(data, textStatus)
         {
             parent.html(data);
         })
     });

    $('form#updateDividend').live('submit', function(event)
     {
         event.preventDefault();

         var data = $(this).serialize();
         $.post($(this).attr('action'), data, function(data, textStatus)
         {
             $('#updateDividendResult').html(data);
         })
     });


     $('form.trainEmployee, form.upgradeCompany').live('submit', function(event)
     {
         event.preventDefault();
         var data = $(this).serialize();
         var parent = $(this).parent();
         $.post($(this).attr('action'), data, function(data, textStatus)
         {
             if (data.success)
             {
                parent.html(data.message);
             }
             else
             {
                 var previousContent = parent.html();
                 parent.html(data.message).delay(2000).fadeOut("slow", function()
                 {
                     parent.html(previousContent);
                     parent.fadeIn("slow");
                 });
             }

            // update resource bar:
            $('#resources').html(data.resources);

        }, "json");
     });

    /*
     * party pages
     */

    $('a.participateFormLink').click(function() {
        $(this).parent().parent().next().toggle('slow');
    });

    $('form.participateForm').submit(function(event)
    {
        event.preventDefault();

        $.post($(this).attr('action'),
            $(this).serialize(),
            function(data, textStatus)
            {
                $('form.participateForm').html(data);
                $('form.participateForm').delay(1000).fadeOut("slow");
            },
            'html');
    });


    /*
     * ajaxLinks
     */
    var oldContent = '';
    $('a.ajaxLink').live('click', function(event)
    {
        event.preventDefault();

        $.get($(this).attr('href'), function(data, textStatus)
        {
            oldContent = document.URL//$('#ajaxLinkTarget').html();
            $('#ajaxLinkTarget').html(data);
            
            if (!$('#ajaxLinkTarget').hasClass("hideBackButton"))
            {
                $('#ajaxLinkTarget').append('<a href="#" class="back">zurück</a>');
            }
            
        });
    });

    $('.back').live('click', function(event)
    {
       event.preventDefault();
       $('#ajaxLinkTarget').load(oldContent);
       $(this).remove();
    });

    /*
     * pagination links
     */

    $('a.paginationLink').live('click', function(event)
    {
       event.preventDefault();
       $.get($(this).attr('href'), function(data, textStatus)
       {
           $('a.paginationLink').parent().parent().html(data);
       });

    });

    /*
     *stock pages
     */
    $('.createOfferButton').live('click', function(event)
    {
        event.preventDefault();
        var offer = $(this).parent();
        var amount = $('#searchStock [name="amount"]').val();
        var price = $('#searchStock [name="price"]').val();
        var userId = $('[name="userId"]').val();

        var offerRow = offer.parent();
        var oldContent = offerRow.html();

        $.post('/stock/create-offer/', {'price': price, 'amount': amount, 'userId': userId}, function(data, textStatus)
        {
            // display error messages for a longer period
            if (typeof(data.success) == "undefined")
            {
                $('#ajaxLinkTarget').html(data);
                $('#ajaxLinkTarget').append('<a href="#" class="back">zurück</a>');
            }
            else
            {
                var displayTime = (data.success) ? 1000 : 3000;
                offerRow.html(data.message).fadeIn("slow").delay(1000).fadeOut("slow", function()
                {
                    offerRow.html(oldContent);
                    offerRow.fadeIn("slow");
                });
            }
        });
    });

    $('.changeOfferButton').live('click', function(event)
    {
        event.preventDefault();
        var offer = $(this).parent();

        var offerRow = offer.parent();

        var amount = offer.children('[name="amount"]').val();
        var price = offerRow.find('[name="price"]').val();
        var userId = $('[name="userId"]').val();
        var tradeId = offer.children('[name="tradeId"]').val();

        var oldContent = offerRow.html();

        $.post('/stock/create-offer/', {'price': price, 'amount': amount, 'userId': userId,  'tradeId': tradeId}, function(data, textStatus)
        {
            // display error messages for a longer period
            if (typeof(data.success) == "undefined")
            {
                $('#ajaxLinkTarget').html(data);
                $('#ajaxLinkTarget').append('<a href="#" class="back">zurück</a>');
            }
            else
            {
                var displayTime = (data.success) ? 1000 : 3000;
                offerRow.html(data.message).fadeIn("slow").delay(1000).fadeOut("slow", function()
                {
                    offerRow.html(oldContent);
                    offerRow.fadeIn("slow");
                });
            }

        });
    });



    /*
     * market pages
     */
    $('.tradeButton').live('click', function(event)
    {
        event.preventDefault();

        var offer = $(this).parent();
        var marketId = offer.children('[name="tradeId"]').val();
        var amount = parseInt(offer.children('[name="amount"]').val());
        var offerRow = offer.parent();
        var oldContent = offerRow.html();
        $.post($('[name="action"]').val(), {'tradeId': marketId, 'amount': amount}, function(data, textStatus)
        {
            // display error messages for a longer period
            var displayTime = (data.success) ? 1000 : 3000;
            offerRow.html(data.message).fadeIn("slow").delay(1000).fadeOut("slow", function()
            {
                offerRow.html(oldContent);

                if (data.success)
                {
                    var originalAmountField = offerRow.children('[name="originalAmount"]');

                    var originalAmount = parseIntWithGermanLocale(originalAmountField.html());

                    var newAmount = originalAmount - amount;

                    if (newAmount <= 0)
                    {
                        offerRow.hide();
                    }
                    else
                    {
                        offerRow.fadeIn("slow");
                        originalAmountField.html(addCommas(newAmount));
                    }

                    // update resource bar:
                    $('#resources').html(data.resources);
                }
                else
                {
                    offerRow.fadeIn("slow");
                }
            });
        }, "json");
    });

$( "#efficiencyBar" ).progressbar({
			value: eval($("#efficiencyBar > p").html()) * 100
		});

updateEfficienyButtonOptions();

$('#play').click(function(event)
    {
        event.preventDefault();

        $.post($('form.efficienyBonus').attr('action'),
            $('form.efficienyBonus').serialize(),
            function(data, textStatus)
            {
               
            $('[name="efficiencyBonusActivated"]').val(data);

            updateEfficienyButtonOptions();
            
            },
            'html');



    });
/*

        $( "#play" ).button({
			text: false,
			icons: {
				primary: "ui-icon-play"
			}
		}).click(function(event) {
                    event.preventDefault();
			var options;
			if ( $( this ).text() === "play" ) {
				options = {
					label: "pause",
					icons: {
						primary: "ui-icon-pause"
					}
				};
			} else {
				options = {
					label: "play",
					icons: {
						primary: "ui-icon-play"
					}
				};
			}
			$( this ).button( "option", options );
		});*/
});

function updateEfficienyButtonOptions()
{
    var activated = $('[name="efficiencyBonusActivated"]').val();

    var optionsMakeActive = {
            text: false,
            icons: {
                    primary: "ui-icon-play"
            },
            label: $('[name="textActive"]').val()
        };

        var optionsMakeInactive = {
            text: false,
            icons: {
                    primary: "ui-icon-pause"
            },
            label: $('[name="textInactive"]').val()
        };

    if (activated == 1)
    {
        $('#play').button(optionsMakeInactive);

    }
    else
    {
        $('#play').button(optionsMakeActive);
    }
}

function parseIntWithGermanLocale(num) {
    return parseInt(num.replace(".", ""));
}

function addCommas(nStr)
{
	nStr += '';
	x = nStr.split(',');
	x1 = x[0];
	x2 = x.length > 1 ? ',' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + '.' + '$2');
	}
	return x1 + x2;
}
