﻿var currentstepId = 1;
var currentbkvalue = 0, currentwkvalue = 0;
var currentdeviceid = 0;
var isworking = false;
var currentbrandid = 0;
var lastbannerid = 0;
//var currentlanguageId = 0;
var deviceColumnCount = 4;
var brandColumnCount = 4;
var brandImageDimensions = { width: 157, height: 34 };
var lastConfirmation = "";
var bankaccounts = {
    belgium: "999-9999999-99",
    netherlands: "99?9999999",
    luxembourg: "999-99999999-99",
    france: "99999-99999-***********-99"
};

function onWizardPage(hash) {
    if (hash == "") {
        hash = "#/brands";
    }

    var hashComponents = /^#?\/([^\/]+)(\/(.+))?/.exec(hash);
    var action = hashComponents == null ? "brands" : hashComponents[1];
    var argument = hashComponents == null ? null : hashComponents[3];
    
    switch (action)
    {
        case "brands":
            if (argument == null || argument == "") {
                GetBrands();
            } else {
                var brandId = parseInt(argument);
                if ((brandId > 0) == false) {
                    brandId = currentbrandid;
                }
                if (brandId > 0) {
                    GetDevices(brandId);
                } else {
                    gotoWizardPage("/brands");
                }
            }
            break;

        case "devices":
            var ids = argument.split(',');
            var id = ids[0];
            var deviceId = parseInt(id);
            if ((deviceId > 0) == false) {
                deviceId = currentdeviceid;
            }
            if (deviceId > 0) {
                var basketItemId = ids.length > 1 ? parseInt(ids[1]) : null;
                GetSiteDevice(deviceId, basketItemId);
            } else {
                gotoWizardPage("/brands");
            }
            break;

        case "confirm":
            GetDataEntry();
            break;
            
        case "preview_done":
            SellPhone(0);
            break;

        case "preview_confirm":
            GetConfirmationPage(lastConfirmation);
            break;

        case "done":
            GetConfirmationPage(lastConfirmation);
            PopulateBasket([]);
            break;
    }
}

function SwitchSelPageLanguage(languageId) {
    $("#[id*=LID]").removeClass("currentlanguage");
    $("#[id*=LID]").addClass("cmsicon");
    currentlanguageId = languageId;
    $("#LID" + currentlanguageId).addClass("currentlanguage");
}

function createCallback(callback, parseData, parseError, page) {

    if (parseData == undefined) {
        parseData = true;
    }
    if (parseError == undefined) {
        parseError = true;
    }

    return function(data) {
        isLoading(false);
        var objdata;
        if (parseData || parseError) {
            objdata = JSON.parse(data);
        }
        if ((parseError && objdata.error) || (!parseError && data.error)) {
            alert(objdata.error);
        }
        else {
            if (page != null) {
                UpdateNavigation(page);
            }
            callback(parseData ? objdata : data);
        }
    }
}

function GetBrands() {
    var now = new Date();
    var basket = $("#userbasket").val();
    isLoading();
    //$("#content-basket").load("/BasketPage.htm?time=" + now.getMilliseconds());
    $.post(
        "/backofficeAjax/GetBrands/0/" + now.getMilliseconds(),
        createCallback(PopulateBrands, true, true, 1),
        "json"
    );
}

