function getObjectBW(name) {
	if(!name || name == null) return null;
	else if(document.getElementById) return document.getElementById(name);
	else if(document.all) return document.all[name];
	else return null;
}

function onDisplay(){
	var elem_id = null;
	this.check=function(id){
		if((elem_id = getObjectBW(id))!= null){
			if(elem_id.style.display !="none") return true;
		}
		return false;
	}
	this.set=function(id, viz){
		if((elem_id = getObjectBW(id))!= null) elem_id.style.display = viz;
		return;
	}
}
var dis = new onDisplay();

function roll(namePic, path)
{
	if (document.images[namePic])
		document.images[namePic].src=path;
}









function show_hide1( what_show, show )
{
	if( show )
		dis.set( what_show, "" );
	else
		dis.set( what_show, "none");
}

function show_hide( what_show )
{
	if( dis.check( what_show ) ) {
		dis.set( what_show, "none");
		return false;
	}
	else {
		dis.set( what_show, "" );
		return true;
	}
}

function preloadImg()
{
	var args = preloadImg.arguments;
	document.imageArray = new Array(args.length);
	for(var i=0; i<args.length; i++)
	{
		document.imageArray[i] = new Image;
		document.imageArray[i].src = args[i];
	}
}

function zoom_image(image,width,height)
{
	var url = SITE_FOLDER+"inc/zoom_image.php?img="+image;
    width+=20;
    height+=20;
	var left = parseInt((screen.availWidth/2) - (width/2));
    var top = parseInt((screen.availHeight/2) - (height/2));
 	var windowFeatures = "width=" + width + ",height=" + height +
        ",resizable=no,left=" + left + ",top=" + top +
        "screenX=" + left + ",screenY=" + top;

    new_window=window.open(url, "", windowFeatures);
	return false;

//	new_window=window.open(SITE_FOLDER+"inc/zoom_image.php?img="+image,'','resizable=no,width='+(width+20)+',height='+(height+20),false);
//	return false;
}

// num - аргумент , prec - знаков в дробной части, flag - разбиение на группы по три целой части, maxlen - макс.длина рез-та
function formatted_number( num, prec, flag , maxlen)
{
	num = num + '';	// Работаем с аргументом как со строкой
	num = num.replace(/\s/g,""); // Удаляем все пробелы из аргумента, на случай если он вида DD DDD DDD.DD
	num = num.replace(',','.');	// Заменяем "," на "." т.к. десятичный разделитель в JS - точка
	if (isNaN(num)) if (num) return num; else return ''; // Проверка аргумента на число
		var k=2;
		if (prec===0) k=1; 		// Если дробная часть не нужна, то просто не берем ее
	num = num.split('.', k);	// Выделяем целую и дробную часть
	if (flag) // Разбиение в группы по три
	{
		re = /(?=(?:\d{3})+(?!\d))/g;
		num[0] = num[0].replace(re,' ');
	}
	if (prec)
		if (!num[1]) num[1] = '0'; // Инициализируем дробную часть
	if (num[1])
	{
		i=0;
		if (num[1].length > prec) // Если длина дробной чатсь превышает заданную точность
		{
			step =  Math.pow(10 , num[1].length - prec);
			num[1] = Math.round( num[1] / step);
		}
			else while (num[1].length < prec) num[1] += '0';
	}
	num = num.join('.');
	if (maxlen && maxlen < num.length) num = num.substr(num.length - parseInt(maxlen));
	return num;
}

function round(num, precision) {
	num = Math.round(num * Math.pow(10, precision)) / Math.pow(10, precision)+"";
	if( num.indexOf(".") == -1 ) {
		num+=".";
		while( precision-- )
			num+="0";
	}
	else {
		precision -= num.substring( num.indexOf(".")+1 ).length;
		while( precision-- > 0 )
			num+="0";
	}
	return num;
}

function writeNumber( num, one, two, five )
{
	num+="";
	sResText = five; // по умолчанию выводим «пять дней»
	nDaysLeftLength = num.length;
	if( num.charAt(nDaysLeftLength - 2) != "1" )
	{
		if( num.charAt(nDaysLeftLength - 1) == "2" ||
			num.charAt(nDaysLeftLength - 1) == "3" ||
			num.charAt(nDaysLeftLength - 1) == "4" )
		{
			sResText = two;
		}
		else if (num.charAt(nDaysLeftLength - 1) == "1")
		{
			sResText = one;
		}
	}
	return sResText.replace( /%number%/i, num );
}

function pagenumber_handle( e ) {
	if( !e ) e = window.event;
	var k = e.keyCode;
	if( e.srcElement ) tag = e.srcElement.tagName.toLowerCase();
	else if( e.target ) tag = e.target.tagName.toLowerCase();

	var inputHasFocus=false;
	if( tag == "input" ||
		tag == "textarea" ||
		tag == "select" )
		inputHasFocus=true;

	if( e.ctrlKey ) {
		if( document.getElementById && !inputHasFocus ) {
			var l;
			if( k == 37 ) {
				l = document.getElementById('previous_page');
			}
			if( k == 39 ) {
				l = document.getElementById('next_page');
			}
			if( l && l.href ) location.href = l.href;
		}
	}
}

