/* Popup képmegjelenítő és galéria
==================================
Képmegjelenítő meghívás: <a href="#" onclick="return popup_image(this);">Kép</a>
Galéria meghívás:        <a href="#" onclick="return popup_gallery({gallery_id}, {image_id})">Galéria</a>
Link meghívás:           <a href="#" onclick="return popup_link(this, width, height, loader, drag_and_drop);">Link</a>

Készítette: Pándics Márton, Rayfield Kft.
E-mail: pandics.marton[kukac]rayfield[pont]hu
*/

// Kép
var image_handler     = 'includes/handlers/image_handler.php';    // képmegjelenítést kezelő fájl
var frame_width       = 26;                                       // kép / link megjelenítése esetén a keret teljes szélessége
var frame_height      = 49;                                       // kép / link megjelenítése esetén a keret teljes magassága

// Galéria
var gallery_handler   = 'includes/handlers/gallery_handler.php';  // galériát kezelő fájl
var image_width       = 400;                                      // kép maximális szélessége
var image_height      = 400;                                      // kép maximális magassága
var additional_width  = 146;                                      // teljes adalék szélesség (keret, gomb, stb...) 106
var additional_height = 2;                                        // teljes adalék magasság (keret, gomb, stb...) 2

// Link
var link_handler      = 'includes/handlers/link_handler.php';     // linkmegjelenítést kezelő fájl

var popup_width  = image_width  + additional_width;  // popup ablak szélessége
var popup_height = image_height + additional_height; // popup ablak magassága

// popup középre helyezésének méretei
function get_popup_positions(width, height)
{
        var is_ie = document.all ? true : false;
        var scroll_x = document.documentElement.scrollLeft;
        var scroll_y = document.documentElement.scrollTop;

        if (is_ie) {
                var window_x = document.documentElement.clientWidth;
                var window_y = document.documentElement.clientHeight;
        } else {
                var window_x = window.innerWidth;
                var window_y = window.innerHeight;
        }

        if (window_x <= width) {
                var left = scroll_x;
        } else {
                var left = scroll_x + (window_x - width) / 2;
        }

        if (window_y <= height) {
                var top = scroll_y;
        } else {
                var top = scroll_y + (window_y - height) / 2;
        }

        return new Array(left, top);
}

// galéria megjelenítése
function popup_gallery(gallery_id, image_id)
{
        var gallery = document.getElementById('rf_gallery');

        // már megjelenített galéria
        if (gallery) {
                return update_gallery(gallery_id, image_id);            
        }

        // popup megjelenítése és méretezése
        var gallery = document.createElement('div');
        gallery.setAttribute('id', 'rf_gallery');

        gallery.style.zIndex   = 99;
        gallery.style.position = 'absolute';
        gallery.style.display  = 'block';
        gallery.style.width    = popup_width + 'px';
        gallery.style.height   = popup_height + 'px';

        var positions = get_popup_positions(popup_width, popup_height);

        gallery.style.left = positions[0] + 'px';
        gallery.style.top  = positions[1] + 'px';       

        document.body.appendChild(gallery);
        new Ajax.Updater('rf_gallery', gallery_handler, {onComplete: function() { update_gallery(gallery_id, image_id); }});    

        return false;   
}

// galéria bezárása
function close_gallery()
{
        var gallery = document.getElementById('rf_gallery');
        document.body.removeChild(gallery);

	return false;
}

// galéria frissítése
function update_gallery(gallery_id, image_id)
{
        var parameters = 'gallery_id=' + gallery_id + '&image_id=' + image_id;
        new Ajax.Request(gallery_handler, {method: 'get', parameters: parameters, onComplete: show_response});

        return false;
}

