
function do_nothing(){

return void(0)

}


// open new window
var myWindow;
function show(url,wi,he,title_win) {
	
	if (myWindow != null){
		myWindow.close();
		myWindow = null;
	}
	lpos = (screen.width) ? (screen.width-wi)/2 : 0;
	tpos = (screen.height) ? (screen.height-he)/2 : 0;
	myWindow = window.open(url, title_win, "top="+tpos+",left="+lpos+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,personalbar=no,resizable=no,width=" + wi + ",height=" + he + ",outerheight=0,outerwidth=0");
                
	myWindow.focus();
                
} 
        
function show_resized(url,wi,he,title_win) {
	
	lpos = (screen.width) ? (screen.width-wi)/2 : 0;
	tpos = (screen.height) ? (screen.height-he)/2 : 0;
	myWindow = window.open(url, title_win, "top="+tpos+",left="+lpos+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,personalbar=no,resizable=yes,width=" + wi + ",height=" + he + ",outerheight=0,outerwidth=0");
	
}

function show_resized_scroll(url,wi,he,title_win) {
	
	if (myWindow != null){
		myWindow.close();
		myWindow = null;
	}
	
	lpos = (screen.width) ? (screen.width-wi)/2 : 0;
	tpos = (screen.height) ? (screen.height-he)/2 : 0;
	myWindow = window.open(url, title_win, "top="+tpos+",left="+lpos+",toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,personalbar=no,resizable=yes,width=" + wi + ",height=" + he + ",outerheight=0,outerwidth=0");
	
}
/*var myWindow;
function show(url,wi,he,title_win) {
	
	myWindow = window.open(url, title_win, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,personalbar=no,resizable=no,width=" + wi + ",height=" + he + ",outerheight=0,outerwidth=0");
}  

function show_resized(url,wi,he,title_win) {
	
	myWindow = window.open(url, title_win, "toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,personalbar=no,resizable=yes,width=" + wi + ",height=" + he + ",outerheight=0,outerwidth=0");
}  */

function sethome(o,siteurl,sitename) {
	var name = navigator.appName;
	var useragent = navigator.userAgent;
	var version = parseInt(navigator.appVersion);
	var needtoknow = 1;
	
	if ( useragent.indexOf("MSIE") != -1) {
			var index = navigator.userAgent.indexOf("MSIE ");
			if ( index != -1 ) {
				version = parseInt(navigator.userAgent.substring(index+5,index+6));
			}
			if ( version > 4) {
				o.style.behavior='url(#default#homepage)'; o.setHomePage(siteurl);
				needtoknow = 0;
			}
	}
//	if (needtoknow != 0) {
	//	alert('/help/makehomepage.html','winMakeHomepage','location=no,menubar=no,scrollbars=yes,resizable=yes,width=500,height=450');
	//}
}



var utf8_rus = {
		'é' : '%E9',
		'ö' : '%F6',
		'ó' : '%F3',
		'ê' : '%EA',
		'å' : '%E5',
		'í' : '%ED',
		'ã' : '%E3',
		'ø' : '%F8',
		'ù' : '%F9',
		'ç' : '%E7',
		'õ' : '%F5',
		'ú' : '%FA',
		'ô' : '%F4',
		'û' : '%FB',
		'â' : '%E2',
		'à' : '%E0',
		'ï' : '%EF',
		'ð' : '%F0',
		'î' : '%EE',
		'ë' : '%EB',
		'ä' : '%E4',
		'æ' : '%E6',
		'ý' : '%FD',
		'ÿ' : '%FF',
		'÷' : '%F7',
		'ñ' : '%F1',
		'ì' : '%EC',
		'è' : '%E8',
		'ò' : '%F2',
		'ü' : '%FC',
		'á' : '%E1',
		'þ' : '%FE',
		'¿' : '%BF',
		'³' : '%B3',
		'º' : '%BA',
		'É' : '%C9',
		'Ö' : '%D6',
		'Ó' : '%D3',
		'Ê' : '%CA',
		'Å' : '%C5',
		'Í' : '%CD',
		'Ã' : '%C3',
		'Ø' : '%D8',
		'Ù' : '%D9',
		'Ç' : '%C7',
		'Õ' : '%D5',
		'Ú' : '%DA',
		'Ô' : '%D4',
		'Û' : '%DB',
		'Â' : '%C2',
		'À' : '%C0',
		'Ï' : '%CF',
		'Ð' : '%D0',
		'Î' : '%CE',
		'Ë' : '%CB',
		'Ä' : '%C4',
		'Æ' : '%C6',
		'Ý' : '%DD',
		'ß' : '%DF',
		'×' : '%D7',
		'Ñ' : '%D1',
		'Ì' : '%CC',
		'È' : '%C8',
		'Ò' : '%D2',
		'Ü' : '%DC',
		'Á' : '%C1',
		'Þ' : '%DE',
		'¯' : '%AF',
		'²' : '%B2',
		'ª' : '%AA',
		'"' : '%22',
		'#' : '%23',
		'$' : '%24',
		'%' : '%25',
		'&' : '%26',
		'+' : '%2B',
		'/' : '%2F',
		':' : '%3A',
		';' : '%3B',
		'<' : '%3C',
		'=' : '%3D',
		'>' : '%3E',
		'?' : '%3F',
		'[' : '%5B',
		'\\' : '%5C',
		']' : '%5D',
		'^' : '%5E',
		'`' : '%60',
		'{' : '%7B',
		'|' : '%7C',
		'}' : '%7D',
		',' : '%2C',
		'\'' : '%27'
}; 

function right_escape(s){
	// BE Careful - encodeURI works badly!!!
	//if(self.encodeURI)  return encodeURI(s); //standart method
	//if we have not found 
	res="";
	for(i=0;i<s.length;i++){
		//try to recode
		if (utf8_rus[s.charAt(i)] != null) res+=utf8_rus[s.charAt(i)]
		else res+=s.charAt(i)
	}
	return res;
}

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;
}



/**
 	* This array is used to remember mark status of rows in browse mode
 	*/
	var marked_row = new Array; 
 
        /**
 	* Sets/unsets the pointer and marker in browse mode
 	*
 	* @param   object    the table row
 	* @param   integer  the row number
 	* @param   string    the action calling this script (over, out or click)
 	* @param   string    the default background color
 	* @param   string    the color to use for mouseover
 	* @param   string    the color to use for marking a row
 	*
 	* @return  boolean  whether pointer is set or not
 	*/
	function setPointer(theRow, theRowNum, theAction, theDefaultColor, thePointerColor, theMarkColor)
	{
   	 var theCells = null;

   	 // 1. Pointer and mark feature are disabled or the browser can't get the
    	//    row -> exits
    	if ((thePointerColor == '' && theMarkColor == '')
      	  || typeof(theRow.style) == 'undefined') {
     	   return false;
    	}

    	// 2. Gets the current row and exits if the browser can't get it
    	if (typeof(document.getElementsByTagName) != 'undefined') {
     	   theCells = theRow.getElementsByTagName('td');
    	}
    	else if (typeof(theRow.cells) != 'undefined') {
        	theCells = theRow.cells;
    	}
    	else {
        	return false;
    	}

    	// 3. Gets the current color...
    	var rowCellsCnt  = theCells.length;
    	var domDetect    = null;
    	var currentColor = null;
    	var newColor     = null;
    	// 3.1 ... with DOM compatible browsers except Opera that does not return
    	//         valid values with "getAttribute"
    	if (typeof(window.opera) == 'undefined'
        	&& typeof(theCells[0].getAttribute) != 'undefined') {
        	currentColor = theCells[0].getAttribute('bgcolor');
        	domDetect    = true;
    	}
    	// 3.2 ... with other browsers
    	else {
        	currentColor = theCells[0].style.backgroundColor;
        	domDetect    = false;
    	} // end 3

    	// 3.3 ... Opera changes colors set via HTML to rgb(r,g,b) format so fix it
    	if (currentColor.indexOf("rgb") >= 0)
    	{
        	var rgbStr = currentColor.slice(currentColor.indexOf('(') + 1,
                                     currentColor.indexOf(')'));
        	var rgbValues = rgbStr.split(",");
        	currentColor = "#";
        	var hexChars = "0123456789ABCDEF";
        	for (var i = 0; i < 3; i++)
        	{
            	var v = rgbValues[i].valueOf();
            	currentColor += hexChars.charAt(v/16) + hexChars.charAt(v%16);
        	}
    	}

    	// 4. Defines the new color
    	// 4.1 Current color is the default one
    	if (currentColor == ''
        	|| currentColor.toLowerCase() == theDefaultColor.toLowerCase()) {
        	if (theAction == 'over' && thePointerColor != '') {
            		newColor = thePointerColor;
        	}
        	else if (theAction == 'click' && theMarkColor != '') {
            		newColor              = theMarkColor;
            		marked_row[theRowNum] = true;
            	// Garvin: deactivated onclick marking of the checkbox because it's also executed
            	// when an action (like edit/delete) on a single item is performed. Then the checkbox
            	// would get deactived, even though we need it activated. Maybe there is a way
            	// to detect if the row was clicked, and not an item therein...
            	// document.getElementById('id_rows_to_delete' + theRowNum).checked = true;
        	}
    	}
    	// 4.1.2 Current color is the pointer one
    	else if (currentColor.toLowerCase() == thePointerColor.toLowerCase()
             	&& (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])) {
        	if (theAction == 'out') {
            		newColor              = theDefaultColor;
        	}
        	else if (theAction == 'click' && theMarkColor != '') {
            		newColor              = theMarkColor;
            		marked_row[theRowNum] = true;
            		// document.getElementById('id_rows_to_delete' + theRowNum).checked = true;
        	}
    	}
    	// 4.1.3 Current color is the marker one
    	else if (currentColor.toLowerCase() == theMarkColor.toLowerCase()) {
        	if (theAction == 'click') {
            	newColor              = (thePointerColor != '')
              	                   	? thePointerColor
              	                   	: theDefaultColor;
            	marked_row[theRowNum] = (typeof(marked_row[theRowNum]) == 'undefined' || !marked_row[theRowNum])
                                  	? true
                                  	: null;
            	// document.getElementById('id_rows_to_delete' + theRowNum).checked = false;
        	}
    	} // end 4

    	// 5. Sets the new color...
    	if (newColor) {
        	var c = null;
        	// 5.1 ... with DOM compatible browsers except Opera
        	if (domDetect) {
            	for (c = 0; c < rowCellsCnt; c++) {
                	theCells[c].setAttribute('bgcolor', newColor, 0);
            	} // end for
        	}
        	// 5.2 ... with other browsers
        	else {
            		for (c = 0; c < rowCellsCnt; c++) {
                		theCells[c].style.backgroundColor = newColor;
            		}
        	}
    	} // end 5

    	return true;
	} // end of the 'setPointer()' function 
	

