
var dbg=false;

function reload_element(arg){
	//alert(arg[0]+' ; '+arg[1]);
	document.getElementById(arg[0]).innerHTML = arg[1];
}

function getAbsX(element){
	var x = 0;
	if(element.offsetLeft)x = element.offsetLeft;
	while(element = element.offsetParent){
		x+=element.offsetLeft;
	}
	return x;
}

function getRight(element){
	var x = 0;
	if(element.offsetRight)x = element.offsetRight;
	while(element = element.offsetParent){
		x+=element.offsetRight;
	}
	return x;
}

function getAbsY(){
	var y = 0;
	if(element.offsetTop)y = element.offsetTop;
	while(element = element.offsetParent){
		y+=element.offsetTop;
	}
	return y;
}

function getAbsPos(element){
	var x = y = 0;
	if(element.offsetTop)y = element.offsetTop;
	if(element.offsetLeft)x = element.offsetLeft
	while(element = element.offsetParent){
		y+=element.offsetTop;
		x+=element.offsetLeft;
	}
	return [x,y];
}	

function getSize(element){
	if(element.offsetWidth)return [element.offsetWidth, element.offsetHeight, 'ok'];
	else return [0,0,'err'];
}

function isAt(x,y,element){
	var pos = getAbsPos(element);
	var size = getSize(element);
	if(x<pos[0])return false;
	if(x>pos[0]+size[0])return false;
	if(y<pos[1])return false;
	if(y>pos[1]+size[1])return false;
	return true;
}

function isIn(x,y,coord){
	if(x<coord[0])return false;
	if(x>coord[2])return false;
	if(y<coord[1])return false;
	if(y>coord[3])return false;
	return true;
}

function makeShade(element,off,color,opacity){
	shade = document.createElement("DIV");
	shade.style.backgroundColor = color;
	setOpacity(shade,opacity);
	dim = getSize(element);
	pos = getAbsPos(element);
	shade.style.position = 'absolute';
	shade.style.top = pos[1]+off;
	shade.style.left = pos[0]+off;
	shade.style.width = dim[0];
	shade.style.height = dim[1];
	element.parentNode.insertBefore(shade,element);
	return shade;
}
	
	
function blink(element){
	element.style.textDecoration = "blink";
}
	
function showToggleButt(butt,id,vis,hid){
	var ele = document.getElementById(id);
	var show = (ele.style.display=='none'?'block':'none');
	ele.style.display = show;
	butt.value = (show=='none'?hid:vis);
}
	
function eventCoords(e){
	var xcoord, ycoord;
  if( !e ) { e = window.event; }
  if( !e ) { return; }
  if( typeof( e.pageX ) == 'number' ) {
    xcoord = e.pageX;
    ycoord = e.pageY;
  } else if( typeof( e.clientX ) == 'number' ) {
    xcoord = e.clientX;
    ycoord = e.clientY;
    if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
      xcoord += document.body.scrollLeft;
      ycoord += document.body.scrollTop;
    } else if( document.documentElement && ( document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
      xcoord += document.documentElement.scrollLeft;
      ycoord += document.documentElement.scrollTop;
    }
  } else { return; }
  return [xcoord,ycoord];
}

function CATgalleryScroll(mainDiv,windowSize,name){
	//alert('create start');
	this.mainDiv = mainDiv;
	this.windowSize = windowSize;
	var mainSize = getSize(mainDiv);
	var actLeft=0;
	var actTop=0;
	var maxLeft=0;
	var contLeftOff=0;
	this.scrollSpeed = 10;
	var ifScroll = false;
	var cont;
	
	function getRect(left,top){
		return "rect("+top+"px "+(left+windowSize[0])+"px "+(top+windowSize[1])+"px "+left+"px)";
	}
	
	function addContent(content){
		//alert('addcontent started');
		this.content = content;
		content.parentNode.removeChild(content);
		content.style.position = 'absolute';
		content.style.clip = getRect(0,0);
		content.style.top = (mainSize[1]-windowSize[1])/2;
		contLeftOff = (mainSize[0]-windowSize[0])/2;
		content.style.left = contLeftOff;
		mainDiv.appendChild(content);
		var size = getSize(content);
		maxLeft = size[0] - windowSize[0];
		cont = content;
		//alert('addcontent finished');
	}
	this.addContent = addContent;
	
	function scrollEngine(left,top){
		if(ifScroll){
			//window.status = ''+actLeft+' '+maxLeft;
			var temp = actLeft+left;
			if((left<0 && temp>=0) || (left>0 && temp<maxLeft))actLeft=temp;
			cont.style.clip = getRect(actLeft,actTop);
			cont.style.left = contLeftOff - actLeft;
			window.setTimeout(function(){scrollEngine(left,top)},40);
		}
	}
	this.scrollEngine = scrollEngine;
	
	function startScroll(left,top){
		ifScroll=true;
		scrollEngine(left,top);
	}
	this.startScroll = startScroll;
	
	function stopScroll(){
		ifScroll=false;
	}
	this.stopScroll=stopScroll;
	
	function addControlLeft(element){
		element.onmouseover = function(){startScroll(-2,0)};
		element.onmouseout = function(){stopScroll()};
		element.parentNode.removeChild(element);
		mainDiv.appendChild(element);
	}
	this.addControlLeft = addControlLeft;
	
	function addControlRight(element){
		element.onmouseover = function(){startScroll(2,0)};
		element.onmouseout = function(){stopScroll()};
		element.parentNode.removeChild(element);
		mainDiv.appendChild(element);
	}
	this.addControlRight = addControlRight;
	
	function setAt(left){
		actLeft = actLeft+left;
		cont.style.clip = getRect(actLeft,actTop);
		cont.style.left = contLeftOff - actLeft;
	}
	this.setAt = setAt;
	//alert('created');
}

function imagesCacher(element){
	imgs = element.getElementsByTagName("img");
	for(var i in imgs){
		if(imgs[i].src!=undefined && imgs[i].src.length==0)imgs[i].src = imgs[i].id;
	}
}

function replaceElement(element, cont){
	var temp = document.createElement("DIV");
	temp.innerHTML = cont;
	imagesCacher(temp);
	//alert('replacing');
	var parent = element.parentNode;
	//alert(0+parent.tagName+'\n'+element.tagName+'\n'+temp.firstChild.tagName);
	
	parent.replaceChild(temp.firstChild,element);
	//imagesCacher(parent);
}