function PopulateBrands(objdata) {
    $("#wztables")
      .removeClass()
      .addClass("brands")
      .children("tbody")
        .html("");

    var iCellCnt = 0;
    var rowIndex = 0;
    var tblRow = "<tr>";
    var done = false;
    
    // Walk all devices
    $.each(objdata, function(i, brand) {

        var lastItem = (i == objdata.length - 1);
        var classSuffix = iCellCnt + (lastItem ? " last" : "");
        var oddOrEven = rowIndex % 2 == 0 ? " odd" : " even";

        tblRow += "<td class='column" + classSuffix + oddOrEven + "'><div class='brand-item'>";
        tblRow += "<div class='icon'><a href='#/brands/" + brand.Brandid +
            "' rel='history'><img border='0' alt='" + brand.Name +
            "' title='" + brand.Name +
            "' src='../content/brands/" + brand.IconImageName +
            "' width='" + brandImageDimensions.width +
            "' height='" + brandImageDimensions.height +
            "' /></a></div>";
        tblRow += "</div></td>";

        var lastBrandColumn = brandColumnCount - 1;

        if (lastItem) {

            var emptyCells = lastBrandColumn - iCellCnt;
            if (iCellCnt == lastBrandColumn) {
                tblRow += "<tr>";
                emptyCells = brandColumnCount;
            }
            for (var cellIndex = 0; cellIndex < emptyCells; cellIndex++) {
                tblRow += "<td class='column" + (iCellCnt + cellIndex + 1) + oddOrEven + " empty'></td>";
            }
            tblRow += "</tr>";

            $(tblRow).appendTo("#wztables tbody");
            done = true;
        }

        if (iCellCnt == lastBrandColumn && done == false) {
            iCellCnt = 0;
            tblRow += "</tr>";
            $(tblRow).appendTo("#wztables tbody");
            tblRow = "<tr>";
            rowIndex++;
        }
        else {
            iCellCnt++;
        }
    });

    fixHistoryLinks("#wztables");
    
    UpdateNavigation(1);

    SetTitle(step1);
    
    PopulateBasket();
    
    resizeFrame();
    
    $("#wztables").trigger('brands-loaded');
}
function GetDevices(brandid) {
    if (brandid == null) {
        brandid = currentbrandid;
    }
    var now = new Date();
    isLoading();
    $.post(
	    "/backofficeAjax/GetDevices/" + brandid + "/" + now.getMilliseconds(),
        createCallback(PopulateDevices, true, true, 2),
	    "json"
    );
}

function PopulateDevices(objdata) {
    $("#wztables")
      .removeClass()
      .addClass("devices")
      .children("tbody")
        .html("");

    var iCellCnt = 0;
    var rowIndex = 0;
    var tblRow = "<tr><td colspan='" + deviceColumnCount + "'><h2>" + objdata[0].BrandName + "</h2></td></tr>";

    var isSearch = !(objdata[0].Brandid > 0);
    if (isSearch == false) {
        currentbrandid = objdata[0].Brandid;
    }

    tblRow += "<tr>";
    var done = false;

    if (isSearch && objdata.length == 1) {
        tblRow += "<td>" + empty + "</td></tr>";
        $(tblRow).appendTo("#wztables tbody");
    }

    // Walk all devices
    $.each(objdata, function(i, device) {
        if (device.DeviceName != null) {
            var deviceName = device.DeviceName;
            if (device.BrandName != null) {
                deviceName = device.BrandName + " " + deviceName;
            }

            var lastItem = (i == objdata.length - 1);
            var classSuffix = iCellCnt + (lastItem ? " last" : "");
            var oddOrEven = rowIndex % 2 == 0 ? " odd" : " even";

            tblRow += "<td class='column" + classSuffix + oddOrEven + "'><div class='device-item'>";
            tblRow += "<div class='icon'><a href='#/devices/" + device.Deviceid +
                "' rel='history'><img border='0' alt='" + deviceName +
                "' title='" + deviceName +
                "' src='../../content/devices/" + device.IconImageName +
                "' width='" + thumbnailWidth +
                "' height='" + thumbnailHeight +
                "' /></a></div>";
            tblRow += "<div class='devicecode'>" + device.DeviceName + "</div>";
            tblRow += "</div></td>";

            var lastDeviceColumn = deviceColumnCount - 1;

            if (lastItem) {

                var emptyCells = lastDeviceColumn - iCellCnt;
                if (iCellCnt == lastDeviceColumn) {
                    tblRow += "<tr>";
                    emptyCells = deviceColumnCount;
                }
                for (var cellIndex = 0; cellIndex < emptyCells; cellIndex++) {
                    tblRow += "<td class='column" + (iCellCnt + cellIndex + 1) + oddOrEven + " empty'></td>";
                }
                tblRow += "</tr>";

                $(tblRow).appendTo("#wztables tbody");
                done = true;
            }

            if (iCellCnt == lastDeviceColumn && done == false) {
                iCellCnt = 0;
                tblRow += "</tr>";
                $(tblRow).appendTo("#wztables tbody");
                tblRow = "<tr>";
                rowIndex++;
            }
            else {
                iCellCnt++;
            }
        } else {
            if (isSearch == false) {
                tblRow += "<td>" + empty + "</td></tr>";
                $(tblRow).appendTo("#wztables tbody");
            }
        }
    });

    fixHistoryLinks("#wztables");

    UpdateNavigation(2);

    if (isSearch == false) {
        SetTitle(objdata[0].BrandName);
    }
    
    PopulateBasket();
    
    resizeFrame();
    
    $("#wztables").trigger('devices-loaded');
}

