
function do_nothing(){

return void(0)

}

function $_(objid){

	return document.getElementById(objid);

}



// 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);
}

/* FUCKING REDTRAM - it has my function for working with cookie!!! */
// function working with cookies
function setFRCookie (name, value, expires, path, domain, secure) {
      document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}

function getFRCookie(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);
}


/* 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()+3*60*60*1000);
   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())";
var outputTime="leadingZero(timeSource().getHours())+':'+leadingZero(timeSource().getMinutes())";

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) {
	
	var j=0
//	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)
		{
		if (document.getElementById(holder+"_"+ j) != undefined)
			document.getElementById(holder+"_"+ j).className = 'zak_bord'
		document.getElementById(holder+"_h_"+ j).style.display = 'none'
		}
		else 
		{
			document.getElementById(holder+"_h_"+ j).style.display = 'block'
			}
		j++
		}

	if (obj != undefined){
		obj.className = 'small_zak_act'
		obj.blur()
	}
	return false
}

// show hide element
function show_hide_elem(objid){
			
	var dsp = document.getElementById(objid).style.display;
	if (dsp == 'none')
		document.getElementById(objid).style.display = '';
	else
		document.getElementById(objid).style.display = 'none';
		
}


// 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;
	}
}

/* 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;


/* 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;
}

/* visual image for loading 
*  ver 2.0
* 
*  History: 
*	2.0	added new params for includoing new features - ['layerd'] feature
*/
function showLoader(objid, params){

	var obj = $_(objid);
	// generate uniq id - we need to initialize date object each time for unique id
	var tmpdt = new Date;
	var id = tmpdt.getTime();
		
	if (obj){
		if (typeof params != "undefined" && params.layered){
			var el = elem('div', {'class' : 'loader-abs', 'id' : 'loader_'+id});
			el.innerHTML = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="200" height="100" id="comm_wait" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' +skin_img_dir + 'comm_wait.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><embed src="' +skin_img_dir + 'comm_wait.swf" wmode="transparent" quality="high" width="200" height="100" name="comm_wait" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object>';
			obj.appendChild(el);
		} else
			obj.innerHTML = '<span class="loader" id="loader_'+id+'"><object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="200" height="100" id="comm_wait" align="middle"><param name="allowScriptAccess" value="sameDomain" /><param name="movie" value="' +skin_img_dir + 'comm_wait.swf" /><param name="quality" value="high" /><param name="wmode" value="transparent" /><embed src="' +skin_img_dir + 'comm_wait.swf" wmode="transparent" quality="high" width="200" height="100" name="comm_wait" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" /></object></span>';
	}
}


/* preloader class */
function pphpPreLoader(params){
	this._init(params);
}

pphpPreLoader.prototype = {

	_items : null,
	_mode : 'standart', /* standart mode for showing - can be 'standart' and 'float' */
	
	/* constructor */
	_init: function(params){
		
		if (typeof params != "undefined"){
			if (params.mode)
				this._mode = params.mode;
					
		}
		
		this._items = {};
				
	},
	
	create : function(objid, mode){
	
		var tmpdt = new Date;
		// generate uniq id - we need to initialize date object each time for unique id
		var ticket = tmpdt.getTime();
		
		var tmode = (typeof mode != "undefined" && mode ? mode : this._mode);
		var obj = (typeof objid != "undefined" && objid ? $_(objid) : document);
		
		this._items[ticket] = {'mode' : tmode, 'owner' : obj};
		
		switch (tmode){
		
		case 'float' :
			var el = elem('div', {'class' : 'loader-abs', 'id' : 'loader_'+ticket});
			el.innerHTML = '<div style="width: 100%; text-align: center"><img align="center"<img src="' +skin_img_dir + 'upl_comments.gif" vspace="20" hspace="20"/></div>';
			// hack for IE, which don't support absolute in relative normally
			if (!(/MSIE/.test(navigator.userAgent)))
				obj.style.position = 'relative';
			obj.appendChild(el);
			break;
			
		case 'standart' :
		default:
			obj.innerHTML = '<span class="loader" id="loader_'+ticket+'"><img src="' +skin_img_dir + 'upl_comments.gif" vspace="20" hspace="20"/></span>';
			
			break;
		}
		
		return ticket;
	
	},
	
	destroy : function(ticket){
	
		if (this._items[ticket]){
			switch (this._items[ticket].mode){
			case 'float':
				//this._items[ticket].owner.style.position = 'static';
				this._items[ticket].owner.removeChild($_('loader_'+ticket)); break;
			case 'standart':
			default: 
				//this._items[ticket].owner.innerHTML = '';
			}
			delete this._items[ticket];
		}
	
	}	

}

// adding preloader to portal
if (typeof portal != "undefined")
	portal.loader = new pphpPreLoader({'mode' : 'float'});


/*
* function show/hide eleemnt
* ver 1.1
*
* History:
*	1.1	09.11.08/goshi	added returned value
* 	1.0	20.08.08	
*/
function showHide(oId){
	var aObj = $_(oId);
	if (aObj){
		if (aObj.style.display == 'none'){
			aObj.style.display = 'block';
		}else{
			aObj.style.display = 'none';
		}
		
		return aObj.style.display;
	}
}

