// shortcuts for common objects
_W=window; _D=_W.document;

// _G: wrapper and shortcut for getElementById
function _G(id){if(_D.getElementById){return _D.getElementById(id+'')}else{return null}}

// _GT: wrapper and shortcut for getElementsByTagName
function _GT(t,d){if(_D.getElementsByTagName){return (d?d:_D).getElementsByTagName(t+'')}else{return []}}
function _GT0(t,d){var a=_GT(t,d);return a.length?a[0]:null;}

// _GA: wrapper and shortcut for getAttribute
function _GA(o,id){var t='';if(typeof(o)=='object'){if(o.getAttribute){t = o.getAttribute(id+'')};return t}}

// _GC: getClassByName
function _GC(t,d){var i,j,n,a,b,k,l,g,h,r=[];a=(d?d:_D).getElementsByTagName("*");k=a.length;g=t.split(',');h=g.length;for(i=0;i<k;i++){if(a[i].className){b=a[i].className.split(' ');l=b.length;for(j=0;j<l;j++){for(n=0;n<h;n++){if(g[n]==b[j]){r[r.length]=a[i]};}}}};return r;}
function _GC0(t,d){var a=_GC(t,d);return a.length?a[0]:null;}
function _GC0(t,d){var a=_GC(t,d);return a.length?a[0]:null;}

// _E: wrapper and shortcut for createElement
//		p - note to append to (default document)
//     id - id of element or array of properties
// styles - styles to apply to element before it is added to dom
//   bIns - insert before instead append
function _E(n,p,id,styles,bIns){var t,e=null;if(_D.createElement){e=_D.createElement(n); if(typeof styles == 'object'){for(t in styles){e.style[t]=styles[t]}}; p=(p?p:_D.body); if(bIns){p.parentNode.insertBefore(e,p)}else{p.appendChild(e)}; if(id){if(typeof id == 'object'){for(t in id){e[t]=id[t]}}else{e.id=id}}; }; return e}
function _EB(n,p,id,styles){return _E(n,p,id,styles,true)}


// _GC: isObject shortcut
function _O(o){return typeof(o)=='object'?true:false}



// base object
_={
	V:{
		// default popup width and height
		w: 700, h: 600,

		// screen dimentions
		sw: (screen?(screen.availWidth?screen.availWidth:screen.width):640),
		sh: (screen?(screen.availHeight?screen.availHeight:screen.height):480)
	},

	W: function(U,T,P){
		return window.open(U,T,P);
	},

	// main popup. only url is required
	P: function(U,pW,pH,bSB,bM){
		var x,y,w,h,o,bF;w=pW?pW:_.V.w;h=pH?pH:_.V.h;x=(_.V.sw>w?((_.V.sw/2)-(w/2)):0);y=(_.V.sh>h?((_.V.sh/2)-(h/2)):0);bF=(_.V.sw<w||_.V.sh<h);o=_.W(U,'',"scrollbars="+(((typeof(bSB)=="undefined"?1:bSB)||bF)?1:0)+",toolbar=0,status=0,menubar=0,directories=0,resizable="+(bF?'1,maximized=1':'')+",location=0,"+(screen?"width="+(_.V.sw<w?_.V.sw:w)+",height="+(_.V.sh<h?_.V.sh:h)+",":'')+"left="+x+",top="+y+",screenX="+x+",screenY="+y+',modal='+(bM?1:0));if(o.focus){o.focus()};return o;
	},

	// popup text
	PT: function(T,pW,pH,bSB){
		var k=_.P('',pW,pH,bSB,1,1);var d=k.document;d.write('<html><head></head><body style="background-color:#fff;margin:0;padding:0">'+T+'</body></html>');d.close();
	},

	// popup picture
	PP: function(U,W,H){
		var k=_.P('',W,H,0,0,1);var d=k.document;d.write("<html><head><title>"+W+"x"+H+"</title></head><body style='background-color:#fff;margin:0;padding:0'><a href='javascript:close()' style='display:block' title='Click to close'><img src='"+U+"' width='"+W+"' height='"+H+"' border='0' alt='Click to close'></a></body></html>");d.close();
	}
};


// generate unique id
function uid(){var p='__'; if(!uid.id) uid.id = 0; while(_G(p+uid.id)){uid.id++}; return p+uid.id;};

