// JavaScript Document
var CONTENT_DIV_ID   = 'mainTable';
var CTRL_RECLAMPANEL = 'leftColumn';
var CTRL_LINKLIST    = 'leftLinkList';
var   DBGMODE        = true;


var FORM_DOC_CONTENT  = "";
var FORM_DOC_NAME     = null;
var FORM_DOC_SCENE    = null;

var DIV_LOGIN         = 'loginPlaceholder';
var LOGIN_SUBMIT_BTN  = 'login';
var LOGIN_FIELDS      = new Object( );

var MS_MAX_HEIGHT     = 0;
var MS_POS_CORRECT    = false;


if ( typeof MAINDIV_PREFIX == 'undefined')
     var MAINDIV_PREFIX = "message_";
if ( typeof MENU_AD_VERT == 'undefined')
     var MENU_AD_VERT = "springnavigate";
if ( typeof MENU_DIV_ID == 'undefined')
     var MENU_DIV_ID =  'menudiv';
if ( typeof ARTICLE_KEY == 'undefined')
     var ARTICLE_KEY      = 'article';


var srcout    = {'font-size':'12px', 'letter-spacing':'1px', 'font-weight':'bold',color:'#fff2d9','text-decoration':'none'};
var srcovr    = {'font-size':'12px', 'letter-spacing':'4px', 'font-weight':'bold',  color:'#131649'};
var MENU_DEF  = {'clrnorm':'#ffe5c8','clrhover':'#ffffff','clractive':'#ffc300','font-size':'18px','font-weight':'bold'};
var MENU_DROP = 
	{   color        : '#332a1e',
	    'font-weight': 'bold', 
		'font-family': 'Arial, sans-serif', 
		'font-size'  : '11px',
		bkgimgout    :  "images/sys/menus/submnu_bg_of.png", 
		bkgimgovr    : "images/sys/menus/submnu_bg_on.png",
		imgover      :  "images/sys/menus/submnu_on.png", 
		imgactive    : "images/sys/menus/submnu_of.png",
		imgnormal    : "images/sys/menus/submnu_of.png",
		textcolorovr : '#ffffff',
		textcolorout : '#eeeeee',
		imgwidth     :  20, 
		imgheight    :  20 
	};
var MENU_LEFT = { title:'',clrtitle:'#ffd980',clrlinks:srcout.color};


function loadDefXML( clbkInitPage )
{   if ( typeof properties != 'undefined' ) return;
	properties = new clsGlobalProperties( xmlparse );
	xmlparse.parseFile(urlbase()+"xml/defaults.xml",    properties.parse);
	xmlparse.setparams( properties);
	xmlparse.parseFile(urlbase()+"xml/he/mainmenu.xml", processXmlMenu);
	clbkInitPage( );
}
// ----------------- correct positions ------------------------------------ *
function correctMessagePos( )
{  	if ( MS_POS_CORRECT ) return;

    var o    = $( MAINDIV_PREFIX+'1' );
    var rc   = visi.getObjectRect( MAINDIV_PREFIX+'1');

	MS_MAX_HEIGHT = rc.height;

    var divs = document.getElementsByTagName( 'div');
	for ( var i = 0; i < divs.length; i++)
	{   if ( divs[i].id == undefined ) continue;
		if ( divs[i].id.indexOf( MAINDIV_PREFIX) != 0 ) continue;
		if ( divs[i].id == (MAINDIV_PREFIX+'1')) continue;
		var rc1 = visi.getObjectRect( divs[i]);
		
        if ( MS_MAX_HEIGHT < rc1.height ) MS_MAX_HEIGHT = rc1.height;

		if ( rc.left == rc1.left && rc.top == rc1.top ) continue;

		divs[i].style.left   = rc.left   +'px';
		divs[i].style.top    = rc.top    +'px';
		if ( divs[i].style.width == '1px' )
		     divs[i].style.width  = rc.width  +'px';

		if ( divs[i].style.height == '1px' )
		{   
		    divs[i].style.height = "auto";
/*		
		    if ( divs[i].scrollHeight > rc.height )
		         divs[i].style.height = (divs[i].scrollHeight + 10) +'px';
			else divs[i].style.height = rc.height+o.scrollHeight+'px';
*/			
		}
	}
	for ( var i = 0; i < divs.length; i++)
	{   if ( divs[i].id == undefined ) continue;
		if ( divs[i].id.indexOf( MAINDIV_PREFIX) != 0 ) continue;
		rc = visi.getObjectRect( divs[i]);
		if ( rc.height < MS_MAX_HEIGHT )
		     divs[i].style.height = MS_MAX_HEIGHT+"px";
	}
	MS_POS_CORRECT = true;
}
// ----------------- end correct positions -------------------------------- *

