// requires: ck.js
function ChatIMode()
{
};
Lib.create( ChatIMode );
register( ChatIMode );
ChatIMode.BUSY = 970;
ChatIMode.__lck = 'chatIModeLock';
ChatIMode.__appCookie = 'ChatApp';
ChatIMode.__cookieName = 'chatimode';
ChatIMode.addProperty( 
PropDesc.from( 'domain', '"eresmas.com"' ) 
,PropDesc.from( 'path', '"/new_chat"' )
,PropDesc.from( 'cookieName', '"'+ChatIMode.__cookieName+'"' ) 
,PropDesc.from( 'appCookie', '"'+ChatIMode.__appCookie+'"' ) 
,PropDesc.from( 'timeOut', 250 ) 
,PropDesc.from( 'context', "ChatIMode" ) 
,PropDesc.from( 'handler', '"noop"' ) 
);
ChatIMode.addMethod({
lock : function()
{
	var lck = ck_get( ChatIMode.__lck );
	if ( !Util.isOk( lck ) )
	{
		ck_set( ChatIMode.__lck, 1, new Date(new Date().getTime()+ck_minute), ChatIMode.initPath(), ChatIMode.initDomain() );
	}
	else
	{
		return ChatIMode.BUSY;
	}
},
unlock : function()
{
	ck_del( ChatIMode.__lck, ChatIMode.initPath(), ChatIMode.initDomain() );
},
put : function(obj, ckname)
{
   	var name = ckname ? ChatIMode.__cookieName+ckname.toLowerCase() : ChatIMode.initCookieName();
	ChatIMode.lock();
	var s = 'var __s0={__u:1';
	for(var p in obj)
	{
		s+= ',' + p + ':"' + obj[p] + '"';
	}
	s+='};__s0;';
	ck_set( name, s, new Date(new Date().getTime()+ck_minute), ChatIMode.initPath(), ChatIMode.initDomain() );
	ChatIMode.unlock();
},
get : function(ckname)
{
   	var name = ckname ? ChatIMode.__cookieName+ckname.toLowerCase() : ChatIMode.initCookieName();
	var o = ck_get( name );
	ChatIMode.clean(ckname);
	return eval(o);
},
clean : function(ckname)
{
   	var name = ckname ? ChatIMode.__cookieName+ckname.toLowerCase() : ChatIMode.initCookieName();
	ck_del( name, ChatIMode.initPath(), ChatIMode.initDomain() );
},
auto : function(ckname)
{
	var o = ChatIMode.get(ckname);
	if ( Util.isOk( o ) )
	{
		(ChatIMode.getContext())[ChatIMode.getHandler()](o);	
	}
	window.setTimeout( 'ChatIMode.auto("'+ckname+'")', ChatIMode.initTimeOut() );
},
go_in : function(appname)
{
   	var name = appname ? ChatIMode.__appCookie+appname.toLowerCase() : ChatIMode.initAppCookie();
   	ck_set( name , 1, new Date(new Date().getTime()+ck_year), ChatIMode.initPath(), ChatIMode.initDomain() );
},
go_out : function(appname)
{
   	var name = appname ? ChatIMode.__appCookie+appname.toLowerCase() : ChatIMode.initAppCookie();
   	ck_del( name, ChatIMode.initPath(), ChatIMode.initDomain() );
},
check : function(appname)
{
   	var name = appname ? ChatIMode.__appCookie+appname.toLowerCase() : ChatIMode.initAppCookie();
   	return Util.isOk( ck_get( name ) );
},
noop : function(p)
{
}
});