function getElementsByClassName(className, tag, elm){
	var testClass = new RegExp("(^|\\s)" + className + "(\\s|$)");
	var tag = tag || "*";
	var elm = elm || document;
	var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
	var returnElements = [];
	var current;
	var length = elements.length;
	for(var i=0; i<length; i++){
		current = elements[i];
		if(testClass.test(current.className)){
			returnElements.push(current);
		}
	}
	return returnElements;
}

String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function replaceString(strSource, strFind, strReplace, caseSensitive){
	 if( caseSensitive ) re = "/" + strFind + "/g";
	 else re = "/" + strFind + "/gi";
	 return strSource.replace(eval(re), strReplace);
}




// ********** Функции валидации данных

function valid_phone( number, len)
{
	if (number.length == 0 || !number) return false;
	if (isNaN(len)) len=5;
	if  (number.length < len) {
		return false;
	}
	if( !(/^(\+\d{1,4}[ ]?)?(\(\d+\))?[\d\- ]+\d$/).test( number ) )
	{
		return false;
	}
	return true;
}

function validEmail(str)
{
	str = str.toLowerCase( );
	return /^[a-z0-9_.-]+@[a-z0-9_.-]+\.([a-z])+$/.test(str);
}

function numeralsOnlyF(evt)
{
	evt = (evt) ? evt : event;
	var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
	((evt.which) ? evt.which : 0));
	if( charCode==44 ) {
		(evt.charCode) ? evt.charCode=46 : ((evt.keyCode) ? evt.keyCode=46:
		((evt.which) ? evt.which=46: 0));
		charCode=46;
	}
	if( charCode > 31 && ( charCode < 48 || charCode > 57 ) && charCode!=46 )
	{
		return false;
	}
	return true;
}

function numeralsOnly(evt)
{
    evt = (evt) ? evt : event;
    var charCode = (evt.charCode) ? evt.charCode : ((evt.keyCode) ? evt.keyCode :
        ((evt.which) ? evt.which : 0));

    if (charCode >31  && charCode!=46  && (charCode < 48 || charCode > 57) &&charCode!=37 && charCode!=39 && charCode!=116)
    {
        return false;
    }
    return true;
}

// Просмотр изображений во всплывающем окне (Для модуля Портфолио)
function ibrowser(wlink,width,height,object_id)
{
	eval("var cur = img" + object_id);
	//alert(wlink+"\n"+width+"\n"+height+"\n"+object_id);
	window.open(SITE_FOLDER+"inc/modules/portfolio/ibrowser.php"+wlink+"&cur="+cur,'','resizable=no,width='+ width +',height='+ height,false);
	return false;
}

isMSIE = (navigator.appName == "Microsoft Internet Explorer");isMSIE6 = this.isMSIE && (navigator.userAgent.indexOf('MSIE 6') != -1);

function search_check_main(f)
{
	if (!f.txt_search.value.trim())
	{
		alert("Для поиска введите поисковую строку.");
		f.txt_search.focus();
		return false;
	}
	return true;
}
// Проверяет существование объекта по его имени
function isset(varname){
  return(typeof(window[varname])!='undefined');
}
//------------------------------------------------------------------------------------------------------------- OPENWINDOW
function openwindow(url,width,height,param)
{
	if (param.trim()) url = url + "?info="+param;
	url = SITE_FOLDER + url;
	var Correct = (isIE? -25: (isOpera?-150: (isMozilla||isNC?110:0)));
	var wdims = getWindowDims();
	var left = wdims.left + parseInt((wdims.width  - width)/2);
    var top  = wdims.top  + parseInt((wdims.height - height)/2)+Correct;
 	var windowFeatures = "width=" + width + ",height=" + height + 
        ",resizable=no,left=" + left + ",top=" + top;
        //+"screenX=" + left + ",screenY=" + top;
    var new_window;
   	new_window=window.open(url, "modal_window", windowFeatures);
   	if (new_window.focus) new_window.focus();
	return false;
}
//-------------------------------------------------------------------------------------------------------------	
// !!!УНИФИЦИРОВАННАЯ!!! ФУНКЦИЯ выполнения АЯКС-запросов
var StatusLineClass = 'stat_stat'; // Имя класса контейнера для статусной строки
// Формат вызова: в АЯКС-запрос передаются "операция" и "массив параметров вызова" (oper,params_array),
// а также функция start_func(указатель на функцию), которая будет вызвана при получении ответа ret на запрос.
// При этом start_func вызывается с параметрами ret,param_func
 function DoAction(oper,params_array,start_func,param_func)
 {
	if (!isset('AJAX_MODULE_FILE') || AJAX_MODULE_FILE=='') return; 	
 	JsHttpRequest.query
    (
        AJAX_MODULE_FILE, // backend
        {
            'oper': oper,
            'dopsinfo': DOPSINFO,
            'params': params_array
        },
        // Function is called when an answer arrives. 
        function(result, errors) 
        {
        	var ret='';
        	if (result)
				ret = result['return'];
			else
				return;
			if ((parseInt(result['error_int'])>0) && result['error_txt'])
			{
				alert(result['error_txt']);
				return;
			}
        	if (start_func)
        	{
        		//setTimeout( function() { start_func(ret,param_func) }, 1 );
        		start_func(ret,param_func);
        		return;
        	}
        },
        true // do not disable caching
    );
 }
