var vIpf={
	"divId":"IPF:div"
,	"bgId":"IPF:bg"
,	"formId":"IPF:form"
,	"alertId":"IPF:alert"
,	"buttonsId":"IPF:buttons"
,	"topMargin":5
,	"jones":{}
,	"ctl":{}
,	"getView":function(){return window;}
,	"getDiv":function(){return iclElt(this.divId);}
,	"getForm":function(){return iclElt(this.formId);}
,	"show":function(e,show,attr)
	{
		iclCancelEvent(e);
		var view=this.getView()
			,div
			,timerId,aux;
		if( view != window )
			return view.vIpf.show(0,show,attr);
			
		timerId=this.ctl.timerId;
		attr=iclArray(attr);
		if(timerId)
		{
			clearTimeout(timerId);
			timerId=0;
		}
		div=this.getDiv();
		if( show )
		{
			var body=iclElt("ID:body")
				,content="<div class=ipf_loading><div class=btn><a href=# onclick=\"vIpf.close(event)\">X</a></div></div>"
				,className="ipf_div ipf_frame";
			if(!body)return 0;
			if( aux=attr["class"] )className+=" "+aux;
			if( !div )
			{
				iclAddDiv({htm:"<div id=\""+this.divId+"\" class=\""+className+"\">"+content+"</div>"});
				if( !(div=this.getDiv()) )return 0;
			}
			else
			{
				div.className=className;
				div.innerHTML=content;
			}
			this.setVisible(1,0);
			this.ctl.curSec=0;
			this.ctl.isActive=1;
		}
		else
		{
			if( !div )
				return 0;	// Div does not exist
				
			if( aux=attr["delay"] )
				timerId=window.setTimeout('vIpf.close(0)',aux);
			else
			if( this.ctl.isActive )
			{
				this.setVisible(0,0);
				this.callback("evt!destroy",{"div":div});
			}
			this.jones={};
			this.ctl={}
		}
		this.ctl.timerId=timerId;
		return show ? view : 0;
	}
	,"close":function(e){ this.show(e,0,0);}
	,"setVisible":function(visible,preview)
	{
		var div=this.getDiv(),bg,body;
		if(div)
		{
			if( visible )
			{
				if( div.style.visibility=="visible" )return;
				div.style.visibility="visible";
			}
			else
			{
				if( div.style.visibility=="hidden" )return;
				div.style.visibility="hidden";
				if( !preview )div.innerHTML="&nbsp;";
			}
			bg=iclElt(this.bgId);
			if( visible )
			{
				body=iclElt("ID:body");
				this.ctl.hiddenObjects=iclHideObjects();
				this.adjustDivEx(body,div);
				if( bg )
				{
					this.adjustBg(body,bg);
					bg.style.display="block";
				}
			}
			else
			{
				iclRestoreObjects(this.ctl.hiddenObjects);
				this.ctl.hiddenObjects=null;
				if( bg )bg.style.display="none";
			}
			this.ctl.previewMode=preview;
			iclEvent("w","ipf",{"visible":visible,"@hide_objects":visible});
		}
	}
	,"adjustBg":function(body,bg)
	{
		bg.style.left=body.offsetLeft+"px";
		bg.style.top=body.offsetTop+"px";
		bg.style.width=body.offsetWidth+"px";
		bg.style.height=body.offsetHeight+"px";
	}
	,"adjustDiv":function()
	{
		var body=iclElt("ID:body"),div=this.getDiv();
		if( body && div )this.adjustDivEx(body,div);
	}
	,"adjustDivEx":function(body,div)
	{
		var vH=window.screen ? parseInt(window.screen.availHeight) : 0
			,vBT=body.scrollTop+body.offsetTop
			,vFT=vBT+this.topMargin
			,vT=vBT+parseInt( (body.clientHeight - div.offsetHeight)/2 )
			,vL=body.offsetLeft+((body.offsetWidth-div.offsetWidth)/2-40)
			,alertDiv=iclElt(this.alertId);
		if( vT < vFT )vT=vFT;
		if( vL < 5 )vL=5;
		div.style.left=vL+"px";
		div.style.top=vT+"px";
		if( alertDiv )
		{
			alertDiv.style.left=parseInt((div.clientWidth-alertDiv.offsetWidth)/2)+"px";
			alertDiv.style.top=(parseInt((div.clientHeight-alertDiv.offsetHeight)/2)-20)+"px";
		}
	}
	,"init":function(data)
	{
		var div;
		if(div=this.getDiv())
		{
			this.jones=data.jones?data.jones:{};
			div.innerHTML=data.htm;
			this.callback("evt!create",{"div":div,"data":data});
			if(data.adjust && (body=iclElt("ID:body")) )
				this.adjustDivEx(body,div);
			this.callback("evt!show",{"div":div,"data":data});
		}
	}
	,"callback":function(evt,data)
	{
		if(this.jones.callback)return this.jones.callback(evt,data);
		return false;
	}
	,"submit":function(e,params)
	{
		iclCancelEvent(e);
		var form=this.getForm();
		if( form )
		{
			var rv=this.callback("evt!submit",{"form":form,"params":params})
			,	extra={};
			if( rv )
			{
				if(rv.cancel)return;	//
				if(rv.extra)extra=rv.extra;
			}
			AwfExecForm(form,extra);
		}
		else
			alert("FORM NOT FOUND!");
	}
	,"onBodyResize":function()
	{
		if( this.ctl.isActive )
		{
			var body,e;
			if( (body=iclElt("ID:body")) )
			{
				if( e=iclElt(this.bgId) )this.adjustBg(body,e);
				if( e=this.getDiv() )this.adjustDivEx(body,e);
			}
		}
	}
	,"onBodyScroll":function()
	{
		if( this.ctl.isActive )
			this.adjustDiv();
	}
	,"setAlert":function(e,data)
	{
		iclCancelEvent(e);
		var alertDiv=iclElt(this.alertId)
		,	buttonsDiv=iclElt(this.buttonsId);
		if( !alertDiv )return;
		alertDiv.innerHTML=data.htm;
		alertDiv.style.display="block";
		if( buttonsDiv )
			buttonsDiv.style.visibility="hidden";
		this.adjustDiv();
	}
	,"clearAlert":function(e)
	{
		iclCancelEvent(e);
		var alertDiv=iclElt(this.alertId)
		,	buttonsDiv=iclElt(this.buttonsId);
		if( !alertDiv )return;
		alertDiv.innerHTML="";
		alertDiv.style.display="none";
		if( buttonsDiv )
			buttonsDiv.style.visibility="visible";
	}
};

