var zIdx = 10;
var stDivs = Array();
var stArr = Array();


function $(i){return document.getElementById(i);}

function dMouseMove(x,y){
	if(this.drag){
		x = mouseX;
		y = mouseY;
		if(x-this.clX<0)
			x = this.clX;
		if(y-this.clY<0)
			y = this.clY;
		if(y-this.clY+this.clientHeight>document.body.clientHeight+document.body.scrollTop)
			y = document.body.clientHeight - this.clientHeight + this.clY+document.body.scrollTop;
		if(x-this.clX+this.clientWidth>document.body.clientWidth+document.body.scrollLeft)
			x = document.body.clientWidth - this.offsetWidth + document.body.scrollLeft + this.clX;
		this.style.top = (y-this.clY)+'px';
		this.style.left = (x-this.clX)+'px';
	}
}

function dAnimMove(){
	this.oldx = (this.newx - this.oldx) / 5.0 + this.oldx;
	this.oldy = (this.newy - this.oldy) / 5.0 + this.oldy;
	this.style.top = this.oldy+'px';
	this.style.left = this.oldx+'px';
	if(!(Math.abs(this.oldy-this.newy) < 2 &&Math.abs(this.oldx-this.newx) < 2 ))
		this.animTimer = setTimeout('$("'+this.id+'").animMove()',25);
}

function dStartAnimTimer(){
	var pt = getDivPos(mouseX,mouseY,this.offsetWidth,this.offsetHeight);
	this.newx = pt[0];
	this.newy = pt[1];
	this.oldx = this.offsetLeft;
	this.oldy = this.offsetTop;
	this.style.zIndex = ++zIdx;
	this.animTimer = setTimeout('$("'+this.id+'").animMove()',25);
}

function dMDown(e){
	e = getEvent(e);
	registerMouseCap(this);
	this.drag = true;
	this.ptX = mouseX;
	this.ptY = mouseY;
	this.clY = mouseY - this.offsetTop;
	this.clX = mouseX - this.offsetLeft;
	this.style.zIndex = ++zIdx;
	return false;
}

function dMUp(e){
	this.drag = false;
	deregisterMouseCap(this);
}

function getDivPos(x,y,w,h){
	w = parseInt(w);
	h = parseInt(h);
	if(x+w>document.body.clientWidth)
		x-=w;
	if(y+h>document.body.clientHeight)
		y-=h;
	if(y-document.body.scrollTop<0)
		y = document.body.scrollTop;
	return new Array(x,y);
}

function hLClick(e){
	if(this.state==1){
		this.innerHTML = fotoText;
		this.foto.style.display='none';
		this.har.style.display='block';
		this.state = 2;
	}
	else{
		this.state = 1;
		this.innerHTML = harText;
		this.har.style.display='none';
		this.foto.style.display='block';
		this.pdiv.scrollTop = 0;
	}
}

function titMDown(){
	this.parentNode.mousedown();
	return false;
}

function stDSetOut(xml){
	var de = xml.documentElement;
	var id = this.mIm.id;
	var st = stArr[id];
	for(i=0;i<de.childNodes.length;i++){
		var ch = de.childNodes[i];
		var nn = ch.nodeName;
		try{
			var val = ch.firstChild.nodeValue;
			if(nn=='name'){
				getChildByClass(this,'name_td').innerHTML = val;
				st.name = val;
			}
			else if(nn=='har')
				getChildByClass(this,'stdHar').innerHTML = val;
			else if(nn=='links')
				getChildByClass(this,'buyLinks').innerHTML = val;
			else if(nn=='born')
				st.born = val;
			else if(nn=='type')
				st.type = val;
			else if(nn=='logo')
				getChildByClass(this,'stdMedImg').innerHTML = val;
		}
		catch(e){}
	}
}

function clClick(){
	this.stDiv.style.display = 'none';
}

function logoClick(){
	window.open('http://infostone.ru');
}

function logoOver(){this.style.background = 'url("/design/im/logo_h.gif")';}
function logoOut(){this.style.background = 'url("/design/im/logo.gif")';}
function clOver(){this.style.background = 'url("/design/im/close_h.gif")';}
function clOut(){this.style.background = 'url("/design/im/close.gif")';}

function printStone(id){
	window.open("http://info-stone.ru/stones.php?print=1&id="+id);
}
/*
function tmbMOut(){
	this.onmousemove;
}*/

