dojo.require("dojo.widget.TabContainer");
dojo.require("dojo.widget.ContentPane");
dojo.require("dojo.widget.LayoutContainer");
dojo.require("dojo.widget.Button");
dojo.require("dojo.widget.Dialog");
dojo.require("dojo.lang.*");dojo.require("dojo.widget.Tree");dojo.require("dojo.widget.TreeRPCController");dojo.require("dojo.widget.TreeSelector");dojo.require("dojo.widget.TreeNode");
dojo.require("dojo.widget.DatePicker");dojo.require("dojo.widget.DropdownDatePicker");
dojo.require("dojo.widget.ComboBox");
dojo.require("dojo.dom");
dojo.require("dojo.xml.Parse");
dojo.require("dojo.widget.Parse");

var data_container = ''; //global var for data container on AJAX Requests

var wdlg;
/**
*
* @desc Function for initializing WaitDialog (used for AJAX-requests)
*/
function init_wdlg(e) 
{
	wdlg = dojo.widget.byId("WaitDialog");
}
dojo.addOnLoad(init_wdlg);


var last_postForm = new Array('');
/**
*
* @desc Function provides AJAX-requests 
* @param string FormName
* @param string callBackFunc
* @param string subAction
* @param string MimeType
*/
function postForm(formName, callBackFunc, subAction, MimeType) 
{
	if (!callBackFunc) {
	 callBackFunc = postFormCallback;
	}
	if (!MimeType)
	{
		MimeType = 'application/json';
	}
	if (subAction) {
	 var subActionBK = document.forms[formName].sub_action.value;
	 document.forms[formName].sub_action.value = subAction;
	}
	dojo.io.bind({
				   url: './', 
				   handler: callBackFunc,
				   mimetype: MimeType,
				   formNode: dojo.byId(formName)
				});
	if (subAction) {
     document.forms[formName].sub_action.value = subActionBK;
	}
	
	last_postForm[0] = formName;
	last_postForm[1] = callBackFunc;
	last_postForm[2] = subAction;
	last_postForm[3] = MimeType;
		
	wdlg.show();
}

/**
*
* @desc Function provides AJAX-requests with no dialog
* TODO: make something simplier with postForm
* @param string FormName
* @param string callBackFunc
* @param string subAction
* @param string MimeType
*/
function postFormNoDlg(formName, callBackFunc, subAction, MimeType) 
{
	if (!callBackFunc) {
	 callBackFunc = postFormCallback;
	}
	if (!MimeType)
	{
		MimeType = 'application/json';
	}
	if (subAction) {
	 var subActionBK = document.forms[formName].sub_action.value;
	 document.forms[formName].sub_action.value = subAction;
	}
	dojo.io.bind({
				   url: './', 
				   handler: callBackFunc,
				   mimetype: MimeType,
				   formNode: dojo.byId(formName)
				});
	if (subAction) {
     document.forms[formName].sub_action.value = subActionBK;
	}
	
	last_postForm[0] = formName;
	last_postForm[1] = callBackFunc;
	last_postForm[2] = subAction;
	last_postForm[3] = MimeType;
}
/**
*
* @desc Provides callback functions for AJAX-requests 
*/
function postFormCallback(type, data, evt)
{
	wdlg.hide();
	//alert(data.toString());	
	if (type == 'error') {
	  alert('Error when retrieving data from the server!');
	} else {
	  the_object = data;
	  
	  if (the_object.is_error) {
	  	alert(the_object.error_text);
	  }

	  if  (the_object.need_refresh) {	  	
	  	//document.location = document.location;
	  	window.location.reload();
	  }   
	  
	}  
} 


/**
*
* @desc Provides callback functions for AJAX-requests with data container
*/
function postFormContainerCallback(type, data, evt)
{
	wdlg.hide();	
	
	postFormCallback(type, data, evt);
	
	the_object = data;
	if (the_object.html) 
	{
		if (data_container == '')
		{
			data_container = 'stat_container';
		}
		dojo.byId(data_container).innerHTML = '';
	  	dojo.byId(data_container).innerHTML = the_object.html;
	  	
	  	//var parser = new dojo.xml.Parse();
		//var frag = parser.parseElement(dojo.byId("wstat_4"), null, true);
		//dojo.widget.getParser().createComponents(frag);
	  	
	  	//dojo.widget.Parse(dojo.widget.byId('wstat_4'));
	  	
	}	
	if (the_object.script)
	{
		eval(the_object.script);
	}
}

/**
*
* @desc Open/close (visible/invisible) data container
* @param string obj
*/
function expand(obj)
{
      	if (dojo.byId(obj).style.display == "block")
      	{
      		dojo.byId(obj).style.display = "none";
      	}
      	else 
      	{
      		dojo.byId(obj).style.display = "block";      		
      	}
}

//Tabs
// Конструктор.
function TabContainer() {

  this.current_tab = '0';  
  
  this.switch_tab = function(x) {
  	if (this.current_tab != '0' && this.current_tab != '') {
    	document.getElementById('CPane_tab'+this.current_tab).className = 'Pane';
    	document.getElementById('tab'+this.current_tab).style.display = 'none';
  	}
    document.getElementById('CPane_tab'+x).className = 'Pane_sel';
    document.getElementById('tab'+x).style.display = 'block';
    //document.getElementById('gr_container').innerHTML = document.getElementById('tab'+x).innerHTML;
    
    this.current_tab = x;
    
  }
}

function OpenWindow(url,w,h) 
{
		cfg = 'width='+w+',height='+h+',toolbar=0,location=0,directories=0,status=1,menubar=0,scrollbars=1,resizable=1,copyhistory=0'
		window.open(url,'',cfg);
}