﻿var current_original_photo_url = "";
var preloadImagePopUp = new Image();
var popupWin;

//Меняет фотографию в большом окне и меняет текущий путь к оригинальному изображению 
function changePicture(new_path, id_placeholder, original_photo_url) {
    var img = document.getElementById(id_placeholder);
    img.src = new_path;
    current_original_photo_url = original_photo_url;
    preloadImagePopUp.src = current_original_photo_url.toString();
}

//Показывает в поп-ап-окне текущее оригинальное изображение
function bigPhotoClicked() {
    var img = preloadImagePopUp;
    if (popupWin == null || popupWin.closed) {
        popupWin = window.open('PopUpPicture.aspx', null, "height=275,width=275,toolbar=no,menubar=no", false);
    }
    else {
        popupWin.document.body.innerHTML = "";
        if (navigator.appName.toString() == "Opera") {
            popupWin.close();
            popupWin = window.open('PopUpPicture.aspx', null, "height=275,width=275,toolbar=no,menubar=no", false);
        }
    }
    popupWin.focus();

    var arr = new Array();
    arr.push(current_original_photo_url);

    //Предварительно кешируем картинку и показываем ее в поп-ап-окне
    ImagePreloader(arr, popUpOpener);
}

//Инициализирует current_original_photo_url путем на основную фотографию товара
function initOriginalImage(original_photo_url) {
    current_original_photo_url = original_photo_url;
    preloadImagePopUp.src = current_original_photo_url.toString();
}

//Открывает поп-ап под размер картинки под указанным image_url
function photoClicked(image_url) {
    if (popupWin == null || popupWin.closed) {
        popupWin = window.open('PopUpPicture.aspx', null, "height=275,width=275,toolbar=no,menubar=no", false);
    }
    else {
        popupWin.document.body.innerHTML = "";
        if (navigator.appName.toString() == "Opera") {
            popupWin.close();
            popupWin = window.open('PopUpPicture.aspx', null, "height=275,width=275,toolbar=no,menubar=no", false);
        }
    }
    popupWin.focus();

    var arr = new Array();
    arr.push(image_url);

    //Предварительно кешируем картинку и показываем ее в поп-ап-окне
    ImagePreloader(arr, popUpOpener);


}

//Класс-загрузчик изображений - в конструкторе получает на вход массив ссылок на картинки
//и функцию callback(Array() arr, int i), которая будет вызвана, как только все картинки будут загружены
function ImagePreloader(images, callback) {
    //store the call-back
    this.callback = callback;

    //initialize internal state.
    this.nLoaded = 0;
    this.nProcessed = 0;
    this.aImages = new Array();

    //record the number of images.
    this.nImages = images.length;

    //for each image, call preload()
    for (var i = 0; i < images.length; i++) {
        preload(images[i]);
    }
}

function preload(image) {
    //create new Image object and add to array
    var oImage = new Image();
    this.aImages.push(oImage);
    //set up event handlers for the Image object
    oImage.onload = ImagePreloader.prototype.onload;
    oImage.onerror = ImagePreloader.prototype.onerror;
    oImage.onabort = ImagePreloader.prototype.onabort;
    //assign pointer back to this.
    oImage.oImagePreloader = this;
    oImage.bLoaded = false;
    //assign the .src property of the Image object
    oImage.src = image;
}

function onComplete() {
    this.nProcessed++;
    if (this.nProcessed == this.nImages) {
        this.callback(this.aImages, this.nLoaded);
    }
}

ImagePreloader.prototype.onload = function() {
    this.bLoaded = true;
    this.oImagePreloader.nLoaded++;
    onComplete();
}

ImagePreloader.prototype.onerror = function() {
    this.bError = true;
    onComplete();
}

ImagePreloader.prototype.onabort = function() {
    this.bAbort = true;
    onComplete();
}

function popUpOpener(arr, b) {
    var img = arr[0];
    popupWin.document.write("<img src=" + img.src + " border=0>");
    popupWin.document.body.style.margin = "0";
    popupWin.document.body.style.padding = "0";

    var w = popupWin.document.body.clientWidth;
    var h = popupWin.document.body.clientHeight;

    var iWidth = img.width - w;
    var iHeight = img.height - h;
    popupWin.resizeBy(iWidth, iHeight);
    popupWin.moveTo(10, 10);
}