var panelOptions=new Object();
var globalPanels=new Array();
var panelMainBody=null;
var activePanelIds=new Array();

function windowSize(side) {
  var myWidth = 0, myHeight = 0;
  if( typeof( parent.window.innerWidth ) == 'number' ) {
    //Non-IE
    myWidth = parent.window.innerWidth;
    myHeight = parent.window.innerHeight;
  } else if( parent.document.documentElement && ( parent.document.documentElement.clientWidth || parent.document.documentElement.clientHeight ) ) {
    //IE 6+ in 'standards compliant mode'
    myWidth = parent.document.documentElement.clientWidth;
    myHeight = parent.document.documentElement.clientHeight;
  } else if( parent.document.body && ( parent.document.body.clientWidth || parent.document.body.clientHeight ) ) {
    //IE 4 compatible
    myWidth = parent.document.body.clientWidth;
    myHeight = parent.document.body.clientHeight;
  }

  if (side == 'width') return myWidth; else return myHeight;
}


function createPanel(url,optionsObj)
{
	parent.panelMainBody=parent.document.getElementsByTagName('body')[0];	
	parent.globalPanels[parent.globalPanels.length]=new Panel(url,optionsObj);
	parent.globalPanels[parent.globalPanels.length-1].init();
	return parent.globalPanels.length-1;
}

function Panel(url,optionsObj)
{
	this.url=url;
	this.optionsObj=optionsObj;
	if (!this.optionsObj.width)		this.optionsObj.width='800px';
	if (!this.optionsObj.height)	this.optionsObj.height='550px';
	this.id=parent.globalPanels.length;	
	this.panelId=optionsObj.panelId;

	this.panelIframe=null;
	this.panelContainer=null;
}

Panel.prototype = {
	addFadeLayer : function()
	{
		var fadeLayer=document.createElement('div');
		fadeLayer.id='fadeLayer__'+this.id;
		fadeLayer.className='fadeLayer';
		fadeLayer.style.position='absolute';
		fadeLayer.style.zIndex=98;
		panelMainBody.appendChild(fadeLayer);
		this.setFadeLayerSize();		
	},
	
	init : function()
	{
		
		//fadelayer
		if (! this.optionsObj.disableFadeLayer)
			this.addFadeLayer();
		//panel container
		this.panelContainer=document.createElement('div');
		this.panelContainer.id='panelContainer__'+this.id;
		this.panelContainer.className='panelContainer';
		this.panelContainer.style.zIndex=99;
		if (!this.optionsObj.disableHide)
			this.setVisibility(false);
		parent.panelMainBody.appendChild(this.panelContainer);
		
		//panel title
		var panelTitle=document.createElement('div');
		panelTitle.id='panelTitle__'+this.id;
		panelTitle.className='panelTitle';
		panelTitle.innerHTML='<span>'+this.optionsObj.title+'</span><div class="panel_close"><a onclick="getPanelById('+this.id+').removePanel()" />X</div>';
		this.panelContainer.style.position='absolute';
		this.panelContainer.style.width=this.optionsObj.width;
		this.panelContainer.style.width=this.optionsObj.width;
		this.panelContainer.style.height=this.optionsObj.height;
		
		this.setAlign();
		
		this.panelContainer.appendChild(panelTitle);
		if (!this.optionsObj.wIframe)
		{
			//panel content (iframe)
			this.panelIframe=document.createElement('iframe');
			this.panelIframe.id='panelIframe__'+this.id;
			this.panelIframe.className='panelIframe';
			this.panelIframe.frameBorder='0';
			this.panelIframe.src=this.url;
			if (! this.optionsObj.enableScroll)
				this.panelIframe.setAttribute('scrolling','No');
			this.panelIframe.style.width=this.optionsObj.width;
			this.panelIframe.style.height=this.optionsObj.height;
			this.panelContainer.appendChild(this.panelIframe);	
		}
		else
		{
			this.panelDiv=document.createElement('div');
			this.panelDiv.id='panelDiv__'+this.id;
			this.panelDiv.className='panelDiv';
			this.panelDiv.innerHTML=this.url; //iframe nelkuli modban az url a text!!!
			this.panelDiv.style.width=this.optionsObj.width;
			this.panelDiv.style.height=this.optionsObj.height;
			this.panelContainer.appendChild(this.panelDiv);	
		}
		
		parent.activePanelIds.push(this.id);
	},
	
	setVisibility : function(boolVal)
	{
		this.panelContainer.style.visibility=((boolVal)?'visible':'hidden');
	},
	
	setAlign : function()
	{
		if (! this.optionsObj.left || !this.optionsObj.top)
		{
			this.panelContainer.style.left=((windowSize('width') - parseInt(this.optionsObj.width,10)) / 2)+'px';
			this.panelContainer.style.top=((windowSize('height') - parseInt(this.optionsObj.height,10)) / 2)+'px';
		}
		else
		{
			this.panelContainer.style.left=this.optionsObj.left;
			this.panelContainer.style.top=this.optionsObj.top;
		}
	},
	
	setPanelSize : function (width,height)
	{
		this.panelIframe.style.width=width;
		this.panelIframe.style.height=height;
		this.optionsObj.height=height;	
		this.optionsObj.width=width;	
		this.panelContainer.style.width=width;
		this.panelContainer.style.height=height;
		this.setAlign();
	},
	
	setFadeLayerSize : function()
	{
		var width=windowSize('width');
		var height=windowSize('height');
		parent.document.getElementById('fadeLayer__'+this.id).style.width=width+'px';	
		parent.document.getElementById('fadeLayer__'+this.id).style.height=height+'px';	
	},
	
	removePanel : function()
	{
		if (typeof(this.optionsObj.evalStr)=='string')
			eval(this.optionsObj.evalStr);		
		parent.document.getElementById('panelContainer__'+this.id).parentNode.removeChild(parent.document.getElementById('panelContainer__'+this.id));
		if (! this.optionsObj.disableFadeLayer)
			this.removeFadeLayer();
		parent.globalPanels[this.id]=new Object();
		parent.activePanelIds.pop();		
	},
	

	removeFadeLayer : function()
	{
		parent.document.getElementById('fadeLayer__'+this.id).parentNode.removeChild(parent.document.getElementById('fadeLayer__'+this.id));		
	}
}

function getPanelById(id)
{
	return parent.globalPanels[id];
}

function getPanelByPanelId(id)
{
	for (var i=0;i<parent.globalPanels.length;i++)
		if (parent.globalPanels[i].panelId==id)
			return parent.globalPanels[i];
}



function removeAllPanel()
{
	for (var i=0;i<parent.globalPanels.length;i++)
		if (typeof(parent.globalPanels[i].removePanel)=='function')
			parent.globalPanels[i].removePanel();
	parent.globalPanels=new Array(); //clear global object;
}

function removeActivePanel()
{
	if (parent.activePanelIds.length>0)
		parent.globalPanels[parent.activePanelIds[parent.activePanelIds.length-1]].removePanel();	
}