function openurl (args) 
{   var url = args;
	window.open (url);
}
function wait_redirect      ( fnRedirect ) { window.setTimeout(fnRedirect,1000); };

function writeDbgMessage    ( message )
{   var pre = visi.getElement('idPre');
    if ( !pre )
    {   pre  = document.createElement("pre");
        pre.setAttribute( "id",   "idPre" );
        var bod  = document.getElementsByTagName("body")[0];
        bod.appendChild( pre );
    }

    if ( DBGMODE )
    {
        if ( pre )
             pre.innerHTML = message;
			 
    }

    var p1 = message.indexOf( 'err:');
    if ( p1 != -1 )
         utilErrorMessage( message.substr( p1+4));
}
// ----------------- Set Menu ------------------------------------------- *
function processXmlMenu( xml,param )//properties
{   
    if ( !$(MENU_DIV_ID))
	{   alert( "Menu container nod defined: "+MENU_DIV_ID);
		return;
	}
    if ( !$(MENU_DIV_ID).menu )
	{   $(MENU_DIV_ID).menu = new clsLineMenu( MENU_DIV_ID, visi );
        var p = properties.get('menuprop');
		if ( p )
             $(MENU_DIV_ID).menu.setProperties(p);
		else $(MENU_DIV_ID).menu.setProperties( MENU_DEF );

	}

    var mnuobj = $(MENU_DIV_ID).menu;
    var arr    = xmlSetMenu    ( xml, mnuobj, param.get(NM_ARTICLE));
    var ind    = mnuobj.getActivePageFromLinks( param.get(NM_ARTICLE));

    if ( arr[ind-1].background.length ) 
	    param.set( NM_BCKGIMAGE,arr[ind-1].background );

    if ( arr[ind-1].bgcolor.length    ) param.set( NM_BCKGCOLOR,arr[ind-1].bgcolor);
	
	xmlSetLeftMenu( xml,param.get('article'));
	
}

function xmlSetMenu          ( xml,mnuobj, article )
{   var arr    = new Array();
	var menu   = xml.getElementsByTagName( "main" );
    var title  = (menu[0].attributes.length)?menu[0].attributes.getNamedItem( "title").nodeValue:'';
	if ( visi.trim(document.title) == '' && title )
         document.title = visi.trim(title);

    if ( menu.length )
         arr = mnuobj.xmlParseMenu ( menu[0].childNodes );

	var p = properties.get('dropmenu');
	if ( p )
		  mnuobj.prepareMenuFromArray  ( p );
	else mnuobj.prepareMenuFromArray  ( MENU_DROP );
	
    mnuobj.getActivePageFromLinks( article );
	
    mnuobj.create   ( null,HTM_INS  );
	mnuobj.initbuttons( );
	return arr;
}

function xmlSetLeftMenu   ( xml,article )
{   
    var arr      = new Array();
	var leftmenu = xml.getElementsByTagName( "leftmenu");
	for ( var i = 0; i < leftmenu.length; i++ )
	{
		try { MENU_LEFT.title    = visi.trim(leftmenu[i].attributes.getNamedItem( "title"   ).nodeValue); } catch(e) {}
		try { MENU_LEFT.clrtitle = visi.trim(leftmenu[i].attributes.getNamedItem( "clrtitle").nodeValue); } catch(e) {}
		try { MENU_LEFT.clrlinks = visi.trim(leftmenu[i].attributes.getNamedItem( "clrlinks").nodeValue); } catch(e) {}
		try { MENU_LEFT.linkedto = visi.trim(leftmenu[i].attributes.getNamedItem( "linkedto").nodeValue); } catch(e) {}
		
        if ( MENU_LEFT.linkedto != undefined )
		{
		    if ( article.indexOf(MENU_LEFT.linkedto) != 0) continue;
		}

		xmlParseLeftMenu ( leftmenu[i], arr );
	}
	if ( leftmenu.length )
	{ 
	    buildLeftMenu( arr,MENU_LEFT ); 
	}

}

