/*

Lightbox JS: Fullsize Image Overlays

by Lokesh Dhakar - http://www.huddletogether.com



For more information on this script, visit:

http://huddletogether.com/projects/lightbox/



Licensed under the Creative Commons Attribution 2.5 License - http://creativecommons.org/licenses/by/2.5/

(basically, do anything you want, just leave my name and link)



Table of Contents

-----------------

Configuration



Functions

- getPageScroll()

- getPageSize()

- pause()

- getKey()

- listenKey()

- showLightbox()

- hideLightbox()

- initLightbox()

- addLoadEvent()



Function Calls

- addLoadEvent(initLightbox)



*/



var ajaxIsHere = false;

try{

	if(Prototype){

		//alert('Proto Enabled')

		ajaxIsHere = true;

	}

	else{

		//alert('Proto Disabled')

	}

}

catch(e){

	//alert('Catch '+e);

}



//

// Configuration

//



// If you would like to use a custom loading image or close button reference them in the next two lines.

var loadingImage = '/images/loading.gif';

var closeButton = '/images/close.gif';











//

// getPageScroll()

// Returns array with x,y page scroll values.

// Core code from - quirksmode.org

//

function getPageScroll(){



	var yScroll;



	if (self.pageYOffset) {

		yScroll = self.pageYOffset;

	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict

		yScroll = document.documentElement.scrollTop;

	} else if (document.body) {// all other Explorers

		yScroll = document.body.scrollTop;

	}



	arrayPageScroll = new Array('',yScroll)

	return arrayPageScroll;

}







//

// getPageSize()

// Returns array with page width, height and window width, height

// Core code from - quirksmode.org

// Edit for Firefox by pHaez

//

function getPageSize(){



	var xScroll, yScroll;



	if (window.innerHeight && window.scrollMaxY) {

		xScroll = document.body.scrollWidth;

		yScroll = window.innerHeight + window.scrollMaxY;

	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac

		xScroll = document.body.scrollWidth;

		yScroll = document.body.scrollHeight;

	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari

		xScroll = document.body.offsetWidth;

		yScroll = document.body.offsetHeight;

	}



	var windowWidth, windowHeight;

	if (self.innerHeight) {	// all except Explorer

		windowWidth = self.innerWidth;

		windowHeight = self.innerHeight;

	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode

		windowWidth = document.documentElement.clientWidth;

		windowHeight = document.documentElement.clientHeight;

	} else if (document.body) { // other Explorers

		windowWidth = document.body.clientWidth;

		windowHeight = document.body.clientHeight;

	}



	// for small pages with total height less then height of the viewport

	if(yScroll < windowHeight){

		pageHeight = windowHeight;

	} else {

		pageHeight = yScroll;

	}



	// for small pages with total width less then width of the viewport

	if(xScroll < windowWidth){

		pageWidth = windowWidth;

	} else {

		pageWidth = xScroll;

	}





	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight)

	return arrayPageSize;

}





//

// pause(numberMillis)

// Pauses code execution for specified time. Uses busy code, not good.

// Code from http://www.faqts.com/knowledge_base/view.phtml/aid/1602

//

function pause(numberMillis) {

	var now = new Date();

	var exitTime = now.getTime() + numberMillis;

	while (true) {

		now = new Date();

		if (now.getTime() > exitTime)

		return;

	}

}



//

// getKey(key)

// Gets keycode. If 'x' is pressed then it hides the lightbox.

//



function getKey(e){

	if (e == null) { // ie

		keycode = event.keyCode;

	} else { // mozilla

		keycode = e.which;

	}

	key = String.fromCharCode(keycode).toLowerCase();



	if(key == 'x' ||key == 'o~' ||key == '?' ||key == '[' ){ hideLightbox(); }

}





//

// listenKey()

//

function listenKey () {	document.onkeypress = getKey; }















//

// showLightbox()

// Preloads images. Pleaces new image in lightbox then centers and displays.

//

//function showLightbox(objLink)

function showLightbox(prevsource,title,photo_guid)