function GetSiteDevice(deviceid, basketitemid) {
    var now = new Date();
    isLoading();

    $.post(
        "/backofficeAjax/GetBrandSiteDevicePage/" + deviceid + "/" + currentlanguageId + "/" + now.getMilliseconds(),
        function(response, status, request) {

            isLoading(false);
            $("#wztables")
              .removeClass()
              .addClass("siteDevice")
              .children("tbody")
                .html(response);

            var sitedevice = JSON.parse($('#data').val());
            currentbkvalue = FormatPrice(sitedevice.BrokenPrice);
            currentwkvalue = FormatPrice(sitedevice.WorkingPrice);
            currentdeviceid = sitedevice.Deviceid;

            $('.confirm .question .info').tooltip({
                track: true,
                fade: 250,
                showURL: false
            });

            if (basketitemid != null) {
                RestoreUserDeviceVals(basketitemid);
            }

            SetTitle(sitedevice.BrandName + " " + sitedevice.DeviceName);

            UpdateNavigation(3);

            PopulateBasket();
            
            resizeFrame();
            
            $("#wztables").trigger('sitedevice-loaded');
        },
        "html"
    );
}

function UpdateNavigation(stepid) {

    $(".checkout").css('visibility', 'hidden');
        
    for (var step = 1; step <= 4; step++) {
        var wznav = $("#wznav" + step);
        var canSelWizardPage = CanSelWizardPage(step);
        
        wznav[step == stepid ? "addClass" : "removeClass"]("active");
        wznav[canSelWizardPage ? "addClass" : "removeClass"]("cmsicon");

        var link = wznav.children("a");
        
        // Clear all click handlers
        link.unbind("click");

        // If we cannot select this step, get rid of the link
        if (canSelWizardPage == false) {
            link.removeAttr("href");
        } else {
        
            // Setup the correct url for the link
            var linkUrl = "";
            switch (step) {
                case 1:
                    linkUrl = "#/brands";
                    break;
                case 2:
                    linkUrl = "#/brands/" + currentbrandid;
                    break;
                case 3:
                    linkUrl = "#/devices/" + currentdeviceid;
                    break;
                case 4:
                    linkUrl = "#/confirm";
                    $(".checkout").css('visibility', 'visible');
                    fixHistoryLinks(".subHeader");
                    break;
            }
            link.attr("href", linkUrl);

            // If the last step is request, setup confirmation on the links
            // to prevent unwanted navigation
            //if (stepid == 5) {
            //    link.bind("click", DoNotNavigateAwayFromReceipt);
            //}
        }
    }

    fixHistoryLinks(".navigation");

    currentstepId = stepid;
}
function DoNotNavigateAwayFromReceipt() {
    return currentstepId == 5 && !confirm(skipreceiptalert);
}
function CanSelWizardPage(stepid) {
    switch (stepid) {
        case 2:
            return currentbrandid != 0;

        case 3:
            return currentdeviceid != 0;

        case 4:
            var basketItems = GetBasketItems();
            return basketItems != null && basketItems.length > 0;
    }

    return true;
}
function ReCalcCurrentPrice() {

    var q1 = $("input[name='pu']:checked").val();
    var q2 = $("input[name='lcd']:checked").val();
    var q3 = $("input[name='keyboard']:checked").val();
    var q4 = $("input[name='battery']:checked").val();
    var q5 = $("input[name='imei']:text").val();
    if (q1 != undefined && q2 != undefined && q3 != undefined && q4 != undefined) {
        var confirmhtml = '';
        var value;
        if (q1 == 'true' && q2 == 'true' && q3 == 'true' && q4 == 'true') {
            value = currentwkvalue;
            isworking = true;
            //confirmhtml = confirmmsg + currentbkvalue;
        }
        else {
            value = currentbkvalue;
            isworking = false;
        }
        $('#currentvalue')[0].innerHTML = valuestring.replace("{0}", value);
        if (basketenabled) {
            confirmhtml += "<input onclick='AddToBasket(false);return false;' class='confirm-button button' type='button' value='" + confirmbutton + "' />";
            confirmhtml += "<input onclick='AddToBasket(true);return false;' class='confirm-button button' type='button' value='" + confirumplusaddbutton + "' />";
        } else {
            confirmhtml += "<input onclick='gotoWizardPage(\"/brands\");return true;' class='confirm-button button' type='button' value='" + checkanotherbutton + "' />";
        }
        $('.confirm .actions')[0].innerHTML = confirmhtml;
    }
}
function AddToBasket(keepshopping) {
    if ($("#imei").length > 0 && !$("form.state").validate().element("#imei")) return;
    
    isLoading();
    var now = new Date();
    var basket;
    var basketstring = $("#userbasket").val();
    if (basketstring.length > 0) {
        basket = JSON.parse($("#userbasket").val());
    }
    else {
        basket = "";
    }
    var newbasketitem = {
        Deviceid: currentdeviceid,
        IsWorking: isworking,
        PowerUp: $("input[name='pu']:checked").val(),
        LCDOK: $("input[name='lcd']:checked").val(),
        KeyboardOK: $("input[name='keyboard']:checked").val(),
        BatteryIncluded: $("input[name='battery']:checked").val(),
        IMEI: $("input[name='imei']:text").val()
    }
    var data = { Basket: basket, NewItem: newbasketitem }
    var encoded = JSON.stringify(data);
    var populateBasket = keepshopping ? PopulateBasketAndContinue : PopulateBasketAndConfirm;
    $.post(
	    "/backofficeAjax/AddToBasket/0/" + now.getMilliseconds(),
		{ data: encoded },
	    createCallback(populateBasket, false, false),
	    "json"
    );
}