function xmlParseLeftMenu    ( fields,arLeftMenu )
{   var n   = arLeftMenu.length;
	var items = fields.getElementsByTagName('item');
	for ( var j = 0; j < items.length; j++ )
	{   var prop = { id: '1', link: '', name: 'none', target:'_self',image:"",type:'item' };
					try
					{   prop.id    = visi.trim(items[j].attributes.getNamedItem( "id").nodeValue);
					}
					catch( e ) {}
					

					var chl  = items[j].childNodes;
				
					for ( var i = 0; i < chl.length; i++ )
					{   if ( chl[i].nodeType != 1 ) continue;
						switch( chl[i].nodeName )
						{   case 'name':    prop.name = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\""); break;
							case 'link':    
							    prop.link = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\"");

                                if (  chl[i].attributes != null )								
								{   var trg = chl[i].attributes.getNamedItem( "target");
								    if ( trg ) prop.target = trg.nodeValue;
								}
								break;
							case 'image':   try { prop.image  = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\""); } catch(e){}; break;
							case 'type' :   prop.type  = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\"");
						}
					}
					
				    arLeftMenu[n++]    =prop;		
	}
	return arLeftMenu;
}


function xmlParseLeftMenu1    ( fields,arLeftMenu )
{   var n   = arLeftMenu.length;
	
	for ( var j = 0; j < fields.length; j++ )
	{   if ( fields[j].nodeType == 1)
		{   switch( fields[j].nodeName )
			{   case 'item':
			        var prop = { id: '1', link: '', name: 'none', target:'_self',image:"",type:'item' };
					try
					{   prop.id    = visi.trim(fields[j].attributes.getNamedItem( "id").nodeValue);
					}
					catch( e ) {}
					

					var chl  = fields[j].childNodes;
				
					for ( var i = 0; i < chl.length; i++ )
					{   if ( chl[i].nodeType != 1 ) continue;
						switch( chl[i].nodeName )
						{   case 'name':    prop.name = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\""); break;
							case 'link':    
							    prop.link = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\"");

                                if (  chl[i].attributes != null )								
								{   var trg = chl[i].attributes.getNamedItem( "target");
								    if ( trg ) prop.target = trg.nodeValue;
								}
								break;
							case 'image':   try { prop.image  = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\""); } catch(e){}; break;
							case 'type' :   prop.type  = visi.trim(chl[i].childNodes[0].nodeValue," \t\n\r\f\"");
						}
					}
					
				    arLeftMenu[n++]    =prop;
				break;
			}
		}
	}
	return arLeftMenu;
}

function buildLeftMenu   ( arLeftStore,attr )
{   var arLeftLinkList = new Array( );
	var reclamBorder   = '0px solid #b81d1d';//#1f5f00',//#b81d1d',

	var s = '';

	s += '<table id="' + CTRL_RECLAMPANEL + '" width="100%" cellpadding="0" cellspacing="1" border="0" style="width: 100%;">' + "\n";
	s += '<tbody>' + "\n";
    var countReclam = 0;
	for ( var i = 0; i < arLeftStore.length; i++ )
	{   if ( arLeftStore[i].image == '' ) 
	    {   arLeftLinkList.push(arLeftStore[i]);
			continue;
		}
		countReclam++;
	    s += '<tr><td style="border: ' + reclamBorder + ';">' + "\n";
		s += '<a href="'   + arLeftStore[i].link + '" title="' + arLeftStore[i].name + '" target="' + arLeftStore[i].target + '">' + "\n";
		s += ' <img src="' + arLeftStore[i].image  + '" align="middle" border="0" alt="' + arLeftStore[i].name + '" style="margin:1px 0px 1px 0px;">' + "\n";
		s += '</a></td></tr>' + "\n";
	}
	s +='</tbody></table>' + "\n";
	var o = $(CTRL_RECLAMPANEL);

	if ( o  && countReclam )
	     o.innerHTML = s;
	buildLeftLinkList( arLeftLinkList,attr ); 
}

