var xmlHttp = createXmlHttpRequestObject();
var xmlHttp1 = createXmlHttpRequestObject1();

var SendOrd = false;

function createXmlHttpRequestObject()	{
	
	var xmlHttp;
	
	if(window.ActiveXObject)	{
		try	{
			xmlHttp = new ActiveXObject("Microsoft.XMLHttp");	
		}
		catch (e)	{
			xmlHttp = false;	
		}
	}
	else	{
		try	{
			xmlHttp = new XMLHttpRequest();	
		}
		catch (e)	{
			xmlHttp = false;	
		}	
	}
	
	if(!xmlHttp)
		alert("Ошибка создания объекта XMLHttpRequest.");
	else
		return xmlHttp;
}

function createXmlHttpRequestObject1()	{
	
	var xmlHttp1;
	
	if(window.ActiveXObject)	{
		try	{
			xmlHttp1 = new ActiveXObject("Microsoft.XMLHttp");	
		}
		catch (e)	{
			xmlHttp1 = false;	
		}
	}
	else	{
		try	{
			xmlHttp1 = new XMLHttpRequest();	
		}
		catch (e)	{
			xmlHttp1 = false;	
		}	
	}
	
	if(!xmlHttp1)
		alert("Ошибка создания объекта XMLHttpRequest.");
	else
		return xmlHttp1;
}


function SendLoginForm() {
	
	document.getElementById("usr_login").disabled = true;
	document.getElementById("usr_password").disabled = true;
	
	document.getElementById("send_data").innerHTML = 'Передача данных ...';
	//document.getElementById('img_loader').style.display = 'block';
	document.getElementById("sendlogin").style.display = 'none';
	document.getElementById("reg_link").style.display = 'none';
	
	var login = document.getElementById("usr_login").value;
	var password = document.getElementById("usr_password").value;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			login = encodeURIComponent(login);
			password = encodeURIComponent(password);
			
			param = "module=auth&login=" + (login) + "&password=" + (password);
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseLoginForm;
			xmlHttp.send(null);
		}
}


function handleServerResponseLoginForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				document.getElementById("usr_login").value = "";
				document.getElementById("usr_password").value = "";
				//document.getElementById('img_loader').style.display = 'none';
				document.getElementById("send_data").innerHTML = 'Авторизация успешна!';
				//document.getElementById("login_ok").style.display = 'block';
				
				setTimeout(function() {document.location = document.getElementById("redirect").value;}, 2000);
			}
			else	{
				//document.getElementById('img_loader').style.display = 'none';
				document.getElementById("send_data").innerHTML = 'Неверный логин/пароль';
				
				setTimeout(function() {document.getElementById("sendlogin").style.display = 'block'; document.getElementById("send_data").innerHTML = ''; document.getElementById("usr_login").disabled = false; document.getElementById("usr_password").disabled = false; document.getElementById("reg_link").style.display = 'block';}, 2000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}


function SendProfileForm() {
	
	document.getElementById("usr_fio").disabled = true;
	document.getElementById("usr_country").disabled = true;
	document.getElementById("usr_city").disabled = true;
	document.getElementById("usr_tel").disabled = true;
	document.getElementById("usr_tel_2").disabled = true;
	//document.getElementById("usr_work").disabled = true;
	//document.getElementById("usr_post").disabled = true;
	//document.getElementById("usr_url").disabled = true;
	document.getElementById("usr_address").disabled = true;
	document.getElementById("usr_email").disabled = true;
	document.getElementById("usr_b_day").disabled = true;
	document.getElementById("usr_b_mon").disabled = true;
	document.getElementById("usr_b_year").disabled = true;
	
	document.getElementById("send_data").innerHTML = 'Передача данных ...';
	//document.getElementById('img_loader').style.display = 'block';
	document.getElementById("sendprofile").style.display = 'none';
	
	
	var fio = document.getElementById("usr_fio").value;
	var country = document.getElementById("usr_country").value;
	var city = document.getElementById("usr_city").value;
	var tel = document.getElementById("usr_tel").value;
	var tel_2 = document.getElementById("usr_tel_2").value;
	//var work = document.getElementById("usr_work").value;
	//var post = document.getElementById("usr_post").value;
	//var url = document.getElementById("usr_url").value;
	var address = document.getElementById("usr_address").value;
	var email = document.getElementById("usr_email").value;
	var b_day = document.getElementById("usr_b_day").value;
	var b_mon = document.getElementById("usr_b_mon").value;
	var b_year = document.getElementById("usr_b_year").value;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			fio = encodeURIComponent(fio);
			country = encodeURIComponent(country);
			city = encodeURIComponent(city);
			tel = encodeURIComponent(tel);
			tel_2 = encodeURIComponent(tel_2);
			//work = encodeURIComponent(work);
			//post = encodeURIComponent(post);
			//url = encodeURIComponent(url);
			address = encodeURIComponent(address);
			email = encodeURIComponent(email);
			b_day = encodeURIComponent(b_day);
			b_mon = encodeURIComponent(b_mon);
			b_year = encodeURIComponent(b_year);
			
			param = "module=profile&fio=" + (fio) + "&country=" + (country) + "&city=" + (city) + "&tel=" + (tel) + "&tel_2=" + (tel_2) + "&address=" + (address) + "&email=" + (email) + "&b_day=" + (b_day) + "&b_mon=" + (b_mon) + "&b_year=" + (b_year);
			//param = "module=profile&fio=" + (fio) + "&country=" + (country) + "&city=" + (city) + "&tel=" + (tel) + "&address=" + (address) + "&email=" + (email) + "&b_day=" + (b_day) + "&b_mon=" + (b_mon) + "&b_year=" + (b_year);
			
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseProfileForm;
			xmlHttp.send(null);
		}
}


function handleServerResponseProfileForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				document.getElementById("usr_fio").disabled = false;
				document.getElementById("usr_country").disabled = false;
				document.getElementById("usr_city").disabled = false;
				document.getElementById("usr_tel").disabled = false;
				document.getElementById("usr_tel_2").disabled = false;
				//document.getElementById("usr_work").disabled = false;
				//document.getElementById("usr_post").disabled = false;
				//document.getElementById("usr_url").disabled = false;
				document.getElementById("usr_address").disabled = false;
				document.getElementById("usr_email").disabled = false;
				document.getElementById("usr_b_day").disabled = false;
				document.getElementById("usr_b_mon").disabled = false;
				document.getElementById("usr_b_year").disabled = false;
				document.getElementById("send_data").innerHTML = 'Данные успешно сохранены';
				//document.getElementById('img_loader').style.display = 'none';
				//document.getElementById("login_ok").style.display = 'block';
				
				if(SendOrd == true)	{
					SendOrder();
					SendOrd = false;	
				}
				
				setTimeout(function() {document.getElementById("send_data").innerHTML = ''; document.getElementById("sendprofile").style.display = 'block';}, 3000);
			}
			else	{
				document.getElementById("send_data").innerHTML = 'Ошибка при сохранении данных!';
				//document.getElementById('img_loader').style.display = 'none';
				setTimeout(function() {document.getElementById("send_data").innerHTML = ''; document.getElementById("sendprofile").style.display = 'block';}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}


function SendRegUserForm() {
	
	document.getElementById("reg_login").disabled = true;
	document.getElementById("reg_email").disabled = true;
	document.getElementById("reg_pass1").disabled = true;
	document.getElementById("reg_pass2").disabled = true;
	//document.getElementById("reg_group").disabled = true;
	

	document.getElementById("sendnewuser").style.display = 'none';
	
	var login = document.getElementById("reg_login").value;
	var email = document.getElementById("reg_email").value;
	var pass1 = document.getElementById("reg_pass1").value;
	var pass2 = document.getElementById("reg_pass2").value;
	//var reg_group = document.getElementById("reg_group").value;
	document.getElementById("send_data_2").innerHTML = 'Передача данных ...';
	var err = false;
	
	if(login.length < 3)	{
		
		err = true;	
		document.getElementById("send_data_2").innerHTML = 'Логин должен быть более 3 символов';
		
	}
	else if(pass1 != pass2)	{
		
		err = true;
		document.getElementById("send_data_2").innerHTML = 'Пароли не совпадают!';
		
	}
	else if(pass1.length < 6)	{
		
		err = true;	 
		document.getElementById("send_data_2").innerHTML = 'Пароль должен быть более 6 символов';
		
	}
	
	
	if(err == false)	{
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			login = encodeURIComponent(login);
			email = encodeURIComponent(email);
			pass1 = encodeURIComponent(pass1);
			//reg_group = encodeURIComponent(reg_group);
			
			param = "module=reguser&login=" + (login) + "&email=" + (email) + "&password=" + (pass1);
			//alert("http://"+location.hostname+"/ajax.php?" + param);
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseRegUserForm;
			xmlHttp.send(null);
			
		}
	}
	else	{
		
		document.getElementById("reg_login").disabled = false;
		document.getElementById("reg_email").disabled = false;
		document.getElementById("reg_pass1").disabled = false;
		document.getElementById("reg_pass2").disabled = false;
		//document.getElementById('img_loader_2').style.display = 'none'; 
		setTimeout(function() {document.getElementById("send_data_2").innerHTML = ''; document.getElementById("sendnewuser").style.display = 'block';}, 3000);
		
	}
}


function handleServerResponseRegUserForm()	{
	
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURIComponent(info) == 'ok') {
				
				document.getElementById("send_data_2").innerHTML = 'Регистрация завершена, сейчас Вы будете перемещены ...';
				//document.getElementById('img_loader_2').style.display = 'none';
				
				setTimeout(function() {document.location = document.getElementById("redirect_2").value;}, 2000);
			}
			else	{
				
				document.getElementById("reg_login").disabled = false;
				document.getElementById("reg_email").disabled = false;
				document.getElementById("reg_pass1").disabled = false;
				document.getElementById("reg_pass2").disabled = false;
				//document.getElementById("reg_group").disabled = false;
				document.getElementById("send_data_2").innerHTML = decodeURIComponent(info);
				//document.getElementById('img_loader_2').style.display = 'none';
				setTimeout(function() {document.getElementById("send_data_2").innerHTML = ''; document.getElementById("sendnewuser").style.display = 'block';}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}

function SendREmailForm() {
	
	document.getElementById("res_email").disabled = true;
	
	//document.getElementById('img_loader_3').style.display = 'block';
	document.getElementById("send_data_3").innerHTML = 'Передача данных ...';
	document.getElementById("sendemail").style.display = 'none';
	
	var email = document.getElementById("res_email").value;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			email = encodeURIComponent(email);
			
			param = "module=rpass&email=" + (email);
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseREmailForm;
			xmlHttp.send(null);
		}
}

function handleServerResponseREmailForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				//document.getElementById('img_loader_3').style.display = 'none';
				document.getElementById('res_info').style.display = 'none';
				document.getElementById('res_input').style.display = 'none';
				document.getElementById("send_data_3").innerHTML = 'На указанный при регистрации E-mail отправлена информация для восстановления пароля';
				//document.getElementById("login_ok").style.display = 'block';
				
				//setTimeout(function() {document.location = document.getElementById("redirect").value;}, 2000);
			}
			else	{
				//document.getElementById('img_loader_3').style.display = 'none';
				document.getElementById("send_data_3").innerHTML = 'Указанные данные не найдены';
				
				setTimeout(function() {document.getElementById("sendemail").style.display = 'block'; document.getElementById("send_data_3").innerHTML = ''; document.getElementById("res_email").disabled = false;}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}

function SendNewPasswordForm() {
	
	document.getElementById("chp_old_password").disabled = true;
	document.getElementById("chp_password1").disabled = true;
	document.getElementById("chp_password2").disabled = true;
	
	document.getElementById("send_data_2").innerHTML = 'Передача данных ...';
	//document.getElementById('img_loader_2').style.display = 'block';
	document.getElementById("sendpass").style.display = 'none';
	
	var password_old = document.getElementById("chp_old_password").value;
	var password1 = document.getElementById("chp_password1").value;
	var password2 = document.getElementById("chp_password2").value;
	var err = false;
	
	if(password1 != password2)	{
		
		err = true;
		document.getElementById("send_data_2").innerHTML = 'Новые пароли не совпадают!';
		
	}
	else if(password1.length < 6)	{
		
		err = true;	 
		document.getElementById("send_data_2").innerHTML = 'Пароль должен быть более 6 символов';
		
	}
	
	if(err == false)	{
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			password_old = encodeURIComponent(password_old);
			password1 = encodeURIComponent(password1);
			
			param = "module=npass&pold=" + (password_old) + "&pnew=" + (password1);
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseNewPasswordForm;
			xmlHttp.send(null);
		}
	}
	else	{
		
		document.getElementById("chp_old_password").disabled = false;
		document.getElementById("chp_password1").disabled = false;
		document.getElementById("chp_password2").disabled = false;
		//document.getElementById('img_loader_2').style.display = 'none'; 
		setTimeout(function() {document.getElementById("send_data_2").innerHTML = ''; document.getElementById("sendpass").style.display = 'block';}, 3000);
		
	}
}


function handleServerResponseNewPasswordForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				//document.getElementById('img_loader_2').style.display = 'none';
				document.getElementById("chp_old_password").value = '';
				document.getElementById("chp_password1").value = '';
				document.getElementById("chp_password2").value = '';
				document.getElementById("send_data_2").innerHTML = 'Новый пароль сохранен';
				//document.getElementById("login_ok").style.display = 'block';
				
				setTimeout(function() {document.getElementById("sendpass").style.display = 'block'; document.getElementById("send_data_2").innerHTML = ''; document.getElementById("chp_old_password").disabled = false; document.getElementById("chp_password1").disabled = false; document.getElementById("chp_password2").disabled = false;}, 3000);
			}
			else	{
				//document.getElementById('img_loader_2').style.display = 'none';
				document.getElementById("send_data_2").innerHTML = 'Старый пароль указан не верно';
				
				setTimeout(function() {document.getElementById("sendpass").style.display = 'block'; document.getElementById("send_data_2").innerHTML = ''; document.getElementById("chp_old_password").disabled = false; document.getElementById("chp_password1").disabled = false; document.getElementById("chp_password2").disabled = false;}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}



function SendContactForm() {
	
	document.getElementById("cf_tit").disabled = true;
	document.getElementById("cf_name").disabled = true;
	document.getElementById("cf_contacts").disabled = true;
	document.getElementById("cf_message").disabled = true;
	
	document.getElementById("cf_label").innerHTML = 'Передача данных ...';
	//document.getElementById('cf_loader').style.display = 'block';
	document.getElementById("cf_send").style.display = 'none';
	
	var id = document.getElementById("cf_id").value;
	var tit = document.getElementById("cf_tit").value;
	var name = document.getElementById("cf_name").value;
	var cont = document.getElementById("cf_contacts").value;
	var message = document.getElementById("cf_message").value;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			id = encodeURIComponent(id);
			tit = encodeURIComponent(tit);
			name = encodeURIComponent(name);
			cont = encodeURIComponent(cont);
			message = encodeURIComponent(message);
			
			param = "module=cf&id=" + id + "&tit=" + tit + "&name=" + name + "&cont=" + cont + "&message=" + message;
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseContactForm;
			xmlHttp.send(null);
		}
}


function handleServerResponseContactForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				document.getElementById("cf_tit").value = '';
				document.getElementById("cf_name").value = '';
				document.getElementById("cf_contacts").value = '';
				document.getElementById("cf_message").value = '';
				
				document.getElementById("cf_tit").disabled = false;
				document.getElementById("cf_name").disabled = false;
				document.getElementById("cf_contacts").disabled = false;
				document.getElementById("cf_message").disabled = false;
				
				//document.getElementById('cf_loader').style.display = 'none';
				document.getElementById("cf_label").innerHTML = 'Спасибо! Ваше сообщение отправлено!';
				
				setTimeout(function() {document.getElementById("cf_label").innerHTML = ''; document.getElementById("cf_send").style.display = 'block';}, 3000);
			}
			else	{
				
				document.getElementById("cf_tit").disabled = false;
				document.getElementById("cf_name").disabled = false;
				document.getElementById("cf_contacts").disabled = false;
				document.getElementById("cf_message").disabled = false;
				
				//document.getElementById('cf_loader').style.display = 'none';
				document.getElementById("cf_label").innerHTML = 'Ваше сообщение не удалось отправить!';
				
				setTimeout(function() {document.getElementById("cf_label").innerHTML = ''; document.getElementById("cf_send").style.display = 'block';}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}


function SendOrderForm() {
	
	document.getElementById("of_goods").disabled = true;
	document.getElementById("of_name").disabled = true;
	document.getElementById("of_contacts").disabled = true;
	document.getElementById("of_region").disabled = true;
	document.getElementById("of_city").disabled = true;
	document.getElementById("of_address").disabled = true;
	document.getElementById("of_legal").disabled = true;
	document.getElementById("of_message").disabled = true;
	
	document.getElementById('of_loader').style.display = 'block';
	document.getElementById("of_send").style.display = 'none';
	
	var id = encodeURIComponent(document.getElementById("of_id").value);
	var goods = encodeURIComponent(document.getElementById("of_goods").value);
	var name = encodeURIComponent(document.getElementById("of_name").value);
	var cont = encodeURIComponent(document.getElementById("of_contacts").value);
	var region = encodeURIComponent(document.getElementById("of_region").value);
	var city = encodeURIComponent(document.getElementById("of_city").value);
	var address = encodeURIComponent(document.getElementById("of_address").value);
	var message = encodeURIComponent(document.getElementById("of_message").value);
	
	if(document.getElementById("of_legal").checked == true)
		var legal = 1;
	else
		var legal = 0;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			
			param = "module=of&id=" + id + "&goods=" + goods + "&name=" + name + "&cont=" + cont + "&region=" + region + "&city=" + city + "&address=" + address + "&legal=" + legal + "&message=" + message;
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseOrderForm;
			xmlHttp.send(null);
		}
}


function handleServerResponseOrderForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				document.getElementById("of_name").value = '';
				document.getElementById("of_contacts").value = '';
				document.getElementById("of_city").value = '';
				document.getElementById("of_address").value = '';
				document.getElementById("of_legal").checked = false;
				document.getElementById("of_message").value = '';
				
				document.getElementById("of_goods").disabled = false;
				document.getElementById("of_name").disabled = false;
				document.getElementById("of_contacts").disabled = false;
				document.getElementById("of_region").disabled = false;
				document.getElementById("of_city").disabled = false;
				document.getElementById("of_address").disabled = false;
				document.getElementById("of_legal").disabled = false;
				document.getElementById("of_message").disabled = false;
				
				document.getElementById('of_loader').style.display = 'none';
				document.getElementById("of_label").innerHTML = 'Спасибо! Ваше сообщение отправлено!';
				
				setTimeout(function() {document.getElementById("of_label").innerHTML = ''; document.getElementById("of_send").style.display = 'block';}, 3000);
			}
			else	{
				
				document.getElementById("of_goods").disabled = false;
				document.getElementById("of_name").disabled = false;
				document.getElementById("of_contacts").disabled = false;
				document.getElementById("of_region").disabled = false;
				document.getElementById("of_city").disabled = false;
				document.getElementById("of_address").disabled = false;
				document.getElementById("of_legal").disabled = false;
				document.getElementById("of_message").disabled = false;
				
				document.getElementById('of_loader').style.display = 'none';
				document.getElementById("of_label").innerHTML = 'Ваше сообщение не удалось отправить!';
				
				setTimeout(function() {document.getElementById("of_label").innerHTML = ''; document.getElementById("of_send").style.display = 'block';}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}


function SendFAQForm() {
	
	document.getElementById("ff_tit").disabled = true;
	document.getElementById("ff_name").disabled = true;
	document.getElementById("ff_contacts").disabled = true;
	document.getElementById("ff_message").disabled = true;
	
	document.getElementById("ff_label").innerHTML = 'Передача данных ...';
	//document.getElementById('ff_loader').style.display = 'block';
	document.getElementById("ff_send").style.display = 'none';
	
	//var id = document.getElementById("ff_id").value;
	var tit = document.getElementById("ff_tit").value;
	var name = document.getElementById("ff_name").value;
	var cont = document.getElementById("ff_contacts").value;
	var message = document.getElementById("ff_message").value;
	
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
			//id = encodeURIComponent(id);
			tit = encodeURIComponent(tit);
			name = encodeURIComponent(name);
			cont = encodeURIComponent(cont);
			message = encodeURIComponent(message);
			
			param = "module=ff&tit=" + tit + "&name=" + name + "&cont=" + cont + "&message=" + message;
			
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseFAQForm;
			xmlHttp.send(null);
		}
}


function handleServerResponseFAQForm()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				document.getElementById("ff_tit").value = '';
				document.getElementById("ff_name").value = '';
				document.getElementById("ff_contacts").value = '';
				document.getElementById("ff_message").value = '';
				
				document.getElementById("ff_tit").disabled = false;
				document.getElementById("ff_name").disabled = false;
				document.getElementById("ff_contacts").disabled = false;
				document.getElementById("ff_message").disabled = false;
				
				//document.getElementById('ff_loader').style.display = 'none';
				document.getElementById("ff_label").innerHTML = 'Спасибо! Ваше сообщение отправлено!';
				
				setTimeout(function() {document.getElementById("ff_label").innerHTML = ''; document.getElementById("ff_send").style.display = 'block';}, 3000);
			}
			else	{
				
				document.getElementById("ff_tit").disabled = false;
				document.getElementById("ff_name").disabled = false;
				document.getElementById("ff_contacts").disabled = false;
				document.getElementById("ff_message").disabled = false;
				
				//document.getElementById('ff_loader').style.display = 'none';
				document.getElementById("ff_label").innerHTML = 'Ваше сообщение не удалось отправить!';
				
				setTimeout(function() {document.getElementById("ff_label").innerHTML = ''; document.getElementById("ff_send").style.display = 'block';}, 3000);
										
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}


/*function SendDispNews() {
	
	document.getElementById("disp_email").disabled = true;
	document.getElementById("disp_butt").style.display = 'none';
	document.getElementById("disp_label").innerHTML = 'Регистрация подписки ...';
	//document.getElementById('disp_loader').style.display = 'block';
	
	var email = document.getElementById("disp_email").value;
	
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
		email = encodeURIComponent(email);
			
		param = "module=disp&email=" + (email);
			
		xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
		xmlHttp.setRequestHeader("Accept-Language", "ru, en");
		xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
		xmlHttp.onreadystatechange = handleServerResponseDispNews;
		xmlHttp.send(null);
	}
}


function handleServerResponseDispNews()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == '1') {
				
				document.getElementById("disp_label").innerHTML = 'Спасибо! Ваша подписка принята.';

			}
			else if(decodeURI(info) == '2')	{
				
				document.getElementById("disp_label").innerHTML = 'Спасибо! Ваша подписка приостановлена.';
				
			}
			else if(decodeURI(info) == '3')	{
				
				document.getElementById("disp_label").innerHTML = 'На Ваш E-mail выслано подтверждение<br>на рассылку новостей';
				
			}
			else if(decodeURI(info) == '4')	{
				
				document.getElementById("disp_label").innerHTML = 'На Ваш E-mail выслано подтверждение<br>на отмену рассылки новостей';
				
			}
			else	{
				document.getElementById("disp_label").innerHTML = 'Ошибка!';
			}
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}*/

/* ------ */
/*function inBasket(id) {
	id = encodeURIComponent(id);
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
		param = "module=catalogue&bsk=1&id=" + id;
				
		xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
		xmlHttp.setRequestHeader("Accept-Language", "ru, en");
		xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
		xmlHttp.onreadystatechange = handleServerResponseInBasket;
		xmlHttp.send(null);
	}
}

function handleServerResponseInBasket()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;

			if (xmlRoot.childNodes) {
				infoMas = xmlRoot.getElementsByTagName("bsk");
				if (infoMas.length != 0) {
					var bn = document.getElementById("bn");
					document.getElementById("basket").title = infoMas[0].getAttribute("title");
					document.getElementById("basket").firstChild.src = infoMas[0].getAttribute("btn");
					document.getElementById("basket").firstChild.alt = infoMas[0].getAttribute("title");
					
					bn.innerHTML = infoMas[0].firstChild.data;
				}
				
			}
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}
}*/

