
var IkpWorkspaceWindow=function(container)
{
	var thisObj=this;

	if( container==null )
		this.gContainer=document;
	else
		this.gContainer=container;

	this.ajax=new GLM.AJAX();


	thisObj.iFrameShowCover=new Array();
	thisObj.iFrameArgs=new Array();
	thisObj.iFrameBusy=new Array();

	thisObj.waitCoverId='IkpWorkspaceCover';

	thisObj.waitCoverBg=null;

	this.iFrameBusy["ajaxiframe"]=false;


	this.showWaitCover=function()
	{
		if( $(thisObj.waitCoverId)!=null ) {
			if( thisObj.waitCoverBg==null ) {
				thisObj.waitCoverBg=Element.extend(document.createElement("div"));
				thisObj.waitCoverBg.hide();
				document.body.appendChild(thisObj.waitCoverBg);
				thisObj.waitCoverBg.absolutize();
				thisObj.waitCoverBg.setOpacity(0.9);
				thisObj.waitCoverBg.setStyle({margin: 0, padding: 0, backgroundColor: 'white', left: 0, top: 0});
			}

			spanElementOverPage(thisObj.waitCoverBg);
			thisObj.waitCoverBg.setStyle({zIndex:98});

			$(thisObj.waitCoverId).absolutize();
			$(thisObj.waitCoverId).setStyle({zIndex:99,top:0,left:0});

			thisObj.waitCoverBg.show();
			$(thisObj.waitCoverId).show();
		}
	}

	this.hideWaitCover=function()
	{
		if( $(thisObj.waitCoverId)!=null )
			$(thisObj.waitCoverId).hide();
		thisObj.waitCoverBg.hide();
	}


	this.requestUpdateifrm=function(iframeName) {

		if( iframeName==null )
			iframeName="ajaxiframe";

		if( $(iframeName)==null )
			return;

		if( thisObj.iFrameShowCover[iframeName] )
			thisObj.hideWaitCover();

		var args=thisObj.iFrameArgs[iframeName];


		var content=$(iframeName).contentWindow.document.body.innerHTML;

		thisObj.iFrameBusy[iframeName]=false;

		var newArgs=new Array();
		newArgs['showWait']=false;
		newArgs['client']=args;

		thisObj.requestUpdate(content,newArgs);
	}

	this.requestUpdate=function(content,args) {
		var r=new Object();
		content=handleAjaxResponse(content,r);
		if( r.stopExecute ) {
			return;
		}

		var argsClient=args['client'];

		if( args['showWait'] )
			thisObj.hideWaitCover();

		if( argsClient ) {
			if( argsClient.destId )
				if( $(argsClient.destId)!=null )
					if( typeof($(argsClient.destId).update)=='function' )
						$(argsClient.destId).update(content);
			if( argsClient.dest )
				if( typeof(argsClient.dest.update)=='function' )
					argsClient.dest.update(content);
			if( typeof(argsClient.callback)=='function' )
				argsClient.callback(content,argsClient);
		}
	}

	this.requestGetIframe=function(url,showWait,args) {

		var iframeName="ajaxiframe";

		if( args!=null )
			if( args.iframe!=null )
				iframeName=args.iframe;

		if( thisObj.iFrameBusy[iframeName] )
			return false;

		if( showWait ) {
			thisObj.showWaitCover();
			thisObj.iFrameShowCover[iframeName]=true;
			thisObj.iFrameBusy[iframeName]=true;
		}
		else
			thisObj.iFrameShowCover[iframeName]=false;




		thisObj.iFrameArgs[iframeName]=args;



		$(iframeName).src=url;

		return true;

	}


	this.requestPostIframe=function(formName,showWait,args) {

		var iframeName="ajaxiframe";

		if( args.iframe!=null )
			iframeName=args.iframe;

		if( thisObj.iFrameBusy[iframeName] )
			return false;

		if( showWait ) {
			thisObj.showWaitCover();
			thisObj.iFrameShowCover[iframeName]=true;
			thisObj.iFrameBusy[iframeName]=true;
		}
		else
			thisObj.iFrameShowCover[iframeName]=false;

		thisObj.iFrameArgs[iframeName]=args;

		var action=thisObj.gContainer.forms[formName].action;

		var target=thisObj.gContainer.forms[formName].target;




		thisObj.gContainer.forms[formName].target=iframeName;



		thisObj.gContainer.forms[formName].submit();
		thisObj.gContainer.forms[formName].target=target;


		return true;

	}

	this.requestPost=function(formName,showWait,args) {
		var newArgs=new Array();
		newArgs['client']=args;
		newArgs['showWait']=showWait;
		if( showWait ) {
			thisObj.showWaitCover();
		}

		var values=formVarsToString(document.forms[formName]);
		
		var action=thisObj.gContainer.forms[formName].action;


		thisObj.ajax.callPage(action,thisObj,"POST",values,null,newArgs);
	}

	this.requestGet=function(url,showWait,args) {
		var newArgs=new Array();
		newArgs['client']=args;
		newArgs['showWait']=showWait;
		if( showWait )
			thisObj.showWaitCover();

		thisObj.ajax.callPage(url,thisObj,"GET",null,null,newArgs);
	}

	var formVarsToString=function(form)
	{
		var url='';
		var i;
		var delim='';
		for(i=0;i<form.elements.length;i++)
		{
			url+=delim+form.elements[i].name;
			if( form.elements[i].type=='checkbox' )
				url+=form.elements[i].checked?'=true':'=false';
			else
				url+='='+encodeUrlParameter(form.elements[i].value);
			delim='&';
		}
		return url;
	}
}

