/************************************************************************************************************
(C) www.dhtmlgoodies.com, October 2005

Version 1.2: Updated, November 12th. 2005

This is a script from www.dhtmlgoodies.com. You will find this and a lot of other scripts at our website.	

Terms of use:
You are free to use this script as long as the copyright message is kept intact. However, you may not
redistribute, sell or repost it without our permission.

Thank you!

www.dhtmlgoodies.com
Alf Magne Kalleland

************************************************************************************************************/		

var panelWidth = 355;	// Width of help panel	 - changed for Adobe Post It
var slideSpeed = 5;		// Higher = quicker slide
var slideTimer = 25;	// Lower = quicker slide
var slideActive = true;	// Slide active ?
var initBodyMargin = 0;	// Left or top margin of your <body> tag (left if panel is at the left, top if panel is on the top)
var pushMainContentOnSlide = false;	// Push your main content to the right when sliding
var panelPosition = 1; 	// 0 = left , 1 = top

/*	Don't change these values */
var slideLeftPanelObj=false;
var slideInProgress = false;	
var startScrollPos = false;
var panelVisible = false;

function initSlideLeftPanel(expandOnly)
{
	if(slideInProgress)return;
	if(!slideLeftPanelObj){
		if(document.getElementById('dhtmlgoodies_leftPanel')){	// Object exists in HTML code?
			slideLeftPanelObj = document.getElementById('dhtmlgoodies_leftPanel');
			if(panelPosition == 1)slideLeftPanelObj.style.width = '355px'; //Changed from 100% for Adobe Post It
		}else{	// Object doesn't exist -> Create <div> dynamically
			slideLeftPanelObj = document.createElement('DIV');
			slideLeftPanelObj.id = 'dhtmlgoodies_leftPanel';
			slideLeftPanelObj.style.display='none';
			document.body.appendChild(slideLeftPanelObj);
		}
		
		if(panelPosition == 1){
			slideLeftPanelObj.style.top = "-" + panelWidth + 'px';
			slideLeftPanelObj.style.left = '0px';	
			slideLeftPanelObj.style.height = panelWidth + 'px';			
		}else{
			slideLeftPanelObj.style.left = "-" + panelWidth + 'px';
			slideLeftPanelObj.style.top = '0px';
			slideLeftPanelObj.style.width = panelWidth + 'px';
		}
		

		if(!document.all || navigator.userAgent.indexOf('Opera')>=0)slideLeftPanelObj.style.position = 'fixed';;
	}	
	
	if(panelPosition == 0){
		if(document.documentElement.clientHeight){
			slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px';
		}else if(document.body.clientHeight){
			slideLeftPanelObj.style.height = document.body.clientHeight + 'px';
		}
		var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1;
	}else{
		if(document.documentElement.clientWidth){
			slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px';
		}else if(document.body.clientHeight){
			slideLeftPanelObj.style.width = document.body.clientWidth + 'px';
		}
		var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1;			
		
		
	}
	slideLeftPanelObj.style.display='block';
	
	if(panelPosition==1)
		startScrollPos = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
	else
		startScrollPos = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
	if(leftPos<(0+startScrollPos)){
		if(slideActive){
			slideLeftPanel(slideSpeed);	
		
		}else{
			document.body.style.marginLeft = panelWidth + 'px';
			slideLeftPanelObj.style.left = '0px';
		}
	}else{
		if(expandOnly)return;
		if(slideActive){		
			slideLeftPanel(slideSpeed*-1);
		}else{
			if(panelPosition == 0){
				if(pushMainContentOnSlide)document.body.style.marginLeft =  initBodyMargin + 'px';
				slideLeftPanelObj.style.left = (panelWidth*-1) + 'px';	
			}else{
				if(pushMainContentOnSlide)document.body.style.marginTop =  initBodyMargin + 'px';
				slideLeftPanelObj.style.top = (panelWidth*-1) + 'px';						
			}			
		}
	}	
	
	if(navigator.userAgent.indexOf('MSIE')>=0 && navigator.userAgent.indexOf('Opera')<0){
		window.onscroll = repositionHelpDiv;
	
		repositionHelpDiv();
	}
	window.onresize = resizeLeftPanel;
	
}

function resizeLeftPanel()
{
	if(panelPosition == 0){
		if(document.documentElement.clientHeight){
			slideLeftPanelObj.style.height = document.documentElement.clientHeight + 'px';
		}else if(document.body.clientHeight){
			slideLeftPanelObj.style.height = document.body.clientHeight + 'px';
		}		
	}else{
		if(document.documentElement.clientWidth){
			slideLeftPanelObj.style.width = document.documentElement.clientWidth + 'px';
		}else if(document.body.clientWidth){
			slideLeftPanelObj.style.width = document.body.clientWidth + 'px';
		}	
	}
}

function slideLeftPanel(slideSpeed){
	slideInProgress =true;
	var scrollValue = 0;
	if(panelPosition==1)
		var leftPos = slideLeftPanelObj.style.top.replace(/[^0-9\-]/g,'')/1;
	else
		var leftPos = slideLeftPanelObj.style.left.replace(/[^0-9\-]/g,'')/1;
		leftPos+=slideSpeed;
		okToSlide = true;
	if(slideSpeed<0){
		if(leftPos < ((panelWidth*-1) + startScrollPos)){
			leftPos = (panelWidth*-1) + startScrollPos;	
			okToSlide=false;
		}
	}
	if(slideSpeed>0){
		if(leftPos > (0 + startScrollPos)){
			leftPos = 0 + startScrollPos;
			okToSlide = false;
		}			
	}
	if(panelPosition==0){
		slideLeftPanelObj.style.left = leftPos + startScrollPos + 'px';
		if(pushMainContentOnSlide)document.body.style.marginLeft = leftPos - startScrollPos + panelWidth + 'px';
	}else{
		slideLeftPanelObj.style.top = leftPos + 'px';
		if(pushMainContentOnSlide)document.body.style.marginTop = leftPos - startScrollPos + panelWidth + 'px';			
	}
	if(okToSlide)setTimeout('slideLeftPanel(' + slideSpeed + ')',slideTimer); else {
		slideInProgress = false;
		if(slideSpeed>0)panelVisible=true; else panelVisible = false;
	}
	var slideOut = true;
}
	
	
	function repositionHelpDiv()
	{
		if(panelPosition==0){
			var maxValue = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
			slideLeftPanelObj.style.top = maxValue;
		}else{
			var maxValue = Math.max(document.body.scrollLeft,document.documentElement.scrollLeft);
			slideLeftPanelObj.style.left = maxValue;	
			var maxTop = Math.max(document.body.scrollTop,document.documentElement.scrollTop);
			if(!slideInProgress)slideLeftPanelObj.style.top = (maxTop - (panelVisible?0:panelWidth)) + 'px'; 		
		}
	}

function cancelEvent()
{
	return false;
}

function keyboardShowLeftPanel()
{
		initSlideLeftPanel();
		return false;	
}

function leftPanelKeyboardEvent(e)
{
	if(document.all)return;
	
	if(e.keyCode==112){
		initSlideLeftPanel();
		return false;
	}		
}

function setLeftPanelContent(text)
{
	document.getElementById('leftPanelContent').innerHTML = text;
	initSlideLeftPanel(true);
}

if(!document.all)document.documentElement.onkeypress = leftPanelKeyboardEvent;
document.documentElement.onhelp  = keyboardShowLeftPanel;