{

	// prep objects

	var objOverlay = document.getElementById('overlay');

	var objLightbox = document.getElementById('lightbox');

	//var objLightboxout = document.getElementById('lightboxout');

	var objCaption = document.getElementById('lightboxCaption');

	var objCaption2 = document.getElementById('lightboxCaption2');

	var objImage = document.getElementById('lightboxImage');

	var objLoadingImage = document.getElementById('loadingImage');

	var objLightboxDetails = document.getElementById('lightboxDetails');


	var arrayPageSize = getPageSize();

	var arrayPageScroll = getPageScroll();







	// Hide select boxes as they will 'peek' through the image in IE

	selects = document.getElementsByTagName("select");

	for (i = 0; i != selects.length; i++) {

		selects[i].style.visibility = "hidden";

	}





	//alert(arrayPageScroll[1]);

	// center loadingImage if it exists

	if (objLoadingImage) {



		objLoadingImage.style.top = (arrayPageScroll[1] + ((arrayPageSize[3] - 35 - objLoadingImage.height) / 2) + 'px');

		objLoadingImage.style.left = (((arrayPageSize[0] - 20 - objLoadingImage.width) / 2) + 'px');

		objLoadingImage.style.display = 'block';

	}



	// set height of Overlay to take up whole page and show

	objOverlay.style.height = (arrayPageSize[1] + 'px');

	objOverlay.style.display = 'block';



	// preload image

	imgPreload = new Image();







	imgPreload.onload=function(){



		//objImage.src = objLink.href;

		//objImage.src = objLink.getAttribute("prevsrc");

		//objImage.src = prevsource;

		objImage.src = imgPreload.src;



		// center lightbox and make sure that the top and left values are not negative

		// and the image placed outside the viewport

		var lightboxTop = arrayPageScroll[1] + ((arrayPageSize[3] - 35 - imgPreload.height) / 2);

		var lightboxLeft = ((arrayPageSize[0] - 20 - imgPreload.width) / 2);



		objLightbox.style.top = (lightboxTop < 0) ? "0px" : lightboxTop + "px";

		objLightbox.style.left = (lightboxLeft < 0) ? "0px" : lightboxLeft + "px";





		objLightboxDetails.style.width = imgPreload.width + 'px';

		//alert(imgPreload.width);



		//if(objLink.getAttribute('title')){


		if(title){

			objCaption.style.display = 'block';

			//objCaption.style.width = imgPreload.width + 'px';

			//objCaption.innerHTML = objLink.getAttribute('title');

			//objCaption.innerHTML = '<span class="full">'+title+'</span>';

		} else {

			objCaption.style.display = 'none';

		}



		objCaption2.style.display = 'none';

		if(ajaxIsHere&&photo_guid){//N~i`i^o`?e`i` e`i'o^i^ i"i^ o^i^o`i^

			

			objCaption2.style.display = 'block';

			objCaption2.innerHTML = " ... ";

			

			//requester = new Ajax.Request('/ru/241/'+photo_guid+"/2",   {

			requester = new Ajax.Request('/ru/236/'+photo_guid+"/2",   {

			

			

			

				method:'get',



				onSuccess: function(transport){

					

					var jsonData = eval(transport.responseText);

					

					

                    if (jsonData == undefined) {return }

                    

                    var outptext = "";

                                    

                    //var comm_quan = jsonData[0].comm.size();

                    var comm_quan = parseInt(jsonData[0].comm_count); 

                                     

                   if(comm_quan>0){

                    	outptext = "&nbsp;&nbsp;<a class='photolink' href='"+jsonData[0].url+"'  style='font-weight:normal'>(ûâûâûûââûâû: "+comm_quan+")</a>";

                    	outptext += "<br><br>ëâëâëâëâëâ:<br>"+jsonData[0].comm.text+" ("+jsonData[0].comm.dt2+")";

                    }

                    else  outptext = "&nbsp;&nbsp;ûâââûâûâû";





					objCaption2.innerHTML = outptext;

					

				},

				onFailure: function(transport){

					//alert(transport.status);

					//alert('Something went wrong...')

				}

			});

			

		}







		// A small pause between the image loading and displaying is required with IE,

		// this prevents the previous image displaying for a short burst causing flicker.

		if (navigator.appVersion.indexOf("MSIE")!=-1){

			pause(250);

		}



		if (objLoadingImage) {	objLoadingImage.style.display = 'none'; }









		objLightbox.style.display = 'block';

		//objLightboxout.style.display = 'block';



		// After image is loaded, update the overlay height as the new image might have

		// increased the overall page height.

		arrayPageSize = getPageSize();

		objOverlay.style.height = (arrayPageSize[1] + 'px');





		//alert(objLink.getAttribute("prevsrc"));



		// Check for 'x' keypress

		listenKey();





		return false;

	}



	//alert(objLink.getAttribute("prevsrc"));

	//objImage.src = objLink.href;

	//imgPreload.src = objLink.getAttribute("prevsrc");

	imgPreload.src = prevsource;

	//document.getElementById('lightbox').style.display = 'block';







}











