function number_format( number, decimals, dec_point, thousands_sep ) {    // Format a number with grouped thousands
    // 
    // +   original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
    // +   improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +     bugfix by: Michael White (http://crestidg.com)
 
    var i, j, kw, kd, km;
 
    // input sanitation & defaults
    if( isNaN(decimals = Math.abs(decimals)) ){
        decimals = 2;
    }
    if( dec_point == undefined ){
        dec_point = ",";
    }
    if( thousands_sep == undefined ){
        thousands_sep = ".";
    }
 
    i = parseInt(number = (+number || 0).toFixed(decimals)) + "";
 
    if( (j = i.length) > 3 ){
        j = j % 3;
    } else{
        j = 0;
    }
 
    km = (j ? i.substr(0, j) + thousands_sep : "");
    kw = i.substr(j).replace(/(\d{3})(?=\d)/g, "$1" + thousands_sep);
    //kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).slice(2) : "");
    kd = (decimals ? dec_point + Math.abs(number - i).toFixed(decimals).replace(/-/, 0).slice(2) : "");
 
 
    return km + kw + kd;
}

function addEvent(element, event, func) {
	if(!element)
		return false;
	if(event.substr(0, 2)=='on')
		event = event.substr(2, event.length);
	if (element.addEventListener) {
		element.addEventListener(event, func, false);
	} else if (document.attachEvent) {
		element.attachEvent('on' + event, func);
	} else {
		eval('element.on' + event + ' = func;');
	}
}
function getEventTarget(event) {
	var target;
	if (window.event)
		event = window.event;
	if(event.target)
		target = event.target; 
	else
		target = event.srcElement;
	return target;
}

function clearOnFocus(input) {
	if(!input.backValue)
		input.backValue = input.value;
	if(input.backValue==input.value)
		input.value = '';
}
function clearOnBlur(input) {
	if(!input.value)
		input.value = input.backValue;
}

function ShowScroll(block, link) {
	if(!block.style)
		block = document.getElementById(block);
	if(link && !link.style)
		link = document.getElementById(link);
	if(!block.id)
		block.id = Math.random(0,9999999999);
	if(link && !link.id)
		link.id = Math.random(0,9999999999);
	
	if(!block.step)
		if(block.style.display=='block') {
			block.style.height = block.offsetHeight+'px';
			block.step = -20;
		} else
			block.step = 20;
	if(link)
		link.className = 'selected';
	block.style.display = 'block';
	block.style.overflow = 'hidden';
	if(!block.height)
		block.height = block.offsetHeight;
	
	var height = parseFloat(block.style.height);
	if(!height)
		height = 0;
	height+= block.step;
	if(height<=0) {
		block.style.display = 'none';
		block.style.overflow = '';
		block.style.height = '';
		block.step = 0;
		if(link)
			link.className = '';
		return;
	}
	if(height>=block.height) {
		block.style.overflow = '';
		block.style.height = '';
		block.step = 0;
		return;
	}
	block.style.height = height+'px';
	setTimeout('ShowScroll("'+block.id+'", "'+(link? link.id : '')+'")', 100);
}

//ae_prompt
// This is variable for storing callback function
var ae_cb = null;
 
// this is a simple function-shortcut
// to avoid using lengthy document.getElementById
function ae$(a) { return document.getElementById(a); }
 
// This is a main ae_prompt function
// it saves function callback 
// and sets up dialog
function ae_prompt(cb, q, a) {
	if(!ae$('aep_t')) {
		document.body.innerHTML+= '<div id="aep_ovrl" style="display: none;">&nbsp;</div><div id="aep_ww" style="display: none;"><div id="aep_win"><div id="aep_t"></div><div id="aep_w"><span id="aep_prompt"></span><br /><input type="text" id="aep_text" onKeyPress="if((event.keyCode==10)||(event.keyCode==13)) ae_clk(1); if (event.keyCode==27) ae_clk(0);"><br><div><input type="button" id="aep_ok" onclick="ae_clk(1);" value="OK"><input type="button" id="aep_cancel" onclick="ae_clk(0);" value="Отмена"></div></div></div></div>';
	}
	ae_cb = cb;
	ae$('aep_t').innerHTML = document.domain + ' запрашивает данные:';
	ae$('aep_prompt').innerHTML = q;
	ae$('aep_text').value = a;
	ae$('aep_ovrl').style.display = ae$('aep_ww').style.display = '';
	ae$('aep_text').focus();
	ae$('aep_text').select();
	var Items = document.getElementsByTagName('object');
	for(var i=0; i<Items.length; i++)
		Items[i].style.visibility = 'hidden';
	var Items = document.getElementsByTagName('embed');
	for(var i=0; i<Items.length; i++)
		Items[i].style.visibility = 'hidden';
}
 
// This function is called when user presses OK(m=0) or Cancel(m=1) button
// in the dialog. You should not call this function directly.
function ae_clk(m) {
	// hide dialog layers 
	ae$('aep_ovrl').style.display = ae$('aep_ww').style.display = 'none';
	var Items = document.getElementsByTagName('object');
		for(var i=0; i<Items.length; i++)
			Items[i].style.visibility = 'visible';
	var Items = document.getElementsByTagName('embed');
		for(var i=0; i<Items.length; i++)
			Items[i].style.visibility = 'visible';
	//window.status = ae$('aep_ww').style.display+'!!!';
	if (!m)  
		ae_cb(null);  // user pressed cancel, call callback with null
	else
		ae_cb(ae$('aep_text').value); // user pressed OK 
}

addEvent(window, 'onload', function() {
	/*if(window.location.hash.substr(0, 13)=='#search_mark_') {
		var search = window.location.hash.substr(13, 99999999);
		document.body.innerHTML = document.body.innerHTML.replace(eval('/('+search+')/ig'), '<span class="search_mark">$1</span>');
		var pos = document.body.innerHTML.toLowerCase().indexOf(search.toLowerCase());
		if(pos) {
			document.body.innerHTML = document.body.innerHTML.substr(0, pos) + '<a name="search_mark_'+search+'"></a>'+document.body.innerHTML.substr(pos, 99999999);
			window.location.hash = '#search_mark_'+search;
		}
	}*/
});
