﻿$(document).ready(function() {
    if (isFile('http://' + window.location.hostname + ':' + window.location.port + '/Content/Skins/Default/banner.swf')) {
        $('#banner').flash({
            swf: '/Content/Skins/Default/banner.swf',
            height: 80,
            width: 750
        });
    }
});

// Attaches validation rules to all present forms when a page is loaded.
$(document).ready(function() {
    // Set AJAX request timeout
    Sys.Net.WebRequestManager.set_defaultTimeout(10000);
    attachValidationToAllForms(null);
    // Display notification if found
    if ($(".notification").html() != null) {
        if ($(".notification").html() != "") {
            if ($(".notification").html().trim() != "")
                $(".notification").fadeIn("slow");
        }
    }
    // Extends jquery.validate with regexp validation
    $.validator.addMethod(
        "regex",
        function(value, element, regexp) {
            if (regexp.constructor != RegExp)
                regexp = new RegExp(regexp);
            else if (regexp.global)
                regexp.lastIndex = 0;
            return this.optional(element) || regexp.test(value);
        },
        "X"
    );
    // Hide elements that should be hidden on load
    $('.hiddenOnLoad').hide();
    // Wire reset button
    $('.resetButton').click(function(event) {
        $(this).parents('form').find('input[type=text]').val('');
        $(this).parents('form').find('input[type=file]').val('');
        $(this).parents('form').find('textarea').text('');
        event.preventDefault();
    });
});


function genericTableSort() {
    $('.sortedTable').tablesorter({
        headers: {
            0: {
                sorter: false
            }
        }
    }
    );
}
function sortAuctionObject() {
    $('.auctionObjectList').tablesorter({
        headers: {
            0: {
                sorter: false
            },
            1: {
                sorter: false
            },
            2: {
                sorter: false
            },
            5: {
                sorter: 'customcurrency'
            }
        }
    }
    );
}
// Attaches validation rules to all present forms.
function attachValidationToAllForms(ajaxContext) {
    $('form').each(function(idx) {
        var model = $(this).attr("class");
        if (model == "")
            return;
        var rules = jQueryValidationRulesFor[model];
        $(this).validate(rules);
    });
}

// Returns the validation status for a form.
function validateAllForms(ajaxContext) {
    var allFormsOk = true;
    $('form').each(function(idx) {
        var formOk = $(this).validate().form();
        if (!formOk)
            allFormsOk = false;
    });
    return allFormsOk;
}

function clearEditArea(ajaxContext) {
    $("#editArea").html("");
    $("#editArea").jqmHide();
}

function wireCancelButton(selector, containerId) {
    $(selector).click(function() {
        $(containerId).html("");
        $(containerId).jqmHide();
        return false;
    });
}
function prepareEditAreaForm(ajaxContext) {
    attachValidationToAllForms(ajaxContext);
    wireCancelButton('.cancelEditArea', '#editArea');
    $('#editArea').wrapInner('<div class="modalView"></div>');
    $('#editArea').jqm();
    $('#editArea').jqmShow();
    $("div.modalView").scrollTop(0);
}
function bidderPrepareEditAreaForm(ajaxContext) {
    attachValidationToAllForms(ajaxContext);
    wireCancelButton('.cancelEditArea', '#editArea');
    $('#editArea').wrapInner('<div class="modalView"></div>');
    var hideFunc = function(hash) {
        hash.w.fadeOut('250', function() { hash.o.remove(); });
        if (reloadOnBidderPopUpClose) {
            window.location.href = window.location.href;
        }
        bidderPopUpVisible = false;
    }
    $('#editArea').jqm({ onHide: hideFunc });
    $('#editArea').jqmShow();
    $("div.modalView").scrollTop(0);
    bidderPopUpVisible = true;
}

