var psHistory = Array();
var PageContentId = 'psPageContent';
var PageNameId = 'psPageName';
var PagePathId = 'psPagePath';
var LoadingId = 'psLoading';
var PageOldContent = 'psOldContent';
var CityData = Array();

function psLoadProgress()
{
	PageContentDiv = document.getElementById(PageContentId);
	var HeightContent = PageContentDiv.offsetHeight+'px';
	var WidthContent = PageContentDiv.offsetWidth+'px';	
	PageContentDiv.style.width = WidthContent;
	PageContentDiv.style.height = HeightContent;
	PageContentDiv.style.overflow = 'hidden';
	PageContentDiv.innerHTML = '<div id="'+PageOldContent+'">'+PageContentDiv.innerHTML+'</div><div id="'+LoadingId+'"><div><img src="'+IMG+'_tpl_loading.gif" height="66" width="66" style="margin:90px 0px 20px 0px" /></div><div>Загрузка</div></div>';
	
	loader=document.getElementById(LoadingId);

	loader.style.width = WidthContent;
	loader.style.height = '200%';
	loader.style.zIndex = '1001';
	loader.style.top = '-'+HeightContent;

	OldContent = document.getElementById(PageOldContent);
	OldContent.style.zIndex = '1000';
	OldContent.style.position = 'relative';
	loader.style.position = 'relative';
}

function psLoaded()
{
	PageContentDiv = document.getElementById(PageContentId);
	PageContentDiv.style.height = 'auto';	
	PageContentDiv.style.overflow = 'inherit';	
}

function psLoadPageContent(url)
{
	psLoadProgress();
	reqMain = new JsHttpRequest();
	reqMain.caching = false;
	reqMain.open('GET',url,true);
	var sdata = Array();
	sdata['ajax'] = '1';
	reqMain.send(sdata);
	reqMain.onreadystatechange = function()
	{
		if (reqMain.readyState == 4)
		{
			if (reqMain.responseJS)
			{
				PagePathValue = reqMain.responseJS.PagePath;
				if ( PagePathValue !== null )
					document.getElementById(PagePathId).innerHTML = PagePathValue;
					
				PageNameValue = reqMain.responseJS.PageName;
				if ( PageNameValue !== null )
					document.getElementById(PageNameId).innerHTML = PageNameValue;

				PageContentValue = reqMain.responseJS.PageContent;
				if ( PageContentValue !== null )
					document.getElementById(PageContentId).innerHTML = PageContentValue;
				psInsertHistory(url);	
				psLoaded();
			}
		}
	}
}

function psLoadCountry(obj){
	val = obj.options[obj.selectedIndex].value;
	if (val == 0) return false;
	
	if (CityData[val])
	{
		psSetCity(CityData[val],obj);
		return;
	}
	
	reqMain = new JsHttpRequest();
	reqMain.caching = false;
	reqMain.open('GET','/spr.php',true);
	var sdata = Array();
	sdata['id'] = 115;	
	sdata['xid'] = val;
	obj.form.elements['doc_country'].disabled = true
	obj.form.elements['doc_city'].disabled = true
	reqMain.send(sdata);
	reqMain.onreadystatechange = function(){
		if (reqMain.readyState == 4){
			if (reqMain.responseJS){
				CityData[val] = reqMain.responseJS.PageContent;
				psClearSelect(obj.form.elements['doc_city']);
				psSetCity(CityData[val],obj);
			}
		}
	}
}

function psSetCity(data,obj)
{
	if (data !== null )
	{
		n = 0;
		for (var prop in data){
			obj.form.elements['doc_city'].options[n] = new Option(data[prop].name,data[prop].id);
			n++;
		}
		obj.form.elements['doc_city'].disabled=false;
		obj.form.elements['doc_country'].disabled = false;
		obj.form.elements['doc_city'].style.display = 'block';
	}	
}

function psPrepareArray(obj)
{
	var A = Array();

	for (var prop in obj)
		A[prop] = obj[prop];

	return A;
}	

function psInsertHistory(url)
{
	psHistory[psHistory.length] = url;
}

function psBackHistory(url)
{
	if(psHistory.length > 0)
		psLoadPageContent(psHistory[psHistory.length-2]);
	else if (url!= '')
		window.location = url;
	else if (history.length)
		history.back();
}

