

var imagezoom=function(a_element){
	a_element.setStyle({position:'relative',display:'inline-block',cursor:'url(js/imgzoom/images/zoom_in.cur),pointer'});
	var img_element=a_element.down('img');

	var loader=new Element('div',{style:'background-color:#fff; width:30px; height:30px; position:absolute; z-index:1; bottom:0; left:0; background-image:url(js/imgzoom/images/img_loader.gif); background-repeat:no-repeat; background-position:center center; '});
	loader.setStyle({opacity:0.7});

	a_element.observe('click',function(event){
		event.stop();
		//$$('body')[0].setStyle({overflow:'hidden'});
		var img_h=img_element.offsetHeight;
		var img_w=img_element.offsetWidth;
		loader.setStyle({
			left:Math.round((img_w-parseInt(loader.getStyle('width')))/2)+'px',
			bottom:Math.round((img_h-parseInt(loader.getStyle('height')))/2)+'px'
		});

		var bigimg=new Element('img');
		bigimg.src=this.href;

		var check_img_loaded=function(){
			if (bigimg.complete)
			{
				if (check_img_loaded_interval)
				{
					clearInterval(check_img_loaded_interval);
					loader.parentNode.removeChild(loader);
				}

				var bigimg_h=bigimg.height;
				var bigimg_w=bigimg.width;

				var size_flag=0;

				var fullsizebutton=new Element('img');
				fullsizebutton.src='js/imgzoom/images/icon_fullscreen_3.png';
				//var fullsizebutton=new Element('input',{type:'button',style:'background-image:url(js/imgzoom/images/icon_fullscreen2.png); background-repeat:no-repeat; background-position:center center; width:100px; height:100px; ',value:'original size'});
				fullsizebutton.setStyle({position:'fixed',zIndex:100000,cursor:'pointer',opacity:0});

				var bodyOverflow=false;

				fullsizebutton.observe('click',function(){
					bodyOverflow=$$('body')[0].getStyle('overflow');
					$$('body')[0].setStyle({overflow:'hidden'});

					viewportDimensions=document.viewport.getDimensions();
					var left=Math.round((viewportDimensions.width-bigimg_w)/2);
					if (left < 0) left=0;
					var top=Math.round((viewportDimensions.height-bigimg_h)*0.381966011);
					if (top < 0) top=0;

					bigimg.setStyle({
						width:bigimg_w+'px',
						height:bigimg_h+'px',
						left:left+'px',
						top:top+'px'
					});

					fullsizebutton.setStyle({display:'none'});
					/*fullsizebutton.tween({opacity:0},{duration:400});
					setTimeout(function(){
						fullsizebutton.setStyle({display:'none'});
					}, 400);*/
					bigimgbox.setStyle({overflow:'auto'});
					//Event.stopObserving(window,'resize',bigimg_setBigStyle);
					size_flag=2;
				});

				fullsizebutton.observe('mouseover',function(){
					this.tween({opacity:1});
				});

				fullsizebutton.observe('mouseout',function(){
					this.tween({opacity:0.5});
				});

				bigimg.observe('mouseover',function(){
					fullsizebutton.tween({opacity:0.5});
				});

				bigimg.observe('mouseout',function(){
					fullsizebutton.tween({opacity:0});
				});

				//var img_docPosition=img_element.cumulativeOffset();
				//var img_viewportPosition=img_element.viewportOffset();
				//var viewportDimensions=document.viewport.getDimensions();
				//var viewportScrollOffset=s=document.viewport.getScrollOffsets();

				var bigimg_smallStyle=function(){
					img_viewportPosition=img_element.viewportOffset();

					//if (bigimgbox)
					//console.log(bigimgbox.scrollTop);

					return {
						width:img_w+'px',
						height:img_h+'px',
						left:(img_viewportPosition.left+(bigimgbox ? bigimgbox.scrollLeft : 0))+'px',
						top:(img_viewportPosition.top+(bigimgbox ? bigimgbox.scrollTop : 0))+'px',
						position:'relative',
						zIndex:100000
					};
					//img_docPosition=img_element.cumulativeOffset();
					//return {width:img_w+'px',height:img_h+'px',left:(img_docPosition.left)+'px',top:(img_docPosition.top)+'px',position:'absolute',zIndex:100000};
				};

				var bigimg_bigStyle=function(asNumbers){
					viewportDimensions=document.viewport.getDimensions();

					var scale_w = viewportDimensions.width ? (viewportDimensions.width / bigimg_w) : 1;
					var scale_h = viewportDimensions.height ? (viewportDimensions.height / bigimg_h) : 1;
					var scale = (scale_w < scale_h) ? scale_w : scale_h;
					var w_new = (scale < 1) ? Math.round(bigimg_w * scale) : bigimg_w;
					var h_new = (scale < 1) ? Math.round(bigimg_h * scale) : bigimg_h;

					if (size_flag == 2){
						w_new=bigimg_w;
						h_new=bigimg_h;
					}

					var left_new=Math.round((viewportDimensions.width-w_new)/2);
					var top_new=Math.round((viewportDimensions.height-h_new)*0.381966011);

					if (top_new < 0) top_new=0;
					if (left_new < 0) left_new=0;

					var r={
						width:w_new,
						height:h_new,
						left:left_new,
						top:top_new
					};

					r.style={
						width:r.width+'px',
						height:r.height+'px',
						left:r.left+'px',
						top:r.top+'px'
					};

					return (asNumbers ? r : r.style);
				};

				var bigimg_setBigStyle=function(){
					var s=bigimg_bigStyle(1);
					bigimg.setStyle(s.style);

					//console.log([s.left+s.width-fullsizebutton.width-10,s.top+s.height-fullsizebutton.height-10]);
					if (s.height < bigimg_h)
					{
						fullsizebutton.setStyle({
							top:s.top+s.height-parseInt(fullsizebutton.getStyle('height'))-10+'px',
							left:s.left+s.width-parseInt(fullsizebutton.getStyle('width'))-10+'px',
							opacity:0,
							display:''
						});
					}
					else
						fullsizebutton.setStyle({
							display:'none'
						});
				};

				//var bigStyle={width:w_new+'px',height:h_new+'px',left:Math.round((viewportDimensions.width-w_new)/2)+'px',top:Math.round((viewportDimensions.height-h_new)*0.381966011)+'px'};

				bigimg.setStyle(bigimg_smallStyle());
				bigimg.setStyle({cursor:'url(js/imgzoom/images/zoom_out.cur),pointer'});
				//var bg=new Element('div',{style:'background:#000; width:100%; height:100%; left:'+viewportScrollOffset.left+'px; top:'+viewportScrollOffset.top+'px; position:absolute; z-index:10000'});
				var bg=new Element('div',{style:'background:#000; width:100%; height:100%; left:0px; top:0px; position:fixed; z-index:10000; cursor:url(js/imgzoom/images/zoom_out.cur),pointer; '});
				bg.setOpacity(0);

				var bigimgbox=new Element('div',{style:'width:100%; height:100%; left:0px; top:0px; position:fixed; z-index:10000; cursor:url(js/imgzoom/images/zoom_out.cur),pointer; '});
				$$('body')[0].appendChild(bg);
				bigimgbox.appendChild(bigimg);
				$$('body')[0].appendChild(bigimgbox);
				$$('body')[0].appendChild(fullsizebutton);
				bigimg.tween(bigimg_bigStyle(),{duration:400});
				bg.tween({opacity:0.7},{duration:400});
				setTimeout(bigimg_setBigStyle,400);
				size_flag=1;


				//var reset=function(){
					//alert(bg.getStyle('position'));
					//return;
					//var bgOffset=bg.viewportOffset();
					//console.log(bgOffset.top);

					/*if (bgOffset.left == 0 && bgOffset.top == 0) return;
					var viewportDimensions=document.viewport.getDimensions();
					var viewportScrollOffset=document.viewport.getScrollOffsets();
					bg.setStyle({left:viewportScrollOffset.left+'px',top:viewportScrollOffset.top+'px'});
					bigimg.setStyle({left:viewportScrollOffset.left+Math.round((viewportDimensions.width-w_new)/2)+'px',top:viewportScrollOffset.top+Math.round((viewportDimensions.height-h_new)*0.381966011)+'px'});
					*/
					//bigimg.setStyle({position:'fixed'});
				//};
				//document.observe('scroll',reset);
				Event.observe(window,'resize',bigimg_setBigStyle);

				var closebigview=function(){
					var newtop=((bigimgbox.scrollTop*-1)+parseInt(bigimg.getStyle('top')));
					var newleft=((bigimgbox.scrollLeft*-1)+parseInt(bigimg.getStyle('left')));
					bigimgbox.setStyle({overflow:'hidden'});
					bigimg.setStyle({top:newtop+'px',left:newleft+'px'});
					bigimgbox.scrollTop=0;
					bigimgbox.scrollLeft=0;
//					return;
					if (bodyOverflow !== false)
						$$('body')[0].setStyle({overflow:bodyOverflow});
//					return;

					fullsizebutton.parentNode.removeChild(fullsizebutton);
					bigimg.tween(bigimg_smallStyle(), {duration:400});
					bg.tween({opacity:0}, {duration:400});
					setTimeout(function(){
						bigimgbox.parentNode.removeChild(bigimgbox);
						bg.parentNode.removeChild(bg);
					}, 400);
					Event.stopObserving(window,'resize',bigimg_setBigStyle);
				};

				//bigimg.observe('click',closebigview);
				//bg.observe('click',closebigview);
				bigimgbox.observe('click',closebigview);
/*
				var hwheel=function(event){
					var delta = 0;
					if (!event) event = window.event;
					if (event.wheelDelta) {
						//console.log(event.wheelDelta);
						delta = event.wheelDelta/(Prototype.Browser.Opera ? 40 : 120);
					} else if (event.detail) {
						delta = -event.detail;
					}
					var s=Math.round(delta); //Safari Round
					//Event.stop(e);
					//console.log(event);
					//console.log(this.scrollTop+' - '+(this.scrollHeight-this.offsetHeight)+' - '+s);
					//this.scrollTop
					if (this.scrollTop == 0 && s > 0) Event.stop(event);
					if (this.scrollTop == this.scrollHeight-this.offsetHeight && s < 0) Event.stop(event);

				}.bind(bigimgbox);


				//scrollbox.observe('mouse:wheel',hwheel);
				bigimgbox.observe('mousewheel',hwheel);
				bigimgbox.observe('DOMMouseScroll',hwheel);
*/
				return true;
			}
			return false;
		}.bind(this);

		if (!check_img_loaded()){
			img_element.parentNode.insertBefore(loader,img_element);
			var check_img_loaded_interval=setInterval(check_img_loaded,1);
		}
	});
};
