/*
General JS Functions. 

     Author: Kastellanos Nikos 
Last Update: 16/4/2002
*/




/*
Input:	ID name
output:	The related Object
*/
function NK_All(ID) 
{ 
	if(document.all)	
		{ return document.all[ID]; } 
	else if(document.documentElement)  
		{ return document.getElementById (ID); } 
 	else if(document.layers)	
		{ return document.layers[ID]; }	
	
	return null;
}





/*
output:	The scrolling position from the top
*/
function NK_GetWindowOffsetTop() 
{
 	if (window.innerHeight)	{ return window.pageYOffset; }
	else if (document.body)	{ return document.body.scrollTop; }
}






/*
output:	The Height of the window 
*/
function NK_GetWindowHeight() 
{ 
	if (window.innerHeight)	  { return window.innerHeight; } 
    else if (document.body)	  { return document.body.clientHeight; }
}





/*
input: Object 
Initialize some style properties of the object
*/
function NK_DHTML_Init(Object) 
{ 
 	 //if (navigator.userAgent.match(/Mozilla\/5\../) && float_init)  { SetObjectOffsetTop(Object, undefined); }
}




/*
Input:	Object
output:	Height of the Object
*/
function NK_GetObjectHeight(Object) 
{
	NK_DHTML_Init(Object);
 	if (document.all || document.documentElement)	
	{
		Clip = Object.style.clip; 
		if (! Clip)  { return Object.offsetHeight; }
     	else	{ return NK_GetClipElement(Clip, 'Bottom'); }
	} 
    else if (document.layers)	{ return Object.clip.height; }
} 





/*
input:  Object.style.clip , 'Top' or 'Left' or 'Right' or 'Bottom' 
output: the element of the related object specified in the second argument
*/
function NK_GetClipElement (Clip, Element) 
{
	Clip = Clip.substr(Clip.indexOf('(') + 1); 
    Clip = Clip.substr(0, Clip.length - 1);
	Clippers = Clip.split (" "); 
    for (i = 0; i < Clippers.length; i++) 
	{ 
     	if (Clippers[i] != 'auto')  { Clippers[i] = Clippers[i].replace (/D/g, ""); }
	} 
    ClipTop = Number(Clippers[0]); 
    ClipRight = Number(Clippers[1]); 
    ClipBottom = Number(Clippers[2]);
    ClipLeft = Number(Clippers[3]); 
    if (Element == 'Top')	{ return ClipTop; } 
    else if (Element == 'Right')	{ return ClipRight; } 
    else if (Element == 'Bottom')	{ return ClipBottom; } 
    else if (Element == 'Left')	{ return ClipLeft; } 
    else  { return undefined; }
} 



/*
input: Object
output: Distance of the Object from the top of the window 
*/
function NK_GetObjectOffsetTop(Object) 
{ 
     NK_DHTML_Init(Object); 
	 var TopOffset=0;
     if (Object.offsetTop)	
	 	{ TopOffset= Object.offsetTop; } 
     else if (document.layers)	
	 	{ TopOffset= Object.top; }
	 
	 return TopOffset;
}





/*
input: Object , New Distance of Object from Top
*/
function NK_SetObjectOffsetTop(Object, Offset) 
{ 
     if (Object.style)	{ Object.style.top = Offset; } 
     else if (Object.top)	{ Object.top = Offset; }
}



/*
input: Object , New Distance of Object from left
*/
function NK_SetObjectOffsetLeft(Object, Offset) 
{ 
     if (Object.style)	{ Object.style.left = Offset; } 
     else if (Object.top)	{ Object.left = Offset; }
}