// galéria frissítés eredményének alkalmazása
function show_response(originalRequest)
{
        var result     = originalRequest.responseText;
        var dimensions = result.split('@');

        var gallery_id    = dimensions[0];
        var prev_image_id = dimensions[1];
        var next_image_id = dimensions[2];
        var image_source  = dimensions[3];

        $('rf_gallery_image').className = 'the_loader'; 
        $('rf_gallery_image').src = 'images/ajax_loader.gif';

	var gallery_image = new Image();
	gallery_image.onload = function() {
		$('rf_gallery_image').src = image_source;
		$('rf_gallery_image').className = 'the_image';
	}
	gallery_image.src = image_source;

	if (prev_image_id) {
		$('rf_gallery_left').onclick = function() { return update_gallery(gallery_id, prev_image_id); };
		$('popup_leftbutton_container_bg').style.visibility = 'visible';
	} else { 
		$('popup_leftbutton_container_bg').style.visibility = 'hidden';
	}

	if (next_image_id) {
		$('rf_gallery_right').onclick = function() { return update_gallery(gallery_id, next_image_id); };
		$('popup_rightbutton_container_bg').style.visibility = 'visible';
	} else { 
		$('popup_rightbutton_container_bg').style.visibility = 'hidden';
	}

	new Draggable('rf_gallery', {handle: 'popup_header', starteffect: false, endeffect: false});
}

// kép megjelenítése
function popup_image(a_object)
{
        var popup = $(a_object.href);   

        // már megjelenített popup
        if (popup) {
                return false;
        }       

        var image_source = a_object.href;
        
        var myImage = new Image();
        myImage.src = image_source;       

        // popup megjelenítése és méretezése
        var popup = document.createElement('div');
        popup.setAttribute('id', image_source);

        var popup_width  = myImage.width + frame_width;
        var popup_height = myImage.height + frame_height;

        popup.style.zIndex   = 99;
        popup.style.position = 'absolute';
        popup.style.display  = 'block';
        popup.style.width    = popup_width  + 'px';
        popup.style.height   = popup_height + 'px';

        var positions = get_popup_positions(popup_width, popup_height);

        popup.style.left = positions[0] + 'px';
        popup.style.top  = positions[1] + 'px';  

        document.body.appendChild(popup);

        var parameters = 'image_source=' + image_source;
        new Ajax.Updater(image_source, image_handler, {method: 'get', parameters: parameters}); 

        new Draggable(image_source);

        return false;
}

// kép bezárása
function close_image(image_source)
{
	var popup = document.getElementById(image_source);
	document.body.removeChild(popup);

	return false;
}

// link megjelenítése
function popup_link(a_object, inner_width, inner_height, loader, drag_and_drop)
{
	var popup = document.getElementById(a_object.href);     

	// már megjelenített popup
	if (popup) {
		return false;
	}       

	var link_source = a_object.href;

	// popup megjelenítése és méretezése
	var popup = document.createElement('div');
	popup.setAttribute('id', link_source);  

	popup.style.zIndex   = 99;
	popup.style.position = 'absolute';
	popup.style.display  = 'block';
	popup.style.width    = inner_width  + frame_width  + 'px';
	popup.style.height   = inner_height + frame_height + 'px';

	var positions = get_popup_positions(inner_width + frame_width, inner_height + frame_height);

	popup.style.left = positions[0] + 'px';
	popup.style.top  = positions[1] + 'px';

	document.body.appendChild(popup);
	if (loader) {       
		popup.innerHTML = '<img src="images/ajax_loader.gif" />';
	}

	var parameters = 'link_source=' + link_source + '&inner_width=' + inner_width + '&inner_height=' + inner_height;
	new Ajax.Updater(link_source, link_handler, {parameters: parameters});

	if (drag_and_drop) { // még nem jön meg az eredmény ==> egész popup mozog ==> onSuccess kell
		new Draggable(link_source, {handle: 'popup_header', starteffect: false, endeffect: false});
	}         

	return false;
}

// link bezárása
function close_link(link_source)
{
	var popup = document.getElementById(link_source);
	document.body.removeChild(popup);

	return false;
}