//

// hideLightbox()

//

function hideLightbox()

{

	

	// get objects

	objOverlay = document.getElementById('overlay');

	objLightbox = document.getElementById('lightbox');

	//objLightboxout = document.getElementById('lightboxout');



	// hide lightbox and overlay

	objOverlay.style.display = 'none';

	objLightbox.style.display = 'none';

	//objLightboxout.style.display = 'none';



	// make select boxes visible

	selects = document.getElementsByTagName("select");

	for (i = 0; i != selects.length; i++) {

		selects[i].style.visibility = "visible";

	}



	// disable keypress listener

	document.onkeypress = '';

}









//

// initLightbox()

// Function runs on window load, going through link tags looking for rel="lightbox".

// These links receive onclick events that enable the lightbox display for their targets.

// The function also inserts html markup at the top of the page which will be used as a

// container for the overlay pattern and the inline image.

//



function showlayer(prevsource,title,e,photo_guid){





	if(!e) e = event;

	if (!e) e = window.event;







	//if(event.shiftKey||event.ctrlKey||ctrlbool==1){

	//if(e.shiftKey||e.ctrlKey){

		e.cancelBubble = true;

		showLightbox(prevsource,title,photo_guid);

		return false;
	/*
	}

	return true;
	*/


}





function initLightbox()

