var CTRWin = new Class({
		initialize: function(options) {
		this.options = Object.extend({
			width:			300,
			height:			200,
			top:			100,
			left:			100,
			title:			'',
			status:			'',
			closable:		true,
			minimize:		true,
            ajaxfile:      'control.php',
		    action:        '',
            more:          ''
	    	}, options || {});
		
        this.id = 'trwin_' + new Date().getTime();
        this.el = new Element('div'); 
		this.el.id = this.id;
		this.el.addClass('trwin_win');
        

		this.el.style.zIndex = 1;
		this.el.setStyles({
			width: this.options.width + 'px',
			height: this.options.height + 'px',
			top: this.options.top + 'px',
			left: this.options.left + 'px'
		});
		
		this.innerContent = "<table id='title_" + this.id + "' class='trwin_title'>\
			<tr>\
				<td id='titleText_" + this.id + "'></td>\
			</tr>\
		</table>\
		<table id='middle_" + this.id + "'>\
			<tr>\
				<td>\
				<div id='content_" + this.id + "'  class='trwin_body'></div>\
				</td>\
			</tr>\
		</table>\
		<table id='status_" + this.id +"' class='trwin_status'>\
			<tr>\
				<td id='statusText_" + this.id + "'></td>\
			</tr>\
		</table>";
		
		this.el.innerHTML = this.innerContent;
		this.el.injectInside(document.body);
		this.titleHeight = $('title_' + this.id).getSize().size.y;
		this.statusHeight = $('status_' + this.id).getSize().size.y;
		this.contentHeight = this.options.height - (this.titleHeight + this.statusHeight) +6;
		
		$('content_' + this.id).setStyle('height', this.contentHeight + 'px');
		 $('content_' + this.id).addClass('trwin_body');
		this.dragOptions = {
			handle: $('title_' + this.id),
			onStart: function() {
				this.el.setStyle('opacity', 0.5);
				this.el.style.zIndex = this.getLastZIndex();
			}.bind(this),
			
			onComplete: function() {
				this.el.setStyle('opacity', 1);
			}.bind(this)
		};
		this.setTitle(this.options.title);
		this.setStatus(this.options.status);
		
		this.contentDiv = $('content_' + this.id);
		
		if(this.options.closable)
		{
			this.closeButton = new Element('div');
          
           // this.closeButton.setHTML('<b>x</b>');
           this.closeButton.setStyle('left', this.options.width - 25 + 'px');
            this.closeButton.addClass('trwin_close');
			this.closeButton.injectInside(this.el);  
			
		};
		
		if(this.options.minimize)
		{
			this.miniButton = new Element('div');
             this.miniButton.injectInside(this.el);
           	this.miniButton.setStyle('left', this.options.width - 45 + 'px');
            this.miniButton.addClass('trwin_minimize');
            
			
		};
		
	    this.minimized = false;
		this.el.makeDraggable(this.dragOptions);
		this.el.setStyle('display', 'none');
		this.watchEvents();
   	
		},
	
  setContent: function(content) {
  this.setTitle(this.options.title);
  //this.setStatus(this.options.status);
  if (this.options.action!=''){

   var  loadContent= new Ajax(this.options.ajaxfile, {method: 'POST',update:$('content_' + this.id),data: 'ajaxaction='+this.options.action+'&more='+this.options.more, evalScripts:true });
    loadContent.request();
	}
      
		$('content_' + this.id).setHTML(content);
	},

       getLastZIndex: function() {
		var allWindows = $$('trwin_win');
		var zindexArray = [];
		if(allWindows.length <= 0)
		{
			return 1;
		}
		else
		{
			allWindows.forEach(function(item) {
				zindexArray.push(item.style.zIndex);
			});
			zindexArray.sort(this.sortNumber);
			return zindexArray[zindexArray.length-1].toInt() + 1;
		}
	},
	
	setTitle: function(content) {
		$('titleText_' + this.id).setHTML(content);
	},
	
	setStatus: function(content) {
		$('statusText_' + this.id).setHTML(content);
	},
	
	watchEvents: function()
	{
		if(this.options.closable)
		{
			this.closeButton.onclick = function() { 
				this.close(); 
			}.bind(this);
		}
		
		if(this.options.minimize)
		{
			this.miniButton.onclick = function() {
				this.minimize();
			}.bind(this);
		}
	},
	
	getID : function()
	{
		return this.id;
	},

	close: function()
	{
         var del = document.getElementById(this.id);
             top.streamWin = 0;
             del.parentNode.removeChild(del);
	 },

	show: function()
	{
	
		this.el.setStyle('display', 'block');
	},
	
	minimize: function()
	{
		if(!this.minimized)
		{
            this.miniButton.setStyle('background','transparent url(/images/button-max-focus.gif) no-repeat 0 0');
			this.contentDiv.oldHeight = this.contentDiv.getSize().size.y;
			this.middleTableOldHeight = $('middle_' + this.id).getSize().size.y;

			
			this.el.effect('height').start(48);
			$('middle_' + this.id).effect('height').start(0);
            this.contentDiv.effect('height').start(1);
			this.minimized = true;
          
		}
		else
		{  	
           this.contentDiv.effect('height').start(this.contentDiv.oldHeight+10);
			this.el.effect('height').start(this.options.height);
			$('middle_' + this.id).effect('height').start(this.middleTableOldHeight);
            this.miniButton.setStyle('background','transparent url(/images/button-min-focus.gif) no-repeat 0 0');
		    this.minimized = false;
           
		}
	}
});
