
function $() {
	if (arguments.length == 1) return get$(arguments[0]);
	var elements = [];
	arguments.each(function(el){
		elements.push(get$(el));
	});
	return elements;
	
	function get$(el){
		if (typeof el == 'string') el = document.getElementById(el);
		return el;
	}
}



function setOpacity(el, value){

		if (window.ActiveXObject) el.style.filter = "alpha(opacity=" + value*100 + ")";
		el.style.opacity = value;
}

function centermenu(){
		var clientHeight = window.innerHeight || document.documentElement.clientHeight;
		var clientWidth = window.innerWidth || document.documentElement.clientWidth;
		var scrollLeft = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
		var scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;

 		if(msie>0){
 			return;
 			$('menu').style.left= scrollLeft+(clientWidth-621)/2 + "px";
			$('menu').style.top= scrollTop+20 + "px";
		} else {
			$('menu').style.left= (clientWidth-621)/2 + "px";
			$('menu').style.top= 20 + "px";
		}
}

function updatecrop(){

		var clientHeight = window.innerHeight || document.documentElement.clientHeight;
		var clientWidth = window.innerWidth || document.documentElement.clientWidth;
		var scrollLeft = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
		var scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
		
		$('crop').style.width= clientWidth/zoom + "px";
		$('crop').style.height= clientHeight/zoom + "px";
		$('crop').style.left= scrollLeft/zoom + "px";
		$('crop').style.top= scrollTop/zoom + "px";

}


function update(force){
	if (msie > 0 || force){
		centermenu();
		document.selection.clear();
	}
	updatecrop();
}


function onresize(){
 	update(true);
 }

function onscroll(){
 	update(false);
}

function scrollto(layer){
	var clientWidth = window.innerWidth || document.documentElement.clientWidth;

	var  destination = $(layer);
	var  destX = destination.offsetLeft - (clientWidth-620)/2 ;
	var  destY = destination.offsetTop - 240;
	if(destX && destY) {
		clearInterval(scrollInterval);
		scrollxy(destX, destY);
	}
	
}
function scrollxy(x,y){

		var fromX = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
		var fromY = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;


		targetX = Math.ceil(x);
		targetY = Math.ceil(y);
		
		scrollCount = 0;
		
		scrollInterval = setInterval('scrollupdate()', 100);

}


function scrollupdate(){

		var scrollLeft = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
		var scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;


		if((Math.abs(targetX-scrollLeft)<5) && (Math.abs(targetY-scrollTop)<5) || scrollCount >= 50) {
			clearInterval(scrollInterval);
			update(true);
		}
		
		
		var nextX = ((40-scrollCount)*scrollLeft+targetX*scrollCount)/40
		var nextY= ((40-scrollCount)*scrollTop+targetY*scrollCount)/40
		
		window.scrollTo(nextX, nextY);				
		scrollCount = scrollCount+1;

}

function init(){

	centermenu();
	updatecrop();
	
	$('menu').onclick = function(event){
					
					clearInterval(scrollInterval);
	
					var scrollLeft = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
					var scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
					if(document.all)e = event
					if (!e) var e = window.event;
					if (!e) var e = event;
					if (e.pageX || e.pageY) 	{
					    if(msie>0){
							posx = e.pageX;
							posy = e.pageY;
						} else {
							posx = e.pageX - scrollLeft;
							posy = e.pageY - scrollTop;			
						}
					}
					else if (e.clientX || e.clientY) 	{
					    if(msie>0){
							posx = e.clientX + scrollLeft;
							posy = e.clientY + scrollTop;
						} else {
							posx = e.clientX; // + scrollLeft;
							posy = e.clientY; // + scrollTop;
						}
					}

					scrollxy((posx-$('menu').offsetLeft)*zoom-480,
							 (posy-$('menu').offsetTop)*zoom-270);


				}
				
		$('crop').onmousedown = function(event){ clearInterval(scrollInterval);
													scrolldrag = true; }
				
		$('crop').onmousemove = function(event){
		
					if(scrolldrag){
					var scrollLeft = window.pageXOffset || document.body.scrollLeft || document.documentElement.scrollLeft;
					var scrollTop = window.pageYOffset || document.body.scrollTop || document.documentElement.scrollTop;
					if(document.all)e = event
					if (!e) var e = window.event;
					if (!e) var e = event;
					if (e.pageX || e.pageY) 	{
					    if(msie>0){
							posx = e.pageX;
							posy = e.pageY;
						} else {
							posx = e.pageX - scrollLeft;
							posy = e.pageY - scrollTop;			
						}
					}
					else if (e.clientX || e.clientY) 	{
					    if(msie>0){
							posx = e.clientX + scrollLeft;
							posy = e.clientY + scrollTop;
						} else {
							posx = e.clientX; // + scrollLeft;
							posy = e.clientY; // + scrollTop;
						}
					}

					window.scroll((posx-$('menu').offsetLeft)*zoom-480,
							 (posy-$('menu').offsetTop)*zoom-270);
					update(false);
}

				}

	$('menu').style.visibility = "visible";
	

	if(msie > 0 ) {
		$('menu').style.position = "absolute";
		setInterval('update(true)',10);
	} else {
		setInterval('update(false)',20);
	}

	setOpacity($('menu'), 0.7);
}



var zoom = 7.52;
var ua = window.navigator.userAgent;
var msie = ua.indexOf ( "MSIE " );

var targetX = -1;
var targetY = -1;
var scrollInterval = -1;
var scrollCount = -1;
var scrolldrag = false;

