// скрипт спецпредложений

var specs=new Array(); //спецпредожения
var spec_first=0; //номер первого элемента spec_in;
var specin_w=308; //ширина блока spec_in 288px;

var spec_left=0; //id левого спека
var spec_right=-1; //id правого спека
var spec_first_num=0; //num первого спека
var spec_started=0; //загружен ли первый спек
var LA_URL_="/la_baner/";
var onresize_arr=new Array();

// AJAX
function AJAX(url, onloadF, onerrorF) {
	var req = init();
	req.onreadystatechange = processRequest;
//	alert(url);
	function init() {
		if (window.XMLHttpRequest) { return new XMLHttpRequest(); }
		else if (window.ActiveXObject) { return new ActiveXObject("Microsoft.XMLHTTP"); }
	}
	function processRequest() {
		if (req.readyState == 4) {
			if (req.status == 200) { if (onloadF) onloadF(req); }
			else { if (onerrorF) onerrorF(); }
		}
	}
	this.doGet = function() {
		req.open("GET", url, true);
		req.send(null);
	}
	this.doPost = function(body) {
		req.open("POST", url, true);
		req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
		req.send(body);
	}
}

// возвращает html дива спекин
function spec_getnew(type_new) {
	var res=new Array();
	res['div']="<div class=\"spec_loading\"><\/div>";
	res['load']="new";

	if (type_new=='right') {
		spec_right++;
		res['id']=spec_right;
	} else {
		spec_left--;
		res['id']=spec_left;
	}
	return res;
}

// заполняем массив спецпредложений
function specs_fill(specs_n) {
	var spec_from=specs.length;
	for (var i=spec_from;i<specs_n;i++) {
		specs[i]=spec_getnew('right');
	}
}

// загружаем спекины по массиву спецпредложений
function specs_allload() {
	for (var i=0;i<specs.length;i++) 
		if (specs[i]['load']=="new") {
			specs[i]['load']="loading"
			spec_load(specs[i]['id']);
		}
}

// выводим массив спецпредложений
function specs_print() {
	var spec_main_in="";
	for (var i=0;i<specs.length;i++) {
		spec_main_in+="<div class=\"spec_in\" id=\"spec"+specs[i]['id']+"\">";
		spec_main_in+=specs[i]['div'];
		spec_main_in+="<\/div>";
	}
	document.getElementById("spec_main").innerHTML=spec_main_in;
}

// инициализируем спецпредложения
function specs_set() {
	win_w=document.getElementById("spec").offsetWidth;
	win_w-=100;
	var specs_n=Math.ceil(win_w/specin_w);
	
	if ((specs.length-spec_first)<specs_n) {
		specs_fill(specs_n+spec_first);
		specs_print();
		specs_allload();
	}
}

//скроллируем 
function spec_scroll(num){
	var el=document.getElementById("spec_main");
	var a=el.style.marginLeft;
	var b=a.length;
	el.style.marginLeft=a.substr(0,b-2)*1+num*1+"px";
}

//скроллируем 
function spec_move(num){
	var w=specin_w;
	if (num=="n") {
		spec_first++; 
		specs_set(); 
	}
	else spec_first--;

	if (spec_first<0) {
		spec_first=0; 
		specs.unshift(spec_getnew('left'));
		
		var el=document.getElementById("spec_main");
		var a=el.style.marginLeft;
		var b=a.length;
		var c=a.substr(0,b-2)*1-w*1+"px";
		el.style.marginLeft=c;
		specs_print();
		specs_allload();
	}
	
	var k=1;
	while(w>0) {
		var $delta=Math.ceil(w/20);
		var str="spec_scroll(";
		if (num=="n") str+="-";
		str+=$delta+")";
		window.setTimeout(str, k*20);
		w=w-$delta;
		k++;
	}
	return false;
}

function spec_prev() {
	spec_move("p"); 
	return false;
}

function spec_next() {
	spec_move("n"); 
	return false;
}

//запускает ajax получения случайного spec_in
function spec_load(spec_id) {
	if (spec_started!=0) {
		var spec_num=spec_id;
		var spec_in = new AJAX(LA_URL_+"/get_baner.php?id="+spec_num+"&num="+spec_first_num, spec_loaded);
		spec_in.doGet();
	}
}

//завершает ajax получение случайного spec_in
function spec_loaded(res_) {
//alert(res_.responseText);
	var xml=res_.responseXML.documentElement;
	var res_id=xml.getElementsByTagName("spec_id")[0].childNodes[0].nodeValue;
	var res_div=xml.getElementsByTagName("spec_div")[0].childNodes[0].nodeValue;

	for (var i=0;i<specs.length;i++) {
		if (specs[i]['id']==res_id) {
			specs[i]['load']="loaded";
			specs[i]['div']=res_div;
			res_id="spec"+res_id;
			document.getElementById(res_id).innerHTML=res_div;
		}
	}
}

//запускает ajax получения случайного spec_in
function spec_first_load() {	
	var spec_in = new AJAX(LA_URL_+"init_baner.php", spec_first_loaded);
	spec_in.doGet();
}

//завершает ajax получение случайного spec_in
function spec_first_loaded(res_) {
//alert(res_.responseText);
	var xml=res_.responseXML.documentElement;
	spec_first_num=xml.getElementsByTagName("spec_num")[0].childNodes[0].nodeValue;
	
	spec_started=1;
	specs_set();	
	onresize_arr[onresize_arr.length]=specs_set; //добавляем в обработчик онресайз инит спецпредложений
}

// запускаем все онресайз функции
function win_onresize() {
	for (var i=0; i<onresize_arr.length; i++) { onresize_arr[i](); }
}

// инициализируем спецпредложения 
function specs_init() {
	try {
		s=document.createElement("link");
		s.setAttribute("type", "text/css");
		s.setAttribute("rel", "stylesheet");
		s.setAttribute("href", "/la_baner/la_baner.css");
		document.getElementsByTagName("head")[0].appendChild(s);
	}catch(err){}

	var a="<div id=\"spec\">";
	a+="<div id=\"spec_left\"><a href=\"#\" onclick=\"return spec_prev();\"><i>прошлый</i></a></div>";
	a+="<div id=\"spec_right\"><a href=\"#\" onclick=\"return spec_next();\"><i>следующий</i></a></div>";
	a+="<div id=\"spec_out\"><div id=\"spec_main\" style=\"margin-left:0px>\">";
//	a+="<div class=\"spec_in\"><div class=\"spec_loading\"></div></div>";
	a+="</div></div>";
	a+="</div>";
	
	document.write(a);
			
	spec_first_load();
}

specs_init();

la_onresize_other=window.onresize;
try {if(la_onresize_other) onresize_arr[onresize_arr.length]=la_onresize_other} catch(err){}
window.onresize=win_onresize;
