﻿/// <reference path="../external/js/jquery-1.4.1.js" />


function GetProductAdditionalOptions(counter) {
    var ids = new Array();
    jQuery("select[name='ProductAdditionalOptionGroups"+counter+"']").each(function() {
        ids.push(jQuery(this).val());
    }
)
    return ids.toString();
}
function GetAmount(counter) {
    return jQuery("#txtCartAmount"+counter).val();
}

function AddProductToCart(idProduct, additionalOptions, amount) {
    FrontEndServices.AddProductToCart(idProduct, additionalOptions, amount, OnAddProductToCart);
}

function EmptyCart() {

    FrontEndServices.EmptyCart(OnEmptyCart);
    return false;
}

function OnEmptyCart(result) {
    ShowMessage(result.Messages, "");
    if (result.Success) {
        FrontEndServices.UpdateBasketInformation(OnUpdateBasketInformationSuccess);
    }
}

function OnAddProductToCart(result) {
    var messageBoxType = result.Success ? "information" : "error";
    ShowMessage(result.Messages, messageBoxType);
    if (result.Success) {
        FrontEndServices.UpdateBasketInformation(OnUpdateBasketInformationSuccess);
    }
}

function OnUpdateBasketInformationSuccess(result) {

    $("#shoppingCart").children().remove().end();
    $("#shoppingCart").append(result.Messages[0]);

}

function ShowMessage(messages, messageBoxType) {
    
    var content = "<ul>";
    for (var i = 0; i < messages.length; i++) {
        content += "<li>" + messages[i] + "</li>"
    }
    content += "</ul>";

    jQuery.blockUI({ message: "<br/><h3>"+content+"</h3><br/>" });
    setTimeout(jQuery.unblockUI, 1500);
}

function AnimateMessages() {
jQuery("#divMessage").animate({
        opacity: 0
    }, 1000, function() { jQuery("#divMessage").css("display", "none"); })
}

function ValidateCreditCardExpirationDate(source, args) {
    var todayDate = new Date();
    todayDate = CreateDateFromData(todayDate.getFullYear(), todayDate.getMonth(), 1);
    var cardExpirationDate = CreateDateFromData(jQuery("#ctl00_ContentPlaceHolder1_ddlExpirationYear").val(), jQuery("#ctl00_ContentPlaceHolder1_ddlExpirationMonth").val() - 1, 1);
    args.IsValid = cardExpirationDate != null && todayDate != null && cardExpirationDate >= todayDate;
}

function CreateDateFromData(year, month, day) {
    if (year == null || month == null || day == null) {
        return null;
    }
    try {
        var date = new Date();
        date.setFullYear(year);
        date.setMonth(month, day);
        return date;
    }
    catch (exc) {
        return null;
    }
}

function ValidateCreditCardType(source, args) {

    var creditCardNumber = jQuery("#ctl00_ContentPlaceHolder1_txtCreditCardNumber").val();
    var selectedPaymentType = jQuery("#ctl00_ContentPlaceHolder1_ddlCreditCardType").val();
    var regEx = "";
    switch (selectedPaymentType) {
        case "AMEX":
            regEx = /^3[4,7]\d{13}$/;
            break;
        case "DINERS":
            regEx = /^3[0,6,8]\d{12}$/;
            break;
        case "MASTERCARD":
            regEx = /^5[1-5]\d{2}-?\d{4}-?\d{4}-?\d{4}$/;
            break;
        case "VISA":
            regEx = /^4\d{3}-?\d{4}-?\d{4}-?\d{4}$/;
            break;
    }
    args.IsValid = regEx == "" ? false : ValidateCreditCardNumber(creditCardNumber, regEx);
}

function ValidateCreditCardNumber(creditCardNumber, regEx) {
    if (!ValidateNumber(creditCardNumber)) {
        return false;
    }
    if (!ValidateNumberRegEx(creditCardNumber, regEx)) {
        return false;
    }
    return ValidateMod10(creditCardNumber);
}

function ValidateMod10(creditCardNumber) {
    if (creditCardNumber.length <= 0) {
        return false;
    }
    var numberLength = creditCardNumber.length;
    var parity = numberLength % 2;
    var sum = 0;

    for (var index = 0; index < numberLength; index++) {
        if (!IsNumber(creditCardNumber.charAt(index))) {
            return false;
        }
        var digit = parseInt(creditCardNumber.charAt(index));
        if ((index % 2) == parity) {
            digit *= 2;
            if (digit > 9) {
                digit -= 9;
            }
        }
        sum += digit;
    }
    return (sum % 10) == 0;
}


function ValidateNumber(number) {
    if (number != '') {
        for (var i = 0; i < number.length; i++) {
            if (!IsNumber(number.charAt(i))) {
                return false;
            }
        }
    }
    return true;
}

function ValidateNumberRegEx(number, regEx) {
    return (number.match(regEx) != null);
}

function IsNumber(x) {
    return !isNaN(parseInt(x));
}

function Purchase() {
    Page_ClientValidate();
    if (Page_IsValid) {
        jQuery.blockUI({ message: "<br/><h3>" + pleaseWaitMessage + "</h3><br/>" });
    }
}

function MM_openBrWindow(theURL, winName, features) {
    window.open(theURL, winName, features);
}

function SendFreeAdvertQuery(idFreeAdvert) {
    
    var answer = $("#hfAntiSpam").val();
    var userAnswer = $("#txtAntiSpamAnswer").val();
    var contactDetail = $("#txtFreeAdvertContactDetails").val();
    var query = $("#txtFreeAdvertQuery").val();

    if (contactDetail == "" || query == "") {
        
        jQuery.blockUI({ message: "<br/><h3>Kontakt podaci i upit su obavezni za unos</h3><br/>" });
        setTimeout(jQuery.unblockUI, 1500);
        return false;
    }
    
    if (userAnswer == "") {
        
        jQuery.blockUI({ message: "<br/><h3>Molimo odgovorite na anti-spam pitanje</h3><br/>" });
        setTimeout(jQuery.unblockUI, 1500);
        return false;
    }

    if (!(answer == userAnswer)) {
        
        jQuery.blockUI({ message: "<br/><h3>Anti-spam odgovor nije točan</h3><br/>" });
        setTimeout(jQuery.unblockUI, 1500);
        return false;
    }
    
    $.blockUI({ message: "<br/><h3>" + pleaseWaitMessage + "</h3><br/>" });
    FrontEndServices.SendFreeAdvertQuery(idFreeAdvert, contactDetail, query, OnSendFreeAdvertQuery);
}

function OnSendFreeAdvertQuery(result) {
    $.unblockUI();
    var messageBoxType = result.Success ? "information" : "error";
    ShowMessage(result.Messages, messageBoxType);
    if (result.Success) {
        jQuery("#divFreeAdvertQuery").hide();
    }
}

function ClearFreeAdvertForm() {

    $("#txtFreeAdvertContactDetails").val("");
    $("#txtFreeAdvertQuery").val("");
    $("#txtAntiSpamAnswer").val("");
}

function ValidatePackageAmount(itemAmount, selectedAmount, control) {

    if ((selectedAmount > itemAmount) || (selectedAmount <= 0)) {
        jQuery.blockUI({ message: "<br/><h3>Količina za umatanje mora biti veća od nule te manja ili jednaka količini proizvoda</h3><br/>" });
        setTimeout(jQuery.unblockUI, 3500);
        $(control).val(itemAmount);
    }
    
}


