try{document.execCommand("BackgroundImageCache", false, true);}catch(err){}

var last_alert=window.alert;

document.write("<div id=my_alert style='position:absolute;left:-10000px;top:-10000px;z-index:5000;' ondblclick='hide_alert()'><table id=my_alert_tbl width=528 height=198 cellspacing=0 cellpadding=2 bgcolor=#666666><tr><td><table width=100% height=100% style='border: 1px solid white;vertical-align:middle;background:#BF200D;' cellspacing=0 cellpadding=0><tr><td><div style='position:relative;height:100%;vertical-align: middle;'><table width=100% height=100%><tr><td><div id=my_alert_text style='text-align:center;color:white;padding:10px;font-size: 12px;font-weight:bold;'>alert</div></td></tr></table><div style='position:absolute;right:10px;top:10px;width: 17px;height:17px;background-image:url(/files/img/buttons_r.gif);background-position: -2 -2;overflow: hidden;cursor:pointer;' onclick='hide_alert()'></div></div></td></tr></table></td></tr></table></div>");

var _alert_shown=false;
var _alert_hide_timer=0;

window.alert=function(t)
{
	if(_alert_shown)
	{
		setTimeout("alert('"+t+"')",100);
		return;
	}
	_alert_shown=true;
	var a=get_element("my_alert");
	var tbl=get_element("my_alert_tbl");
	var tt=get_element("my_alert_text");
	tt.innerHTML=t;
	var x=0;
	var y=0;
	try{
		x=document.body.scrollLeft+(document.body.clientWidth-tbl.offsetWidth)/2;
		y=document.body.scrollTop+(document.body.clientHeight-tbl.offsetHeight)/2;
	}catch(e){}
	a.style.left=x+"px";
	a.style.top=y+"px";
	a.style.display="block";
	_alert_hide_timer=setTimeout("hide_alert()",5000);
}

function hide_alert()
{
	clearTimeout(_alert_hide_timer);
	var a=get_element("my_alert");
	a.style.left="-10000px";
	a.style.top="-10000px";
	_alert_shown=false;
}

var isIE=(window.ActiveXObject?true:false);
var isOPERA=(window.opera?true:false);

window["myAjax"]=function() {
		try{
			var o=null;
			if(window.ActiveXObject)
			{
				o=new ActiveXObject("Microsoft.XMLHTTP");
			}else{
				o=new XMLHttpRequest();
			}
			/*o["Request"] = function(url,cb,async)
			{
				o.abort();
				o.open("get",url,async);
				if(async)
				{
					o.onreadystatechange=function(){ cb(o); };
					o.send(null);
				}else{
					o.send(null);
					cb(o);
				}
			};*/
			return o;
		}catch(e){ return null;}
};



