var timeout,listtimeout;
var html_loading = '<img src="/i/clocks.gif" width="32" height="32">';
var time_diff;

function stat(n) {
	$('status').innerHTML = 'статус: '+(typeof n=='string'?n:['ожидание','идёт автоматическое обновление','сайт загружен'][n]);
}

function ArsFormat(n)
{
	n=n.toString().match(/\d+/)[0];
	var test = /^(-?\d+)(\d{3})/;
	while(test.test(n)){n = n.replace(test,"$1 $2")}
	return n;
}

function quote_del(o) {
	o=o.parentNode;
	var share = o.getAttribute('share'), q=getCookie("quotes") || '',nq='';
	q=q.split('_'); // йа червячог, ищу своего друга
	for(var i in q)
		if(q[i]!=share)
			nq+=(nq?'_':'')+q[i];
	setCookie("quotes",nq);
	o.parentNode.removeChild(o);
	if(nq=='') {
		timeout=0;
	}
}

function f1(){this.className='trover'};
function f2(){this.className=''};
function quote_add2(){quote_add(this.getAttribute('share'));}
function add_row(tbl,d){
	var row = tbl.insertRow(-1);
	if(d[5]){row.style.backgroundColor='#bdfebd';row.flag=1};
	
	row.setAttribute("zav",d[3]);
	row.setAttribute("tip_op",d[0]);

	if(d[4]==6)
		d[1]='[A] '+d[1];
	var td = row.insertCell(-1);
	td.innerHTML=d[0]=='s'?'&nbsp;':ArsFormat(d[1]);

	td = row.insertCell(-1);
	td.innerHTML=ArsFormat(d[2]);

	td = row.insertCell(-1);
	td.innerHTML=d[0]=='b'?'&nbsp;':ArsFormat(d[1]);
}
function quote_add(share) {
	$('logo').style.display="none";
	var q=getCookie("quotes") || "";
	if(q.split("_").length > 12) {
		alert("нельзя добавить больше 12 котировок");
		return;
	}
	if(q.indexOf(share)==-1) {
		setCookie("quotes",q+(q?"_":"")+share);
		var o = $("quotes");
		var div = $c("DIV");
		div.className="quote";
		div.innerHTML=html_loading;
		div.setAttribute("share",share);
		o.appendChild(div);
		new ajax_request("/core/quote/"+share+"/",
			function(res) {
				try {
					var r=eval("("+res+")");
					div.innerHTML='<img src="/i/close.gif" style="float:right;cursor:pointer" onclick="quote_del(this)">';
					div.innerHTML+=r.info1;
					var tbl = $c("TABLE");
					tbl.className="quotetbl";
					tbl.width="100%";
					tbl.cellPadding="3";
					tbl.cellSpacing="1";
					var rowname=['Покупка<br>(тонн)','Цена<br>('+(r.nds?'c':'без')+' ндс)','Продажа<br>(тонн)'];
					var row = tbl.insertRow(0),td;
					/*
					можно было бы сделать и thead и tbody, но так меньше кода, да и удаление не парит
					*/
					for(var i in rowname) {
						var th = $c("TH");
						th.innerHTML = rowname[i];
						row.appendChild(th);
					}
					/*
					по идее надо дебажить - считаем волюм на продажу, потом болдом делаем заявки на покупку, которые попали в обьём					
					*/
					var volume = 0;
					for(var i in r.d)
						if(r.d[i][0]=='s')
							volume+=r.d[i][1];
					for(var i in r.d)
						add_row(tbl,r.d[i]);
					div.appendChild(tbl);
					row = $c("DIV");
					row.innerHTML=r.info2;
					div.appendChild(row);
				}
				catch(e) {
					stat("ошибка "+e);
				}
			}
		);
	}
	else
		alert("Инструмент уже котируется\nСмотрите сверху страницы");
	if(!timeout)
		timeout = setTimeout ( "quote_refresh()", 5000 );
}
function list_close(o) {
	clearTimeout(listtimeout);
	o.parentNode.innerHTML='';
}
/*
	получение спмска товаров по коду
	a - код, например 'EA'
*/
function get_data(a) {
	clearTimeout(listtimeout);
	$("list").innerHTML = html_loading;
	
	//auction_refresh(a);
	
	var ot = $("onlytrade").checked?'cotir/':'';
	var gg = '';
	try{gg = corepub}catch(e){};
	new ajax_request('/core/list/'+a+'/'+ot+gg,function(res){
		$("list").innerHTML='<img src="/i/close.gif" style="float:right;cursor:pointer" onclick="list_close(this)">'+res;
		var tbl=$("sharelist");// нам приходит table с таким id
		if(tbl) {
			var trs = tbl.getElementsByTagName("tr");
			for (var i=trs.length-1;i>0;i--) {
				var share = trs[i].getAttribute("share");
				if(share) {
					trs[i].onmouseover=f1;
					trs[i].onmouseout=f2;
					trs[i].onclick=quote_add2;
					trs[i].style.cursor="pointer"
				}
			}
			$('logo').style.display="none";
			listtimeout = setTimeout ( "get_data('"+a+"')", 5*60000 );// пять минут
		}});
	return false;
}