// ------------------------------------------------------

// ------------------------------------------------------

function show_hide(id)
{
	var showObj=document.getElementById(id).style;
	if(showObj.display=="none"){
		showObj.display="";
	}
	else{
		showObj.display="none";
	}
}

function psHideSelects()
{
	var sel = document.getElementsByTagName('select');
	for(var i=0; i<sel.length;i++)
		if (sel[i].style.display!='none')
		{
			sel[i].wasClosed = true;			
			sel[i].lastDisplay = sel[i].style.display;
			sel[i].style.display = 'none';
		}
		
	var emd = document.getElementsByTagName('embed');
	for(var i=0; i<emd.length;i++)
		if (emd[i].style.visibility!='hidden')
		{
			emd[i].wasClosed = true;
			emd[i].lastDisplay = emd[i].style.visibility;
			emd[i].style.visibility = 'hidden';
		}		
}

function psShowSelects()
{
	var sel = document.getElementsByTagName('select');
	for(var i=0; i<sel.length;i++)
		if (sel[i].wasClosed)
		{
			sel[i].wasClosed = false;
			sel[i].style.display = sel[i].lastDisplay;
		}
		
	var emd = document.getElementsByTagName('embed');
	for(var i=0; i<emd.length;i++)
		if (emd[i].wasClosed)
		{
			emd[i].wasClosed = false;
			emd[i].style.visibility = emd[i].lastDisplay;
		}				
}

// - Windows --------------------------------------------

var currentWindow;

function psPopImg(obj) {
	psLoadingOn();
	i = new Image();
	i.style.cursor = 'pointer';
	i.title='Закрыть';

	i.onload = function(){
		objWindow =	psCreateDiv('psWindow');
		objWindow.style.position = 'absolute';
		objWindow.style.zIndex = 1100;

		objWindow.innerHTML='<div class="popup-img"><div class="top"><a onclick="return psClosePopUp();" href="#"><img src="'+IMG+'st_window_but_close.gif" height="26" width="88" /></a></div><div class="body" id="psWindowBody"></div></div>';
		document.getElementById("psWindowBody").appendChild(i);

		psLoadingOff();
		psPosionPopUp(objWindow);		
		psAddHandler(document, 'mousedown', psClosePopUp);		
	}

	i.src = obj.href;
	return false;
}

function psOpenInPopUp (idName,url,simple){
	
	simple = (simple)?simple:false;

	if (!simple)
		closeBackGround();

	objWindow =	psCreateDiv('psWindow');
	objWindow.style.position = 'absolute';
	objWindow.style.zIndex = 1100;
	objSrc = document.getElementById(idName);

	if(url){
		psLoadingOn();		
		psCurrentWindowSrc = '';		
		currentWindow = url;		
		reqMain = new JsHttpRequest();
		reqMain.caching = false;
		reqMain.open('GET',url,true);
		var sdata = Array();
//		sdata['cmd'] = 'sendlink';
		reqMain.send(sdata);	
		reqMain.onreadystatechange = function(){
			if (reqMain.readyState == 4){
				if (reqMain.responseJS){
					psLoadingOff();					
					PageContent = reqMain.responseJS.PageContent;
					objWindow.innerHTML = PageContent;
					psPosionPopUp(objWindow,simple);
				}
			}
		}		
	}else{
		objWindow.innerHTML = objSrc.innerHTML;
		objSrc.innerHTML = '';	
		psCurrentWindowSrc = idName
		psPosionPopUp(objWindow,simple);
	}
	psAddHandler(document, 'mousedown', psClosePopUp);
	objWindow.onmousedown = function(event){psCancelBubbling(event);}
//	objWindow.onclick = function(event){psCancelBubbling(event);}		
}