function ajaxFailure(ajaxOptions) {
    //
    //alert(ajaxError.$('body').html());

    if (ajaxOptions.$2._timedOut) {
        alert('AJAX Request timed out');
    } else {
        //alert(ajaxOptions.get_data());
        var ajaxError = ajaxOptions.$2.get_responseData();
        var r = new RegExp('^(.*)<body([^>]*)>(.*)</body>(.*)$');
        var match = r.exec(ajaxError)
        var errorBody = '';
        if (match != null)
            errorBody = match[3];
        //errorBody = $(ajaxError).find('span:first');
        alert(ajaxOptions.$2.get_statusCode() + ': ' + ajaxOptions.$2.get_statusText() + '\n' + errorBody);
    }
}
function toggleFilter() {
    $('#filter').css('display') == 'none' ? $('#filter').fadeIn('slow') : $('#filter').fadeOut('fast');
}
function resetCheckBoxes(formId) {
    $("#" + formId + " input[type='checkbox']").attr('checked', false);
}
function startCountdown(clockId, secondsLeft) {
    var browserStartEpoch = (new Date()).valueOf();
    var code = 'advanceTime(' + clockId + ',' + browserStartEpoch + ',' + secondsLeft * 1000 + ')';
    window.setInterval(code, 200);
}
function nowEpochUtc() {
    var nowLocal = new Date();
    var nowEpochUtc = Date.UTC(
		nowLocal.getFullYear(),
		nowLocal.getMonth(),
		nowLocal.getDate(),
		nowLocal.getHours(),
		nowLocal.getMinutes(),
		nowLocal.getSeconds(),
		nowLocal.getMilliseconds()
	);
    return nowEpochUtc;
}
function advanceTime(clockId, browserStartEpoch, milliSecondsLeft) {
    var browserNowEpoch = (new Date()).valueOf();
    var milliSecondsElapsedSinceStartedCounting = browserNowEpoch - browserStartEpoch;
    var milliSecondsLeftNow = milliSecondsLeft - milliSecondsElapsedSinceStartedCounting;
    if (milliSecondsLeftNow >= 0) {
        $('#clock' + clockId).text(formatDuration(milliSecondsLeftNow));
        // TODO: Använd bara jQuery när tiden faktiskt ändrats för att vara snäll mot Central Processing Uniten
    }
}
function formatDuration(milliseconds) {
    var sec = Math.floor(milliseconds / 1000);
    var min = Math.floor(sec / 60);
    var hr = Math.floor(min / 60);
    var dy = Math.floor(hr / 24);
    var s = sec % 60
    var m = min % 60;
    var h = hr % 24;
    var d = dy;
    var tt = (d > 0 ?
                (d > 1 ? d.toString() + ' ' + content.days : d.toString() + ' ' + content.day)
                 + ' ' : '') +
            (h > 0 ?
                (h > 1 ? h.toString() + ' ' + content.hours : h.toString() + ' ' + content.hour)
                + ' ' : '') +
            (m > 0 ?
                (m > 1 ? m.toString() + ' ' + content.minutes : m.toString() + ' ' + content.minute)
                + ' ' : '') +
            ((s > 1 || s == 0) ? s.toString() + ' ' + content.seconds : s.toString() + ' ' + content.second);
    return tt;
}
function isFile(str) {
    var O = AJ();
    if (!O) return false;
    try {
        O.open("HEAD", str, false);
        O.send(null);
        return (O.status == 200) ? true : false;
    }
    catch (er) {
        return false;
    }
}
function AJ() {
    var obj;
    if (window.XMLHttpRequest) {
        obj = new XMLHttpRequest();
    }
    else if (window.ActiveXObject) {
        try {
            obj = new ActiveXObject('MSXML2.XMLHTTP.3.0');
        }
        catch (er) {
            obj = false;
        }
    }
    return obj;
}

// Bidding

var minimumBidAmount;

function preparePlaceBidForm() {
    minimumBidAmount = parseFloat($("#BidAmount").attr("value"));
    bidderPrepareEditAreaForm();
    $("#NumberOfObjects").change(function() {
        updateTotalSum();
    })
        .change();
    $("#BidAmount").keyup(function() {
        updateTotalSum();
    })
        .keyup();
}

function updateTotalSum() {
    var enteredBidAmount = $("#BidAmount").attr("value").replace(',', '.');
    var bidAmount = parseFloat(0 + enteredBidAmount);
    var displaySum;
    if ($("#NumberOfObjects").length > 0)
        displaySum = parseFloat($("#NumberOfObjects option:selected").text()) * bidAmount;
    else
        displaySum = parseFloat($("#NumberOfObjectsHidden").attr("value")) * bidAmount;

    // displaySum += adminContentCurrency; // " <%= AdminContent.Currency %>";
    var displaySumStr = currencyTemplate.replace('55', 'ÖREN!!').replace('666', Math.floor(displaySum)).replace('ÖREN!!', Math.floor(100 * (displaySum - Math.floor(displaySum))));
    if (bidAmount < minimumBidAmount) {
        displaySum += bidderContentBidIsTooSmall; // " <%=BidderContent.BidIsTooSmall%>";
    }
    $("#BidSum").html(displaySumStr);
}

function validateBid() {
    var bidAmount = parseFloat($("#BidAmount").attr("value"));
    if (bidAmount >= minimumBidAmount) {
        return true;
    }
    else
        return false;
}