function PopulateBasketAndConfirm(data) {
    PopulateBasket(data);
    gotoWizardPage("/confirm");
    //ChangeSelWizardPage(4);
}

function PopulateBasketAndContinue(data) {
    PopulateBasket(data);
    gotoWizardPage("/brands");
    //ChangeSelWizardPage(1);
}

function GetBasketItems() {
    // Try to get cookie
    var encodedUserBasket = $.cookie('userbasket');

    // Otherwise, get the hidden input
    if (encodedUserBasket == null) {
        encodedUserBasket = $('#userbasket').val();
    } else
    {
        encodedUserBasket = deflate(encodedUserBasket);
    }

    try
    {
        return encodedUserBasket != "" ?
            JSON.parse(encodedUserBasket) :
            "";
    }
    catch (e)
    {
        return "";
    }
}

function PopulateBasket(data) {

    $(".basket .items tbody").html("");

    if (data == null) {
        data = GetBasketItems();
    }

    if (data != null) {
        PopulateBasketItem(data);
    }
    
    $("#wztables").trigger("basketUpdate");
}
function PopulateBasketItem(basketitems) {
    var itemRows = "";
    var emptyRow = "<tr><td class='empty'>" + empty + "</td></tr>"
    var subttl = 0;
    var rowIndex = 0;
    var userRows = [];
    $.each(basketitems, function(i, basketitem) {
        if (basketitem.DeviceName != "UserRow") {

            var state = basketitem.IsWorking ? working : broken;
            var price = basketitem.IsWorking ? basketitem.WorkingPrice : basketitem.BrokenPrice;
            var classSuffix = rowIndex++ % 2 == 0 ? "odd" : "even";

            itemRows += "<tr>";
            itemRows += "<td class='device " + classSuffix + "'>" + basketitem.BrandName + ' ' + basketitem.DeviceName + " (" + state + ") </td>";
            itemRows += "<td class='price " + classSuffix + "'> &euro; " + FormatPrice(price) + "</td>";
            itemRows += "<td class='actions " + classSuffix + "'><a title='" + removebasket + "' onclick='RemoveBasketItem(" + basketitem.BasketItemid + ")' class='cmsicon delete'>" + removebasket + "</a><a title='" + editbasket + "' href='#/devices/" + basketitem.Deviceid + "," + basketitem.BasketItemid + "' class='cmsicon edit'>" + editbasket + "</a></td>";
            itemRows += "</tr>";

            subttl += price;
        } else {
            userRows.unshift(i);
        }
    });

    // Get rid of user rows
    $.each(userRows, function(i, rowIndex) {
        basketitems.splice(rowIndex, 1);
    });

    $(".basket .items tbody").html(itemRows || emptyRow);
    $(".basket .total p.brut span").html(FormatPrice(subttl));
    $(".wizard .confirm-button").toggle(itemRows ? true : false);
    
    $(".thirdpartyshare")[subttl ? "fadeIn" : "fadeOut"]();
    
    var thirdPartyShare = updateThirdPartyShare(subttl);
    if (thirdPartyShare && subttl) {
        $(".basket .total p.brut").addClass("scratch");
        $(".basket .total .net").fadeIn().children("span").html(FormatPrice(subttl - thirdPartyShare));
    } else {
        $(".basket .total p.brut").removeClass("scratch");
        $(".basket .total .net").fadeOut();
    }

    var encoded = JSON.stringify(basketitems);
    $("#userbasket").val(encoded);
    $.cookie('userbasket', compress(encoded), { path: '/' });
    
    // If we're on wizard step 4, there's nothing in the basket, and there
    // aren't any user rows (which happens when confirming the sell),
    // Go back to square 1
    if (currentstepId == 4 && basketitems.length == 0 && userRows.length == 0) {
        //ChangeSelWizardPage(1);
        gotoWizardPage("/brands");
    }
}