{



	/*	if (!document.getElementsByTagName){ return; }

	var anchors = document.getElementsByTagName("a");



	//if(event)alert('events on');



	// loop through all anchor tags

	for (var i=0; i<anchors.length; i++){

	var anchor = anchors[i];



	if (anchor.getAttribute("prevsrc") && anchor.getAttribute("href") && (anchor.getAttribute("rel") == "lightbox")){



	anchor.onclick = function (e) {



	if (!e) e = window.event;

	if(!e) e = event;



	//if(event.shiftKey||event.ctrlKey||ctrlbool==1){

	if(e.shiftKey||e.ctrlKey){

	e.cancelBubble = true;

	showLightbox(this);

	return false;

	}

	}



	}

	}

	*/

	// the rest of this code inserts html at the top of the page that looks like this:

	//

	// <div id="overlay">

	//		<a href="#" onclick="hideLightbox(); return false;"><img id="loadingImage" /></a>

	//	</div>

	// <div id="lightbox">

	//		<a href="#" onclick="hideLightbox(); return false;" title="Click anywhere to close image">

	//			<img id="closeButton" />

	//			<img id="lightboxImage" />

	//		</a>

	//		<div id="lightboxDetails">

	//			<div id="lightboxCaption"></div>

	//			<div id="keyboardMsg"></div>

	//		</div>

	// </div>



	var objBody = document.getElementsByTagName("body").item(0);



	// create overlay div and hardcode some functional styles (aesthetic styles are in CSS file)

	var objOverlay = document.createElement("div");

	objOverlay.setAttribute('id','overlay');

	objOverlay.onclick = function () {hideLightbox(); return false;}

	objOverlay.style.display = 'none';

	objOverlay.style.position = 'absolute';

	objOverlay.style.top = '0';

	objOverlay.style.left = '0';

	objOverlay.style.zIndex = '90';

	objOverlay.style.width = '100%';

	objBody.insertBefore(objOverlay, objBody.firstChild);



	var arrayPageSize = getPageSize();

	var arrayPageScroll = getPageScroll();



	// preload and create loader image

	var imgPreloader = new Image();



	// if loader image found, create link to hide lightbox and create loadingimage

	//imgPreloader.onload=function(){

	//alert("I"?a*e"i^a`a" c,a`a~?o'c,e`e"n~y"!")



	var objLoadingImageLink = document.createElement("a");

	objLoadingImageLink.setAttribute('href','#');

	objLoadingImageLink.onclick = function () {hideLightbox(); return false;}

	objOverlay.appendChild(objLoadingImageLink);



	var objLoadingImage = document.createElement("img");

	objLoadingImage.src = loadingImage;

	objLoadingImage.setAttribute('id','loadingImage');

	objLoadingImage.setAttribute('class','opa_100');

	objLoadingImage.style.position = 'absolute';

	objLoadingImage.style.zIndex = '150';

	objLoadingImageLink.appendChild(objLoadingImage);



	imgPreloader.onload=function(){};	//	clear onLoad, as IE will flip out w/animated gifs



	//return false;

	//}



	imgPreloader.src = loadingImage;



	// create lightbox div, same note about styles as above


	var objLightbox = document.createElement("div");

	objLightbox.setAttribute('id','lightbox');

	objLightbox.style.display = 'none';

	objLightbox.style.position = 'absolute';

	objLightbox.style.zIndex = '100';

	objBody.insertBefore(objLightbox, objOverlay.nextSibling);





	var objLightboxinner = document.createElement("div");

	objLightboxinner.setAttribute('id','lightboxinner');

	//objLightbox.style.display = 'none';

	//objLightbox.style.position = 'absolute';

	objLightboxinner.style.zIndex = '100';

	//objBody.insertBefore(objLightbox, objOverlay.nextSibling);

	objLightbox.appendChild(objLightboxinner);

	
	objLightboxinner.innerHTML = '<div class="ligthbox_close"><a href="#"></a></div>';
	
	var objLightboxclose = document.createElement("div");
	
	objLightboxclose.setAttribute('class','ligthbox_close');
	
	var objLightboxclosea = document.createElement("a");
	
	objLightboxclosea.setAttribute('a','#');
	
	objLightboxclosea.setAttribute('style','cursor: pointer');
	
	objLightboxclosea.onclick = function () {hideLightbox(); return false;}
	
	objLightboxclose.appendChild(objLightboxclosea);
	
	objLightboxinner.appendChild(objLightboxclose);
	
	// create link

	var objLink = document.createElement("a");

	objLink.setAttribute('href','#');
	
	objLink.setAttribute('style','cursor: default');
	
	//objLightbox.appendChild(objLink);

	objLightboxinner.appendChild(objLink);

	

	// preload and create close button image

	var imgPreloadCloseButton = new Image();



	// if close button image found,

	imgPreloadCloseButton.onload=function(){



	var objCloseButton = document.createElement("img");

	objCloseButton.src = closeButton;

	objCloseButton.setAttribute('id','closeButton');

	objCloseButton.style.position = 'absolute';

	objCloseButton.style.zIndex = '200';

	objLink.appendChild(objCloseButton);



	return false;

	}



	imgPreloadCloseButton.src = closeButton;


	// create image

	var objImage = document.createElement("img");

	objImage.setAttribute('id','lightboxImage');

	objLink.appendChild(objImage);



	// create details div, a container for the caption and keyboard message

	var objLightboxDetails = document.createElement("div");

	objLightboxDetails.setAttribute('id','lightboxDetails');

	//objLightbox.appendChild(objLightboxDetails);

	objLightboxinner.appendChild(objLightboxDetails);



	// create caption

	var objCaption = document.createElement("div");

	objCaption.setAttribute('id','lightboxCaption');

	objCaption.style.display = 'none';

	objLightboxDetails.appendChild(objCaption);

	

	// create caption2

	var objCaption2 = document.createElement("div");

	objCaption2.setAttribute('id','lightboxCaption2');

	objCaption2.setAttribute('style','display:none;font-weight:normal;');

	//objCaption2.style.display = 'none';

	objLightboxDetails.appendChild(objCaption2);



	// create keyboard message

	var objKeyboardMsg = document.createElement("div");

	objKeyboardMsg.setAttribute('id','keyboardMsg');

	objLightboxDetails.appendChild(objKeyboardMsg);


}

//

// addLoadEvent()

// Adds event to window.onload without overwriting currently assigned onload functions.

// Function found at Simon Willison's weblog - http://simon.incutio.com/

//

function addLoadEvent(func)

{

	var oldonload = window.onload;

	if (typeof window.onload != 'function'){

		window.onload = func;

	} else {

		window.onload = function(){

			oldonload();

			func();

		}

	}



}





initLightbox();

//addLoadEvent(initLightbox);	// run initLightbox onLoad