function buildLeftLinkList( arLeftLinkList,attr )
{   
	srcout.color = attr.clrlinks;

	if ( arLeftLinkList.length )
	{
		o = $(CTRL_LINKLIST);
		if ( o )
		{   var blk = new clsMsgBox( CTRL_LINKLIST, "Id"+CTRL_LINKLIST, visi );
	        blk.setProperties   ( {minwidth:200,imgwidth:8,imgheight:8});
		
	        blk.setProperties
            (   {   lt: 'images/sys/pannels/panel8x8_lt.png', 
					top:'images/sys/pannels/panel8x8_top.png', 
					rt: 'images/sys/pannels/panel8x8_rt.png',
					lef:'images/sys/pannels/panel8x8_lef.png',
					ct: 'images/sys/pannels/panel8x8_ct.png',
					rig:'images/sys/pannels/panel8x8_rig.png',
					lb: 'images/sys/pannels/panel8x8_lb.png', 
					bot:'images/sys/pannels/panel8x8_bot.png', 
					rb: 'images/sys/pannels/panel8x8_rb.png'
				} 
            );
			var s   = '';
			if ( attr.title != '' )
                 s  += '<p style="font-weight:bold; font-size:12px; color:'+attr.clrtitle+'; text-align:center; text-decoration:underline; margin:0; margin-top: 10px;padding:0;"> ' + attr.title 
				 + ' </p><br>';
	        var tblwid = visi.getObjectRect(CTRL_RECLAMPANEL).width;

            var wid    = new clsCalcStringWidth('calcWid',{'font-size':'12px','font-weight':'normal'});
            for ( var i = 0; i < arLeftLinkList.length; i++)
		    {   if ( arLeftLinkList[i].type == 'item')
				{   
			        var bElips = false;
			        wid.clear( );//16+9+

                    var name = arLeftLinkList[i].name;
                    var wtst = wid.calcStringWidth( name );

					while( wtst > tblwid - 60 )
					{   name = name.substring(0, name.length-1);
						wid.clear( );
						wtst = wid.calcStringWidth( name );
						bElips = true;
					}
					if ( bElips ) name += '...';
					s += '<p style="color:#000000; font-weight:bold; text-align:center; font-size:12px; margin:0; margin-top:8px; ">';
                    s += '<a href="' + arLeftLinkList[i].link + '" title="' + arLeftLinkList[i].name + '" target="' + 
			              arLeftLinkList[i].target + '" style="font-size:12px; letter-spacing:1px; font-weight:normal; color:' + attr.clrlinks + ';">' + name + '</a></p>';
				}
                if ( arLeftLinkList[i].type == 'title')
				{   if ( arLeftLinkList[i].name != 'none' )
					{   s += '<p style="font-weight:bold; font-size:12px; color:'+attr.clrtitle+'; text-align:center; text-decoration:underline; margin:10px 0px 5px 0px; padding:0;"> ' + arLeftLinkList[i].name + "</p>";
					}
					else s +='<br>';
				}
            }
            s += ' <p>&nbsp;</p>';

		    blk.setcontent( s );
		    blk.create    ( );
		   
		    var al = o.getElementsByTagName("A");
		    for ( var i = 0; i < al.length; i++)
		    {   visi.setStyles(al[i],srcout);
			    al[i].onmouseover = leftmenuBtnInOut;
	            al[i].onmouseout  = leftmenuBtnInOut;
		    }
		}

	}
}

function leftmenuBtnInOut( e )
{   if ( e == undefined ) e = event || window.event;
	switch( e.type )
	{   case 'mouseover': visi.setStyles(this, srcovr); break;
		case 'mouseout':  visi.setStyles(this, srcout); break;
	}
}
// ------------------------ standalone show/hide layers ----------------- *
// usually flash callback for navigate layers; or any layer navigation without float menu
function callbackShowLayer( id )
{   var navmenuobject    = $(MENU_AD_VERT);
    if ( navmenuobject == null )
    {   showlayer(MAINDIV_PREFIX+showlayer.currLayer,false);
		showlayer(MAINDIV_PREFIX+id,true);
	}
	else
	{   navmenuobject.navmnu.activateScene( id );
	    showlayer(MAINDIV_PREFIX+id,true);
	}
	showlayer.currLayer = id;
	correctMessagePos( );
}

// hide / show layers without float navigation
function showlayer      ( id, enable )
{   
	if ( showlayer.currLayer  ==  undefined || !showlayer.currLayer )
	     showlayer.currLayer = '1';

    var o   = visi.getElement( id );
	if ( o == null ) return;
	var arr = o.getElementsByTagName( '*');
		
	for ( var i = 0; i < arr.length; i ++ )
		  if ( arr[i].id ) showlayer( arr[i].id, enable );
	visi.setVisible( id, enable );
	if ( enable )
	     showlayer.currLayer = id.substr( MAINDIV_PREFIX.length );
}
// ------------------------ cookies ------------------------------------- *
function createCookie(name,value,days) 
{   if ( days )
	{   var date = new Date();
        date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+escape(value)+expires+"; path=/";
}

function readCookie(name)
{   var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++)
	{   var c = ca[i];
        while (c.charAt(0)==' ') c = c.substring(1,c.length);
        if (c.indexOf(nameEQ) == 0) return unescape(c.substring(nameEQ.length,c.length));
	}
	return null;
}
function eraseCookie(name) { createCookie(name,"",-1); }