var Utf8 = {

    // public method for url encoding
    encode : function (string) {
        string = string.replace(/\r\n/g,"\n");
        var utftext = "";

        for (var n = 0; n < string.length; n++) {

            var c = string.charCodeAt(n);

            if (c < 128) {
                utftext += String.fromCharCode(c);
            }
            else if((c > 127) && (c < 2048)) {
                utftext += String.fromCharCode((c >> 6) | 192);
                utftext += String.fromCharCode((c & 63) | 128);
            }
            else {
                utftext += String.fromCharCode((c >> 12) | 224);
                utftext += String.fromCharCode(((c >> 6) & 63) | 128);
                utftext += String.fromCharCode((c & 63) | 128);
            }

        }

        return utftext;
    },

    // public method for url decoding
    decode : function (utftext) {
        var string = "";
        var i = 0;
        var c = c1 = c2 = 0;

        while ( i < utftext.length ) {

            c = utftext.charCodeAt(i);

            if (c < 128) {
                string += String.fromCharCode(c);
                i++;
            }
            else if((c > 191) && (c < 224)) {
                c2 = utftext.charCodeAt(i+1);
                string += String.fromCharCode(((c & 31) << 6) | (c2 & 63));
                i += 2;
            }
            else {
                c2 = utftext.charCodeAt(i+1);
                c3 = utftext.charCodeAt(i+2);
                string += String.fromCharCode(((c & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
                i += 3;
            }

        }

        return string;
    }

};

var _all_elements=new Array();
function get_element(id)
{
	if(!_all_elements[id])
	{
		_all_elements[id]=document.getElementById(id);
	}
	return _all_elements[id];
}



function set_opacity(obj,op)
{
	try{
		obj.filters.alpha.opacity=op*100;
	}catch(e){}
		obj.style.opacity=op;
}

function get_absolute_y(o)
{
	var y=0;
	while(o!=null)
	{
		y+=o.offsetTop;
		o=o.offsetParent;
	}
	return y;
}

function get_absolute_x(o)
{
	var x=0;
	while(o!=null)
	{
		x+=o.offsetLeft;
		o=o.offsetParent;
	}
	return x;
}

var _load_images=new Array();
/// load image 
/// img - image object, src - image file ,
/// callback = function (image,loaded) {}
/// timeout - time to load image
function load_image(img,src,callback,timeout)
{
	img.src=src;
	if(!timeout) timeout=30;
	if(!callback) callback=function(){};
	var n=_load_images.length;
	var a=new Array();
	a["img"]=img;
	a["callback"]=callback;
	a["tmp"]=new Image();
	a.tmp.src=src;
	_load_images[n]=a;
	timeout*=10;
	setTimeout("load_image_timer("+timeout+","+n+")",100);
}

function load_image_timer(i,n)
{
	i--;
	var img=_load_images[n];
	if(i<=0)
	{
		img.callback(img.img,false);
	}else{
		if(img.tmp.complete || (img.tmp.readyState && img.tmp.readyState=="loaded") )
		{
			img.img.src=img.tmp.src;
			img.callback(img.img,true);
		}else{
			setTimeout("load_image_timer("+i+","+n+")",100);
		}
	}
}


var _fade_objects=new Array();
var _fade_objects_n=0;
// object to fade, start opacity,final opacity,
// n - steps count for animation
// f - handler for each iteration: function(object,niterations,iteration) { ... }
// this function can apply alpha,color and other additional effects to object
function fade_object(o,so,fo,n,f)
{
	var a=new Array();
	a["o"]=o;
	a["so"]=so;
	a["fo"]=fo;
	a["i"]=0;
	if(!n)a["ni"]=20;else a["ni"]=n;
	a["di"]=(a.fo-a.so)/a.ni;
	if(!f)a["f"]=function(){}; else a["f"]=f;
	a["timer"]=setTimeout("fade_timer("+_fade_objects_n+")",20);
	_fade_objects[_fade_objects_n]=a;
	return _fade_objects_n++;
}

function fade_timer(i)
{
	var o=_fade_objects[i].o;
	var so=_fade_objects[i].so;
	var di=_fade_objects[i].di;
	var j=_fade_objects[i].i;
	var n=_fade_objects[i].ni;
	
	j++;
	set_opacity(o,so+di*j);
	_fade_objects[i].i=j;
	_fade_objects[i].f(o,n,j);
	if(j<n)
	{
		_fade_objects[i].timer=setTimeout("fade_timer("+i+")",20);
	}
}

function fade_restart(i)
{
	clearTimeout(_fade_objects[i].timer);
	_fade_objects[i].i=0;
	_fade_objects[i].timer=setTimeout("fade_timer("+i+")",20);
}

function fade_finish(i)
{
	clearTimeout(_fade_objects[i].timer);
	if(_fade_objects[i].i==_fade_objects[i].ni) return;
	_fade_objects[i].i=_fade_objects[i].ni;
	set_opacity(_fade_objects[i].o,_fade_objects[i].fo);
	if(_fade_objects[i].f) _fade_objects[i].f(_fade_objects[i].o,_fade_objects[i].ni,_fade_objects[i].ni);
}

///------------------------------------------------------------------------------
var _zoom_objects=new Array();
var _zoom_objects_n=0;
// object to zoom , source and dest coordinates, n - steps count for animation
// f - handler for each iteration: function(object,niterations,iteration) { ... }
// this function can apply alpha,color and other additional effects to object
function zoom_object(o,srcx,srcy,srcw,srch,dstx,dsty,dstw,dsth,n,f)
{
	var z=new Array();
	z["o"]=o;
	if(!n) z["ni"]=20;else z["ni"]=n;
	z["i"]=0;
	z["dx"]=dstx;
	z["dy"]=dsty;
	z["dw"]=dstw;
	z["dh"]=dsth;
	z["sx"]=srcx;
	z["sy"]=srcy;
	z["sw"]=srcw;
	z["sh"]=srch;
	if(!f) z["f"]=function(){}; else z["f"]=f;
	
	z["deltax"]=(dstx-srcx)/z.ni;
	z["deltay"]=(dsty-srcy)/z.ni;
	z["deltaw"]=(dstw-srcw)/z.ni;
	z["deltah"]=(dsth-srch)/z.ni;
	z["timer"]=setTimeout("zoom_timer("+_zoom_objects_n+")",20);
	_zoom_objects[_zoom_objects_n]=z;
	return _zoom_objects_n++;
}

function zoom_timer(i)
{
	var o=_zoom_objects[i].o;
	var j=_zoom_objects[i].i;
	var n=_zoom_objects[i].ni;
	var x=_zoom_objects[i].sx;
	var y=_zoom_objects[i].sy;
	var w=_zoom_objects[i].sw;
	var h=_zoom_objects[i].sh;
	var dx=_zoom_objects[i].deltax;
	var dy=_zoom_objects[i].deltay;
	var dw=_zoom_objects[i].deltaw;
	var dh=_zoom_objects[i].deltah;
	
	j++;
	_zoom_objects[i].i=j;

	o.style.left=x+dx*j;
	o.style.top=y+dy*j;
	o.style.width=w+dw*j;
	o.style.height=h+dh*j;
	
	if(_zoom_objects[i].f) _zoom_objects[i].f(o,n,j);
	if(j<n)
	{
		_zoom_objects[i].timer=setTimeout("zoom_timer("+i+")",20);
	}
}

function zoom_set(id,o,srcx,srcy,srcw,srch,dstx,dsty,dstw,dsth,n,f)
{
	var z=_zoom_objects[id];
	clearTimeout(z.timer);z.o=o;
	if(!n) z.ni=20;else z.ni=n;
	z.i=0;
	z.dx=dstx;z.dy=dsty;
	z.dw=dstw;z.dh=dsth;
	z.sx=srcx;z.sy=srcy;
	z.sw=srcw;z.sh=srch;
	if(!f) z.f=function(){}; else z.f=f;
	z.deltax=(dstx-srcx)/z.ni;
	z.deltay=(dsty-srcy)/z.ni;
	z.deltaw=(dstw-srcw)/z.ni;
	z.deltah=(dsth-srch)/z.ni;
	_zoom_objects[id]=z;
}

function zoom_restart(i)
{
	clearTimeout(_zoom_objects[i].timer);
	_zoom_objects[i].i=0;
	_zoom_objects[i].timer=setTimeout("zoom_timer("+i+")",20);
}

function zoom_finish(i)
{
	clearTimeout(_zoom_objects[i].timer);
	if(_zoom_objects[i].i>=_zoom_objects[i].ni) return;
	var o=_zoom_objects[i].o;
	o.style.left=_zoom_objects[i].dx;
	o.style.top =_zoom_objects[i].dy;
	o.style.width=_zoom_objects[i].dw;
	o.style.height=_zoom_objects[i].dh;
	_zoom_objects[i].i=_zoom_objects[i].ni;
	if(_zoom_objects[i].f) _zoom_objects[i].f(o,_zoom_objects[i].ni,_zoom_objects[i].ni);
}


