var CPanel = new function() {};

CPanel.prototype = {

	_construct : function(divEl, initX, initY, strElement) {
		this.panel = divEl;
		this.posX = initX || 0;
		this.posY = initY || 0;
		this.isShown = false; //(divEl.style.display == 'block');
		this.ajaxComp = new SimpleAjaxComp();
		this.target = strElement;
	},

	_showPanel : function(innerContent) {
		this.setPanel(innerContent);
		this.showPanel();
	},

	setPanel : function(inHTML) {
		this.panel.innerHTML = inHTML;
	},
	
	showPanel : function() {
		var el = this.panel;
		if (el) {
			var scrollLeft = (document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
			var scrollTop = (document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
			var clientWidth = document.documentElement.clientWidth;
			var clientHeight = document.documentElement.clientHeight;
			
			var _el = el.getElementsByTagName('div')[0];
			var _w = _el ? parseInt(_el.style.width) : 400;
			var _h = _el ? parseInt(_el.style.height) : 300;
			
			el.style.left = scrollLeft + ((clientWidth - _w) / 2) + 'px';
			el.style.top = scrollTop + ((clientHeight - _h) / 2) + 'px';
			el.style.display = 'block';
			window.cpanelManager = this;
		}
	},
	
	hidePanel : function() {
		var el = this.panel;
		el.style.display = 'none';
		try {
			delete window.cpanelManager; // might fail in IE6/7
		} catch(e) {
			//~debug: alert('delete operation is not supported!');
		}
	},
	
	switchPanel : function() {
		var el = this.panel;
		el.style.display = (el.style.display == 'none' ? 'block' : 'none');
	}
}

 function FavPanel(divEl, initX, initY, strElement) {

	this.init = function(divEl, initX, initY, strElement) {
		if (!this.isShown) {
			this._construct(divEl, initX, initY, strElement);
			var that = this;
			this.ajaxComp.serverRequest('/favouritesManagerBuilder.do?target='+that.target,
				function(resp) {
					that._showPanel(resp);
				});
		}
		return false;
	};

	this.getSelectedFavFolder = function() {
		var inputList = document.getElementsByTagName("input");
		var favFolder = -1;
		for (var i=0; i < inputList.length; ++i) {
			if (inputList[i].type == 'radio' && inputList[i].checked) {
				favFolder = inputList[i].value;
				break;
			}
		}
		return favFolder;
	};
	
	this.submit = function() {
		var favFolder = this.getSelectedFavFolder();
		if (favFolder > 0) {
			var that = this;
			this.ajaxComp.serverRequest('/ajaxGateway.do?act=addFav&favFolderId='+favFolder+'&favExp='+that.target,
				function(resp) {
					if(reloadFav) { reloadFav(); }
					that.hidePanel(resp);
				});
		}
	};

	// initialization
	this.init(divEl, initX, initY, strElement);
};

YAHOO.augment(FavPanel, CPanel);

function PlaylistPanel(divEl, initX, initY, strElement) {

	this.init = function(divEl, initX, initY, strElement) {
		if (!this.isShown) {
			this._construct(divEl, initX, initY, strElement);
			var that = this;
			this.ajaxComp.serverRequest(that.target,
				function(resp) {
					that._showPanel(resp);
				});
		}
		return false;
	};
	
	this.init(divEl, initX, initY, strElement);
}

YAHOO.augment(PlaylistPanel, CPanel);