function NK_GetObjectAbsoluteLeftOffset(name)
{
	if(document.all)
	{
		ret=0;
		tempname=name;
		st='';
		while(tempname!=null  && tempname!=document)
		{	
			if(tempname==tempname.offsetParent) break;
			ret=parseInt(ret);
			ret+= parseInt(tempname.offsetLeft);
		
			//work around a bug of IE5.0
			if(tempname.style!=null)
			if( tempname.style.left!='' && tempname.style.left!=null )
			{	
				left=tempname.style.left;
				left=left.substring(0,left.indexOf('px'));
				left=parseInt( left );
				if(	tempname.offsetLeft!= left   ) ret+=left ;
			}		
		
			//st+='tempname.nodeName:'+tempname.nodeName+'.'+tempname.attributes.id+'\r\n';
			//st+='tempname.offsetLeft:'+tempname.offsetLeft+'\r\n';
			//st+='tempname.style.left:'+tempname.style.left+'\r\n';
			//st+='\r\n';
		
			if( tempname.parentNode=='undefined' || tempname.parentNode==null ) break;
			tempname=tempname.offsetParent;
		}	
		st+=ret+' \r\n';	
		//alert(st);	
		return ret;
	}
	else
	{
		ret=0;
		tempname=name;
		st='';
		while(tempname!=null  && tempname!=document && tempname!=undefined)
		{	
			//if(tempname==tempname.offsetParent) break;
			ret=parseInt(ret);
			ret+= parseInt(tempname.offsetLeft);
		
			//st+='tempname.nodeName:'+tempname.nodeName+'.'+tempname.attributes.id+'\r\n';
			//st+='tempname.offsetLeft:'+tempname.offsetLeft+'\r\n';
			//st+='tempname.style.left:'+tempname.style.left+'\r\n';
			//st+='\r\n';
		
			//alert('tempname.parentNode.style.left:'+tempname.parentNode.style.left+'\n\rtempname.offsetParent.style.left:'+tempname.offsetParent.style.left);
			//alert(tempname.parentNode.style.left);
		
			if( tempname.parentNode==undefined  ) break;		
			if( tempname.parentNode=='undefined' || tempname.parentNode==null ) break;
		
			tempname=tempname.ParentNode;
		}	
		st+=ret+' \r\n';
		//alert(st);
	
		return ret;	
	}
}

function NK_GetObjectAbsoluteTopOffset(name)
{
	if(document.all)
	{
		ret=0;
		tempname=name;	
		st='';
		while(tempname!=null  && tempname!=document)
		{	
			if(tempname==tempname.offsetParent) break;
			ret=parseInt(ret);
			
		
			
		
			ret+= (tempname.offsetTop);
			
			//work around a bug of IE5.0
			if(document.all)
			if(tempname.style!=null)
			if(tempname.style.top!='' && tempname.style.top!=null )
			{	
				_top=tempname.style.top;		
				_top=_top.substring(0, _top.indexOf('px'));	
				_top=parseInt( _top );
				if(	tempname.offsetTop!= _top   ) ret+=_top ;
			}
			
			st+="\r\n<p>";
			st+='tempname.nodeName:'+tempname.nodeName+'.'+tempname.attributes.id+' \r\n';
			st+='tempname.offsetTop:'+tempname.offsetTop+' \r\n';
			st+='tempname.style.top:'+tempname.style.top+' \r\n';
			st+='tempname.style.position:'+tempname.style.position+' \r\n';

			st+='tempname.scrollHeight:'+tempname.scrollHeight + ' \r\n' ;
			st+='tempname.offsetHeight:'+tempname.offsetHeight   + ' \r\n' ;
			st+='tempname.clientTop:'+tempname.clientTop  + ' \r\n' ;
			st+='tempname.scrollTop:'+tempname.scrollTop   + ' \r\n' ;
			st+='tempname.clientHeight:'+tempname.clientHeight  + ' \r\n' ;
	
			st+=' \r\n';

	
			if( tempname.offsetParent=='undefined' || tempname.offsetParent==null ) 
				break;
			tempname=tempname.offsetParent;
			
			//if(tempname.style.position=='absolute')
			//	break;		
			
			//if( tempname.parentNode=='undefined' || tempname.parentNode==null ) break;
			//tempname=tempname.parentNode;
			
			//if( tempname.parent=='undefined' || tempname.parent==null ) break;
			//tempname=tempname.parent;
			
			
		}
		st+=ret+' \r\n';
		//alert(st);
		
		//window.open( 'about:' +st , 'info' , 'height=100'  );
		
		return ret;
	}
	else
	{
		ret=0;
		tempname=name;	
		st='';
		while(tempname!=null  && tempname!=document)
		{	
			if(tempname==tempname.offsetParent) break;
			ret=parseInt(ret);
			ret+= (tempname.offsetTop);
			
			//work around a bug of IE5.0
			if(document.all)
			if(tempname.style!=null)
			if(tempname.style.top!='' && tempname.style.top!=null )
			{	
				_top=tempname.style.top;		
				_top=_top.substring(0, _top.indexOf('px'));	
				_top=parseInt( _top );
				if(	tempname.offsetTop!= _top   ) ret+=_top ;
			}	
		
			st+='tempname.nodeName:'+tempname.nodeName+'.'+tempname.attributes.id+' \r\n';
			st+='tempname.offsetTop:'+tempname.offsetTop+' \r\n';
			st+='tempname.style.top:'+tempname.style.top+' \r\n';
			st+=' \r\n';
			
			if( tempname.offsetParent=='undefined' || tempname.offsetParent==null ) break;
			tempname=tempname.offsetParent;
		}
		st+=ret+' \r\n';	
		//alert(st);
		
		return ret;
	}
}



