var _SEARCH_STRING="поиск...";

function close_big_img(){
	var obj=document.getElementById("big_photo");
	obj.style.display='none';
}

function send_search_request(){
	var search_val=document.getElementById("searchField").value;
	if(search_val.length<1 ? true : search_val==_SEARCH_STRING){
		return 0;
	}
	document.getElementById("search_form").submit();
}

var ADDING_SMALL_WIN_WIDTH=100;//на сколько маленькое окно шире размера картинки
var ADDING_SMALL_WIN_HEIGHT=235;//на сколько маленькое окно выше размера картинки
var ADDING_SMALL_WIN_WIDTH_DEFAULT=600;
var ADDING_SMALL_WIN_HEIGHT_DEFAULT=400;//на сколько маленькое окно выше размера картинки
var VOTE_REF_PHP="vote.php";

var CAN_FLASH=detectFlash();

function check_login_form(form_obj){
	var arrError=new Array();
	if(document.getElementById("member_login").value.length<1) arrError[arrError.length]="Вы не заполнили поле 'Логин'!";
	if(document.getElementById("member_password").value.length<1) arrError[arrError.length]="Вы не заполнили поле 'Пароль'!";
	
	if(arrError.length>0) alert(arrError.join("\n"));
	else form_obj.submit();
}

function check_subscribe_form(form_obj){
	var arrError=new Array();
	var mail_val=document.getElementById("email").value;
	
	if(mail_val.length<1) arrError[arrError.length]="Вы не ввели свой e-mail!";
	else if(!mail_val.is_email()) arrError[arrError.length]="Вы ввели некорректный e-mail!";
	
	if(arrError.length>0) alert(arrError.join("\n"));
	else form_obj.submit();
}

function check_nosubscribe_form(form_obj, new_ref_str){
	var mail_val=document.getElementById("email").value;
	if(!mail_val.is_email()) alert("Вы ввели некорректный e-mail!");
	else{
		form_obj.action=new_ref_str;
		form_obj.submit();
	}
}

function check_remember_form(form_obj){
	var arrError=new Array();
	if(document.getElementById("member_login").value.length<1) arrError[arrError.length]="Вы не заполнили поле 'Логин'!";
	if(document.getElementById("member_email").value.length<1) arrError[arrError.length]="Вы не заполнили поле 'E-mail'!";
	else if(!document.getElementById("member_email").value.is_email())  arrError[arrError.length]="Некорректные данные в поле 'E-mail'!";
	
	if(arrError.length>0) alert(arrError.join("\n"));
	else form_obj.submit();
}

//************************************************************//
//		Array functions
//************************************************************//
//возвращает true, если переданное значение есть в индексном массиве
Array.prototype.inArray = function (value) {
        var i;
        for (i=0; i < this.length; i++) {
                if (this[i] === value) {
                        return true;
                }
        }
        return false;
};

//возраващает первый индекс элемента в индексном массиве, который совпадает с переданным значением
Array.prototype.indexOfElem = function (value) {
        var i;
        for (i=0; i < this.length; i++) {
                if (this[i] == value) {
                        return i;
                }
        }
        return -1;
};

//удаляет из массива элемент с заданным индексом
Array.prototype.delElem = function (elem_index){
	var i;
	for(i=elem_index; i<(this.length-1); i++){
		this[i]=this[i+1];
	}
	//del last element
	this[this.length-1]=null;
	this.length=this.length-1;
}
//************************************************************//
//		String functions
//************************************************************//
function gen_password()
{
	if(gen_password.arguments[0]==null) pass_length=8;
	else pass_length=gen_password.arguments[0];
	
	var digit = new Array("0","1","2","3","4","5","6","7","8","9");
	var halp = new Array("A","B","C","D","E","F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U","V","W","Y","Z");
	var lalp = new Array("a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","y","z");
	
	pasw="";
	
	for(var i=0; i<pass_length; i++){
		r=Math.random();
		if((r - 1.0/3.0) < 0.0){
			r = Math.floor(Math.random() * 9);
			pasw += digit[r];
		}else if ( (r - 2.0/3.0) < 0.0){
			r = Math.floor(Math.random() * 24);
			pasw += halp[r];
		}else{
			r = Math.floor(Math.random() * 24);
			pasw += lalp[r];
		}
	}
	
	return pasw;
}

//заменяет в строке символ cut_symbol на строку paste_symbol
String.prototype.symbol_replace=function(cut_symbol, paste_symbol){
	var new_str='';
	for(i=0; i<this.length; i++){
		var cur_symb=this.charAt(i);
		if(cur_symb==cut_symbol) new_str+=paste_symbol;
		else new_str+=cur_symb;
	}
	
	return new_str;
}