function getVotingResult(div, href)
{
		reqMain = new JsHttpRequest();
		reqMain.caching = false;
		reqMain.open('GET', href,true);
		var sdata = Array();

		reqMain.send(sdata);	
		reqMain.onreadystatechange = function(){
			if (reqMain.readyState == 4){
				if (reqMain.responseJS){	
					document.getElementById("vName").innerHTML = reqMain.responseJS.vName;
					document.getElementById("vVotes").innerHTML = 'Всего голосов:&nbsp;' + reqMain.responseJS.vVotes;
					var msg = '<table>';
					for(i=1;i<reqMain.responseJS.vItems;i++){
						doc_vote = 0;
						doc_vote_percent = 0;
					msg = msg + '<tr><td align="left" nowrap >'+reqMain.responseJS['value'+i]+'</td><td width="100%" style="padding-left:20px; padding-bottom:5px;"><img src="'+IMG+'0.gif" width="'+reqMain.responseJS['width'+i]+'%" height="10" style="background:url('+IMG+'voting_result.gif) 0px 0px repeat-x; border:#CA7A94 1px solid;" alt="" />&nbsp;'+reqMain.responseJS['percent'+i]+'%&nbsp;<span class="vote">('+reqMain.responseJS['vote'+i]+')</span></td></tr>';
					}
					msg = msg + '</table>';
					document.getElementById("vItems").innerHTML = msg;
					psOpenInPopUp(div);
				}
			}
		}
}

function psPhotoListEdit(obj, action)
{
	var div = document.getElementById("allItems");
	var ico = div.getElementsByTagName("img");
	for(i=0;i<ico.length;i++){
		if(ico[i].className == "act")
		active = i;
	}
	var bigPhoto = 0;
	if(action == 0){
		if(active > 0){
				document.location.href = ico[active-1].parentNode.href;
		}
	}
	else{
		if(active < (ico.length-1)){
				document.location.href = ico[active+1].parentNode.href;
		}
	}

	
}

function psOpenFloatPopUp(a,evt,idName,url)
{
	if (gebi('psWindow')!= null){
		psClosePopUp();
		return false;		
	}
	
	psAddHandler(document.body, 'mousedown', psClosePopUp);
	
	psCancelBubbling(evt);
//	alert(document.getElementById('psWindow'));
	obj = psCreateDiv('psWindow');
	obj.className = idName;
	psMoveContent(idName,'psWindow');
	obj.style.top = (psAbsPosition(a).y+a.offsetHeight) + 'px';
	obj.style.left = psAbsPosition(a).x + 'px';
	
	obj.onmousedown = function(event){
		psCancelBubbling(event);
	}
//	alert(a.offsetHeight);

	return false;
}

function psClosePopUp(){
	if (document.getElementById(psCurrentWindowSrc))
	 document.getElementById(psCurrentWindowSrc).innerHTML = document.getElementById('psWindow').innerHTML;	
	psDeleteObj('psWindow');
	psDeleteObj('closeFonId');
//	document.body.style.overflowX = 'hidden';
	psShowSelects();
	psLoadingOff()	
	psRemoveHandler(document, 'mousedown', psClosePopUp);		
//	document.body.style.overflowX="auto";	
	return false;	
}

function closeBackGround(){
	psHideSelects();
//	document.body.style.overflowX = '';
	if (document.getElementById('closeFonId'))
		return false;

	obj = psCreateDiv('closeFonId');
	
	obj.className='psCloseBackGround';
	obj.style.height=psGetPageSize()[1]+'px';
	obj.style.width=psGetPageSize()[0]+'px';
//	psAddHandler(document, 'click', psClosePopUp);	
//	document.body.style.overflowX="hidden";	
}

function psPosionPopUp(obj,simple){
	var objTop=(((psGetPageSize()[3]-obj.offsetHeight)/2)+psGetPageScroll());
	var objLeft=((psGetPageSize()[0]-obj.offsetWidth)/2);
	if (simple){
		psMouse.getPosition();
		obj.style.top = psMouse.y+'px';
		obj.style.left = psMouse.x+'px';	
	}else{
		obj.style.top = (objTop<=0)?'0px':objTop+'px';
		obj.style.left = (objLeft<=0)?'0px':objLeft+'px';	
	}
}

function psLoadingOn(){
	closeBackGround();
	objLoader = psCreateDiv('psLoader');
	objLoader.innerHTML = 'Загрузка';
	psPosionPopUp(objLoader);
}

function psLoadingOff()
{
	psDeleteObj('psLoader');
}

// - Windows ----------------------------------------------

// - Send Form --------------------------------------------

function psSendComplaint(mod,xid){
	psOpenInPopUp(null,'/complaint?ajax=1&mod='+mod+'&xid='+xid,false);
}