// function working with cookies
function setCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

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);
}

/* fucntion for working with arrays */
function setCookieArr (name, value, expires, path, domain, secure) {

     if (typeof value == 'object'){
      	var arrstr = "";
      	for (i in value){
      		arrstr += i+","
      	}
      	setCookie (name, arrstr, expires, path, domain, secure)
      }
          
}

function getCookieArr (name) {

     var tmp = getCookie(name);
     var json = {};
     if (tmp.length > 0) {
     	var tmpb = tmp.split(',');
     	for (var i=0;i<tmpb.length;i++){
     		//alert("tmpb["+i+"]='"+tmpb[i]+"'");
     		if (tmpb[i] != '' || tmpb[i] != 0) json[tmpb[i]] = 1;
     	}
     }
     return json;    
}

/* json function */
function addToJson(json, elemname, value){
	json[elemname] = value;
}

function removeFromJson(json, elemname){
	delete json[elemname];
}



function getLikeElements(tagName, attrName, attrValue) {
    var startSet;
    var endSet = new Array( );
    if (tagName) {
        startSet = document.getElementsByTagName(tagName);    
    } else {
        startSet = (document.all && !window.opera) ? document.all : 
            document.getElementsByTagName("*");
    }
   // alert(attrName)
    if (attrName) {
        for (var i = 0; i < startSet.length; i++) {
            if (startSet[i] && startSet[i].getAttribute(attrName)) {
                if (attrValue) {
                    if (startSet[i] && startSet[i].getAttribute(attrName) == attrValue) {
                        endSet[endSet.length] = startSet[i];
                    }
                } else {
                    endSet[endSet.length] = startSet[i];
                }
            }
        }
    } else {
        endSet = startSet;
    }
    return endSet;
   
   
  
}