// ------------------------ progress show ------------------------------- *
	function utilCleanRespond    ( respond )
	{   
	    var p    = respond.indexOf( "<?xml");
		var xm   = '';
		var ex   = '';
		if ( p >= 0 )
		{   xm   = respond.substr( p );
			if ( p > 0 )
				 ex   = respond.substr( 0,p );
		}
		else
		{   ex = respond;
		}
		if ( ex.length )
			 writeDbgMessage( ex );
		return {'xm':xm, 'ex':ex };
	}
    function utilCreateProgress ( )
	{
		var bod    = document.getElementsByTagName("body")[0];
		var maxr   = visi.getmaxdim( );
		var box    = document.createElement('div');	
		var iw     = 32;
		var w      = maxr.width;
		var ih     = 32;
		var h      = maxr.height;
		box.setAttribute( 'id', 'ajxMaskDiv');  
		visi.setStyles( box,{'position':'absolute','width':(w+'px'),'height':(h+'px'),'left':'0px','top':'0px',
						'background-image':'url(' + 'images/sys/bg_transp_50wht.png' + ')','background-repeat':'repeat',visibility:'hidden'});
		var img   = document.createElement("img");
		visi.setAttributes( img,{ 'src': 'images/sys/progress.gif','id':'ajxMaskImg','align':'left','border':'0','width':iw,'height':ih});
		visi.setStyles    ( img,{ 'z-index':'101','margin':'0','margin-left':((w-iw)/2 + 'px'),'margin-top':((h-ih)/2 + 'px')});
		box.appendChild   ( img );
		bod.appendChild   ( box );
		return box;
	}
	function utilParseReXml     ( respond, parseCallback )
	{   var prop = { err:'', username:'', userid:'', userlevel:'', chalenge:'',picture:'', dbg:'', message:'', elm: new Array()};
		var r    = utilCleanRespond( respond );
		if ( r.xm.length  )
		{
			r.xm = r.xm.replace(/<br>/gi, "<br/>");
			var xrsp = xmlparse.parseText( r.xm );
			var err  = xrsp.getElementsByTagName( 'err');
			if ( err.length )
				prop.err += err[0].childNodes[0].nodeValue;
	
			var dbg  = xrsp.getElementsByTagName( 'dbg');
			if ( dbg.length )
			{   prop.dbg += dbg[0].childNodes[0].nodeValue + "<br>";
				alert( prop.dbg );
			}
			var usr  = xrsp.getElementsByTagName( 'usr');//username
			if ( usr.length )
			{   prop.username = usr[0].childNodes[0].nodeValue;
			}
	
			var uid = xrsp.getElementsByTagName( 'uid');//userid
			if ( uid.length )
				 prop.userid = uid[0].childNodes[0].nodeValue;
				 
			var ulv = xrsp.getElementsByTagName( 'ulv');//level
			if ( ulv.length )
				 prop.userlevel = ulv[0].childNodes[0].nodeValue;
			
			var chl  = xrsp.getElementsByTagName( 'chl');//chalenge code
			if ( chl.length )
				 prop.chalenge = chl[0].childNodes[0].nodeValue;
			var pic  = xrsp.getElementsByTagName( 'pic');//secure picture
			if ( pic.length )
				 prop.picture = pic[0].childNodes[0].nodeValue;

			var msg = xrsp.getElementsByTagName( 'message');//extension
			if ( msg.length )
				 prop.message = msg[0].childNodes[0].nodeValue;

            if ( parseCallback != undefined)
			{
				parseCallback( prop,xrsp );
			}
		}
		else
		{   prop.err = "Unexpected return value: "+respond;
		    return prop;
		}
		
		if ( r.ex)
		{   if ( r.ex.toLowerCase().indexOf('error' >=0) )
				 prop.err     += "; " + r.ex;
			else prop.message += "; " + r.ex
		}
        return prop;		
	}
	
	function utilShowWait( bShowWait )
	{
    	var o1 = $( 'ajxMaskDiv');
		
   		if ( bShowWait == undefined ) bShowWait = true;
    	if (!bShowWait)
		{   visi.setVisible( o1, bShowWait);
		    return;
		}
	    var r  = visi.getmaxdim( );
		if ( o1 == null ) o1 = utilCreateProgress( );
    	if ( o1 )
    	{   o1.style.left   = r.left   + 'px';
    		o1.style.top    = r.top    + 'px';
    		o1.style.width  = r.width  + 'px';
    		o1.style.height = r.height + 'px';
    		
    		o2 = $( 'ajxMaskImg');
			o2.style.marginLeft = (r.width/2 -16)   + 'px';
			o2.style.marginTop  = (r.height/2-16)   + 'px';
    	    visi.setVisible( o1, bShowWait);
    	}
	}