function psSendForm(formData,postfix){
	postfix = (postfix)?postfix:'';
	currentWindow = formData.action;	
	reqMain = new JsHttpRequest();
	reqMain.caching = false;
	reqMain.open('POST',formData.action,false);

	var sdata = Array();

	for (var i=0; i<formData.elements.length; i++)
		sdata[formData.elements[i].name] = formData.elements[i].value;

	reqMain.send(sdata);
	reqMain.onreadystatechange = function(){
		if (reqMain.readyState == 4){
			if (reqMain.responseJS){
				psShowFormResult(reqMain.responseJS,postfix);
				return false;
			}
		}
	}

	return false;
}

function psShowFormResult(data,postfix){
	psFormErrorsId = document.getElementById('psFormErrors'+postfix);
	psFormMessegesId = document.getElementById('psFormMesseges'+postfix);
	psFormFieldsId = document.getElementById('psFormFields'+postfix);

	psFormMessegesId.style.display='none';
	psFormErrorsId.style.display='none';
	psFormErrorsId.innerHTML = '';
		
	if (data.Error){
		psFormErrorsId.style.display='';
		psFormErrorsId.innerHTML=data.Error;
		psReloadCaptcha(data,postfix);		
	}else if (data.Messeges){
		psFormMessegesId.style.display='';
		psFormFieldsId.style.display='none';
		psFormMessegesId.innerHTML=data.Messeges;		
	}else{
		psFormErrorsId.style.display='';
		psFormErrorsId.innerHTML='Ошибка при предаче данных';
	}
}

function psReloadCaptcha(data,postfix){
	psFormCaptchaId = document.getElementById('psFormCaptcha'+postfix);
	psFormCaptchaId.src = currentWindow+'?cmd=get_captcha&'+data.sid+'&'+data.rand
}

function psCloseAndReload(postfix)
{
	if (document.getElementById('psFormErrors'+postfix).style.display != '')
		return false;
	
	reloadForm = function()
	{
		var psFormMessegesId = document.getElementById('psFormMesseges'+postfix);
		var psFormFieldsId = document.getElementById('psFormFields'+postfix);		
		psFormMessegesId.style.display='none'; 
		psFormFieldsId.style.display=''; 
	}
	
	setTimeout("psClosePopUp(); reloadForm(); ", 1300);
	
	return false;
}

// - Send Form --------------------------------------------

// - Menu Overs --------------------------------------------
var psCurrentSubMenu;
var psCurrentSubMenuId;

function psChangeSubMenu(id,obj){
	obj.objLink = document.getElementById('menuTopPoint'+id);	
	
	obj.onmouseout = function(){
			this.src = PUB+'page_menu/page_top_menu_'+id+'.png';
			this.objLink.className = '';			
	}
	
	obj.src = PUB+'page_menu/page_top_menu_a'+id+'.png';	
	obj.objLink.className = 'active'		
		/*
		obj.objLink = document.getElementById('menuTopPoint'+id);		
		obj.mouseIsOver = true;		
		obj.onload = function (){
			if (this.mouseIsOver)
				this.objLink.className = 'active';
			else
				this.objLink.className = '';				
		}

		obj.onmouseout = function(){
			this.src = PUB+'page_menu/page_top_menu_'+id+'.png';
			this.mouseIsOver = false;
			this.objLink.className = '';			
		}

		obj.src = PUB+'page_menu/page_top_menu_a'+id+'.png';
		*/
}

function psLeftMenuOut(obj,src){
	obj.Img = obj.getElementsByTagName('img')[0];
	obj.Img.src = src;			
	obj.className = '';						
}

function psLeftMenuOver(obj){
	obj.Img = obj.getElementsByTagName('img')[0];
	obj.Img.height = obj.Img.offsetHeight;
	obj.Img.width = obj.Img.offsetWidth;
	obj.Img.sized = true;
	obj.Img.src = PUB+'img/0.gif';
	obj.className = 'bgA';		
		/*
		obj.mouseIsOver = true;

		obj.onclick = function (){
			window.location = obj.objLink.href;
		}

		obj.objImg.obj = obj;
		obj.objImg.onload = function (){
			if (this.obj.mouseIsOver)
				this.obj.className = 'bgA';
			else
				this.obj.className = '';				
		}

		obj.onmouseout = function(){
			this.objImg.src = obj.objImgLastUrl;
			this.mouseIsOver = false;
			this.className = '';			
		}

		obj.objImgLastUrl = obj.objImg.src;
		obj.objImg.src = url;
		*/
}