function setDetail(id, lnk, n, aj) {
	id = encodeURIComponent(id);
	
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
		param = "module=catalogue";
		if (id != 'null')
			param += "&id=" + id;
		//alert("http://"+location.hostname+"/ajax.php?" + param);
		
		var clist = document.getElementById('carousel-list').childNodes;
		for(i=0;i<clist.length;i++)
			clist[i].className = null;
			
		if (n) 
			carousel.scrollTo(n);
			
		if (lnk)
			parentf(lnk, 2).className = 'current';
		else if (clist[0]) 
			clist[0].className = 'current';
		else
			clist[1].className = 'current';
			
		//alert("http://"+location.hostname+"/ajax.php?" + param);
			
		if (!aj) {		
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseSetDetail;
			xmlHttp.send(null);
		}
	}
}

	function handleServerResponseSetDetail()	{
		if(xmlHttp.readyState == 4)	{		
			if(xmlHttp.status == 200)	{
				xmlResponse = xmlHttp.responseXML;
				xmlRoot = xmlResponse.documentElement;
				if (xmlRoot.childNodes) {
					result = xmlRoot.getElementsByTagName("object")[0];
					var a1 = document.getElementById("a1");
					var lnk = document.getElementById("lnk");
					
					if (result) {
						a1.style.display = "none";
						new Effect.Appear('a1', {duration:0.5});
						a1.innerHTML = result.getElementsByTagName('descr')[0].firstChild.nodeValue;
						
						if (lnk)
							lnk.innerHTML = result.getElementsByTagName('lnk')[0].firstChild.nodeValue;
					}	
				}
			}
			else	{
				alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
				return false;
			}
		}
	}
	
	/*basket*/
	function inBasket(id) {
		id = encodeURIComponent(id);
		if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			param = "module=catalogue&bsk=1&id=" + id;
			//alert("http://"+location.hostname+"/ajax.php?" + param);
					
			xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
			xmlHttp.setRequestHeader("Accept-Language", "ru, en");
			xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
			xmlHttp.onreadystatechange = handleServerResponseInBasket;
			xmlHttp.send(null);
		}
	}
	
	function handleServerResponseInBasket()	{
		if(xmlHttp.readyState == 4)	{		
			if(xmlHttp.status == 200)	{
				xmlResponse = xmlHttp.responseXML;
				xmlRoot = xmlResponse.documentElement;
	
				if (xmlRoot.childNodes) {
					infoMas = xmlRoot.getElementsByTagName("bsk");
					if (infoMas.length != 0) {
						document.getElementById("basket").innerHTML = infoMas[0].getAttribute("title");
						document.getElementById("basketBg").className = infoMas[0].getAttribute("cl");
						document.getElementById("bn").innerHTML = infoMas[0].firstChild.data;
					}
					
				}
			}
			else	{
				alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
				return false;
			}		
		}
	}
	
	
	function UpdateBasket(id_goods, st)	{
	
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
			
		id_goods = encodeURIComponent(id_goods);
		st = encodeURIComponent(st);
			
		param = "module=upbasket&id=" + id_goods + "&st=" + st;
			
		xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
		xmlHttp.setRequestHeader("Accept-Language", "ru, en");
		xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
		xmlHttp.onreadystatechange = handleServerResponseUpdateBasket;
		xmlHttp.send(null);
	}
	
}


function handleServerResponseUpdateBasket()	{
	
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			
			var total = xmlRoot.getElementsByTagName("total_price");
			document.getElementById('total_price').innerHTML = total[0].firstChild.data;
						
			var infoMas = xmlRoot.getElementsByTagName("goods");
			var bn = infoMas.length;
			var bn_curr = 0;
			for(i=0;i<infoMas.length;i++)	{
				
				document.getElementById('count_' + infoMas[i].getAttribute("id")).value = infoMas[i].firstChild.data;
				document.getElementById('lab_count_' + infoMas[i].getAttribute("id")).innerHTML = infoMas[i].firstChild.data;
				
				if(infoMas[i].firstChild.data == '0')	{
					document.getElementById('g_tit_' + infoMas[i].getAttribute("id")).style.textDecoration = 'line-through'; 
					
				}
				else	{
					document.getElementById('g_tit_' + infoMas[i].getAttribute("id")).style.textDecoration = '';
					bn_curr++;
				}

			}
			document.getElementById('bn').innerHTML = bn_curr;
			
			
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}
	
}


function PreSendOrder()	{
	
	if(checkValidForm(document.getElementById('fprofile'))) {
		
		SendOrd = true;
		SendProfileForm();
		
	}
	else
		return false;
	
}


function SendOrder()	{
	
	document.getElementById("usr_comments").disabled = true;
	
	document.getElementById('fsendorder').style.display = 'none';
	document.getElementById('fsendorder_process').style.display = 'block';
	
	var comm = document.getElementById("usr_comments").value;
	
	if(xmlHttp.readyState == 4 || xmlHttp.readyState == 0)	{
		comm = encodeURIComponent(comm);		
		param = "module=sendorder&comm=" + comm;
			
		xmlHttp.open("GET", "http://"+location.hostname+"/ajax.php?" + param, true);
		xmlHttp.setRequestHeader("Accept-Language", "ru, en");
		xmlHttp.setRequestHeader("Accept-Charset", "utf-8");
		xmlHttp.onreadystatechange = handleServerResponseSendOrder;
		xmlHttp.send(null);
	}
	
}


function handleServerResponseSendOrder()	{
	if(xmlHttp.readyState == 4)	{		
		if(xmlHttp.status == 200)	{
			xmlResponse = xmlHttp.responseXML;
			xmlRoot = xmlResponse.documentElement;
			var infoMas = xmlRoot.getElementsByTagName("res");	
			var info = infoMas.item(0).firstChild.data;
			
			if (decodeURI(info) == 'ok') {
				
				document.getElementById('fsendorder_process').style.display = 'none';
				document.getElementById('fsendorder_ok').style.display = 'block';
				document.getElementById("usr_comments").disabled = false;
				document.getElementById("usr_comments").value = "";
				setTimeout(function() {document.location = document.getElementById("redirect2").value;}, 5000);
				
			}
			else	{
				
				document.getElementById('fsendorder_process').style.display = 'none';
				document.getElementById('fsendorder_err').style.display = 'block';
				document.getElementById("usr_comments").disabled = false;
				document.getElementById("usr_comments").value = "";
				setTimeout(function() {document.location = document.getElementById("redirect3").value;}, 5000);
														
			}
			
		}
		else	{
			alert("При обращении к серверу возникли проблемы: "+ xmlHttp.statusText);
			return false;
		}		
	}	
}
	/*basketEnd*//*var isGecko = navigator.userAgent.toLowerCase().indexOf("gecko") != -1;
var isOpera = navigator.userAgent.toLowerCase().indexOf("opera") != -1;*/
function init() {
	var window_h = document.body.offsetHeight - 245 - 112;
	
	var center = document.getElementById("center");
	
	//var left_h = left.offsetHeight.toString();
	var center_h = center.offsetHeight;
	
	
	if (center_h < window_h) {
		center_h = window_h;
		center.style.height = (center_h).toString() + "px";
	}
	
	if (isIE6) {
		var h = 303;
		document.getElementById("left").style.height = (center_h + h).toString() + "px";
	}
	
	//left.style.height = (parseInt(center_h) + parseInt(h)).toString() + "px";
	
}

function initIe() {
	var left = document.getElementById("left");
	var center = document.getElementById("center");
	var slider = document.getElementById("ttt");
	
	var center_h = center.offsetHeight;
	var slider_h = slider.offsetHeight;
	
	left.style.height = (center_h + slider_h + 300).toString() + "px";
	
	resizeIe();
}

function initIeHover() {
	var buttons = new Array('cf_send', 'of_send', 'ff_send', 'sendlogin', 'sendnewuser', 'sendemail', 'sendprofile', 'sendpass');
	for(n in buttons) {
		var l = document.getElementById(buttons[n]);
		if(l) {
			l.onmouseover=function() { this.className = "hover";}
			l.onmouseout=function() { this.className = "button";}
		}
	}
	
	resizeIe();
}

function resizeIe() {
	var cont = document.getElementById("content");
	var footer = document.getElementById("footer");
	
	var wid = ((document.documentElement.clientWidth || document.body.clientWidth) < 1020) ? '1020px' : ((document.body.clientWidth > 1280) ? '1280px' : '100%');
	
	cont.style.width = wid.toString();
	footer.style.width = wid.toString();
}

/*function initC() {
	var left = document.getElementById("left");
	var center = document.getElementById("center");
	var slider = document.getElementById("ttt");
	
	var center_h = center.offsetHeight;
	var slider_h = slider.offsetHeight;
	
	left.style.height = (center_h + slider_h + 300).toString() + "px";
}*/

function indOf() {
	if (typeof Array.prototype.indexOf == "undefined") {
	  Array.prototype.indexOf = function(value) {
		for (var i = 0; i < this.length; i++)
		  if (this[i] == value)
			return i;
	
		return -1;
	  }
	}
}

function setCookie(name, value, flag)	{
	var COOKIE;
  	if (flag) {
  		COOKIE = name + "=" + value + "; domain=" + location.protocol + "//" + location.hostname;
  	} else {
  		COOKIE = name + "=" + value + ";";  
  	}
  	document.cookie = COOKIE;
}

var isDHTML = 0;
var isLayers = 0;
var isAll = 0;
var isID = 0;
if (document.getElementByID) {isID=1; isDHTML=1;}
else {
        if (document.all) {isAll=1; isDHTML=1;}
        else { browserVersion = parseInt(navigator.appVersion);
              if ((navigator.appName.indexOf('Netscape') !=-1) && (browserVersion == 4)) {isLayers = 1; isDHTML = 1;}
}}

function findDOM(objectID, withStyle) {
	if (withStyle == 1) return(document.getElementById(objectID).style);
	else return(document.getElementById(objectID));
}

function toggleClamShellSec(objectID) {
     if (isAll || isID) {
          domStyle = findDOM(objectID, 1);
          if (domStyle.display=='block') domStyle.display='none';
          else domStyle.display='block';
     }
     else {
          destination = objectID + '.html';
          self.location = destination;
     }
     return;
}

function RemovePage(filename) {
  		if (confirm('Вы уверены, что желаете удалить страницу?'))
			location.replace(filename); 
		}

function MessageWin(str) {
  			alert(str);
}


function SubRegForm(login, pass1, pass2, email)
{
var re, msg='', sub=1;
re = /([0-9a-zA-Z\.-_]+)@([0-9a-zA-Z\.-_]+)/;

if (login.length == 0) {msg=msg+"Введите логин!\r\n"; sub = 0;}
if (pass1.length == 0) {msg=msg+"Введите пароль!\r\n"; sub = 0;}
if (pass1 != pass2) {msg=msg+"Несовадающие пароли!\r\n"; sub = 0;}
if (email.match(re) == null) {msg=msg+"Неверен или отсутствует e-mail!\r\n"; sub = 0;}

if (sub == 0) window.alert(msg);
if (sub == 1) document.reguser.submit();
}

function MM_popupMsg(msg, filename) {
	if (msg != '') {
  	if (confirm(msg))
		location.replace(filename); 
	}
	else location.replace(filename);
}


function PopupMsgForm(msg, formname) {
  	if (confirm(msg))
		 document.forms[formname].submit();	
}


function OpenImage(src, title, width, height, url) {
		//window.alert('test');
		if (width < 400) width = 400;
		if (height < 400) height = 400;
		
		if (width > (screen.availWidth-20)) width = screen.availWidth-20;
		if (height > (screen.availHeight-50)) height = screen.availHeight-50;
		//window.alert(height);
		
		var Form = "<html>" +
			"<head>" +
			"<title>"+title+"</title>" +
			"</head>\n" +
			"<body style='margin: 0px; padding:0px; background:#ffffff;'>\n" +
			"<table cellspacing='0' cellpadding='0' width='100%' height='100%' border='0'>" +
			"<tr><td style='text-align:center; vertical-align:middle;'>" +
			"<img src='"+src+"' border=0>" +
			"</td></tr>" +
			"</table>" +
			"</body>" +
			"</html>";
		var TabPanel = window.open(url,"TabPanel","dependent=1,width="+width+",height="+height+",status=yes");
		TabPanel.document.open();
        TabPanel.document.write(Form);
        TabPanel.document.close();
}