//заменяет в строке подстроку cut_str на строку paste_str
String.prototype.str_replace=function (cut_str, paste_str){
	var f=0;
	var ht='';
	ht = ht + this;
	f=ht.indexOf(cut_str);
	while (f!=-1){
		//цикл для вырезания всех имеющихся подстрок
		f=ht.indexOf(cut_str);
		if (f>0) ht = ht.substr(0,f) + paste_str + ht.substr(f+cut_str.length);
	}
	return ht;
}

//преобразует строку вида rgb(NN, NN, NN) в значение #MMMMMM
String.prototype.rgb_2_hex=function(){
	var strRGB="rgb(";
	if(this.substring(0, strRGB.length)==strRGB){
		var h='', x='0123456789ABCDEF';
		
		//вытаскиваем значения
		var sColor=this.substring(strRGB.length, this.length-1);
		var arrColor=sColor.split(",");
		
		for (i=0; i < arrColor.length; i++){
			n = parseInt(arrColor[i]);
			h += x.charAt(n>>4) + x.charAt(n&15);
		}
		return ("#"+h.toLowerCase()).toString();
	}
	
	return this;
}

String.prototype.trancate=function(need_length){
	if(need_length<1) need_length=15;
	
	if(this.length<=need_length) return this;
	
	return this.substring(0, need_length)+"...";
}

String.prototype.is_email=function(){
	txt=this; 
	
	if(txt.indexOf('.')==-1) return false;
	dog=txt.indexOf('@'); 
	if(dog==-1) return false;
	if((dog < 1) || (dog > txt.length - 5)) return false;
	if((txt.charAt(dog-1)=='.') || (txt.charAt(dog+1)=='.')) return false;
	return true;
}

//************************************************************//
//		Функции для работы с окнами
//************************************************************//
/*
//открывает попап окно по заданному URl
function open_popup_win(url_str, popup_name){
	var popupWin;
	
	var width_str=ADDING_SMALL_WIN_WIDTH_DEFAULT;
	var height_str=ADDING_SMALL_WIN_HEIGHT_DEFAULT;
	
	if(open_popup.arguments.length>2){
		//передали еще ширину и высоту
		if(open_popup.arguments[2]>(width_str-ADDING_SMALL_WIN_WIDTH)) width_str=open_popup.arguments[2]+ADDING_SMALL_WIN_WIDTH;
		if(open_popup.arguments[3]>(height_str-ADDING_SMALL_WIN_HEIGHT)) height_str=open_popup.arguments[3]+ADDING_SMALL_WIN_HEIGHT;
	}
	
	//not IE
	popupWin= window.open(url_str, popup_name, "width="+width_str+",height="+height_str+",top=400,left=300,scrollbars=yes,toolbar=no,location=no,directories=no,status=no,resizable=yes");
	popupWin.focus();
	
}
*/

//открывает div c нужным содержимым
function open_popup(url_str, popup_name){
	var popupWin;
	
	var width_i=open_popup.arguments[2];
	var height_i=open_popup.arguments[3];
	var blnDoCode=true;
	
	//выясняем адрес файла
	var arrTmp=url_str.split("filepath=");
	if(arrTmp.length>1){
		var arrTmp_2=arrTmp[1].split("&");
		var filename_str;
		if(arrTmp_2.length>1) filename_str=arrTmp_2[0];
		else filename_str=arrTmp[1];
	}else{
		//элемент галереи
		arrTmp=url_str.split("id=");
		filename_str=arrTmp[1];
		call_big_item(filename_str);
		blnDoCode=false;
	}
	
	if(blnDoCode){
		var div_obj=document.getElementById("big_photo");
		div_obj.style.display='none';
		
		//позиционируем основной слой
		set_div_position(div_obj, width_i, height_i);
		
		//загружаем изображение
		var img_div_obj=document.getElementById("for_big_img");
		var curImg;
		
		var arrTmp2=url_str.split("show_flash.php");
		var arrTmp3=url_str.split("show_gallery_item.php");
		if(arrTmp2.length>1){
			//это флэш
			curImg=document.createElement("embed");
			curImg.setAttribute("type", "application/x-shockwave-flash");
			curImg.setAttribute("pluginspage", "http://www.macromedia.com/go/getflashplayer");
			curImg.setAttribute("quality", "high");
			curImg.setAttribute("width", width_i);
			curImg.setAttribute("height", height_i);
			curImg.setAttribute("wmode", "transparent");
			
			try{
				curImg.src=filename_str;//FF
				curImg.movie=filename_str;//IE
			}catch(err){}
		}else if(arrTmp3.length>1){
			//элмент галереи
			
		}else{
			//это картинка
			curImg=document.createElement("img");
			curImg.src=filename_str;
			curImg.setAttribute("marker", "was_stylized");
		}
		
		while(img_div_obj.childNodes.length>0) img_div_obj.removeChild(img_div_obj.childNodes[0]);
		img_div_obj.appendChild(curImg);
		
		//масштабируем основной слой
		div_obj.style.width=width_i;
		div_obj.style.height=height_i;
		
		//перемещаем кнопки закрытия
		set_close_btn_position(width_i, height_i);
		
		div_obj.style.display='inline';
	}
}