function createStDiv(){
	var stDiv = $("stonediv").cloneNode(1);

	im = getChildByClass(stDiv,'stdMedImg');
	im.style.background = 'url(http://infostone.ru/ui/stones/med/'+this.id+'.jpg)';
	/*attr = im.attributes.getNamedItem('src');
	attr.value = 'http://info-stone.ru/ui/stones/big/'+this.id+'.jpg';*/
	document.body.appendChild(stDiv);
	stDiv.noHide = false;
	stDiv.mousedown = dMDown;
	stDiv.onmouseup = dMUp;
	stDiv.mmove = dMouseMove;
	stDiv.setOutput = stDSetOut;
	stDiv.id = 'd_'+this.id;
	stDiv.startAnim = dStartAnimTimer;
	stDiv.animMove = dAnimMove;
	this.stDiv = stDiv;
	stDiv.st = this;
	stDiv.style.zIndex = zIdx;
	stDiv.mIm = this;

	var prH = getChildByClass(stDiv, 'printSt');
	prH.setAttribute('href',"javascript:printStone("+this.id+")");

	tit = getChildByClass(stDiv,'title');
	tit.onmousedown = titMDown;

	var hl = getChildByClass(stDiv,'harLink');
	hl.innerHTML = harText;
	hl.onclick = hLClick;
	hl.pdiv = getChildByClass(stDiv,'stInner');
	hl.state = 1;
	hl.foto = getChildByClass(stDiv,'stdMedImg');
	hl.har = getChildByClass(stDiv,'stdHar');

	cl = getChildByClass(stDiv,'close');
	cl.onclick = clClick;
	cl.stDiv = stDiv;
	cl.onmouseover = clOver;
	cl.onmouseout = clOut;
	logo = getChildByClass(stDiv,'logo');
	logo.onclick = logoClick;
	logo.onmouseover = logoOver;
	logo.onmouseout = logoOut;

	//var thmb = document.createElement('div');
	//thmb.onmouseout = tmbMOut;

	stDivs[stDiv.id] = stDiv;
	AddPostArgs('id',this.id);
	AddPostArgs('params',1);
	postRequest('d_'+this.id,'Загрузка...','Ошибка');
}

function stShowDiv(){
	if(this.stDiv==null)
		this.createDiv();
	else if(this.stDiv.style.display=='block'){
		this.stDiv.startAnim();
		return;
	}
	stDiv = this.stDiv;
	stDiv.style.display = 'block';
	var pos = getDivPos(mouseX,mouseY,stDiv.offsetWidth,stDiv.offsetHeight);
	stDiv.style.top = (pos[1]-1)+'px';
	stDiv.style.left = (pos[0]-1)+'px';
	return false;
}

function stHideDiv(){
	clearTimeout(this.timerId);
	this.stDiv.style.display = 'none';
}

function wndResize(){
	for(key in stDivs){
		var d = stDivs[key];
		if(d.offsetLeft+d.clientWidth>document.body.clientWidth){
			d.style.left = (document.body.clientWidth - d.clientWidth)+'px';
		}
		if(d.offsetTop+d.clientHeight>document.body.clientHeight){
			d.style.top = (document.body.clientHeight - d.clientHeight)+'px';
		}
	}
}

function lnClick(){
//	alert('ahtung!');
	this.childNodes[0].onclick();
}

function applyEvents(div){
	for(var i=0;i<div.childNodes.length;i++){
		im = div.childNodes[i];
		if((im.nodeName=='div'||im.nodeName=='DIV')&&im.className=='stones')
			applyEvents(im);
		if(im.nodeName!='a'&&im.nodeName!='A')
			continue;
		im.onclick = lnClick;
		im.setAttribute('href', 'javascript:void');
		im = im.childNodes[0];
		im.createDiv = createStDiv;
		im.onclick = stShowDiv;
		im.showDiv = stShowDiv;
		im.hideDiv = stHideDiv;
		im.stDiv = null;

		//im.height = 100;
		//im.width = 100;
		var st = document.createElement('div');
		st.id = im.id;
		st.im = im;
		st.ss = im.getAttribute('alt');
		stArr[im.id] = st;
	}
}

function initDivs(){
	window.onresize = wndResize;
	var stonesDiv = $("stones");
	var stImgs = stonesDiv.childNodes;
	$('search').onkeyup = doSearch;
	applyEvents(stonesDiv);
}

function seS(s,s1){
	var sl = s.toLowerCase();
	var s1l = s1.toLowerCase();
	if(sl.search(s1l)!=-1)
		return true;
	return false;
}

function doSearch(){
	var ss = $('search').value;
	var vis = 0;
	for(key in stArr){
		var st = stArr[key];
		//alert(ss);
		if(ss.length==0)
		{
			st.im.style.display = 'inline';
			vis++;
		}
		else if(seS(st.ss,ss))
		{
			st.im.style.display = 'inline';
			vis++;
		}
		else
			st.im.style.display = 'none';
	}
	if(vis==0)
		$('notfound').style.display = 'block';
	else
		$('notfound').style.display = 'none';
}

function chooseReg(){
	var r = $('regChooser');
	if(r.style.display == 'none')
		r.style.display = 'block';
	else
		r.style.display = 'none';
}