function menuSel(menu) { menu.className = "window_menu_sel"; }
function menuOut(menu) { menu.className = "window_menu_out"; }

function rowsSel(rows) { rows.className = "window_table_rows_sel"; }
function rowsOut(rows) { rows.className = "window_table_rows_out"; }

function SubAction (select_content, pageid, pagename, location, pagechild) {
	if (select_content == 'delete') {
		if (pagechild == 1) alert ('Нельзя удалить страницу «'+pagename+'».\r\nСначала удалите все вложенные страницы!');
		else MM_popupMsg('Удалить страницу «'+pagename+'» ?', location+'&del='+pageid); 
	}
	else if (select_content == 'move') {
		//if(pagechild == 1) alert ('Нельзя переместить страницу «'+pagename+'», пока она имеет вложенные страницы!');
		//else if(pagechild == 0) document.location.replace(location+'&move='+pageid);
		document.location.replace(location+'&move='+pageid);
	}
}

function SubmitSearchForm()
{
var searchwords, sub=1;
searchwords = document.sf.searchwords.value;

if (searchwords.length == 0) {sub = 0;}
if ((searchwords.length != 0) && (searchwords.length <3)) {window.alert('Длина поисковой фразы должна составлять не менее 3 символов'); sub = 0;}

if (sub == 1) document.sf.submit();
}

/*function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}*/
/*function printVer(css, obj, title_tag, title, http_url, copyrights, site, links) {
	copyrights = '<a href="#">info@medvegatniki.com</a><br />Харьков ул.Загородная, 68<span class="ignorep" style="padding-left:27px;"><img src="http://medvezhatniki.rgr/templates/ru/images/ic_map.gif" style="margin-bottom:-6px;"> <a href="?page=contacts">Карта проезда</a></span><br />+38(057)';
	copyrights = copyrights + '715-22-08';
	var previewWin = window.open('', 'PrintVersion', 'dependent=1,status=0,scrollbars=yes,resizable=no,menubar=yes,location=no,titlebar=1');
	var prTop = '<html><head><title>'+title_tag+'</title><link href="'+css+'" rel="STYLESHEET" type="text/css" /><script type=\'text/javascript\' src=\''+http_url+'javascript/print.js\'></script></head><body>';
	var prTitle = '<table width="100%" border="0" cellpadding="0" cellspacing="0"><tr><td class="title">'+title+'</td><td class="host"><a href="'+http_url+'">'+site+'</a> ['+http_url+']</td></tr></table><div style="height:7px; width:100%; background-color:#dadbde; font-size:0px;">&nbsp;</div>';
	var prCopyrights = '<div style="height:7px; width:100%; clear:both; margin-top:10px; background-color:#dadbde; font-size:0px;">&nbsp;</div><div style="float:right; padding-top:10px; font-size:10px;"><a href=# onClick="window.print()">Распечатать</a></div><div style="padding-top:10px; font-size:10px;">'+copyrights+'</div>';
	var prBottom = '</body></html>';
	var col = findDOM(obj);
	var content = '<div id="content" style="padding:5px 0px 5px 0px;">'+col.innerHTML+'</div>';
	var links = '<div id="links" style="clear:both;"></div>';
	previewWin.document.open();
    previewWin.document.write(prTop+prTitle+content+links+prCopyrights+prBottom);
    previewWin.document.close();
}*/

/*function checkAll(ckb, form) {
	var f = (form) ? document.getElementById(form) : document.forms[0];
		
    for(j = 0; j < f.elements.length; j++) {
        var e = f.elements[j];
		if ((e.type == 'checkbox') && (e != ckb)) {
			if (ckb.checked == true) {
				e.checked = true;
				e.disabled = true;
			}
			else {
				e.checked = false;
				e.disabled = false;
			}
		}
	}
}*/

function checkValidForm(f, subm) {
	indOf();
	var types = new Array('text', 'password', 'checkbox', 'radio', 'file');
	var tags = new Array('INPUT', 'SELECT', 'TEXTAREA');
	var s = true;
	
	if (!f)
		var f = document.forms[0];
		
	// Цикл по всем элементам текущей формы
       for(j = 0; j < f.elements.length; j++) {
           var e = f.elements[j];  //текущий элемент
		if (e.disabled == true) continue;
		if ((tags.indexOf(e.tagName) != -1) || (types.indexOf(e.type) != -1)) {
			var valid = true;
			if (e.type != 'file') e.style.borderColor = "#dadbde";
			var patt = e.getAttribute("patt");
			var req = e.getAttribute("req");
			if ((patt) && (e.value.length != 0)) {
				switch(patt) {
					case "mail":{ 
						valid = validateEmail(e.value);
						break;             
					}
					case "int":{
						valid = validateRegExp(e.value, '^[0-9]+$');
						break;
					}
					case "float":{
						valid = validateRegExp(e.value, '^[0-9]+(\\.)?[0-9]*$');
						break;
					}
					case "date(d.m.Y)":{
						valid = validateRegExp(e.value, '^[0-9]{2}\.[0-9]{2}\.[0-9]{4}$');
						break;
					}
				}
			}
			if (req) {
				if (e.value.length == 0) valid = false;
			}
			if (valid == false) {
				s = false;
				if (e.type != 'file') e.style.borderColor = "#cc0000";
				
			}
		}
	}
	if (s == false)
			window.alert ("Некорректно заполнены поля!");
	return s;
}
	
	function validateEmail(email)
	{
		var splitted = email.match("^(.+)@(.+)$");
		if(splitted == null) return false;
		if(splitted[1] != null )
		{
		  var regexp_user=/^\"?[\w-_\.]*\"?$/;
		  if(splitted[1].match(regexp_user) == null) return false;
		}
		if(splitted[2] != null)
		{
		  var regexp_domain=/^[\w-\.]*\.[A-Za-z]{2,4}$/;
		  if(splitted[2].match(regexp_domain) == null) 
		  {
			var regexp_ip =/^\[\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}\]$/;
			if(splitted[2].match(regexp_ip) == null) return false;
		  }// if
		  return true;
		}
	return false;
	}
	
	function validateRegExp(val, regexp) {
		if (val.match(regexp) == null) return false;
		else return true;
	}
	
/*	function setColor(div, c) {
		document.getElementById('color_code').value = c;
		
		for (i = 0; i<div.parentNode.childNodes.length; i++)
			div.parentNode.childNodes[i].style.borderColor = 'ffffff';
		div.style.borderColor = '#808080';
	}*/
	
/*	function setEvent(ob, evt, ev, returnfalse) {
		if (!returnfalse)
			returnfalse = true;
		
		if (returnfalse == true)
			ev += ' return false;';
		if (isIE) eval("ob."+evt+" =  function(){"+ev+"};");
		else ob.setAttribute(evt, ev);
	}*/
	
	
/*	function InputLabel(el, str, clear)	{
		
		if(clear == true)	{
			//if(document.getElementById(el).value != str)	{
				document.getElementById(el).value = '';
				document.getElementById(el).style.color = '#000';
			//}
		}
		else	{
			if(document.getElementById(el).value == '')	{
				document.getElementById(el).value = str;
				document.getElementById(el).style.color = '#999';
			}
		}		
	}*/
	
	function EnterFocus(el)	{
			
		if(event.keyCode==13)	{
			
			if(el == 'flogin')
				SendLoginForm();
			else if(el == 'freg')	{
				if(checkValidForm(freg)) 
					SendRegUserForm();
			}
			else if(el == 'fpass')	{
				if(checkValidForm(fpass)) 
					SendREmailForm();
			}
			else if(el == 'fprofile')	{
				if(checkValidForm(fprofile)) 
					SendProfileForm();
			}
			else if(el == 'fpass')	{
				if(checkValidForm(fpass)) 
					SendNewPasswordForm();
			}
				
			
		}
			
	}
	
	/*function UpdateCountGoods(id, st)	{
		
		if(st == 2)
			document.getElementById('count_' + id).value = document.getElementById('count_' + id).value + 1;
		else if(st == 1)
			if(document.getElementById('count_' + id).value != 0)
				document.getElementById('count_' + id).value = document.getElementById('count_' + id).value - 1;
			else
				document.getElementById('count_' + id).value = 0;
		else
			document.getElementById('count_' + id).value = 0;
			
	}*/
	
function initPhotos() {
	var photos = document.getElementById('photos');
	if (photos) {
		var div = photos.getElementsByTagName('div');
		for (i=0; i<div.length; i++) {
			var img = div[i].getElementsByTagName('img')[0];
			var full = img.getAttribute("full");
			var src = img.getAttribute("src");
			setEvent(img, 'onclick', 'setPhoto(\''+src+'\', \''+full+'\');');
			var a = document.createElement('a');
			a.setAttribute('href', 'javascript: void(0)');
			a.appendChild(img);
			div[i].innerHTML = '';
			div[i].appendChild(a);
		}
	}
}

function setPhoto(ph, full) {
	var photo = document.getElementById('ph');
	var expand = document.getElementById('expand');
	parentf(photo, 1).href = full;
	photo.src = ph;
	expand.href = full;
}

function DeleteFile(msg, url) {
  	if (confirm('Удалить [' + msg + '] без возможности восстановления?'))
		document.location.replace(url); 
}

/*function iload()
{
    img = new Image();
	var domen = location.hostname;
    img.src = "http://"+location.hostname+"/genimg.php?" + Math.random();
    document.getElementById('antispam').src = img.src;
}*/var isIE = !+"\v1";
if (isIE)
	if (navigator.userAgent.search("MSIE 6.") > -1)
		var isIE6 = true;

function setEvent(ob, evt, ev, returnfalse) {
	if (!returnfalse)
		returnfalse = true;
	
	if (returnfalse == true)
		ev += ' return false;';
	if (isIE) eval("ob."+evt+" =  function(){"+ev+"};");
	else ob.setAttribute(evt, ev);
}

// получение родительского элемента
function parentf(elem, num) {
       num = num || 1;
       for ( var i = 0; i < num; i++ )
               if ( elem != null ) elem = elem.parentNode;
       return elem;
}

function domReady( f ) {
   if ( domReady.done ) {
		domReady.done = false;
		return f();
	}

   if ( domReady.timer ) {
       domReady.ready.push( f );
   } else {
       if (window.addEventListener) {
           window.addEventListener('load',isDOMReady, false);}
       else if (window.attachEvent) {
           window.attachEvent('onload',isDOMReady);}

       domReady.ready = [ f ];
       domReady.timer = setInterval( isDOMReady, 13 );
   }
}

function isDOMReady(){
   if ( domReady.done ) {return false;}

   if ( document && document.getElementsByTagName && document.getElementById && document.body ) {
       clearInterval( domReady.timer );
       domReady.timer = null;
		
		if (domReady.ready) {
		   for ( var i = 0; i < domReady.ready.length; i++ ){
			   domReady.ready[i]();}
		}

       domReady.ready = null;
       domReady.done = true;
   }
}