function updateThirdPartyShare(value) {

    var percentage = $("#percentage").val();
    if (percentage) {
    
      var thirdpartyshare = Math.round(value * percentage) / 100;
      
      $(".thirdpartyshare p span").html(FormatPrice(thirdpartyshare));
      
      return thirdpartyshare;
    }
}

function RemoveBasketItem(biid) {
    isLoading();
    var now = new Date();
    var basket = JSON.parse($("#userbasket").val());

    var data = { Basket: basket }
    var encoded = JSON.stringify(data);
    $.post(
	    "/backofficeAjax/RemoveFromBasket/" + biid + "/" + now.getMilliseconds(),
	    { data: encoded },
        createCallback(PopulateBasket, false, false),
	    "json"
    );
}
function RestoreUserDeviceVals(basketitemid) {
    //now set the values from the basket to the radio values for this users device
    var basketstring = $("#userbasket").val();
    if (basketstring.length > 0 && basketitemid != 0) {
        var basket = JSON.parse(basketstring);
        $.each(basket, function(i, basketitem) {
            if (basketitem.BasketItemid == basketitemid) {
            
                $(basketitem.LCDOK           ?      "#lcd-true" :      "#lcd-false").attr("checked", true);
                $(basketitem.PowerUp         ?       "#pu-true" :       "#pu-false").attr("checked", true);
                $(basketitem.KeyboardOK      ? "#keyboard-true" : "#keyboard-false").attr("checked", true);
                $(basketitem.BatteryIncluded ?  "#battery-true" :  "#battery-false").attr("checked", true);
                $("input#imei").val(basketitem.IMEI);
                
                ReCalcCurrentPrice();
                RemoveBasketItem(basketitemid);
            }
        });
    }
}

function updateCountryDependentControls() {
    setBankAccountMask();
}

function setBankAccountMask() {
    var country = $("#country").val().toLowerCase();

    var format = bankaccounts[country];
    var bankaccount = $("#bankaccount");

    bankaccount.unmask();
    
    switch (typeof format)
    {
        case "string":
            bankaccount.mask(format, { completed: function() { calcIBAN(); }  });
            break;

        case "function":
            var actualFormat = format();
            bankaccount.mask(actualFormat, { completed: function() { calcIBAN(); } });
            break;
    }
}