function pad(t,i,n){var r=t+'',c=n?n:'0';while(r.length<i){r=c+r;};return r;}
function trim(s){s = (s + '');while(1){if((s.charAt(0)==' ')||(s.charAt(0)=="\t")||(s.charAt(0)=="\n")||(s.charAt(0)=="\0x0D")||(s.charAt(0)=="\0x0A")){s = s.substring(1,s.length);}else{break;};};while(1){if((s.charAt(s.length-1)==' ')||(s.charAt(s.length-1)=="\t")||(s.charAt(s.length-1)=="\n")||(s.charAt(s.length-1)=="\0x0D")||(s.charAt(s.length-1)=="\0x0A")){s = s.substring(0,s.length-1);}else{break;};};return s;};
function dumpObject(o){var h='',t;for(t in o){h+=t+'='+o[t]+"\n";};alert(h);}


// hooks for user-generated events
var Hook = {
	h:[[],[],[]],p:function(t){return t=='all'?-1:(t=='before'?0:(t=='after'?2:1))},e:function(n,t,bR,p1,p2,p3,p4,p5){var f,p=Hook.p(t);if(_O(Hook.h[p][n])){for(f in Hook.h[p][n]){if(Hook.h[p][n][f]==true){eval(f)(p1,p2,p3,p4,p5);}};if(bR){Hook.Reset(n)}}},

	Add: function(n,f,t){var p=this.p(t);if(!_O(this.h[p][n])){this.h[p][n]=[]};this.h[p][n][f]=true},
	Delete: function(n,f){if(!_O(this.h[1][n])){return};this.h[1][n][f]=false},
	Reset: function(n,t){var p=this.p(t);this.h[1][n]=[];if(p==-1){this.h[0][n]=this.h[2][n]=[]}},
	Count: function(n,t){var i=0,j,p=this.p(t),f,a=p<0?[0,1,2]:[1],o;for(j in a){o=this.h[a[j]][n];if(_O(o)){for(f in o){if(o[f]){i++}}}};return i},
	Exec: function(n,bR,p1,p2,p3,p4,p5){Hook.e(n,'before',false,p1,p2,p3,p4,p5);Hook.e(n,0,bR,p1,p2,p3,p4,p5);Hook.e(n,'after',false,p1,p2,p3,p4,p5);}
}


// work with cookies
var Cookie = {
	// get cookie (name)
	Get: function(n){var dc=document.cookie,p=n+"=",b=dc.indexOf("; "+p),e; if(b == -1){b=dc.indexOf(p);if(b != 0) return null;}else{b += 2;};e=dc.indexOf(";",b);if(e == -1){e = dc.length;};return unescape(dc.substring(b+p.length,e));},

	// set cookie (name, value, days = 1)
	Set: function(n,v,d){var t = new Date(),e=t;if(typeof d=='undefined')d=1;e.setTime(t.getTime() + 3600000*24*d);document.cookie=n+"="+escape(v)+(d>0?"; expires="+e.toGMTString():'')+'; path=/';},

	// del cookie (name, path, domain = '')
	Delete: function(n,p,d){if(Cookie.Get(n)){document.cookie=n+"="+((p)?"; path="+p:"")+((d)?"; domain="+d:"")+"; expires=Thu, 01-Jan-70 00:00:01 GMT";};}
}