function initRt() {
	alert('546');
}var hs = {

// Apply your own settings here, or override them in the html file.  
graphicsDir : '',
restoreCursor : 'zoomout.cur', // necessary for preload
expandSteps : 10, // number of steps in zoom. Each step lasts for duration/step milliseconds.
expandDuration : 250, // milliseconds
restoreSteps : 10,
restoreDuration : 250,
marginLeft : 15,
marginRight : 15,
marginTop : 15,
marginBottom : 15,
zIndexCounter : 1001, // adjust to other absolutely positioned elements

restoreTitle : 'Кликните для закрытия изображения. Кликните и удерживайте для перемещения.',
loadingText : 'Загрузка...',
loadingTitle : 'Кликните для отмены',
loadingOpacity : 0.75,
focusTitle : 'Click to bring to front',
allowMultipleInstances: true,
numberOfImagesToPreload : 5,
captionSlideSpeed : 0, // set to 0 to disable slide in effect
padToMinWidth : false, // pad the popup width to make room for wide caption
outlineWhileAnimating : 2, // 0 = never, 1 = always, 2 = HTML only 
outlineStartOffset : 3, // ends at 10
fullExpandTitle : 'Увеличить до реального размера',
fullExpandPosition : 'bottom right',
fullExpandOpacity : 1,
showCredits : false, // you can set this to false if you want
creditsText : 'Powered by <i>Highslide JS</i>',
creditsHref : 'http://vikjavev.no/highslide/',
creditsTitle : 'Go to the Highslide JS homepage',
enableKeyListener : true,


// These settings can also be overridden inline for each image
captionId : null,
spaceForCaption : 30, // leaves space below images with captions
slideshowGroup : null, // defines groups for next/previous links and keystrokes
minWidth: 200,
minHeight: 200,
allowSizeReduction: true, // allow the image to reduce to fit client size. If false, this overrides minWidth and minHeight
outlineType : 'drop-shadow', // set null to disable outlines
wrapperClassName : 'highslide-wrapper', // for enhanced css-control

// END OF YOUR SETTINGS


// declare internal properties
preloadTheseImages : [],
continuePreloading: true,
expanders : [],
overrides : [
	'allowSizeReduction',
	'outlineType',
	'outlineWhileAnimating',
	'spaceForCaption',
	'captionId',
	'captionText',
	'captionEval',
	
	'wrapperClassName',
	'minWidth',
	'minHeight',
	'slideshowGroup',
	'easing',
	'easingClose',
	'fadeInOut'
],
overlays : [],
faders : [],

pendingOutlines : {},
clones : {},
ie : (document.all && !window.opera),
safari : /Safari/.test(navigator.userAgent),
geckoMac : /Macintosh.+rv:1\.[0-8].+Gecko/.test(navigator.userAgent),

$ : function (id) {
	return document.getElementById(id);
},

push : function (arr, val) {
	arr[arr.length] = val;
},

createElement : function (tag, attribs, styles, parent, nopad) {
	var el = document.createElement(tag);
	if (attribs) hs.setAttribs(el, attribs);
	if (nopad) hs.setStyles(el, {padding: 0, border: 'none', margin: 0});
	if (styles) hs.setStyles(el, styles);
	if (parent) parent.appendChild(el);	
	return el;
},

setAttribs : function (el, attribs) {
	for (var x in attribs) el[x] = attribs[x];
},

setStyles : function (el, styles) {
	for (var x in styles) {
		try { 
			if (hs.ie && x == 'opacity') 
				el.style.filter = (styles[x] == 1) ? '' : 'alpha(opacity='+ (styles[x] * 100) +')';
			else el.style[x] = styles[x]; 
		}
		catch (e) {}
	}
},

ieVersion : function () {
	var arr = navigator.appVersion.split("MSIE");
	return arr[1] ? parseFloat(arr[1]) : null;
},

getPageSize : function () {
	var iebody = document.compatMode && document.compatMode != "BackCompat" 
		? document.documentElement : document.body;
	
	var width = hs.ie ? iebody.clientWidth : 
			(document.documentElement.clientWidth || self.innerWidth),
		height = hs.ie ? iebody.clientHeight : self.innerHeight;
	
	return {
		width: width,
		height: height,		
		scrollLeft: hs.ie ? iebody.scrollLeft : pageXOffset,
		scrollTop: hs.ie ? iebody.scrollTop : pageYOffset
	}
},

position : function(el)	{ 
	var p = { x: el.offsetLeft, y: el.offsetTop };
	while (el.offsetParent)	{
		el = el.offsetParent;
		p.x += el.offsetLeft;
		p.y += el.offsetTop;
		if (el != document.body && el != document.documentElement) {
			p.x -= el.scrollLeft;
			p.y -= el.scrollTop;
		}
	}
	return p;
},

expand : function(a, params, custom) {
	if (a.getParams) return params;
	
	try {
		new hs.Expander(a, params, custom);
		return false;		
	} catch (e) { return true; }
},

focusTopmost : function() {
	var topZ = 0, topmostKey = -1;
	for (var i = 0; i < hs.expanders.length; i++) {
		if (hs.expanders[i]) {
			if (hs.expanders[i].wrapper.style.zIndex && hs.expanders[i].wrapper.style.zIndex > topZ) {
				topZ = hs.expanders[i].wrapper.style.zIndex;
				
				topmostKey = i;
			}
		}
	}
	if (topmostKey == -1) hs.focusKey = -1;
	else hs.expanders[topmostKey].focus();
},

getAdjacentAnchor : function(key, op) {
	var aAr = document.getElementsByTagName('A'), hsAr = {}, activeI = -1, j = 0;
	for (var i = 0; i < aAr.length; i++) {
		if (hs.isHsAnchor(aAr[i]) && ((hs.expanders[key].slideshowGroup 
				== hs.getParam(aAr[i], 'slideshowGroup')))) {
			hsAr[j] = aAr[i];
			if (hs.expanders[key] && aAr[i] == hs.expanders[key].a) {
				activeI = j;
			}
			j++;
		}
	}
	return hsAr[activeI + op] || null;
},

getParam : function (a, param) {
	a.getParams = a.onclick;
	var p = a.getParams ? a.getParams() : null;
	a.getParams = null;
	
	return (p && typeof p[param] != 'undefined') ? p[param] : 
		(typeof hs[param] != 'undefined' ? hs[param] : null);
},

getSrc : function (a) {
	var src = hs.getParam(a, 'src');
	if (src) return src;
	return a.href;
},

getNode : function (id) {
	var node = hs.$(id), clone = hs.clones[id], a = {};
	if (!node && !clone) return null;
	if (!clone) {
		clone = node.cloneNode(true);
		clone.id = '';
		hs.clones[id] = clone;
		return node;
	} else {
		return clone.cloneNode(true);
	}
},

purge : function(d) {
	if (!hs.ie) return;
	var a = d.attributes, i, l, n;
	if (a) {
		l = a.length;
		for (var i = 0; i < l; i += 1) {
			n = a[i].name;
			if (typeof d[n] === 'function') {
				d[n] = null;
			}
		}
	}
	a = d.childNodes;
	if (a) {
		l = a.length;
		for (var i = 0; i < l; i += 1) {
			hs.purge(d.childNodes[i]);
		}
	}
},

previousOrNext : function (el, op) {
	var exp = hs.last = hs.getExpander(el);
	try {
		var adj = hs.upcoming =  hs.getAdjacentAnchor(exp.key, op);
		adj.onclick(); 		
	} catch (e){}
	try { exp.close(); } catch (e) {}	
	return false;
},

previous : function (el) {
	return hs.previousOrNext(el, -1);
},

next : function (el) {
	return hs.previousOrNext(el, 1);	
},

keyHandler : function(e) {
	if (!e) e = window.event;
	if (!e.target) e.target = e.srcElement; // ie
	if (e.target.form) return true; // form element has focus
	
	var op = null;
	switch (e.keyCode) {
		case 32: // Space
		case 34: // Page Down
		case 39: // Arrow right
		case 40: // Arrow down
			op = 1;
			break;
		case 8:  // Backspace
		case 33: // Page Up
		case 37: // Arrow left
		case 38: // Arrow up
			op = -1;
			break;
		case 27: // Escape
		case 13: // Enter
			op = 0;
	}
	if (op !== null) {
		hs.removeEventListener(document, 'keydown', hs.keyHandler);
		if (!hs.enableKeyListener) return true;
		
		if (e.preventDefault) e.preventDefault();
    	else e.returnValue = false;
		if (op == 0) {
			try { hs.getExpander().close(); } catch (e) {}
			return false;
		} else {
			return hs.previousOrNext(hs.focusKey, op);
		}
	}
	return true;
},


registerOverlay : function (overlay) {
	hs.push(hs.overlays, overlay);
},

getWrapperKey : function (element) {
	var el, re = /^highslide-wrapper-([0-9]+)$/;
	// 1. look in open expanders
	el = element;
	while (el.parentNode)	{
		if (el.id && re.test(el.id)) return el.id.replace(re, "$1");
		el = el.parentNode;
	}
	// 2. look in thumbnail
	el = element;
	while (el.parentNode)	{
		if (el.tagName && hs.isHsAnchor(el)) {
			for (var key = 0; key < hs.expanders.length; key++) {
				var exp = hs.expanders[key];
				if (exp && exp.a == el) return key;
			}
		}
		el = el.parentNode;
	}
	return null; 
},

getExpander : function (el) {
	if (typeof el == 'undefined') return hs.expanders[hs.focusKey] || null;
	if (typeof el == 'number') return hs.expanders[el] || null;
	if (typeof el == 'string') el = hs.$(el);
	return hs.expanders[hs.getWrapperKey(el)] || null;
},

isHsAnchor : function (a) {
	return (a.onclick && a.onclick.toString().replace(/\s/g, ' ').match(/hs.(htmlE|e)xpand/));
},

cleanUp : function () {
	for (var i = 0; i < hs.expanders.length; i++)
		if (hs.expanders[i] && hs.expanders[i].isExpanded) hs.focusTopmost();
},

mouseClickHandler : function(e) 
{	
	if (!e) e = window.event;
	if (e.button > 1) return true;
	if (!e.target) e.target = e.srcElement;
	
	var el = e.target;
	while (el.parentNode
		&& !(/highslide-(image|move|html|resize)/.test(el.className)))
	{
		el = el.parentNode;
	}
	var exp = hs.getExpander(el);
	if (exp && (exp.isClosing || !exp.isExpanded)) return true;
		
	if (exp && e.type == 'mousedown') {
		if (e.target.form) return true;
		var match = el.className.match(/highslide-(image|move|resize)/);
		if (match) {
			hs.dragArgs = { exp: exp , type: match[1], left: exp.x.min, width: exp.x.span, top: exp.y.min, 
				height: exp.y.span, clickX: e.clientX, clickY: e.clientY };
			
			//if (hs.dragArgs.type == 'image') exp.content.style.cursor = 'move';
			
			hs.addEventListener(document, 'mousemove', hs.dragHandler);
			if (e.preventDefault) e.preventDefault(); // FF
			
			if (/highslide-(image|html)-blur/.test(exp.content.className)) {
				exp.focus();
				hs.hasFocused = true;
			}
			return false;
		}
	} else if (e.type == 'mouseup') {
		
		hs.removeEventListener(document, 'mousemove', hs.dragHandler);
		
		if (hs.dragArgs) {
			if (hs.dragArgs.type == 'image')
				hs.dragArgs.exp.content.style.cursor = hs.styleRestoreCursor;
			var hasDragged = hs.dragArgs.hasDragged;
			
			if (!hasDragged &&!hs.hasFocused && !/(move|resize)/.test(hs.dragArgs.type)) {
				exp.close();
			} 
			else if (hasDragged || (!hasDragged && hs.hasHtmlexpanders)) {
				hs.dragArgs.exp.redoShowHide();
			}
			
			hs.hasFocused = false;
			hs.dragArgs = null;
		
		} else if (/highslide-image-blur/.test(el.className)) {
			el.style.cursor = hs.styleRestoreCursor;		
		}
	}
	return false;
},

dragHandler : function(e)
{
	if (!hs.dragArgs) return true;
	if (!e) e = window.event;
	var a = hs.dragArgs, exp = a.exp;
	
	a.dX = e.clientX - a.clickX;
	a.dY = e.clientY - a.clickY;	
	
	var distance = Math.sqrt(Math.pow(a.dX, 2) + Math.pow(a.dY, 2));
	a.hasDragged = (a.type != 'image' && distance > 0)
		|| (distance > (hs.dragSensitivity || 5));
	
	if (a.hasDragged) {
		 exp.move(a);
	}
	return false;
},

addEventListener : function (el, event, func) {
	try {
		el.addEventListener(event, func, false);
	} catch (e) {
		try {
			el.detachEvent('on'+ event, func);
			el.attachEvent('on'+ event, func);
		} catch (e) {
			el['on'+ event] = func;
		}
	} 
},

removeEventListener : function (el, event, func) {
	try {
		el.removeEventListener(event, func, false);
	} catch (e) {
		try {
			el.detachEvent('on'+ event, func);
		} catch (e) {
			el['on'+ event] = null;
		}
	}
},

preloadFullImage : function (i) {
	if (hs.continuePreloading && hs.preloadTheseImages[i] && hs.preloadTheseImages[i] != 'undefined') {
		var img = document.createElement('img');
		img.onload = function() { hs.preloadFullImage(i + 1); };
		img.src = hs.preloadTheseImages[i];
	}
},
preloadImages : function (number) {
	if (number && typeof number != 'object') hs.numberOfImagesToPreload = number;
	var a, re, j = 0;
	
	var aTags = document.getElementsByTagName('A');
	for (var i = 0; i < aTags.length; i++) {
		a = aTags[i];
		re = hs.isHsAnchor(a);
		if (re && re[0] == 'hs.expand') {
			if (j < hs.numberOfImagesToPreload) {
				hs.preloadTheseImages[j] = hs.getSrc(a); 
				j++;
			}
		}
	}
	
	// preload outlines
	new hs.Outline(hs.outlineType, function () { hs.preloadFullImage(0)} );
	
	
	// preload cursor
	var cur = hs.createElement('img', { src: hs.graphicsDir + hs.restoreCursor });
},


genContainer : function () {
	if (!hs.container) {
		hs.container = hs.createElement('div', 
			null, 
			{ position: 'absolute', left: 0, top: 0, width: '100%', zIndex: hs.zIndexCounter }, 
			document.body,
			true
		);
		hs.loading = hs.createElement('a',
			{
				className: 'highslide-loading',
				title: hs.loadingTitle,
				innerHTML: hs.loadingText,
				href: 'javascript:void(0)'
			},
			{
				position: 'absolute',
				opacity: hs.loadingOpacity,
				left: '-9999px',
				zIndex: 1
			}, hs.container
		);
		
		// http://www.robertpenner.com/easing/ 
		Math.linearTween = function (t, b, c, d) {
			return c*t/d + b;
		};
		Math.easeInQuad = function (t, b, c, d) {
			return c*(t/=d)*t + b;
		};
	}
},

fade : function (el, o, oFinal, dur, i, dir) {
	if (typeof i == 'undefined') { // new fader
		if (typeof dur != 'number') dur = 250;
		if (dur < 25) { // instant
			hs.setStyles( el, {
				opacity: oFinal,
				visibility: (o < oFinal ? 'visible': 'hidden')
			});
			return;
		}
		i = hs.faders.length;
		dir = oFinal > o ? 1 : -1;
		var step = (25 / (dur - dur % 25)) * Math.abs(o - oFinal);
	}
	o = parseFloat(o);
	el.style.visibility = (o <= 0) ? 'hidden' : 'visible';
	if (o < 0 || (dir == 1 && o > oFinal)) return;
	if (el.fading && el.fading.i != i) { // reverse
		clearTimeout(hs.faders[el.fading.i]);
		o = el.fading.o;
	}
	el.fading = {i: i, o: o, step: (step || el.fading.step)};
	el.style.visibility = (o <= 0) ? 'hidden' : 'visible';
	hs.setStyles(el, { opacity: o });
	hs.faders[i] = setTimeout(function() {
		hs.fade(el, o + el.fading.step * dir, oFinal, null, i, dir);
	}, 25);
},

close : function(el) {
	try { hs.getExpander(el).close(); } catch (e) {}
	return false;
}
}; // end hs object