function calcIBAN() {
  var ibanNumber = "";
  showBankName();
    var validate = $("#frmSllPhone").validate();
    if (!$("#bankaccount").val() || !validate.element("#bankaccount")) {
      return;
    }

    var now = new Date();
    var requestData = {
      country: $("#country").val().toLowerCase(),
      account: $("#bankaccount").val()
      //bic: $("#bic").val()
    };

    // Reset all before loading, so we won't post invalid values
	  $("#ibannumber").val('');
	  $("#bankname").val('');
    showBankSelection([{ bic: '' }]);

    hideBankName();
    enableButton('#btnsellphone', false);

    $.post(
	    "/backofficeAjax/CalculateIban/0/" + now.getMilliseconds(),
      requestData,
	    function (data) {

	      if (data.error) {
	        $.extend(data, {
	          IbanNumber: '',
	          BIC: '',
	          BankName: ''
	        });
	      }

	      showBankSelection(data.BICs || [{ bic: data.BIC}]);

	      // If there is no bic list, we have only 1 bank
	      if (!data.BICs) {
	        $("#ibannumber").val(data.IbanNumber);
	        $("#bankname").val(data.BankName||'');
	        showBankName(data.BankName);
	      }

	      enableButton('#btnsellphone', true);
	    },
	    "json"
    );
}

function showBankSelection(bics) {
  $('.bicEntry').show();
  $('.banknameEntry').hide();

  // Create options
  var bicItems = $.map(bics, function (item, index) {
    var selected = index == 0 ? ' selected="selected"' : '';
    return '<option value="' + item.bic + '"' + selected + '>' + item.city + '</option>';
  });
  
  // Create attributes
  var attributes = $.map($('#bic').get(0).attributes, function(item, index) {
    return ' ' + item.nodeName + '="' + item.nodeValue + '"';
  });
  
  // Create select
  var select = '<select' + attributes.join('')+ '>' + bicItems.join('') + '</select>';
  
  // Insert <select>
  $('#bic').replaceWith(select);
}

function hideBankName() {
  // Show bank entry, hide bic selection
  $('.bicEntry').hide();
  $('.banknameEntry').show();
  
  // Show loading animation
  $('#bankname-value, #bankname-error').hide();
  $('#bankname-loading').show();
}

function showBankName(bankName) {
  // Show bic selection, hide bank entry
  $('.bicEntry').hide();
  $('.banknameEntry').show();

  // Show bank information
  $('#bankname-loading').hide();
  if (bankName) {
    $('#bankname-value').text(bankName).show();
    $('#bankname-error').hide();
  } else {
    $('#bankname-error').show();
    $('#bankname-value').hide();
  }
}

function enableButton(selector, doEnable) {
  if (doEnable) {
    $(selector)
      .removeAttr('disabled')
      .removeClass('disabled');
  } else {
    $(selector)
      .attr('disabled', 'disabled')
      .addClass('disabled');
  }
}

function SellPhone(serverTicks) {
    if ($("#frmSllPhone").valid()) {

        //So now we have a valid form, lets send the data to the server
        isLoading();
        var basket = JSON.parse($("#userbasket").val());
        var questions = {
            CurrentMobile: $('#currentmobile').val(),
            CurrentPDA: $('#currentpda').val(),
            AgeRange: $('#agerange').val(),
            HowHeard: $("input[name='heard']:checked").val()
        }
        var personaldata = {
            FirstName: $('#firstname').val(),
            LastName: $('#lastname').val(),
            Country: $('#country').val(),
            Street: $('#street').val(),
            HouseNumber: $('#number').val(),
            AddressSuffix: $('#suffix').val(),
            PostalCode: $('#postal').val().replace(" ", "").toUpperCase(),
            Location: $('#location').val(),
            PhoneNumber: $('#phone').val().replace(/[-\\/() ]+/g, ""),
            Email: $('#email1').val(),
            BankAccount: $('#bankaccount').val(),
            BankName: $('#bankname').val(),
            BIC: $('#bic').val(),
            IbanNumber: $('#ibannumber').val(),
            Percentage: $('#percentage').val() || 0,
            DateHash: serverTicks
        }

        var data = {
            PFSUser: personaldata,
            Questionnaire: questions,
            Basket: basket
        }

        var now = new Date();
        var encoded = JSON.stringify(data);
        
        var customerId = getParam('CustomerID');
        var customerData = getParam('CustomerData');
        var customerQuery = (customerId || customerData) ? ('?CustomerID=' + customerId + '&CustomerData=' + customerData) : '';
        
        $.post(
            "/backofficeAjax/SellPhone/0/" + currentlanguageId + customerQuery,
            { data: encoded },
            function(response, status, request) {

                lastConfirmation = response;
                isLoading(false);
                if (serverTicks == 0) {
                    gotoWizardPage("/preview_confirm");
                } else {
                    gotoWizardPage("/done");
                }
            },
            "html"
        );
    } else {
      resizeFrame();
    }
}

