// Полезные функции - http://xpoint.ru/know-how/JavaScript/PoleznyieFunktsii?comments
// my = newClass();
function newClass(){
	var newo=true;
	return new newo.constructor();
}
// detect браузера
function browsers(){
	this.ver   = navigator.appVersion.toLowerCase();
	this.agent = ''+navigator.userAgent.toLowerCase();
	this.dom   = document.getElementById ? 1 : 0;
	this.opera = (this.agent.indexOf("opera")>-1 && this.dom) ? 1 : 0;
	this.ie    = (this.ver.indexOf("msie") > -1 && this.dom && !this.opera) ? 1 : 0;
	this.macOS = this.agent.indexOf("mac") > -1;
	this.mac   = (this.macOS && parseInt(this.ver) >= 7) ? 1 : 0;
	this.moz   = (this.agent.indexOf("gecko")>-1)
	this.ns6   = (this.dom && this.agent.indexOf("netscape")>-1 && parseInt(this.ver) >= 5) ? 1 : 0;
	//this.safari = (hnav.search(/macintosh/gmi)!=-1&&hnav.search(/safari/gmi)!=-1);
	//this.opera7 = (this.opera && parseInt(navigator.appVersion) >= 7);
	return this;
}
browser = new browsers();

var array_functions = new Array();// массив функций
//--функция запуска функций, например AddFunction('tooltip.define()');
function AddFunction(str){array_functions[array_functions.length] = str;}
//--функция запуска функций, например array_functions[array_functions.length] = 'tooltip.define';
function onload_functions(){
	for (var i in array_functions){
		eval(array_functions[i]);
	}
}
window.onload = onload_functions;

//---------функция отдачи элемента по его id
function EID(eid){return document.getElementById(eid);}

//---------удаляем необходимый элемент
function DEL(id){document.body.removeChild(EID(id));}

//---------Добавление в избранное
if (window.attachEvent){
	window.attachEvent('onload', function(){if(EID('toFavorit')!=null && browser.ie){EID('toFavorit').innerText='В избранное';}});
}
function AddInFavorite(obj){
	if(browser.ie){window.external.AddFavorite(obj.href,obj.title);}//--IE
	return false;
}
//---------Поисковый плагин
if (window.attachEvent){
	window.attachEvent('onload', function(){if(EID('search_plugin')!=null && browser.ie){EID('search_plugin').style.display='none';}});
}

//--обрезает пробелы в начале и в конце строки
function trim(s){
	while (s.substring(0,1) == ' ') {
		s = s.substring(1,s.length);
	}
	while (s.substring(s.length-1,s.length) == ' ') {
		s = s.substring(0,s.length-1);
	}
	return s;
}
// Удаление пробелов var str = ' \n\t\r test \n\t\r '; alert('!' + str.ltrim() + '!'); alert('!' + str.rtrim() + '!'); alert('!' + str.trim() + '!');
if ('undefined' == typeof String.prototype.ltrim) {
  String.prototype.ltrim = function() {
    return this.replace(/^\s+/, '');
  }
}

if ('undefined' == typeof String.prototype.rtrim) {
  String.prototype.rtrim = function() {
    return this.replace(/\s+$/, '');
  }
}

if ('undefined' == typeof String.prototype.trim) {
  String.prototype.trim = function() {
    return this.replace(/^\s+/, '').replace(/\s+$/, '');
  }
}


//--Функции вывода описания ввода, пример: onFocus="foc(this)" onBlur="blu(this)" value="описание"
function foc(obj){
         if(obj.alt=='' || typeof(obj.alt)=='undefined'){obj.alt=obj.value;}
         if(obj.value==obj.alt){obj.value='';}
}
function blu(obj){
        if(obj.value==''){obj.value=obj.alt;}
}
//--создание массива кэшированных изображений var myimages = preloadimages("/img0.gif","/img1.gif"...);
function preloadimages(){
	var myimg=new Array();
	for (i=0;i<preloadimages.arguments.length;i++){
		myimg[i]=new Image();
		myimg[i].src=preloadimages.arguments[i];
	}
	return myimg;
}
//---------Проверка полей
function check_field(form, type_check, name_field, message){
		//-------------регулярки отдают true если срабатывает условие, и null в обратном случае
		
		//--регулярка на мыло
        mail = /^([\w\.\-]+)@([a-z0-9\-]+)\.([a-z0-9\-\.]+)$/i;//--условие: обязательное сопостовление указанной регулярке

        //--регулярка на цирфру
        inte = /[0-9\-\(\)\s]+/i;//--условие: обязательное присутствие хотябы 1 цифры

        //--регулярка на букву
        text = /[a-zа-я\-\.\s]+/i;//--условие: присутствие хотябы 1 буквы

        //--регулярка на пробел
        blank = /\s+/;//--условие: присутсвие хотябы 1 пробела, включая space, tab, form feed, line feed. Эквивалентно [ \f\n\r\t\v].
        
        obj = form[name_field];
        if(obj!=null && typeof(obj)!='undefined'){
        	obj_value = trim(obj.value);
	        /*
	        Примеры:
	        if(obj.value.match(blank)!=null){//--если хотябы один пробел найден - выдаем сообещине:
	        	alert("пробел найден="+obj.value.match(blank)+"=");
	        }
	        if(obj.value.match(blank)==null){//--если хотябы один пробел не найден - выдаем сообещине:
	        	alert('пробел не найден');
	        }
	        if(obj.value.match(blank)){//--если хотябы один пробел найден - выдаем сообещине:
	        	alert("пробел найден="+obj.value.match(blank)+"=");
	        }
	        */
	        //alert("="+obj.value.match(eval(type_check))+"=");
	        if(obj_value.match(eval(type_check))==null || obj_value==''){
	            obj.value = obj_value;
	            obj.style.border='#FF0000 1px solid';
	            return "- Вы не указали "+message+". Исправьте, пожалуйста!\n";
	    	}else{
	    		obj.value = obj_value;
	    		obj.style.border='#cccccc 1px solid';
	    		return "";
	    	}
    	}else{
    		alert("- Поле с name: "+name_field+" не найдено\n");
    		return "+";
    	}
}