function NK_PlaceObjectRelativeToObject(mainobj,relobj,xx,yy,view)
{
	if( relobj!='window') var rel=NK_All( relobj );
	else var rel=window;
	var mainO =NK_All( mainobj );
			
	if(rel==null) return 0;		
	if(mainO==null) return 0;		
	
	objTopOffset=NK_GetObjectAbsoluteTopOffset(rel );
	objLeftOffset=NK_GetObjectAbsoluteLeftOffset(rel );
			
	//objTopOffset-=NK_GetWindowOffsetTop();

	//alert(objLeftOffset);
	
	//mainObjTopOffset=NK_GetObjectAbsoluteTopOffset( mainO );
	//mainObjLeftOffset=NK_GetObjectAbsoluteLeftOffset( mainO );
	
	//parentObjTopOffset=NK_GetObjectAbsoluteTopOffset( rel.offsetParent );
	//parentObjLeftOffset=NK_GetObjectAbsoluteLeftOffset( rel.offsetParent );
	
	
	//objTopOffset= rel.offsetHeight ;
	//objLeftOffset= rel.offsetWidth ;
		
	//alert(	"offsetLeft,offsetTop:  "+rel.offsetLeft+","+rel.offsetTop	);
	//alert(	" offsetLeft,offsetTop:  "+rel.offsetLeft+","+rel.offsetTop	);
	//alert(	" offsetWidth,offsetHeight :  "+rel.offsetWidth+","+rel.offsetHeight	);
	//alert(	objLeftOffset+","+objTopOffset	);
	
	//mainO.style.top= 0;
	//mainO.style.left= 0;

	//alert( mainObjLeftOffset +':'+ objLeftOffset +':'+ parentObjLeftOffset );
			
	//objLeftOffset=50;
	
    //NK_DHTML_Init(mainO); 
	NK_SetObjectOffsetTop(mainO, parseInt(objTopOffset)  +parseInt(yy) );
	//alert( '2:'+ parseInt(objLeftOffset  +xx));	
	NK_SetObjectOffsetLeft(mainO, parseInt(objLeftOffset)  +parseInt(xx) );
	
	//mainO.style.top= ( objTopOffset ) +yy;
	//mainO.style.left= ( objLeftOffset ) +xx;

	//alert(mainO.style.left+'|'+objLeftOffset+'|'+xx);
	
	//alert('NK_GetObjectAbsoluteTopOffset(mainO)'+NK_GetObjectAbsoluteTopOffset(mainO) );
	
	 //if(view==true)	
	 //	mainO.style.display="block";
	 //if(view==false)
	//	mainO.style.display="none";
}


function NK_HideAllObjectsOfName(objname)
{
	// for IE5.0, Mozilla 6, or any DOM2
	if (document.getElementsByTagName && document.getElementById)
	{
		var NodLst=document.getElementsByName( objname );
		for(var i=0;i<NodLst.length;i++ )
		{
			var Nod=NodLst[i];
			//alert( 'tag:' + Nod.tagName +',   id:'+ NodLst[i].id  );
			//alert( 'style:' + Nod.style.display  )
			//Nod.style.display= "none" ;
			NK_HideElement( Nod );
			
		}
	}
	
	// 	for IE 4
	if (document.all)
	{	
		var divs=document.all.tags('div');
		for(i=0;i<divs.length;i++)
			if(divs(i).getAttribute('name')!=null )
			if(divs(i).getAttribute('name')== objname )
			{
				//alert(document.all(i).getAttribute('name'));
				//divs(i).style.display='none';
				NK_HideElement( divs(i) );
			}			
	}	
	return;
}



function NK_HideAllObjectsOfNameWithExclude(objname, ExcludeArray )
{
	// for IE5.0, Mozilla 6, or any DOM2
	if (document.getElementsByTagName && document.getElementById)
	{		
		var NodLst=document.getElementsByName( objname );
		for(var i=0;i<NodLst.length;i++ )
		{
			var Nod=NodLst[i];
			//alert( 'tag:' + Nod.tagName +',   id:'+ NodLst[i].id  );
			//alert( 'style:' + Nod.style.display  )
			
			var excludestatus=false;
			for(var k=0;k<ExcludeArray.length;k++)
			{
				if( ExcludeArray[k]==Nod.id ) 
					excludestatus=true;
			}
					
			if(excludestatus==false) 
			{
				NK_HideElement( Nod );				
				//Nod.style.display= "none" ;
			}
			
		}
	}


	// 	for IE 4
	if (document.all)
	{	
		var divs=document.all.tags('div');
		for(i=0;i<divs.length;i++)
			if(divs(i).getAttribute('name')!=null )
			if(divs(i).getAttribute('name')== objname )
			{
				var excludestatus=false;
				for(var k=0;k<ExcludeArray.length;k++)
					if( ExcludeArray[k]==divs(i).id ) 
						excludestatus=true;
				if(excludestatus==false) 
				{
					//divs(i).style.display='none';
					NK_HideElement( divs(i) );
				}
			}			
	}	


	return true;
}