function close_win(){
	self.close();
}
//************************************************************//

//проверяет наличие флэша
function detectFlash(){
	//выяяняем: можем ли добавить флэш?
	var MM_contentVersion = 7;
	var plugin = (navigator.mimeTypes && navigator.mimeTypes["application/x-shockwave-flash"]) ? navigator.mimeTypes["application/x-shockwave-flash"].enabledPlugin : 0;
	if ( plugin ) {
		var words = navigator.plugins["Shockwave Flash"].description.split(" ");
		for (var i = 0; i < words.length; ++i){
			if (isNaN(parseInt(words[i]))) continue;
			var MM_PluginVersion = words[i]; 
		}
		MM_FlashCanPlay = MM_PluginVersion >= MM_contentVersion;
	}else if (navigator.userAgent && navigator.userAgent.indexOf("MSIE")>=0 && (navigator.appVersion.indexOf("Win") != -1)){
		try{
			MM_FlashCanPlay = new ActiveXObject("ShockwaveFlash.ShockwaveFlash." + MM_contentVersion);
		}catch(err){ MM_FlashCanPlay=false;}
	}
	
	return MM_FlashCanPlay;
}

//************************************************************//
//		Функции для работы с ckookies
//************************************************************//
function getCookieVal (offset) {
    var endstr = document.cookie.indexOf(";", offset);
    if (endstr == -1) endstr = document.cookie.length;
    return unescape(document.cookie.substring(offset, endstr));
}

/*Эта функция необходима для исправления ошибок в дате на Mac 2.x
 *Вызывайте её для проверки объекта даты перед отправкой данных в функцию SetCookie
 *Эта функция должна вызываться только 1 раз для каждого полученного объекта даты
 */
function FixCookieDate(date) {
    var base = new Date(0);
    var skew = base.getTime();
    if (skew > 0) date.setTime(date.getTime() - skew);
}

/*Эта функция предназначена для возвращения значения cookie
 *name - строковой объект, содержащий имя cookie
 *returns - строковой объект, содержащий либо значение cookie, либо 0, если запись не существует
 */
function GetCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring( i , j ) == arg) return getCookieVal(j);
        i = document.cookie.indexOf(" ", i+1 ) + 1;
        if (i==0) break;
    }
    return "";
}

/*Эта функция предназначена для создания или обновления cookie
 *name - строковой объект, содержащий имя cookie
 *value - строковой объект, содержащий значение cookie
 *[expires] - объект Date, содержащий срок годности cookie
 *[path] - Строковой объект, указывающий путь нужной cookie-записи.
 *[domen] - Строковой объект, указывающий домен нужной cookie-записи.
 *[secure] - Булево значение, определяет необходимость безопасного соединения
 */
function SetCookie(name,value,expires,path,domain,secure) {
    document.cookie = name + "=" + escape(value) + ((expires) ? "; expires=" + expires.toGMTString() : "") + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
}
/*Эта функция для удаления cookie
 *name - строковой объект, содержащий имя cookie
 *path - Строковой объект, содержащий путь cookie-записи.
 *domen - Строковой объект, содержащий домен cookie.
 */
function DelCookie(name,path,domain) {
    if(GetCookie(name)) {
        document.cookie = name + "=" + ((path) ? "; path=" + path : "") + ((domain) ? "; domain=" + domain : "") + "expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}


/*******************************************************************/
//  Check size function
/*******************************************************************/
//Размер документа по вертикали
function getDocumentHeight()
{
	return (document.body.scrollHeight > document.body.offsetHeight)?document.body.scrollHeight:document.body.offsetHeight;
}

//Размер документа по горизонтали
function getDocumentWidth()
{
	return (document.body.scrollWidth > document.body.offsetWidth)?document.body.scrollWidth:document.body.offsetWidth;
}

function getBodyScrollTop()
{
	return self.pageYOffset || (document.documentElement && document.documentElement.scrollTop) || (document.body && document.body.scrollTop);
}

function getBodyScrollLeft()
{
	return self.pageXOffset || (document.documentElement && document.documentElement.scrollLeft) || (document.body && document.body.scrollLeft);
}

function getClientCenterX()
{
	return parseInt(getClientWidth()/2)+getBodyScrollLeft();
}

function getClientCenterY()
{
	return parseInt(getClientHeight()/2)+getBodyScrollTop();
}
function getClientWidth()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientWidth:document.body.clientWidth;
}

function getClientHeight()
{
  return document.compatMode=='CSS1Compat' && !window.opera?document.documentElement.clientHeight:document.body.clientHeight;
}