function psOver(url2,obj){
	obj.url1 = obj.src;
	obj.src = url2;
	obj.onmouseout = function(){
		obj.src = obj.url1;
	}
}


function psPreloadAllImg(){
	if(document.images)
		for (var i=0; i < document.images.length; i++){
			if(document.images[i].onmouseup){
				document.images[i].onmouseup();
			}
		}
}

// - Menu Overs ----------------------------------------------



//--- Flash --------------------------------------------------
function Flash( ) {

    this.transparent = true;
    this.needFlashVerion = 6;          
    this.flashvars = "xml_source=/ixml/&menuselid=0";
    this.BrowserInfo( );

}


Flash.prototype.BrowserInfo = function( ) { 
 
    var userAgent = navigator.userAgent.toLowerCase( );
       this.browserIE = ( userAgent.indexOf( 'msie' ) != -1 );

}

Flash.prototype.CheckVersionFlash = function( needVersion ) {
 
    if ( navigator.plugins[ 'Shockwave Flash' ] ) {
        matchStr = new RegExp ( '^[A-Za-z ]*(.*) .*$' );
        this.flashVerion = parseInt( navigator.plugins[ 'Shockwave Flash' ].description.replace( matchStr, '$1' ) );
        return ( needVersion <= this.flashVerion );
    }
    else if ( this.browserIE ) {
        for( var i = needVersion; i < needVersion + 10; i++ ) {
            try {
                    flashPlayer = new ActiveXObject( 'ShockwaveFlash.ShockwaveFlash.' + i );
                    this.flashVerion = i;
                    return true;
            }
            catch( e ) {
                continue;
            }
        }
        return false;     
    }
    else {
        this.flashVerion = 0;
        return false;
    }
 
}

Flash.prototype.Insert = function( ) {
	if ( this.CheckVersionFlash( this.needFlashVerion ) ) { 
		document.write( this.GenerateHtmlFlash( ) );
	}else{
		document.write( this.GenerateHtmlImage( ) );
	}
}

Flash.prototype.GenerateHtmlFlash = function( ) {
 
    var flashCode = '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" ';
    flashCode += 'codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version= ' + this.flashVerion + ',0,0,0"' + ' width="' + this.width + '" height="' + this.height + '" align="middle">';
    flashCode += '<param name="allowScriptAccess" value="always"/>';
    flashCode += '<param name="movie" value="' + this.srcFlash + '"/>';
    flashCode += '<param name="quality" value="high"/>';
    if ( this.base ) {
        flashCode += '<param name="base" value="' + this.base + '"/>';
    }
    if ( this.background ) {
        flashCode += '<param name="bgcolor" value="' + this.background + '"/>';
    }
    if ( this.transparent ) {
        flashCode += '<param name="wmode" value="transparent"/>';
    }
    if ( this.flashvars ) {
        flashCode += '<param name="flashvars" value="' + this.flashvars + '"/>';
    }
 
    flashCode += '<embed quality="high" allowScriptAccess="always" type="application/x-shockwave-flash"' + ' pluginspage="http://www.macromedia.com/go/getflashplayer" ';
    flashCode += 'src="' + this.srcFlash+'" ' + '" width="' + this.width + '" height="' + this.height + '" ';
    if ( this.base ){
        flashCode += ' base="' + this.base + '"';
    }
    if ( this.background ){
        flashCode += ' bgcolor="' + this.background + '"';
    }
    if ( this.transparent ){
        flashCode += ' wmode="transparent"'
    }
    if ( this.flashvars ){
        flashCode += ' flashvars="' + this.flashvars + '"';
    }
    flashCode += '></embed>';
 
    flashCode += '</object>';
    return flashCode;
 
}

Flash.prototype.GenerateHtmlImage = function( ) {
 
    var imageCode = '<img src="' + this.srcImage + '"/>';
    return imageCode;
 
}
//--- Flash --------------------------------------------------
//---- Операции с Checkbox---------------------------------------
function psCheckboxAllSet(frm, name, val){
        var el = frm.elements;
        for (count = 0; count < el.length; count++)
                if (el[count].name == name)
                        if (!el[count].disabled) el[count].checked = val;
}