// функция подгрузки элементов, пример: setInterval("AjaxLoad('/js/ajax_analitic.php')", 3000);
function AjaxLoad(url){
	
	var nocache = Math.round(Math.random() * 1000000000);
	//alert(url+"?nocache="+nocache);
	var elem = document.createElement('script');
	var obj=document.body.insertBefore(elem, document.body.firstChild);
	obj.setAttribute('id', nocache);
	obj.setAttribute('language', 'Javascript');
	obj.setAttribute('type', 'text/javascript');
	obj.setAttribute('src', url+"?nocache="+nocache);
	setTimeout("DEL('"+nocache+"')", 2000);
}

// новое виртуальное окно с изображением - Пример ---return openIMG('700','500',this.href)"---
function openIMG(w,h,puth){
	var valLeft = (screen.width) ? (screen.width-w)/2 : 0;//--отступ слева
	var valTop = (screen.height) ? (screen.height-h)/2 : 0;//--отступ сверху
	var features = 'width='+w+',height='+h+',left='+valLeft+',top='+valTop+',';
	myWin = window.open("pic.htm", 'name_up', features+'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=0,resizable=0');
	myWin.document.write("<html><head><title>Изображение</title><body topmargin=0 leftmargin=0><img src="+puth+" border=0></body></html>");
	return false;
}

// функция открывает новое виртуальное окно
function OpenWindow(w,h,puth){
	var valLeft = (screen.width) ? (screen.width-w)/2 : 0;//--отступ слева
	var valTop = (screen.height) ? (screen.height-h)/2 : 0;//--отступ сверху
	var features = 'width='+w+',height='+h+',left='+valLeft+',top='+valTop+',';
	window.open(puth, 'name_up', features+'toolbar=0,location=0,directories=0,status=0,menubar=0,scrollbars=1,resizable=0');
	return false;
}


// функция определения значения определенной куки
function GetCookie(name_to_get) {
    var cookie_pair;
    var cookie_name;
    var cookie_value;
    //--Разбиваем куку в массив
    var cookie_array = document.cookie.split('; ')
    //--Пробегаем по массиву кук
    for (var counter = 0; counter < cookie_array.length; counter++) {
            //--Разбиваю куку на имя/значение
        cookie_pair = cookie_array[counter].split('=');
        cookie_name = cookie_pair[0];
        cookie_value = cookie_pair[1];
        //--Сравниваем имя куки с тем именем, которое нужно нам
        if (cookie_name == name_to_get) {
                 //--Если нашли нужную нам куку, то возвращаем её значение
            return cookie_value;
        }
    }
    //--Если куку не нашли, возвращаем null
    return null;
}

//--Функция определения позиции элемента
function PosElement(thisitem){
	if(typeof(thisitem) != 'object') {thisitem = document.getElementById(thisitem);}
	var ww = thisitem.offsetWidth, hh = thisitem.offsetHeight;
	for (var xx = 0,yy = 0; thisitem != null; xx += thisitem.offsetLeft,yy += thisitem.offsetTop,thisitem = thisitem.offsetParent);
	return {Left:xx, Top:yy, Right:xx + ww, Bottom:yy + hh}//--левый, верхний, правый, нижний
}
function addEngine(url_src, url_img, info){
	if(typeof(url_src)=='undefined'){ var url_src = 'http://www.starsite.ru/js/starsite.src'; }
	if(typeof(url_img)=='undefined'){ var url_img = 'http://www.starsite.ru/img/srch_but.gif'; }
	if(typeof(info)=='undefined'){ var info = 'Lebnik'; }
	
	if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) { 
		window.sidebar.addSearchEngine(url_src, url_img, info, '0');
	} else {
		alert("Извините, чтобы установить плагин поиска, Вы должны использовать браузер Firefox.");
	}
	return false;
}

var IntervalID = null;
var puthSubMenu = null;
function ShowPuthSubMenu(e, id){
	if(puthSubMenu){RealHidePuthSubMenu();}
	var elem = PosElement(e);
	puthSubMenu = EID(id);
	puthSubMenu.style.top = elem.Bottom+1;
	puthSubMenu.style.left = elem.Left;
	RealShowPuthSubMenu();
}
function HidePuthSubMenu(){
	IntervalID = setTimeout("RealHidePuthSubMenu()",100);
}
function RealShowPuthSubMenu(){
	clearInterval(IntervalID);
	puthSubMenu.style.visibility = "visible";
}
function RealHidePuthSubMenu(){
	puthSubMenu.style.visibility = "hidden";
}