// parse current window location
var url = window.location.href;
var url_proto = url.replace(/(.*):\/\/([^\/]+)(.*)/ig,'$1');
var url_host = url.replace(/(.*):\/\/([^\/]+)(.*)/ig,'$2');
var url_path = url.replace(/(.*):\/\/([^\/]+)(.*)/ig,'$3');
var a = url_path.split('#'); url_path = a[0];
var url_path_comment = url.replace(/(.*):\/\/([^\/]+)(.*)#(.*)/ig,'$4');
var url_root = url_proto+'://'+url_host+'/';


function getTimeZone()
{
   var rightNow = new Date();
   var date1 = new Date(rightNow.getFullYear(), 0, 1, 0, 0, 0, 0);
   var date2 = new Date(rightNow.getFullYear(), 6, 1, 0, 0, 0, 0);
   var temp = date1.toGMTString();
   var date3 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
   var temp = date2.toGMTString();
   var date4 = new Date(temp.substring(0, temp.lastIndexOf(" ")-1));
   var hoursDiffStdTime = (date1 - date3) / (1000 * 60 * 60);
   var hoursDiffDaylightTime = (date2 - date4) / (1000 * 60 * 60);
/*
   if (hoursDiffDaylightTime == hoursDiffStdTime) {
      alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is NOT observed here.");
   } else {
      alert("Time zone is GMT " + hoursDiffStdTime + ".\nDaylight Saving Time is observed here.");
   }
*/
	return hoursDiffStdTime;
}


Cookie.Set('--client-timezone', -((new Date()).getTimezoneOffset()/60));


// convert useful window events to hooks
_W.onload = function(){
	Hook.Exec('Window_OnLoad');
	url_execute(window.location.href, true);
}
_W.onfocus = function(){
	Hook.Exec('Window_OnFocus');
}
_W.onunload = function(){
	Hook.Exec('Window_OnUnload');
}
if(typeof(_W.onresizeend) == 'function'){
	_W.onresizeend = function(){
		Hook.Exec('Window_OnResize');
	}
}else{
	_W.onresize = function(){
		Hook.Exec('Window_OnResize');
	}
}


var _PLT = setInterval(_pltc, 10);
function _pltc(){
	if(document.getElementById('footer')){
		clearInterval(_PLT);
		Hook.Exec('Page_OnLoad');
	}
}


// global mouse position
var m_x = m_y = 0;
_D.onmousemove = function(e){
	m_x = (window.event ? window.event.clientX: (e ? (e.pageX ? e.pageX : 0) : 0));
	m_y = (window.event ? window.event.clientY + document.documentElement.scrollTop: (e ? (e.pageY ? e.pageY : 0) : 0));
}

/*
_D.onmouseover = function(e){
	if (!e) var e = window.event;
	var o = e.srcElement || e.target;

	if(o.tagName.toUpperCase() == 'A')
	{
		if(o.title)
		{
			window.status = o.title;
		}
	}
}


_D.onmouseout = function(e){
//	window.status = '';
}
*/


_D.onclick = function(e){
	if (!e) var e = window.event;
	var i, j, tag, cmd, u='', o = e.srcElement || e.target;

	tag = (o.tagName+'').toUpperCase();

	if(((tag != 'A') && ((o.parentNode.tagName+'').toUpperCase() == 'A') && (_mac || _ie)) || (tag == 'IMG'))
	{
		o = o.parentNode;
	}

	if(o.tagName.toUpperCase() == 'A')
	{
		o.blur();

		var ut = url_parse(o.href);

		if(!ut.isKnown)
		{
			if(ut.hasHook)
			{
				Hook.Exec('aa_'+ut.proto, false, ut.params, o);
			}else if(ut.url){
				window.location = o.href;
			}

			if(e.returnValue){
				e.returnValue = false;
			}else if(e.preventDefault){
				e.preventDefault();
			}

			return false;
		}

	}
}




function url_execute(href, bNoReload)
{
	var ut = url_parse(href);

	if(ut.hasHook)
	{
		Hook.Exec('aa_'+ut.proto, false, ut.params, null);

	}else if(!bNoReload){
		if(ut.url) {
			window.location = ut.rawUrl;
		}else{
			window.location = href;
		}
	}
}



function url_parse(cmd)
{
	var i, j, u;
	var bFound = false, bhasHook = false, proto, known = ['http', 'https', 'ftp', 'mailto'];

	i = cmd.indexOf('#');
	if(i >= 0)
	{
		u = cmd.substring(0,i).replace(window.location.protocol+'//'+window.location.hostname, '');
		cmd =  cmd.substring(i+1)+','+u;
	}


	i = cmd.indexOf(':');
	if(i >= 0)
	{
		var proto = cmd.substr(0, i);

		for(j=0; j<known.length; j++)
		{
			if(known[j] == proto){
				bFound = true;
				break;
			}
		}

		if(!bFound)
		{
			if(Hook.Count('aa_'+proto) > 0)
			{
				bhasHook = true;
			}
		}
	}

	return {isKnown: bFound, hasHook: bhasHook, proto: proto, params: cmd.substring(i+1).split(','), url: u, rawUrl: cmd};
}





// parse useragent and try detect browser
_ua = navigator.userAgent.toUpperCase();
_mac = (_ua.indexOf("MAC") != -1) ? true : false;
_opera = (_ua.indexOf("OPERA") != -1) ? true : false;
_safari = (_ua.indexOf("SAFARI") != -1) ? true : false;
_khtml = (_ua.indexOf("KHTML") != -1) ? true : false;
_ie = ((document.all&&!_opera) ? true : false);
_win = (_ua.indexOf("WIN") < 0) ? false : true;






// format numeric value into decimal 0.00
function format_money(sum, fmt)
{
	var sign = sum<0?'-':'';
	var str = Math.abs(Math.round(sum*100)/100)+'';
	var a = str.split('.');
	if(a.length>1)
	{
		if(a[1].length == 1)
		{
			str+='0';
		}
	}else{
		str+='.00';
	}

	if(!fmt)
	{
		fmt = '%s$%n';
	}

	return fmt.replace('%n',str).replace('%s',sign);
}



var Zoom = {

	step: 2,

	Init: function(){
		var size = Cookie.Get('sitezoom')*1;
		Zoom.Set(size);
	},

	In: function(){
		var size = Cookie.Get('sitezoom')*1 + Zoom.step;
		Zoom.Set(size);
	},

	Out: function(){
		var size = Cookie.Get('sitezoom')*1 - Zoom.step;
		Zoom.Set(size);
	},

	Set: function(size){
//		var s=(100.1+size*1)+'%', a = document.getElementsByTagName('HTML');
		var s=(16+size*1)+'px', a = document.getElementsByTagName('HTML');
		for(var i=0; i<a.length; i++)
		{
			a[i].style.fontSize = s;
		}

		Cookie.Set('sitezoom', size, 0);

		Hook.Exec('Page_Zoom');
	}
}




function flash(url, width, height, params, bgColor)
{
	var id = (params?(params['__id']?params['__id']:uid()):uid());
	var params_str = (params?(params['__id']?'':'__id='+id):'__id='+id), params_obj = '', params_embed = '';

	if(typeof params == 'object')
	{
		for(var param in params)
		{
			params_str += (params_str?'&':'')+ param +'='+ params[param];
		}
	}

	if(_ie)
	{
		return ['<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+width+'" height="'+height+'" id="'+id+'">',
				'<param name="movie" value="'+url+'"></param>',
				'<param name="quality" value="best"></param>',
				'<param name="scale" value="noborder"></param>',
				bgColor ? '<param name="bgcolor" value="'+ bgColor +'" />' : '<param name="wmode" value="transparent"></param>',
				'<param name="FlashVars" value="'+params_str+'"></param>',
				'</object>'].join('');
	}else{
		return '<embed type="application/x-shockwave-flash" src="'+url+'" quality="best" '+(bgColor||(_mac&&_safari) ? ' bgcolor="'+(bgColor?bgColor:'#FFFFFF')+'"' : ' wmode="transparent"')+' width="'+width+'" height="'+height+'" FlashVars="'+params_str+'" id="'+id+'" scale="noborder"></embed>';
	}
/*
	return ['<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" width="'+width+'" height="'+height+'" id="'+id+'">',
				'<param name="movie" value="'+url+'"></param>',
				'<param name="quality" value="best"></param>',
				bgColor ? '<param name="bgcolor" value="'+ bgColor +'" />' : '<param name="wmode" value="transparent"></param>',
				'<param name="FlashVars" value="'+params_str+'"></param>',
				'<embed type="application/x-shockwave-flash" src="'+url+'" quality="best" '+(bgColor||(_mac&&_safari) ? ' bgcolor="'+(bgColor?bgColor:'#FFFFFF')+'"' : ' wmode="transparent"')+' width="'+width+'" height="'+height+'" FlashVars="'+params_str+'" id="'+id+'"></embed>',
			'</object>'].join('');
*/
}

function write_flash(url, width, height, params, bgColor)
{
	if(!params)
	{
		params = {};
	}

	if(!params['__id'])
	{
		params['__id'] = uid();
	}

	document.write(flash(url, width, height, params, bgColor));

	var o = _G(params['__id']);
	if(o)
	{
		if(o.outerHTML)
		{
			o.outerHTML = o.outerHTML;
		}
	}
}


__cached_images = [];
function preloadImages()
{
	var o, a = preloadImages.arguments;

	for(var i=0; i<a.length; i++)
	{
		o = new Image();
		o.src = a[i];

		__cached_images[__cached_images.length] = o;
	}
}




function DOM_addListener(evt, fn, o){
	if(!o) o=document;if(o.addEventListener){o.addEventListener(evt,fn,false);}else{o.attachEvent('on'+evt, fn);};
}

function IFRAME_getDocument(id){
	var d=null,f;f=typeof(id)=='object'?id:_G(id);if(f){d=f.contentWindow;d=d?d.document:f.contentDocument;d=d?d:f.document;};return d;
}

function IFRAME_setEditable(id, b){
	var d=IFRAME_getDocument(id);try{d.body.contentEditable=b}catch(e){};try{d.designMode=b?'on':'off'}catch(e){};
}


Fields = {};