function psCheckboxAllTest(frm, name, name2){
        var count2 = 0;
        var count3 = 0;
        var el = frm.elements;
        for (count = 0; count < el.length; count++)
                if (el[count].name == name){
                        count3++;
                        if (el[count].checked || el[count].disabled) count2++;
                }
        frm.elements[name2].checked = (count2== count3);
}

//---- Операции с Checkbox---------------------------------------

//-- Версия для печати ----------------------------
function psPrint(obj)
{
  popupWin = window.open(obj.href, '', 'width=700,height=600,toolbar=no,menubar=yes,location=no,status=yes,resizable=yes,scrollbars=yes,left=50,top=50');
  popupWin.focus();
  return false;   
}

function psSetCmd(obj,cmd)
{
	obj.form.cmd.value = cmd
	obj.form.submit();
//	return true;
}


//-- Версия для печати ----------------------------


//--------------------------------------------------------------------------
// Browser Check
//--------------------------------------------------------------------------
function LibBWCheck(){ //Browsercheck (needed)
	this.ver=navigator.appVersion
	this.agent=navigator.userAgent
	this.dom=document.getElementById?1:0
	this.opera5=this.agent.indexOf("Opera 5")>-1
	this.ie5=(this.ver.indexOf("MSIE 5")>-1 && this.dom && !this.opera5)?1:0; 
	this.ie6=(this.ver.indexOf("MSIE 6")>-1 && this.dom && !this.opera5)?1:0;
	this.ie4=(document.all && !this.dom && !this.opera5)?1:0;
	this.ie=this.ie4||this.ie5||this.ie6
	this.mac=this.agent.indexOf("Mac")>-1
	this.ns6=(this.dom && parseInt(this.ver) >= 5) ?1:0; 
	this.ns4=(document.layers && !this.dom)?1:0;
	this.bw=(this.ie6 || this.ie5 || this.ie4 || this.ns4 || this.ns6 || this.opera5)
	this.ieTrueBody = function(){
		return (document.compatMode && document.compatMode!="BackCompat")? document.documentElement : document.body
	}
	
	return this
}
//--------------------------------------------------------------------------
// Mouse
//--------------------------------------------------------------------------
function _psMouse(){
	this.x;
	this.y;
	
	this.getPosition = function()
	{
		this.x=(psBW.ns4 || psBW.ns6)?e.pageX : event.clientX + psBW.ieTrueBody().scrollLeft;
		this.y=(psBW.ns4 || psBW.ns6)?e.pageY : event.clientY + psBW.ieTrueBody().scrollTop;
	}
	
	this.move = function(e){
		psMouse.getPosition();
	}
}
//--------------------------------------------------------------------------

function gebi(n){
 return	document.getElementById(n);
}
// Прелоад картинки
function psPreloadImg(url){
	var image = new Image();
	image.src = url;	
//	return image;
}

// Создание дива
function psCreateDiv(idName){
	var obj = document.createElement('div');
	document.getElementsByTagName("body")[0].appendChild(obj);
	obj.id=idName;
	return document.getElementById(idName);
}
// Удаление объекта
function psDeleteObj(idName){
	if (document.getElementById(idName))
		document.body.removeChild(document.getElementById(idName));	
}

// Определение позиции
function psAbsPosition(obj) {
	this.x = 0;
	this.y = 0;
    while(obj) {
		this.x += obj.offsetLeft;
		this.y += obj.offsetTop;
		obj = obj.offsetParent;
	}
	return {x:this.x,y:this.y};
}

// Добавление событий
function psAddHandler(object, event, handler, useCapture) {
      if (object.addEventListener) {
            object.addEventListener(event, handler, useCapture ? useCapture : false);
      } else if (object.attachEvent) {
            object.attachEvent('on' + event, handler);
      } else alert("Add handler is not supported");
}

// Удаление событий
function psRemoveHandler(object, event, handler) {
	if (object.removeEventListener) {
		object.removeEventListener(event, handler, false);
	} else if (object.detachEvent) {
		object.detachEvent('on' + event, handler);
	} else alert("Remove Handler is not supported");
}

// Предотвращение всплывания событий
function psCancelBubbling(evt) {
      evt = evt || window.event;
      evt.cancelBubble = true;
}