function GetConfirmationPage(confirmation) {
    if (confirmation == null || confirmation == "") {
        confirmation = dataExpired;
    }
    $("#wztables")
        .removeClass()
        .addClass("sellPhone")
        .children("tbody")
            .html(confirmation);

    UpdateNavigation(5);
    
    SetTitle(thankyou);
    
    resizeFrame();
    
    $("#wztables").trigger('confirmation-loaded');
}

function GetDataEntry() {
    var now = new Date();
    isLoading();
    $("#wztables")
      .removeClass()
      .addClass("dataEntry")
      .children("tbody")
        .load(
          "/backofficeAjax/GetEnterDataPage/" + currentlanguageId + "/" + now.getMilliseconds(),
          "",
          function(response, status, request) {
              isLoading(false);

              if (!questionnaireenabled) {
                  $('#content-questionnaire').hide();
              }
              if (!personaldataenabled) {
                  $('#content-personaldata').hide();
              }

              UpdateNavigation(4);

              PopulateBasket();

              SetTitle(step4);

              $('#frmSllPhone').listenForChange();
              
              $('#frmSllPhone input').keypress(function(e) {
                  if (e.keyCode == 13) {
                      //SellPhone();
                      $("#btnsellphone").click();
                      return false;
                  }
              });

              $("#country").change(function(e) {
                  updateCountryDependentControls();
              });

              $('#bic,#bankaccount').change(function(e) {
                  calcIBAN();
              });

              setBankAccountMask();

              resizeFrame();
              
              $("#wztables").trigger('dataentry-loaded');
          }
        );
}

function Field(fieldName, label, content) {
    return '<p class="field field' + fieldName + '"><label>' + label + ':</label> <span>' + content + '</span></p>';
}
function ImageUrl(iconImageUrl) {
    return iconImageUrl.replace(/^thmb-/, '');
}
function FormatPrice(price) {
    return price.toFixed(2).replace('.', ',');
}
function GetDate(dateString) {
    var strValue = dateString.match('[0-9]{1,}');
    var intValue = parseInt(strValue);
    var realDate = new Date(intValue);
    return realDate.toLocaleString();
}

function GetBanner() {
    var now = new Date();
    $.post(
	    "/backofficeAjax/GetBanner/" + lastbannerid + "/" + now.getMilliseconds(),
	    createCallback(RotateBanner, true, true),
	    "json"
    );
}
function RotateBanner(banner) {
    var deviceImage = "<img border='0' src='../../Content/Devices/" + banner.IconImageName + "' width='" + thumbnailWidth + "' height='" + thumbnailHeight + "' />";
    var brandImage = "<img border='0' src='../../Content/Brands/" + banner.BrandImage + "' width='" + brandImageDimensions.width + "' height='" + brandImageDimensions.height + "' />";
    var deviceName = banner.DeviceName;
    var deviceQuote = wepay.replace("{0}", FormatPrice(banner.WorkingPrice));
    var deviceLink = defaultwizardurl + "#/devices/" + banner.Deviceid;

    lastbannerid = banner.Deviceid;

    $(".rotatingBanner .wrapper")
      .fadeOut("slow")
        .children(".deviceImage").attr("href", deviceLink).html(deviceImage).parent()
        .children(".brandImage").attr("href", deviceLink).html(brandImage).parent()
        .children(".deviceName").attr("href", deviceLink).html(deviceName).parent()
        .children(".deviceQuote").attr("href", deviceLink).html(deviceQuote).parent()
      .hide()
      .fadeIn("slow", function(el) { $(el).removeAttr("filter"); })
      .pause(3000)
      .fadeOut("slow", function() { GetBanner(); });
}
function ClearSearchBox() {
    $("#searchbox").get(0).value = "";
}
function DoSearch() {
    if (DoNotNavigateAwayFromReceipt()) {
        return;
    }

    isLoading();
    var now = new Date();
    var data = { term: $("#searchbox").val() }
    var encoded = JSON.stringify(data);
    $.post(
	    "/backofficeAjax/Search/0/" + now.getMilliseconds(),
	    { data: encoded },
	    createCallback(PopulateSearchResults, false, false, 0),
	    "json"
    );

}
function PopulateSearchResults(results) {

    SetTitle(searchResults + " - " + $("#searchbox").val());

    $('#searchbox').val('');
    
    results.unshift({ BrandName: searchresults });

    PopulateDevices(results);
}