// date fucntion date
function timeSource(){
   x=new Date(timeNow().getUTCFullYear(),timeNow().getUTCMonth(),timeNow().getUTCDate(),timeNow().getUTCHours(),timeNow().getUTCMinutes(),timeNow().getUTCSeconds());
   x.setTime(x.getTime()+7200000);
   return x;
}
function timeNow(){
   return new Date();
}
function leadingZero(x){
   return (x>9)?x:'0'+x;
}
function displayTime(){
   document.getElementById('disp').innerHTML=eval(outputTime);
   setTimeout('displayTime()',1000);
}
var outputTime="leadingZero(timeSource().getHours())+':'+leadingZero(timeSource().getMinutes())+':'+leadingZero(timeSource().getSeconds())";

function strt()
{
	displayTime();
}
//

function bookmark(){
    var title= document.title;
    var url= location.href;

    if (window.sidebar) window.sidebar.addPanel(title, url,"");

    else if( window.opera && window.print )
    {
    var mbm = document.createElement('a');
    mbm.setAttribute('rel','sidebar');
    mbm.setAttribute('href',url);
    mbm.setAttribute('title',title);
    mbm.click();
    }
    else if( document.all ) window.external.AddFavorite( url, title);
} 

// working with tabs
function sw_tab (aobj, holder, tp) {
	
	var j=0
	if (!tp) tp = '';
//	alert (document.getElementById(holder+"_"+ j))
	var obj = document.getElementById(aobj)
	while (document.getElementById(holder+"_"+ j)&& document.getElementById(holder+"_"+ j)!="undefined"){
		if (document.getElementById(holder+"_"+ j)!=obj)
		{
		document.getElementById(holder+"_"+ j).className = 'zak_bord'+tp
		document.getElementById(holder+"_h_"+ j).style.display = 'none'
		}
		else 
		{
			document.getElementById(holder+"_h_"+ j).style.display = 'block'
			}
		j++
		}
//	alert (obj.id)
	obj.className = 'small_zak_act'+tp
	obj.blur()
	return false
}