function NK_MakeVisibleAllParents(ObjName)
{
	tempObj=NK_All( ObjName) ;
	
	while(tempObj!=null)
	{
		//tempObj.style.display='block';
		NK_ShowElement( tempObj );
		tempObj=tempObj.parentNode;
	}
	return;
}












function NK_moveTo(daObject, endLeft, endTop, numSteps, delay, endFunction) {

  // Declare variables.
  var leftInc, topInc, daObj = new Object;
  // The first time through, create document.WM.WM_moveTo
  if (typeof document.NK == 'undefined'){
    document.NK = new Object;
    document.NK.NK_moveTo = new Object;
  } else if (typeof document.WM.WM_moveTo == 'undefined') {
    document.NK.NK_moveTo = new Object;
  }
  // Store endFunction to execute when the move is finished.
  if(endFunction) document.NK.NK_moveTo.endFunction = endFunction;
  // Get a good object reference (call it daObj) from WM_checkIn().
  // But if we've already done so, don't check it in again.
    if (daObject == "sameObj") {
      daObj = document.NK.NK_moveTo.daObj;
    } else {
      daObj = WM_checkIn(daObject);
      document.NK.NK_moveTo.daObj = daObj;
    }
  // If this is the last step, go to the end point and run endFunction.
  if (numSteps == 1) {
    daObj.left = endLeft;
    daObj.top = endTop;
    // If an endFunction was set, execute it and then delete it.
    if(document.NK.NK_moveTo.endFunction) {
      daFunction = document.NK.NK_moveTo.endFunction;
      document.NK.NK_moveTo.endFunction = '';
      eval(daFunction);
    }
  } else {
    // Otherwise, figure out how far to move.
    leftInc = (endLeft - parseInt(daObj.left)) / numSteps;
    topInc = (endTop - parseInt(daObj.top)) / numSteps;
    // Then move, decrement numSteps, and do it all again.
    daObj.left = parseInt(daObj.left) + leftInc;
    daObj.top = parseInt(daObj.top) + topInc;
    numSteps--;
    setTimeout ('WM_moveTo(\'sameObj\', ' + endLeft + ', ' + endTop + ', ' + numSteps + ', ' + delay + ')', delay);
  }
}


function NK_SetOpacity(id,arg) 
{    //arg=0 to 100
  if(document.getElementById)
  {
    if(document.all)
	{
       document.getElementById(id).style.filter="alpha(opacity=100)";
       document.getElementById(id).filters.alpha.opacity  = arg;
    } 
	else 
	{
       var opaci=""+arg/100+"";
       document.getElementById(id).style.opacity = opaci;
    }
  }
  return;
}


function NK_PreloadImages() 
{ 
  	var d=document; 
	if(d.images)
	{ 
		if(!d.MM_p) d.MM_p=new Array();
	    var i,j=d.MM_p.length,a=NK_PreloadImages.arguments; 
		for(i=0; i<a.length; i++)
			if (a[i].indexOf("#")!=0)
			{ 
				d.MM_p[j]=new Image; 
				d.MM_p[j++].src=a[i];
			}
	}
}


function NK_ShowElement(Obj)
{
	if (document.layers) return;

	Obj.style.display='block';
	//Obj.style.visibility='visible';
	return;	
}

function NK_HideElement(Obj)
{
	if (document.layers) return;
	
	Obj.style.display='none';
	//Obj.style.visibility='hidden';
	return;	
}


function NK_GetVisibility(Obj)
{
	if (document.layers) return true; //just a lucky guess.   8-)
	
	//if(  Obj.style.visibility=='hidden'  )	
	if(  Obj.style.display=='none'  )	
		return false;

	//if(  Obj.style.visibility=='visible'  )	
	if(  Obj.style.display=='block'  )		
		return true;
	
	return true;	
}


function SwapVisibility(Obj)
{
	if(NK_GetVisibility(Obj)==true) 
		NK_HideElement(Obj) 
	else 
		NK_ShowElement(Obj);
}