function isLoading(loading) {
  if (loading == null || loading) {
      $(".warnings").hide();
      $(".errors").hide();
      $(".content").loadmask("");
  } else {
    $(".content").unloadmask();
  }
}

function resizeFrame()
{
    try
    {
        // Activate frame resizer
        var src = $("#resizeFrame").attr("src");
        if (src) {
            // Get page height
            var height = $(document.body).height();
            var url = getUrl(src, {
                height: height,
                r: Math.random()
            });

            $("#resizeFrame").attr("src", url);
        }
        $("#wztables").trigger('resize');
    }
    catch (err)
    {
    }
}

function getUrl(url, params) {

    var newUrl = url || window.location.href || '';

    // Make sure there's a question mark
    if (newUrl.indexOf('?') < 0) {
        newUrl += '?';
    }

    // Walk all params
    for (var key in params) {
    
        var re = RegExp('([&?])' + key + '=[^&=]*');
        var keyAndParam = key + '=' + params[key];
        
        // Try to replace variable
        var fixedUrl = newUrl.replace(re, '$1' + keyAndParam);

        // If variable was not replaced, insert it after the question mark
        newUrl =
            fixedUrl != newUrl ?
                fixedUrl :
                fixedUrl.replace('?', '?' + keyAndParam + '&');
    }
    
    return newUrl;
}

function showError(message) {
    $(".errors")
        .text(message)
        .fadeIn();
}

$().ready(function() {
    $('#searchbox').keyup(function(e) {
        if (e.keyCode == 13) {
            DoSearch();
        }
    });

    $.ajaxSetup({
        timeout: 10000,
        error: function(request, status, errorThrown) {

            isLoading(false);

            switch (Number(request.status)) {

                case 0:
                    showError('Connection was interrupted while requesting data');
                    break;

                case 404:
                    showError('Requested URL not found.');
                    break;

                case 500:
                    showError(request.statusText);
                    break;

                default:
                    switch (String(status)) {

                        case "parsererror":
                            showError('Error.\nParsing JSON Request failed.');
                            break;

                        case "timeout":
                            showError('Request Time out.');
                            break;

                        default:
                            showError('Unknow Error.\n' + request.responseText);
                            break;
                    }
            }
        }
    });
});

function SetTitle(title) {
    document.title = title;
}

function gotoWizardPage(page) {
  $.address.value(page);
}

function fixHistoryLinks(containerSelector) {
    $("a[rel='history'][href]", containerSelector)
        .unbind()
        .click(function() {
            var url = this.href.replace(/^.*#/, '');
            $.address.value(url);
            return false;
        });
}

function compress(s)
{
    return $.base64Encode($.lzwEncode(s));
}

function deflate(s)
{
    return $.lzwDecode($.base64Decode(s));
}

function getParam( name )
{
    name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
    var regexS = "[\\?&]"+name+"=([^&#]*)";
    var regex = new RegExp( regexS );
    var results = regex.exec( document.location.toString() );
    if( results == null )
      return "";
    else
      return results[1];
}
      
$(function() {

    if (isWizard) {
        $.address.change(function(event) {
          onWizardPage(event.value);
        });
        fixHistoryLinks(".wizard");

        // If there's no hash, set a default one
        if (!$(document).data('hash.loaded') && /^#?$/.test(document.location.hash)) {
            $(document).data('hash.loaded', true);
            $.address.value("/brands");
        }
    }
    else {
        GetBanner();
    }
});