// pager key-code checker 
CheckKeyCodePgr = function(event, uid){
	if ({13:1}[event.which||event.keyCode]){
		return eval("pager_on_chg"+uid)();
	}
			
	keycode = event.which ? event.which : event.keyCode;

	if((keycode >= 48 && keycode <= 57) || (keycode >= 37 && keycode <= 40) || keycode == 8) {
		return true; 
	} else {
		return false;
	}
}


// Ajax pager key-code checker 
CheckKeyCodePgrAjx = function(event, uid){
	if ({13:1}[event.which||event.keyCode]){
		updPage(document.getElementById("newppage"+uid).value);
		return false;
	}
			
	keycode = event.which ? event.which : event.keyCode;

	if((keycode >= 48 && keycode <= 57) || (keycode >= 37 && keycode <= 40) || keycode == 8) {
		return true; 
	} else {
		return false;
	}
}


/* DOM function for creating or removing elements */
function elem(name, attrs, style, text) {
    var e = document.createElement(name);
    if (attrs) {
        for (key in attrs) {
            if (key == 'class') {
                e.className = attrs[key];
            } else if (key == 'id') {
                e.id = attrs[key];
            } else {
                e.setAttribute(key, attrs[key]);
            }
        }
    }
    if (style) {
        for (key in style) {
            e.style[key] = style[key];
        }
    }
    if (text) {
        e.appendChild(document.createTextNode(text));
    }
    return e;
}


/* regular expressions for form elements */
var email_reg=/[0-9a-z_]+@[0-9a-z_^.]+.[a-z]{2,3}/i;

var url_reg=/(http):\/\/([_a-z\d\-]+(\.[_a-z\d\-]+)+)(([_a-z\d\-\\\.\/])+[_a-z\d\-\\\/])/i;

var date_reg=/\d{4}-\d{2}-\d{2}\s(\d{1,2}):(\d{1,2}):(\d{1,2})/i;

var date2_reg=/\d{4}-\d{1,2}-\d{1,2}/i;