//-----------------------------------------------------------------------------
hs.Outline =  function (outlineType, onLoad) {
	this.onLoad = onLoad;
	this.outlineType = outlineType;
	var v = hs.ieVersion(), tr;
	
	this.hasAlphaImageLoader = hs.ie && v >= 5.5 && v < 7;
	if (!outlineType) {
		if (onLoad) onLoad();
		return;
	}
	
	hs.genContainer();
	this.table = hs.createElement(
		'table', { cellSpacing: 0 },
		{
			visibility: 'hidden',
			position: 'absolute',
			borderCollapse: 'collapse'
		},
		hs.container,
		true
	);
	this.tbody = hs.createElement('tbody', null, null, this.table, 1);
	
	this.td = [];
	for (var i = 0; i <= 8; i++) {
		if (i % 3 == 0) tr = hs.createElement('tr', null, { height: 'auto' }, this.tbody, true);
		this.td[i] = hs.createElement('td', null, null, tr, true);
		var style = i != 4 ? { lineHeight: 0, fontSize: 0} : { position : 'relative' };
		hs.setStyles(this.td[i], style);
	}
	this.td[4].className = outlineType;
	
	this.preloadGraphic(); 
};

hs.Outline.prototype = {
preloadGraphic : function () {	
	var src = hs.graphicsDir + (hs.outlinesDir || "outlines/")+ this.outlineType +".png";
				
	var appendTo = hs.safari ? hs.container : null;
	this.graphic = hs.createElement('img', null, { position: 'absolute', left: '-9999px', 
		top: '-9999px' }, appendTo, true); // for onload trigger
	
	var pThis = this;
	this.graphic.onload = function() { pThis.onGraphicLoad(); };
	
	this.graphic.src = src;
},

onGraphicLoad : function () {
	var o = this.offset = this.graphic.width / 4,
		pos = [[0,0],[0,-4],[-2,0],[0,-8],0,[-2,-8],[0,-2],[0,-6],[-2,-2]],
		dim = { height: (2*o) +'px', width: (2*o) +'px' };
		
	for (var i = 0; i <= 8; i++) {
		if (pos[i]) {
			if (this.hasAlphaImageLoader) {
				var w = (i == 1 || i == 7) ? '100%' : this.graphic.width +'px';
				var div = hs.createElement('div', null, { width: '100%', height: '100%', position: 'relative', overflow: 'hidden'}, this.td[i], true);
				hs.createElement ('div', null, { 
						filter: "progid:DXImageTransform.Microsoft.AlphaImageLoader(sizingMethod=scale, src='"+ this.graphic.src + "')", 
						position: 'absolute',
						width: w, 
						height: this.graphic.height +'px',
						left: (pos[i][0]*o)+'px',
						top: (pos[i][1]*o)+'px'
					}, 
				div,
				true);
			} else {
				hs.setStyles(this.td[i], { background: 'url('+ this.graphic.src +') '+ (pos[i][0]*o)+'px '+(pos[i][1]*o)+'px'});
			}
			
			if (window.opera && (i == 3 || i ==5)) 
				hs.createElement('div', null, dim, this.td[i], true);
			
			hs.setStyles (this.td[i], dim);
		}
	}
	
	hs.pendingOutlines[this.outlineType] = this;
	if (this.onLoad) this.onLoad();
},
	
setPosition : function (exp, x, y, w, h, vis) {
	if (vis) this.table.style.visibility = (h >= 4 * this.offset) 
		? 'visible' : 'hidden';
	this.table.style.left = (x - this.offset) +'px';
	this.table.style.top = (y - this.offset) +'px';
	this.table.style.width = (w + 2 * (exp.offsetBorderW + this.offset)) +'px';
	w += 2 * (exp.offsetBorderW - this.offset);
	h += + 2 * (exp.offsetBorderH - this.offset);
	this.td[4].style.width = w >= 0 ? w +'px' : 0;
	this.td[4].style.height = h >= 0 ? h +'px' : 0;
	if (this.hasAlphaImageLoader) this.td[3].style.height 
		= this.td[5].style.height = this.td[4].style.height;
},
	
destroy : function(hide) {
	if (hide) this.table.style.visibility = 'hidden';
	else {
		hs.purge(this.table);
		try { this.table.parentNode.removeChild(this.table); } catch (e) {}
	}
}
};

//-----------------------------------------------------------------------------
// The expander object
hs.Expander = function(a, params, custom, contentType) {
	this.a = a;
	this.custom = custom;
	this.contentType = contentType || 'image';
	this.isImage = !this.isHtml;
	
	hs.continuePreloading = false;
	hs.genContainer();
	var key = this.key = hs.expanders.length;
	
	// override inline parameters
	for (var i = 0; i < hs.overrides.length; i++) {
		var name = hs.overrides[i];
		this[name] = params && typeof params[name] != 'undefined' ?
			params[name] : hs[name];
	}
	
	// get thumb
	var el = this.thumb = ((params && params.thumbnailId) ? hs.$(params.thumbnailId) : null) 
		|| a.getElementsByTagName('img')[0] || a;
	this.thumbsUserSetId = el.id || a.id;
	
	// check if already open
	for (var i = 0; i < hs.expanders.length; i++) {
		if (hs.expanders[i] && hs.expanders[i].a == a) {
			hs.expanders[i].focus();
			return false;
		}		
	}	
	// cancel other
	for (var i = 0; i < hs.expanders.length; i++) {
		if (hs.expanders[i] && hs.expanders[i].thumb != el && !hs.expanders[i].onLoadStarted) {
			hs.expanders[i].cancelLoading();
		}
	}
	hs.expanders[this.key] = this;
	if (!hs.allowMultipleInstances) {
		if (hs.expanders[key-1]) hs.expanders[key-1].close();
		if (typeof hs.focusKey != 'undefined' && hs.expanders[hs.focusKey])
			hs.expanders[hs.focusKey].close();
	}
	this.overlays = [];

	var pos = hs.position(el);
	
	// store properties of thumbnail
	this.thumbWidth = el.width ? el.width : el.offsetWidth;		
	this.thumbHeight = el.height ? el.height : el.offsetHeight;
	this.thumbLeft = pos.x;
	this.thumbTop = pos.y;
	this.thumbOffsetBorderW = (this.thumb.offsetWidth - this.thumbWidth) / 2;
	this.thumbOffsetBorderH = (this.thumb.offsetHeight - this.thumbHeight) / 2;
	
	// instanciate the wrapper
	this.wrapper = hs.createElement(
		'div',
		{
			id: 'highslide-wrapper-'+ this.key,
			className: this.wrapperClassName
		},
		{
			visibility: 'hidden',
			position: 'absolute',
			zIndex: hs.zIndexCounter++
		}, null, true );
	
	this.wrapper.onmouseover = function (e) { 
		try { hs.expanders[key].wrapperMouseHandler(e); } catch (e) {} 
	};
	this.wrapper.onmouseout = function (e) { 
		try { hs.expanders[key].wrapperMouseHandler(e); } catch (e) {}
	};
	if (this.contentType == 'image' && this.outlineWhileAnimating == 2)
		this.outlineWhileAnimating = 0;
	// get the outline
	if (hs.pendingOutlines[this.outlineType]) {
		this.connectOutline();
		this[this.contentType +'Create']();
	} else if (!this.outlineType) {
		this[this.contentType +'Create']();
	} else {
		this.displayLoading();
		var exp = this;
		new hs.Outline(this.outlineType, 
			function () { 
				exp.connectOutline();
				exp[exp.contentType +'Create']();
			} 
		);
	}
	return true;
};