/*
	offmarket
*/
function get_offmarket() {
	clearTimeout(listtimeout);
	$("list").innerHTML = html_loading;
	new ajax_request('/offmarket/',function(res){
			$('logo').style.display="none";
			$("list").innerHTML=res;
			var tr = document.getElementById('pricelist').getElementsByTagName('tr');var rexp = /\S+/;
			var lastlink = null;for(i=0,len=tr.length;i<len;i++) {if(rexp.test(tr[i].cells[0].innerHTML)) {
			tr[i].className=lastlink?'l2':'l1';lastlink = tr[i];}else {lastlink.className='l3';lastlink = null;}}
		});
	return false;
}
/*
	wnd - окно котировки
	r - array котировок
*/
function update_data(wnd,r,nm) {
	/*if(!wnd)
	{
		quote_add(nm);
		return;
	}*/
	var tbl = wnd.getElementsByTagName("TBODY")[0];
	// если tbl у нас нет, значит окно ещё не прогрузилось ()
	if(tbl){
	for(var i=tbl.rows.length-1;i>0;i--)
		tbl.deleteRow(i);

	for(var i in r) 
		add_row(tbl,r[i]);
	}
}
function logout() {
	setCookie('SID','',true);
	window.location = '/';
}
function ft(t) {
	var t = t/1000;
	var mn = Math.floor(  (t/ (60)) % 60 );;
	var hz = Math.floor(t/ (60*60));
	return nn(hz)+':'+nn(mn);
}
function find_zone() {
	var now = new Date();
	now.setTime(now.getTime()-time_diff);
	now = now.getHours()*60*60*1000+now.getMinutes()*60*1000+now.getSeconds()*1000;

	for(var i=0;i<arguments.length;i++)
	{
		if(now <arguments[i])
			return i;
	}
	return -1;
}

function auction_refresh(grp) {
	new ajax_request('/core/auction/'+grp+'/',function(res){
		try {
			var r=eval("("+res+")");
			var txt='<table style="font-size:10pt">';
			
			for(var i=0,len=r.length;i<len;i++) {
				txt += '<tr><td>'+r[i][0]+"</td><td>";
				switch(find_zone(r[i][1],r[i][2],r[i][3],r[i][4]))
				{
					case 0:txt +='Подготовка';break;
					case 1:txt +='Разрешён ввод заявок заказчика';break;
					case 2:txt +='Запрещён ввод заявок заказчика';break;
					case 3:txt +='Разрешён ввод заявок';break;
					default:txt +='Торги не проводятся';
				}
				txt +="</td></td>";
			}
			txt +='</table>';
			//alert(r[0][0]);
			
			$('auctions').innerHTML = txt;
		}
		catch(e) {
			stat("ошибка "+e);
		}
	});
}
function quote_refresh() {
	new ajax_request("/core/update/",function(res){
		try{
			//console.log(res);
			var r=eval("("+res+")");
			var quotes = $("quotes").getElementsByTagName("DIV");
			var windows = {};
			for(var i=0,len=quotes.length;i<len;i++) {
				//alert(quotes[i]);
				var a = quotes[i].getAttribute("share");
				if(a)
					windows[a]=quotes[i];
			}
			for(var i in r) {
				update_data(windows[i],r[i]);
			}
			stat(1);
		}
		catch(e) {
			stat("ошибка "+e);
		}
		if(timeout)
			timeout = setTimeout("quote_refresh()",2500);
		else {
			stat(0);
			clearTimeout(timeout);
		}
	});
	
}
function nn(x) {
	return x<10?'0'+x:x;
}

function updateTime() {
	var now = new Date();
	now.setTime(now.getTime()-time_diff);
	$('timer').innerHTML=[nn(now.getHours()),':',nn(now.getMinutes()),':',nn(now.getSeconds())].join('');
	setTimeout(updateTime,50);
}
/*
	Инициализация окон 
*/
window.onload=function() {
	var q=getCookie("quotes") || '';
	setCookie('quotes','',true);
	q=q.split('_'); // йа червячог
	for(var i in q)
		if(q[i]!='')
			quote_add(q[i]);
	stat(2);
	time_diff = new Date().getTime();
	new ajax_request("/core/time/",function(res){
		if(!res || isNaN(res))alert("произошка ошибка при синхронизации часов")
		else {
			var x=new Date(new Number(res)+(new Date().getTime()-time_diff)/2);
			var y=new Date();
			time_diff = y.getTime()-x.getTime();
			setTimeout(updateTime,200);
		}
	});
}