/** menu functions */

function menuEvent( object, eventType )
{
	var children = object.childNodes.length;
	var item = null;
	if( object.parentNode.id == "menu") {
		var input = document.getElementById( "current" );
		input = input != null ? input.value : null;
		item = document.getElementById( input );
	}

	if( eventType == "OVER" ) {
		object.className = 'menuItemSelected';
		if( item != null )item.className = 'menuItem';
		if( children > 1) object.childNodes[1].style.display = 'block';
	}
	else if( eventType == "OUT"  ) {
		object.className = 'menuItem';
		if( item != null )item.className = 'menuItemSelected';
		if( children > 1) object.childNodes[1].style.display = 'none';
	}
	else if( eventType == "OVERRoot" ) {
		if( children > 1)
			object.childNodes[1].style.display = 'block';
	}
	else if( eventType == "OUTRoot" ){
		if( children > 1)
			object.childNodes[1].style.display = 'none';
	}
}

function menuOver( event ) { menuEvent( this, "OVER"); }
function menuOut( event ) { menuEvent( this, "OUT"); }
function menuOverRoot( event ) { menuEvent( this, "OVERRoot"); }
function menuOutRoot( event ) { menuEvent( this, "OUTRoot"); }

function menuOverSub( event )
{
	var children = this.childNodes.length;
	if( children > 1 ) {
		this.childNodes[1].style.display = this.childNodes[1].style.display == 'none' ? 'inline' : 'none';
	}
}

/**
 * opener - "open or close" element defined by id = itemID;
 */
function opener( itemID )
{
	var item = document.getElementById( itemID );
	if( item.style.display == 'none' )
		item.style.display = 'block';
	else 
		item.style.display = 'none';
}

document.getElementsByClassName = function(clsName){
    var retVal = new Array();
    var elements = document.getElementsByTagName("*");
    for(var i = 0;i < elements.length;i++){
        if(elements[i].className.indexOf(" ") >= 0){
            var classes = elements[i].className.split(" ");
            for(var j = 0;j < classes.length;j++){
                if(classes[j] == clsName)
                    retVal.push(elements[i]);
            }
        }
        else if(elements[i].className == clsName)
            retVal.push(elements[i]);
    }
    return retVal;
}

function deb(inobj)
{
	op = window.open();
	op.document.open('text/plain');
	for (objprop in inobj) {
	op.document.write(objprop + ' => ' + inobj[objprop] + '\n');
	}
	op.document.close();
}

/**
 * opener - "open or close" element defined by id = itemID;
 */
function showHideItem( itemID )
{
	var item = document.getElementById( itemID );
	item.style.display = item.style.display == 'none' ?	'block' : 'none';
}

/**
 * change image's 'src' attribute;
 */
function changeImageSrc( itemID, image1, image2 )
{
	var item = document.getElementById( itemID );
	item.src = item.src == image1 ?	item.src = image2 : image1;
}

/**
 *
 */
function openCloseSubpage( subpageID, imageID, image1, image2 )
{
	showHideItem( subpageID );
	changeImageSrc( imageID, image1, image2 );
}

/**
Opens full screen window with given location
*/
function fullScreenWin(location) {
var szer = screen.width;
var wys = screen.height;
//if (wyzej==null) wyzej='';
var okno=window.open(location,"window","HEIGHT="+wys+",WIDTH="+szer+",status=1,menubar=0,scrollbars=yes,resizable=yes");
}


/**
 * linkQuestion - this function load page determined by address if question is confirmed;
 */
function linkQuestion( address, question )
{
	if( (question && window.confirm(question) == true) || !question )
		window.location.href = address ? address : '#';
}

/**
 * SendRequest - this function run system in the background, result of execution can be presented in element describe by id = dest;
 */
function SendRequest( objName, objMethod, objParam, dest )
{
    var req = mint.Request();
	var act = JSCONST_ACTIONS ? JSCONST_ACTIONS +':' : '';

	var requestAction = act + objName +','+ objMethod +',' + objParam;
	var requestPage = JSCONST_PATH +"index.php?page="+ JSCONST_PAGEID +'/'+ JSCONST_PAGEPARAMS +"&lang="+ JSCONST_LANGID +"&actions="+ requestAction;
	
	if( dest == null ) req.Send( requestPage );
	else req.Send( requestPage, dest );			
}

/**
 * 
 */
function price( price )
{
	var priceString = price.toString();
	var point = priceString.indexOf('.');

	if( point == -1 )
		return priceString +'.00';
	else if( point == priceString.lenght - 2 )
		return priceString +'0';
	return priceString;
}

function action(reciever,name,params,ignoreErrors)
{
	xajax_action(reciever,name,paramsEncode(params),ignoreErrors);
}

function paramsEncode(params)
{
	if ('string' != typeof p) return params;
	var p = params.replace('/','//');
	p = p.replace(':','/:');
	p = p.replace(',','/,');
	return p;
}

/**
 * getDateTime -
 */
function getDateTime( data )
{
	var dateY = data.substring(0, 4);
	var dateM = data.substring(5, 7);
	var dateD = data.substring(8, 10);
	//alert(data+' '+dateY+'/'+dateM+'/'+dateD+' '+data.substring(0, 4)+'/'+data.substring(5, 7)+'/'+data.substring(8, 10));
	var date = new Date( dateY, dateM-1, dateD );
	var time = date.getTime();

	var ret  = time.toString() == 'NaN' ? getDateTime( (new Date()).print("%Y-%m-%d") ) : time;
	
	return ret;
}

//cross-browser event handling
var xb =
{
   evtHash: [],

   ieGetUniqueID: function(_elem)
   {
      if (_elem === window) { return 'theWindow'; }
      else if (_elem === document) { return 'theDocument'; }
      else { return _elem.uniqueID; }
   },
   
   addEvent: function(_elem, _evtName, _fn, _useCapture)
   {
      if (typeof _elem.addEventListener != 'undefined')
      { _elem.addEventListener(_evtName, _fn, _useCapture); }
      else if (typeof _elem.attachEvent != 'undefined')
      {
         var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) +
               '::evt_' + _evtName + '::fn_' + _fn + '}';
         var f = xb.evtHash[key];
         if (typeof f != 'undefined')
            { return; }
            
         f = function()
         {
            _fn.call(_elem);
         };
         
         xb.evtHash[key] = f;
         _elem.attachEvent('on' + _evtName, f);

         // attach unload event to the window to clean up possibly IE memory leaks
         window.attachEvent('onunload', function()
         {
            _elem.detachEvent('on' + _evtName, f);
         });
         
         key = null;
         //f = null;   /* DON'T null this out, or we won't be able to detach it */
      }
      else
         { _elem['on' + _evtName] = _fn; }
   },
   
   removeEvent: function(_elem, _evtName, _fn, _useCapture)
   {
      if (typeof _elem.removeEventListener != 'undefined')
         { _elem.removeEventListener(_evtName, _fn, _useCapture); }
      else if (typeof _elem.detachEvent != 'undefined')
      {
         var key = '{FNKEY::obj_' + xb.ieGetUniqueID(_elem) +
               '::evt' + _evtName + '::fn_' + _fn + '}';
         var f = xb.evtHash[key];
         if (typeof f != 'undefined')
         {
            _elem.detachEvent('on' + _evtName, f);
            delete xb.evtHash[key];
         }
         
         key = null;
         //f = null;   /* DON'T null this out, or we won't be able to detach it */
      }
   }
};