﻿
String.prototype.trim = function() {
  return (this.replace(/^[\s\xA0]+/, "").replace(/[\s\xA0]+$/, ""));
}

function handleEnterKeyButtonClick(input, button) {
    $(input).keypress(function(event) {
        if (event.keyCode == '13') {
            event.preventDefault();
            $(button).click();
        }
    });
}

function redirectToLeadingBidderPage(response) {
    if (response.Url) {

        createFormInput('Amount', response.LeadingBid);
        createFormInput('TransactionId', response.TransactionId);
        createFormInput('AuctionId', response.AuctionId);
        createFormInput('BidId', response.BidId);
        createFormInput('AutoBid', response.AutoBid);

        enablePlacebidBox();
        submitFormTo(response.Url);
    }
}

function submitFormTo(url) {
    document.aspnetForm.action = url;
    document.aspnetForm.submit();
}

function createFormInput(inputId, value) {
    input = $('<input>');
    input.attr({ 'type': 'hidden', 'name': inputId });
    input.val(value);
    $('#aspnetForm').append(input);
}

function placeBid(bidAmount) {
    if (isMobilePlatform()) {
        mvcBid("/mobile.mvc/placebid/", bidAmount);
    }
    else if (isRedirectedBidding()) {
        mvcBid("/simpleauction.mvc/placebid/", bidAmount);
    }
    else {
        ajaxBid("/auction.mvc/placebid/", bidAmount, redirectToLeadingBidderPage);
    }
}

function getAuctionId() {
    return $("input[id$='PageAuctionId']").val();
}

function isMobilePlatform() {
    return PlatformDetect.OS === "Mobile";
}

function isRedirectedBidding() {
    return $("#HasRedirectedBidding").val() == "1";
}

function changeAutoBid(bidAmount) {
    if (isMobilePlatform()) {
        mvcBid("/mobile.mvc/changeautobid/", bidAmount);
    }
    else if (isRedirectedBidding()) {
        mvcBid("/simpleauction.mvc/changeautobid/", bidAmount);
    }
    else {
        ajaxBid("/auction.mvc/changeautobid/", bidAmount);
    }
}

function confirmBid(bidAmount) {
    if (isMobilePlatform()) {
        mvcBid("/mobile.mvc/confirmbid/", bidAmount);
    }
    else if (isRedirectedBidding()) {
        mvcBid("/simpleauction.mvc/confirmbid/", bidAmount);
    }
    else {
        ajaxBid("/auction.mvc/confirmbid/", bidAmount, redirectToLeadingBidderPage);
    }
}

function buyItem(price) {
    if (isMobilePlatform()) {
        mvcBid("/mobile.mvc/buyitem/", price);
    }
    else if (isRedirectedBidding()) {
        mvcBid("/simpleauction.mvc/buyitem/", price);
    }
    else {
        ajaxBid("/buyitnow.mvc/buyitem/", price, redirectToLeadingBidderPage);
    }
}

function buyItemFromAuction(price) {
    if (isMobilePlatform()) {
        mvcBid("/mobile.mvc/buyauction/", price);
    }
    else if (isRedirectedBidding()) {
        mvcBid("/simpleauction.mvc/buyauction/", price);
    }
    else {
        ajaxBid("/buyitnow.mvc/buyitem/", price, redirectToLeadingBidderPage);
    }
}

function closeBidBoxWithReload() {
    if (isMobilePlatform() || isRedirectedBidding()) {
        redirectBackToAuction();
    }
    else {
        enableBidBoxAndCloseLightBoxWithReload();
        ajaxReload();
    }
}

function closeBidBox() {
    if (isMobilePlatform() || isRedirectedBidding()) {
        redirectBackToAuction();
    }
    else {
        enabledPlacebidBoxAndCloseLightBox();
        ajaxReload();
    }
}

function ajaxReload() {
    return;
}

function redirectBackToAuction() {
    window.location = "/viewitem.mvc/?auctionId=" + getAuctionId();
}

function enableBidBoxAndCloseLightBoxWithReload() {
    enablePlacebidBox();
    $.fancybox.close();
    window.location.reload();
}

function enabledPlacebidBoxAndCloseLightBox() {
    enablePlacebidBox();
    $.fancybox.close();
}

function resizeBidBox(width, height) {
    if (isMobilePlatform() || isRedirectedBidding())
        return;

    lightBoxContent().css({ width: width, height: height });
    $.fancybox.resize();
    $('#fancybox-inner').width(width);
    $('#fancybox-wrap').width(width + 40);
}

function bidAmountBox() {
    return $("input[id$='bidAmount']");
}

function enablePlacebidBox() {
    bidAmountBox().removeAttr('disabled');
}

function disablePlacebidBox() {
    bidAmountBox().attr('disabled', 'disabled');
}

function setupLightbox(buttonElementName, url, amountElementName, redirectUrl, timeoutMilliseconds) {
    setupLightboxWithAction(buttonElementName, url, amountElementName, ajaxBid, redirectUrl, timeoutMilliseconds);
}

function mvcBid(url, bidAmount) {
    if (bidAmount === "")
        bidAmount = "0";

    window.location = url + "?amount=" + bidAmount + "&auctionId=" + getAuctionId();
}