hs.Expander.prototype = {

connectOutline : function(x, y) {	
	var w = hs.pendingOutlines[this.outlineType];
	this.objOutline = w;
	w.table.style.zIndex = this.wrapper.style.zIndex;
	hs.pendingOutlines[this.outlineType] = null;
},

displayLoading : function() {
	if (this.onLoadStarted || this.loading) return;
		
	this.originalCursor = this.a.style.cursor;
	this.a.style.cursor = 'wait';
	
	this.loading = hs.loading;
	var exp = this;
	this.loading.onclick = function() {
		exp.cancelLoading();
	};
	this.loading.style.top = (this.thumbTop 
		+ (this.thumbHeight - this.loading.offsetHeight) / 2) +'px';
	var exp = this, left = (this.thumbLeft + this.thumbOffsetBorderW 
		+ (this.thumbWidth - this.loading.offsetWidth) / 2) +'px';
	setTimeout(function () { if (exp.loading) exp.loading.style.left = left }, 100); 
},

imageCreate : function() {
	var exp = this;
	
	var img = document.createElement('img');
    this.content = img;
    img.onload = function () {
    	if (hs.expanders[exp.key]) exp.contentLoaded(); 
	};
    if (hs.blockRightClick) img.oncontextmenu = function() { return false; };
    img.className = 'highslide-image';
    img.style.visibility = 'hidden'; // prevent flickering in IE
    img.style.display = 'block';
	img.style.position = 'absolute';
	img.style.maxWidth = 'none';
    img.style.zIndex = 3;
    img.title = hs.restoreTitle;
    if (hs.safari) hs.container.appendChild(img);
    if (hs.ie && hs.flushImgSize) img.src = null;
	img.src = hs.getSrc(this.a);
	
	this.displayLoading();
},

contentLoaded : function() {
	try {	
		if (!this.content) return;
		if (this.onLoadStarted) return; // old Gecko loop
		else this.onLoadStarted = true;
		
			   
		if (this.loading) {
			this.loading.style.left = '-9999px';
			this.loading = null;
			this.a.style.cursor = this.originalCursor || '';
		}
		this.marginBottom = hs.marginBottom;	
			this.newWidth = this.content.width;
			this.newHeight = this.content.height;
			this.fullExpandWidth = this.newWidth;
			this.fullExpandHeight = this.newHeight;
			
			this.content.style.width = this.thumbWidth +'px';
			this.content.style.height = this.thumbHeight +'px';
			this.getCaption();	
		
		
		this.wrapper.appendChild(this.content);
		this.content.style.position = 'relative'; // Saf
		if (this.caption) this.wrapper.appendChild(this.caption);
		this.wrapper.style.left = this.thumbLeft +'px';
		this.wrapper.style.top = this.thumbTop +'px';
		hs.container.appendChild(this.wrapper);
		
		// correct for borders
		this.offsetBorderW = (this.content.offsetWidth - this.thumbWidth) / 2;
		this.offsetBorderH = (this.content.offsetHeight - this.thumbHeight) / 2;
		var modMarginRight = hs.marginRight + 2 * this.offsetBorderW;
		this.marginBottom += 2 * this.offsetBorderH;
		
		var ratio = this.newWidth / this.newHeight;
		var minWidth = this.allowSizeReduction 
			? this.minWidth : this.newWidth;
		var minHeight = this.allowSizeReduction 
			? this.minHeight : this.newHeight;
		
		var justify = { x: 'auto', y: 'auto' };
		
		var page = hs.getPageSize();
		// justify
		this.x = { 
			min: parseInt(this.thumbLeft) - this.offsetBorderW + this.thumbOffsetBorderW,
			span: this.newWidth,
			minSpan: (this.newWidth < minWidth && !hs.padToMinWidth) 
				? this.newWidth : minWidth,
			marginMin: hs.marginLeft, 
			marginMax: modMarginRight,
			scroll: page.scrollLeft,
			clientSpan: page.width,
			thumbSpan: this.thumbWidth
		};
		var oldRight = this.x.min + parseInt(this.thumbWidth);
		this.x = this.justify(this.x);
		this.y = { 
			min: parseInt(this.thumbTop) - this.offsetBorderH + this.thumbOffsetBorderH,
			span: this.newHeight,
			minSpan: this.newHeight < minHeight ? this.newHeight : minHeight,
			marginMin: hs.marginTop, 
			marginMax: this.marginBottom, 
			scroll: page.scrollTop,
			clientSpan: page.height,
			thumbSpan: this.thumbHeight
		};
		var oldBottom = this.y.min + parseInt(this.thumbHeight);
		this.y = this.justify(this.y);
		
			this.correctRatio(ratio);
		

		var x = this.x;
		var y = this.y;
		
		this.show();
	} catch (e) {
		window.location.href = hs.getSrc(this.a);
	}
},

justify : function (p) {
	
	var tgt, dim = p == this.x ? 'x' : 'y';
	
	
		var hasMovedMin = false;
		
		var allowReduce = true;
		
		// calculate p.min
		p.min = Math.round(p.min - ((p.span - p.thumbSpan) / 2)); // auto
		
		if (p.min < p.scroll + p.marginMin) {
			p.min = p.scroll + p.marginMin;
			hasMovedMin = true;		
		}
	
		
		if (p.span < p.minSpan) {
			p.span = p.minSpan;
			allowReduce = false;			
		}
		
		// calculate right/newWidth
		if (p.min + p.span > p.scroll + p.clientSpan - p.marginMax) {
			if (hasMovedMin && allowReduce) {
				
				p.span = p.clientSpan - p.marginMin - p.marginMax; // can't expand more
				
			} else if (p.span < p.clientSpan - p.marginMin - p.marginMax) { // move newTop up
				p.min = p.scroll + p.clientSpan - p.span - p.marginMin - p.marginMax;
			} else { // image larger than client
				p.min = p.scroll + p.marginMin;
				
				if (allowReduce) p.span = p.clientSpan - p.marginMin - p.marginMax;
				
			}
			
		}
		
		if (p.span < p.minSpan) {
			p.span = p.minSpan;
			allowReduce = false;
		}
		
	
		
	if (p.min < p.marginMin) {
		tmpMin = p.min;
		p.min = p.marginMin; 
		
		if (allowReduce) p.span = p.span - (p.min - tmpMin);
		
	}
	return p;
},

correctRatio : function(ratio) {
	var x = this.x;
	var y = this.y;
	var changed = false;
	if (x.span / y.span > ratio) { // width greater
		var tmpWidth = x.span;
		x.span = y.span * ratio;
		if (x.span < x.minSpan) { // below minWidth
			if (hs.padToMinWidth) x.imgSpan = x.span;			
			x.span = x.minSpan;
			if (!x.imgSpan)
			y.span = x.span / ratio;
		}
		changed = true;
	
	} else if (x.span / y.span < ratio) { // height greater
		var tmpHeight = y.span;
		y.span = x.span / ratio;
		changed = true;
	}
	
	if (changed) {
		x.min = parseInt(this.thumbLeft) - this.offsetBorderW + this.thumbOffsetBorderW;
		x.minSpan = x.span;
		this.x = this.justify(x);
		
		y.min = parseInt(this.thumbTop) - this.offsetBorderH + this.thumbOffsetBorderH;
		y.minSpan = y.span;
		this.y = this.justify(y);
	}
},

show : function () {
	
	// Selectbox bug
	var imgPos = {x: this.x.min - 20, y: this.y.min - 20, w: this.x.span + 40, 
		h: this.y.span + 40
		 + this.spaceForCaption};
	hs.hideSelects = (hs.ie && hs.ieVersion() < 7);
	if (hs.hideSelects) this.showHideElements('SELECT', 'hidden', imgPos);
	// Iframes bug
	hs.hideIframes = ((window.opera && navigator.appVersion < 9) || navigator.vendor == 'KDE' 
		|| (hs.ie && hs.ieVersion() < 5.5));
	if (hs.hideIframes) this.showHideElements('IFRAME', 'hidden', imgPos);
	// Scrollbars bug
	if (hs.geckoMac) this.showHideElements('*', 'hidden', imgPos); 
	
	
	if (this.x.imgSpan) this.content.style.margin = '0 auto';
	
	// Apply size change		
	this.changeSize(
		1,
		{ 
			x: this.thumbLeft + this.thumbOffsetBorderW - this.offsetBorderW,
			y: this.thumbTop + this.thumbOffsetBorderH - this.offsetBorderH,
			w: this.thumbWidth,
			h: this.thumbHeight,
			imgW: this.thumbWidth,
			o: hs.outlineStartOffset
		},
		{
			x: this.x.min,
			y: this.y.min,
			w: this.x.span,
			h: this.y.span,
			imgW: this.x.imgSpan,
			o: this.objOutline ? this.objOutline.offset : 0
		},
		hs.expandDuration,
		hs.expandSteps
	);
},

changeSize : function(up, from, to, dur, steps) {
	
	if (up && this.objOutline && !this.outlineWhileAnimating) 
		this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span);
	
	else if (!up && this.objOutline) {
		if (this.outlineWhileAnimating) this.objOutline.setPosition(this, from.x, from.y, from.w, from.h);
		else this.objOutline.destroy();
	}	
			
	if (!up) { // remove children
		var n = this.wrapper.childNodes.length;
		for (var i = n - 1; i >= 0 ; i--) {
			var child = this.wrapper.childNodes[i];
			if (child != this.content) {
				hs.purge(child);
				this.wrapper.removeChild(child);
			}
		}
	}
		
	if (this.fadeInOut) {
		from.op = up ? 0 : 1;
		to.op = up;
	}
	var t,
	exp = this,
	easing = Math[this.easing] || Math.easeInQuad;
	if (!up) easing = Math[this.easingClose] || easing;
	
	for (var i = 1; i <= steps; i++) {
		t = Math.round(i * (dur / steps));
		
		(function(){
			var pI = i, size = {};
			
			for (var x in from) 
				size[x] = easing(t, from[x], to[x] - from[x], dur);
						
			setTimeout ( function() {
				if (up && pI == 1) {
					exp.content.style.visibility = 'visible';
					exp.a.className += ' highslide-active-anchor';
				}
				exp.setSize(size);
			}, t);				
		})();		
	}
	
	if (up) { 
			
		setTimeout(function() {
			if (exp.objOutline) exp.objOutline.table.style.visibility = "visible";
		}, t);
		setTimeout(function() {
			if (exp.caption) exp.writeCaption();
			exp.afterExpand();
		}, t + 50);
	}
	else setTimeout(function() { exp.afterClose(); }, t);
		
},

setSize : function (to) {
	try {
			this.wrapper.style.width = (to.w + 2*this.offsetBorderW) +'px';
			this.content.style.width =
				((to.imgW && !isNaN(to.imgW)) ? to.imgW : to.w) +'px';
			if (hs.safari) this.content.style.maxWidth = this.content.style.width;
			this.content.style.height = to.h +'px';
		
		if (to.op) hs.setStyles(this.wrapper, { opacity: to.op });
				
		
		if (this.objOutline && this.outlineWhileAnimating) {
			var o = this.objOutline.offset - to.o;
			this.objOutline.setPosition(this, to.x + o, to.y + o, to.w - 2 * o, to.h - 2 * o, 1);
		}
				
		hs.setStyles ( this.wrapper,
			{
				'visibility': 'visible',
				'left': to.x +'px',
				'top': to.y +'px'
			}
		);
		
	} catch (e) { window.location.href = hs.getSrc(this.a);	}
},

afterExpand : function() {
	this.isExpanded = true;	
	this.focus();
	
	this.createOverlays();
	if (hs.showCredits) this.writeCredits();
	if (this.isImage && this.fullExpandWidth > this.x.span) this.createFullExpand();
	if (!this.caption) this.prepareNextOutline();
},


prepareNextOutline : function() {
	var key = this.key;
	var outlineType = this.outlineType;
	new hs.Outline(outlineType, 
		function () { try { hs.expanders[key].preloadNext(); } catch (e) {} });
},


preloadNext : function() {
	var next = hs.getAdjacentAnchor(this.key, 1);	
	if (next.onclick.toString().match(/hs\.expand/)) 
		var img = hs.createElement('img', { src: hs.getSrc(next) });
},

cancelLoading : function() {	
	hs.expanders[this.key] = null;
	this.a.style.cursor = this.originalCursor;	
	if (this.loading) hs.loading.style.left = '-9999px';
},

writeCredits : function () {
	var credits = hs.createElement('a',
		{
			href: hs.creditsHref,
			className: 'highslide-credits',
			innerHTML: hs.creditsText,
			title: hs.creditsTitle
		}
	);
	this.createOverlay({ overlayId: credits, position: 'top left'});
},

getCaption : function() {
/*	if (!this.captionId && this.thumbsUserSetId)  
		this.captionId = 'caption-for-'+ this.thumbsUserSetId;
	if (this.captionId) this.caption = hs.getNode(this.captionId);
	if (!this.caption && !this.captionText && this.captionEval) try {
		this.captionText = eval(this.captionEval);
	} catch (e) {}*/

	this.captionText = this.a.title;
	
	if (!this.caption && this.captionText) this.caption = hs.createElement('div', 
			{ className: 'highslide-caption', innerHTML: this.captionText } );
	
	if (!this.caption) {
		var next = this.a.nextSibling;
		while (next && !hs.isHsAnchor(next)) {
			if (/highslide-caption/.test(next.className || null)) {
				this.caption = next.cloneNode(1);
				break;
			}
			next = next.nextSibling;
		}
	}
	if (this.caption) {
		this.marginBottom += this.spaceForCaption;		
	}
	
},