var vKurupee={
	 "sideBarUrl":"awf.sidebar.php"
	,"editProfUrl":"awf.editprof.php"
	,"loginUrl":null
	,"helpUrl":"awf.help.php"
	,"disTimer":{}
	,"disCache":{}
	,"displayTimeout":{"side":10000,"home":10000}
	,"onLogin":function(e,vSB)
	{
		iclCancelEvent(e);
		if( !this.loginUrl )
			alert("loginUrl is not set!");
		else
			AwfExecForm("kuru:sidebar:login:form",{"cmd":"login","sidebar":vSB,"url":this.loginUrl});
	}
	,"onLogout":function(e)
	{
		iclCancelEvent(e);
		AwfExec("logout",0,{"url":this.sideBarUrl});
	}
	,"onDisplayNav":function(e,id,dir)
	{
		var cur=parseInt(iclGetEltVal("kuru:display:"+id+":cur"))
		,	max=parseInt(iclGetEltVal("kuru:display:"+id+":max"))
		,	cache=this.disCache[id]
		,	htm;
		iclCancelEvent(e);
		if( dir>0)
		{
			if(++cur==max)cur=0;
		}
		else
		{
			if(--cur<0)cur=max-1;
		}
		htm=cache ? cache[cur] : null;
		if( htm )
		{
			this.setDisplay(id,cur,htm);
		}
		else
		{
			AwfExec("display_nav",{"id":id,"cur":cur},{"url":this.sideBarUrl});
		}
	}
	,"setDisplay":function(id,cur,htm)
	{
		var cache=this.disCache[id],to=this.displayTimeout[id];
		if( !cache )this.disCache[id]={"cur":htm};
		iclSetEltHtm("kuru:display:"+id+":item",htm);
		iclSetEltVal("kuru:display:"+id+":cur",cur)
		if(this.disTimer[id])window.clearTimeout(disTimer[id]);
		if(!to)to=20000;
		this.disTimer[id]=window.setTimeout("vKurupee.onDisplayTimer('"+id+"')",to);
	}
	,"onDisplayTimer":function(id)
	{
		this.disTimer[id]=0;
		this.onDisplayNav(0,id,1);
	}
	,"updateBody":function(e,data)
	{AwfExec("update_body",data,0);}
	,"updatePage":function(e,data)
	{AwfExec("update_page",data,0);}
	,"onLoginEvent":function(evtId,data)
	{
		var e;
		switch(evtId)
		{
		case "evt!login":
			this.updateBody(0,0);
			if( e=iclElt("kuru:sidebar:login") ) 
			{
				iclDisplayElt(e,"none");
				iclSetEltVal("kuru:sidebar:login:email","");
				iclSetEltVal("kuru:sidebar:login:pass","");
				iclSetEltHtmVis("kuru:sidebar:login:msg","","block");
			}
			if( e=iclElt("kuru:sidebar:session") )
			{
				iclDisplayElt(e,"block");
				iclSetEltHtm("kuru:sidebar:session:label",data.label);
			}
			break;
			
		case "evt!login_fail":
			if( iclElt("kuru:sidebar:login") ) 
			{
				iclSetEltHtmVis("kuru:sidebar:login:msg",data.err,"block");
			}
			break;
					
		case "evt!logout":
			this.updateBody(0,0);
			if( e=iclElt("kuru:sidebar:login") ) 
			{
				iclDisplayElt(e,"block");
				iclSetEltHtmVis("kuru:sidebar:login:msg","","block");
			}
			if( e=iclElt("kuru:sidebar:session") )
			{
				iclDisplayElt(e,"none");
				iclSetEltHtm("kuru:sidebar:session:label","");
			}
			break;
		}
	}
,	"onIclEvent":function(evtId,data)
	{ 
		switch(evtId)
		{
		case "evt!login":
		case "evt!logout":
		case "evt!login_fail":
			return this.onLoginEvent(evtId,data);	
		default:
			return 1;
		}
	}
	,"showNews":function(e,data)	
	{
		vIpf.show(e,1,{});
		AwfExec('show_news',data,{url:this.sideBarUrl});
	}
	,"editProfElt":function(e,data)	
	{
		vIpf.show(e,1,{});
		if( window.vKuruPage )
			data.ui_context=vKuruPage.ui_context;
		data.ui_params=iclGetEltVal("UI:CONTEXT:PARAMS");
		AwfExec('edit',data,{url:this.editProfUrl});
	}
	,"delProfElt":function(e,data,extra)	
	{
		var prefix;
		iclCancelEvent(e);
		switch(data.form)
		{
		case "address":prefix=" address";break;
		case "measure":prefix=" measurement";break;
		default: prefix="";break;
		}
		var msg="Delete"+prefix;
		if( e=iclElt(extra.label_id))
			msg+=" \""+e.value+"\"";
		msg+="?";
		if( !confirm(msg) )
			return;
		if( window.vKuruPage )
			data.ui_context=vKuruPage.ui_context;
		data.ui_params=iclGetEltVal("UI:CONTEXT:PARAMS");
		AwfExec('delete',data,{url:this.editProfUrl});
	}

};

function
onIclEvent(vId,vData)
{ 
	if( window.vKuruPage && vKuruPage.onIclEvent )
		return vKuruPage.onIclEvent(vId,vData); 
	
	if( window.vKurupee && vKurupee.onIclEvent )
		return vKurupee.onIclEvent(vId,vData); 
}