function psClearSelect(sel)
{
	while (sel.childNodes.length) {
		if (sel.firstChild.tagName == 'OPTGROUP') {
			while (sel.firstChild.childNodes.length) {
				sel.firstChild.removeChild(sel.firstChild.firstChild);
			}
		}
		sel.removeChild(sel.firstChild);
	}
}

function psGetPageSize(){
	
	var xScroll, yScroll;
	
	if (window.innerHeight && window.scrollMaxY) {	
		xScroll = document.body.scrollWidth;
		yScroll = window.innerHeight + window.scrollMaxY;
	} else if (document.body.scrollHeight > document.body.offsetHeight){ // all but Explorer Mac
		xScroll = document.body.scrollWidth;
		yScroll = document.body.scrollHeight;
	} else { // Explorer Mac...would also work in Explorer 6 Strict, Mozilla and Safari
		xScroll = document.body.offsetWidth;
		yScroll = document.body.offsetHeight;
	}
	
	var windowWidth, windowHeight;
	if (self.innerHeight) {	// all except Explorer
		windowWidth = self.innerWidth;
		windowHeight = self.innerHeight;
	} else if (document.documentElement && document.documentElement.clientHeight) { // Explorer 6 Strict Mode
		windowWidth = document.documentElement.clientWidth;
		windowHeight = document.documentElement.clientHeight;
	} else if (document.body) { // other Explorers
		windowWidth = document.body.clientWidth;
		windowHeight = document.body.clientHeight;
	}	
	
	// for small pages with total height less then height of the viewport
	if(yScroll < windowHeight){
		pageHeight = windowHeight;
	} else { 
		pageHeight = yScroll;
	}

	// for small pages with total width less then width of the viewport
	if(xScroll < windowWidth){	
		pageWidth = windowWidth;
	} else {
		pageWidth = xScroll;
	}

	arrayPageSize = new Array(pageWidth,pageHeight,windowWidth,windowHeight) 
	return arrayPageSize;
}


function psGetPageScroll(){

	var yScroll;

	if (self.pageYOffset) {
		yScroll = self.pageYOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){	 // Explorer 6 Strict
		yScroll = document.documentElement.scrollTop;
	} else if (document.body) {// all other Explorers
		yScroll = document.body.scrollTop;
	}

	return yScroll;
}

function psShowHide(id){
	var showObj=document.getElementById(id).style
	if (showObj.display=="none")
		{showObj.display=""}
	else {showObj.display="none"}
}

function psMoveContent(from,to){
	document.getElementById(to).innerHTML = document.getElementById(from).innerHTML;
}


function preventSelection(element){
	  var preventSelection = false;

	  function addHandler(element, event, handler){
	    if (element.attachEvent) 
	      element.attachEvent('on' + event, handler);
	    else 
	      if (element.addEventListener) 
	        element.addEventListener(event, handler, false);
	  }
	  function removeSelection(){
	    if (window.getSelection) { window.getSelection().removeAllRanges(); }
	    else if (document.selection && document.selection.clear)
	      document.selection.clear();
	  }
	  function killCtrlA(event){
	    var event = event || window.event;
	    var sender = event.target || event.srcElement;

	    if (sender.tagName.match(/INPUT|TEXTAREA/i))
	      return;

	    var key = event.keyCode || event.which;
	    if (event.ctrlKey && key == 'A'.charCodeAt(0))  // 'A'.charCodeAt(0) можно заменить на 65
	    {
	      removeSelection();

	      if (event.preventDefault) 
	        event.preventDefault();
	      else
	        event.returnValue = false;
	    }
	  }

	  // не даем выделять текст мышкой
	  addHandler(element, 'mousemove', function(){
	    if(preventSelection)
	      removeSelection();
	  });
	  addHandler(element, 'mousedown', function(event){
	    var event = event || window.event;
	    var sender = event.target || event.srcElement;
	    preventSelection = !sender.tagName.match(/INPUT|TEXTAREA/i);
	  });

	  // борем dblclick
	  // если вешать функцию не на событие dblclick, можно избежать
	  // временное выделение текста в некоторых браузерах
	  addHandler(element, 'mouseup', function(){
	    if (preventSelection)
	      removeSelection();
	    preventSelection = false;
	  });

	  // борем ctrl+A

	  addHandler(element, 'keydown', killCtrlA);
	  addHandler(element, 'keyup', killCtrlA);
	}

preventSelection(document);