writeCaption : function() {
	try {
		hs.setStyles(this.wrapper, { width: this.wrapper.offsetWidth +'px', 
			height: this.wrapper.offsetHeight +'px' } );	
		hs.setStyles(this.caption, { visibility: 'hidden', marginTop: hs.safari ? 0 : '-'+ this.y.span +'px'});
		this.caption.className += ' highslide-display-block';
		
		var height, exp = this;
		if (hs.ie && (hs.ieVersion() < 6 || document.compatMode == 'BackCompat')) {
			height = this.caption.offsetHeight;
		} else {
			var temp = hs.createElement('div', {innerHTML: this.caption.innerHTML}, 
				null, null, true); // to get height
			this.caption.innerHTML = '';
			this.caption.appendChild(temp);	
			height = this.caption.childNodes[0].offsetHeight;
			this.caption.innerHTML = this.caption.childNodes[0].innerHTML;
		}
		hs.setStyles(this.caption, { overflow: 'hidden', height: 0, zIndex: 2, marginTop: 0 });
		this.wrapper.style.height = 'auto';
		
		if (hs.captionSlideSpeed) {
			var step = (Math.round(height/50) || 1) * hs.captionSlideSpeed;
		} else {
			this.placeCaption(height, 1);
			return;
		}
		for (var h = height % step, t = 0; h <= height; h += step, t += 10) {
			(function(){
				var pH = h, end = (h == height) ? 1 : 0;
				setTimeout( function() {
					exp.placeCaption(pH, end);
				}, t);
			})();
		}
	} catch (e) {}	
},

placeCaption : function(height, end) {
	if (!this.caption) return;
	this.caption.style.height = height +'px';
	this.caption.style.visibility = 'visible';
	this.y.span = this.wrapper.offsetHeight - 2 * this.offsetBorderH;
	
	
	var o = this.objOutline;
	if (o) {
		o.td[4].style.height = (this.wrapper.offsetHeight - 2 * this.objOutline.offset) +'px';
		if (o.hasAlphaImageLoader) o.td[3].style.height = o.td[5].style.height = o.td[4].style.height;
	}
	if (end) this.prepareNextOutline();
},


showHideElements : function (tagName, visibility, imgPos) {
	var els = document.getElementsByTagName(tagName);
	var prop = tagName == '*' ? 'overflow' : 'visibility';
	for (var i = 0; i < els.length; i++) {
		if (prop == 'visibility' || (document.defaultView.getComputedStyle(
				els[i], "").getPropertyValue('overflow') == 'auto'
				|| els[i].getAttribute('hidden-by') != null)) {
			var hiddenBy = els[i].getAttribute('hidden-by');
			if (visibility == 'visible' && hiddenBy) {
				hiddenBy = hiddenBy.replace('['+ this.key +']', '');
				els[i].setAttribute('hidden-by', hiddenBy);
				if (!hiddenBy) els[i].style[prop] = els[i].origProp;
			} else if (visibility == 'hidden') { // hide if behind
				var elPos = hs.position(els[i]);
				elPos.w = els[i].offsetWidth;
				elPos.h = els[i].offsetHeight;
			
				
					var clearsX = (elPos.x + elPos.w < imgPos.x || elPos.x > imgPos.x + imgPos.w);
					var clearsY = (elPos.y + elPos.h < imgPos.y || elPos.y > imgPos.y + imgPos.h);
				var wrapperKey = hs.getWrapperKey(els[i]);
				if (!clearsX && !clearsY && wrapperKey != this.key) { // element falls behind image
					if (!hiddenBy) {
						els[i].setAttribute('hidden-by', '['+ this.key +']');
						els[i].origProp = els[i].style[prop];
						els[i].style[prop] = 'hidden';
					} else if (!hiddenBy.match('['+ this.key +']')) {
						els[i].setAttribute('hidden-by', hiddenBy + '['+ this.key +']');
					}
				} else if (hiddenBy == '['+ this.key +']' || hs.focusKey == wrapperKey) { // on move
					els[i].setAttribute('hidden-by', '');
					els[i].style[prop] = els[i].origProp || '';
				} else if (hiddenBy && hiddenBy.match('['+ this.key +']')) {
					els[i].setAttribute('hidden-by', hiddenBy.replace('['+ this.key +']', ''));
				}
						
			}
		}
	}
},

focus : function() {
	this.wrapper.style.zIndex = hs.zIndexCounter++;
	// blur others
	for (var i = 0; i < hs.expanders.length; i++) {
		if (hs.expanders[i] && i == hs.focusKey) {
			var blurExp = hs.expanders[i];
			blurExp.content.className += ' highslide-'+ blurExp.contentType +'-blur';
			
			if (blurExp.caption) {
				blurExp.caption.className += ' highslide-caption-blur';
			}
			
				blurExp.content.style.cursor = hs.ie ? 'hand' : 'pointer';
				blurExp.content.title = hs.focusTitle;
		}
	}
	
	// focus this
	if (this.objOutline) this.objOutline.table.style.zIndex 
		= this.wrapper.style.zIndex;
	
	this.content.className = 'highslide-'+ this.contentType;
	
	if (this.caption) {
		this.caption.className = this.caption.className.replace(' highslide-caption-blur', '');
	}
	
		this.content.title = hs.restoreTitle;
		
		hs.styleRestoreCursor = window.opera ? 'pointer' : 'url('+ hs.graphicsDir + hs.restoreCursor +'), pointer';
		if (hs.ie && hs.ieVersion() < 6) hs.styleRestoreCursor = 'hand';
		this.content.style.cursor = hs.styleRestoreCursor;
		
	hs.focusKey = this.key;	
	hs.addEventListener(document, 'keydown', hs.keyHandler);	
},

move : function (e) {
	this.x.min = e.left + e.dX;
	this.y.min = e.top + e.dY;
	
	if (e.type == 'image') this.content.style.cursor = 'move';
	hs.setStyles(this.wrapper, { left: this.x.min +'px', top: this.y.min +'px' });
	
	if (this.objOutline)
		this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span);
	
},

close : function() {
	if (this.isClosing || !this.isExpanded) return;
	this.isClosing = true;
	
	hs.removeEventListener(document, 'keydown', hs.keyHandler);
	
	try {
		
		this.content.style.cursor = 'default';
		
		this.changeSize(
			0,
			{
				x: this.x.min,
				y: this.y.min,
				w: this.x.span,
				h: parseInt(this.content.style.height),
				imgW: this.x.imgSpan,
				o: this.objOutline ? this.objOutline.offset : 0
			},
			{
				x: this.thumbLeft - this.offsetBorderW + this.thumbOffsetBorderW,
				y: this.thumbTop - this.offsetBorderH + this.thumbOffsetBorderH,
				w: this.thumbWidth,
				h: this.thumbHeight,
				imgW: this.thumbWidth,
				o: hs.outlineStartOffset
			},
			hs.restoreDuration,
			hs.restoreSteps
		);
		
	} catch (e) { this.afterClose(); } 
},

createOverlay : function (o) {
	var el = o.overlayId;
	if (typeof el == 'string') el = hs.getNode(el);
	if (!el || typeof el == 'string') return;
	
	
	var overlay = hs.createElement(
		'div',
		null,
		{
			'left' : 0,
			'top' : 0,
			'position' : 'absolute',
			'zIndex' : 3,
			'visibility' : 'hidden'
		},
		this.wrapper,
		true
	);
	if (o.opacity) hs.setStyles(el, { opacity: o.opacity });
	el.style.styleFloat = 'none';
	el.className += ' highslide-display-block';
	overlay.appendChild(el);	
	
	overlay.hsPos = o.position;
	this.positionOverlay(overlay);	
	
	if (o.hideOnMouseOut) overlay.setAttribute('hideOnMouseOut', true);
	if (!o.opacity) o.opacity = 1;
	overlay.setAttribute('opacity', o.opacity);
	hs.fade(overlay, 0, o.opacity);
	
	hs.push(this.overlays, overlay);
},

positionOverlay : function(overlay) {
	var left = this.offsetBorderW;
	var dLeft = this.x.span - overlay.offsetWidth;
	var top = this.offsetBorderH;
	var dTop = parseInt(this.content.style.height) - overlay.offsetHeight;
	
	var p = overlay.hsPos || 'center center';
	if (/^bottom/.test(p)) top += dTop;
	if (/^center/.test(p)) top += dTop / 2;
	if (/right$/.test(p)) left += dLeft;
	if (/center$/.test(p)) left += dLeft / 2;
	overlay.style.left = left +'px';
	overlay.style.top = top +'px';
},

createOverlays : function() {
	for (var i = 0; i < hs.overlays.length; i++) {
		var o = hs.overlays[i], tId = o.thumbnailId, sg = o.slideshowGroup;
		if ((!tId && !sg) || tId == this.thumbsUserSetId
				|| sg === this.slideshowGroup) {
			this.createOverlay(o);
		}
	}
},


createFullExpand : function () {
	var a = hs.createElement(
		'a',
		{
			href: 'javascript:hs.expanders['+ this.key +'].doFullExpand();',
			title: hs.fullExpandTitle,
			className: 'highslide-full-expand'
		}
	);
	
	this.fullExpandLabel = a;
	this.createOverlay({ overlayId: a, position: hs.fullExpandPosition, 
		hideOnMouseOut: true, opacity: hs.fullExpandOpacity });
},

doFullExpand : function () {
	try {	
		hs.purge(this.fullExpandLabel);
		this.fullExpandLabel.parentNode.removeChild(this.fullExpandLabel);
		this.focus();
		
		this.x.min = parseInt(this.wrapper.style.left) - (this.fullExpandWidth - this.content.width) / 2;
		if (this.x.min < hs.marginLeft) this.x.min = hs.marginLeft;		
		this.wrapper.style.left = this.x.min +'px';
		
		hs.setStyles(this.content, { width: this.fullExpandWidth +'px', 
			height: this.fullExpandHeight +'px'});
		
		this.x.span = this.fullExpandWidth;
		this.wrapper.style.width = (this.x.span + 2*this.offsetBorderW) +'px';
		
		this.y.span = this.wrapper.offsetHeight - 2 * this.offsetBorderH;
		
		if (this.objOutline)
			this.objOutline.setPosition(this, this.x.min, this.y.min, this.x.span, this.y.span);
		
		for (var i = 0; i < this.overlays.length; i++)
			this.positionOverlay(this.overlays[i]);
		
		this.redoShowHide();
		
		
	
	} catch (e) {
		window.location.href = this.content.src;
	}
},


// on end move and resize
redoShowHide : function() {
	var imgPos = {
		x: parseInt(this.wrapper.style.left) - 20, 
		y: parseInt(this.wrapper.style.top) - 20, 
		w: this.content.offsetWidth + 40, 
		h: this.content.offsetHeight + 40 
			+ this.spaceForCaption
	};
	if (hs.hideSelects) this.showHideElements('SELECT', 'hidden', imgPos);
	if (hs.hideIframes) this.showHideElements('IFRAME', 'hidden', imgPos);
	if (hs.geckoMac) this.showHideElements('*', 'hidden', imgPos);

},

wrapperMouseHandler : function (e) {
	if (!e) e = window.event;
	var over = /mouseover/i.test(e.type); 
	if (!e.target) e.target = e.srcElement; // ie
	if (hs.ie) e.relatedTarget = 
		over ? e.fromElement : e.toElement; // ie
	if (hs.getExpander(e.relatedTarget) == this || hs.dragArgs) return;
	for (var i = 0; i < this.overlays.length; i++) {
		var o = this.overlays[i];
		if (o.getAttribute('hideOnMouseOut')) {
			var from = over ? 0 : o.getAttribute('opacity'),
				to = over ? o.getAttribute('opacity') : 0;			
			hs.fade(o, from, to);
		}
	}
},

afterClose : function () {
	this.a.className = this.a.className.replace('highslide-active-anchor', '');
	
	if (hs.hideSelects) this.showHideElements('SELECT', 'visible');
	if (hs.hideIframes) this.showHideElements('IFRAME', 'visible');
	if (hs.geckoMac) this.showHideElements('*', 'visible');
		if (this.objOutline && this.outlineWhileAnimating) this.objOutline.destroy();
		hs.purge(this.wrapper);
		if (hs.ie && hs.ieVersion() < 5.5) this.wrapper.innerHTML = ''; // crash
		else this.wrapper.parentNode.removeChild(this.wrapper);
	hs.expanders[this.key] = null;		
	hs.cleanUp();
}
};
// history
var HsExpander = hs.Expander;

// set handlers
hs.addEventListener(document, 'mousedown', hs.mouseClickHandler);
hs.addEventListener(document, 'mouseup', hs.mouseClickHandler);
hs.addEventListener(window, 'load', hs.preloadImages);
