if (!DB.Client) {
	
  	DB.Client = {
		
		loadedReady: false,
		
		delay: 200,
    	timerId: -1,
    	
    	loginCallback: null,
    	commonOptions: null,
		
		init: function(options)
		{
			DB.host = window.location.host;
			
			if (options.receiver){
				DB.receiver = options.receiver;
			}
		},
		
		mergeOptions: function(options)
		{
			if (options.commonOptions) {
				var commonOptions = options.commonOptions;
				delete options.commonOptions
				
				for (attr in commonOptions) { 
					options[attr] = commonOptions[attr]; 
				}
			}
			DB.Client.commonOptions = options;
			return options;
		},
		
		checkLogin: function(options)
		{
			var options = DB.Client.mergeOptions(options);
			DB.Client.init(options);
				
			if (options.popup) {
				DB.Utils.usePopup = true;
			} else {
				DB.Utils.usePopup = false;
			}
			
			if (options.checklogin) {
				
				if (DB.Utils.getCookie('fbs_114890928530890')) {
					DB.facebookEnabled = true;
					var cookie = DB.Utils.getCookie('fbs_114890928530890');
					var parts = cookie.split("&");
					
					
					if (parts.length > 0) {
						var found = false;
						var i = 0;
						var username = '';			
						var userId = 0;			
							
						
						
						while (!found && i <= parts.length-1) {
							
							
							var subParts = parts[i].split("=");
						
							if(subParts[0] == 'uid') {
								
								userId = subParts[1].replace('"','');
								found = true;
								DB.userId = userId;
								DB.facebookLoggedIn = true;
							} else {
								i++;
							}			
													
						}
						
					}
						
						
						//alert(DB.userId);
					
					DB.Client.loadedReady = true;
				} else if (!DB.Utils.getCookie('DBServices')) {
					
					if (!DB.Utils.getCookie(DB.loginDelayCookie)){
						DB.Client.initLogin();
					} else {
						DB.Client.loadedReady = true;
					}
				} else {
					DB.Client.loadedReady = true;
					
					if (options.loginRewrite) {
						DB.Client.rewriteLogin(DB.Utils.getCookie('DBServices'));
					}
					
				}

			} else{
				DB.Client.initLogin();
			}
		}, 
		
		rewriteLogin: function(cookie)
		{
			var parts = cookie.split("&");
			if (parts.length > 0) {
				var found = false;
				var i = 0;
				var username = '';			
				var userId = 0;			
					
				while (!found && i <= parts.length-1) {
					
					if(parts[i] == 'userid') {
						userId = parts[i+1];
						DB.userId = userId;
					} else {
						i++;
					}			
					if(parts[i] == 'name') {
						found = true;
						username = decodeURIComponent(parts[i+1]);
					} else {
						i++;
					}							
				}
				
				if (username) {
					username = username.replace('-', ' ');
					
					if (DB.Client.commonOptions.loginRewritePrefix && DB.Client.commonOptions.loginPrefix) {
						$('#'+DB.Client.commonOptions.loginRewritePrefix).html(DB.Client.commonOptions.loginPrefix);
					}
					
					if (DB.Client.commonOptions.rewriteLoginTxt) {
						$('#'+DB.Client.commonOptions.loginRewrite).html(DB.Client.commonOptions.rewriteLoginTxt);
					} else {
						$('#'+DB.Client.commonOptions.loginRewrite).html(username);
					}
					

					var element = $('#'+DB.Client.commonOptions.loginRewrite)
					element[0].href = DB.profileUrl+userId ;
					
					$('#'+DB.Client.commonOptions.loginRewrite).parent().append(DB.Client.commonOptions.rewriteLogutTxt);
					
					$("#"+DB.Client.commonOptions.rewriteLogutId).click(function(e){
			     			e.preventDefault();
			     			
			     			var options = {
				   				receiver: DB.Client.commonOptions.receiver
				   			}
							DB.Client.logoutUser(options);
			   		});		
				}
			}		
		},
		
		initLogin: function()
		{
			var func = '$sf=checkServerLogin';
			
			if(DB.host && DB.receiver) {
				var url = DB.login_host+'host='+DB.host+'$xdr='+DB.receiver+func;
				DB.Utils.call('server', url, 0, 1);				
			}
		},

		callOnLoaded: function(onloaded)
		{
	  		var counter = 0;
  			DB.Client.timerId = window.setInterval(
  		
	  		function () {
	  			if(DB.Client.loadedReady || counter >= 5) {
	  				if(DB.Client.timerId != -1) {
	          			window.clearInterval(DB.Client.timerId);
	          			DB.Client.timerId = -1;
	    			}	
	    			
	    			if (onloaded) {
	    				DB.Utils.callFunction(onloaded.fname, onloaded.namespace, onloaded.args);
	    			}
	    			
	  			}  else {
	  			}
	  			counter++;
  			}, DB.Client.delay);
		},
		  		
		showLogin: function(options)
		{
			if (options.height) {
				DB.default_height = options.height; 
			}
			
			if (options.width) {
				DB.default_width = options.width; 
			}
			
			if (options.wrappingdiv) {
				DB.visible_wrapper = options.wrappingdiv; 
			}
			
			if (options.showlogin) {
				if(DB.host && DB.receiver) {
					var url = DB.login_host+'host='+DB.host+'$xdr='+DB.receiver;
					DB.Utils.call('server', url, 1, 1);				
				} 
			} 		
		}, 
		
		clientLogin: function()
		{
			var currentDomain = DB.Utils.getMasterDomain();
			var parts = DB.parsedPayload;
			var currentCookie = null;
			
			if (parts['cookie']) {
				
				if (parts['encoded']) {
					currentCookie = decodeURIComponent(unescape(parts['cookie']));	
				} else{
					currentCookie = parts['cookie'];
				}
				
				if (DB.Client.commonOptions.validateCookie == 1) {
					if (DB.Utils.validateCookie(currentCookie)) {
						DB.Utils.setCookie('DBServices', currentCookie, {domain: currentDomain});
						DB.Utils.setCookie('DBDomains', currentDomain, {domain: currentDomain});
					}
				} else { 
					DB.Utils.setCookie('DBServices', currentCookie, {domain: currentDomain});
					DB.Utils.setCookie('DBDomains', currentDomain, {domain: currentDomain});
				}
				
				if (DB.Client.commonOptions.authPath) {
					DB.Client.postLoginAuth(currentCookie);
				} else{
					DB.Client.postLoginSetup(currentCookie);
				}
								
			} else {
				if (DB.Client.commonOptions.delaycookie > 0) {
					if (!DB.Utils.getCookie(DB.loginDelayCookie)) {
						DB.Utils.setCookie(DB.loginDelayCookie, new Date().getTime(), {domain: currentDomain, seconds: DB.Client.commonOptions.delaycookie});
					} 
				}
				DB.Client.showLogin(DB.Client.commonOptions);
			}
			DB.Client.loadedReady = true;
		}, 
				
		reload: function()
   	 	{
   	 		var currentUrl = window.location.href;
   	 		
   	 		if (currentUrl.indexOf('#') != -1) {
        		currentUrl = currentUrl.substring(0, currentUrl.indexOf('#'));
   	 		} 
   	 		window.location.href = currentUrl;
   	 	}, 
   	 	
   	 	logoutUser: function(options)
   	 	{
   	 		DB.Client.init(options)
   	 		var currentDomain = DB.Utils.getMasterDomain();
   	 		
   	 		DB.Utils.delCookie('DBServices', {domain: currentDomain});
   	 		DB.Utils.delCookie('DBDomains', {domain: currentDomain});
   	 		
   	 		var target = DB.login_host+'host='+DB.host+'$xdr='+DB.receiver+'$sf=serverLogout';
   	 		DB.Utils.call('server', target, 0, 1);
   	 	},
   	 	
   	 	loadCommentsOnReady: function(a1, a2, a3, a4, a5, a6, a7)
   	 	{
   	 		
   	 		var counter = 0;
  			var timerId = window.setInterval(
				function () {
	
					if(DB.Client.loadedReady || counter >= 50) {
									
						if(timerId != -1) {
							window.clearInterval(timerId);
							timerId = -1;
						}
								
						DBM.module.Comments.init(a1, a2, a3, a4, a5, a6, a7);
					}  
					counter++;
				}, DB.Client.delay);
   	 									
   	 	}, 
   	 	
   	 	commentAlterLogout: function()
   	 	{
   	 		
   	 		var counter = 0;
  			var timerId = window.setInterval(
				function () {
	
					var arr = $('#comment_logout');
					if(arr.length >= 1 || counter >= 100) {
									
						if(timerId != -1) {
							window.clearInterval(timerId);
							timerId = -1;
						}  
						arr.click(function(e){
 							e.preventDefault();
				     			var options = {
					   				receiver: 'xdr/xd_receiver.html'
					   			}
								DB.Client.logoutUser(options);
						});	
					}	
					counter++;
				}, 100); 	 		
   	 		
   	 	}, 
   	 	
   	 	doLogin: function(callback, ns, args, options)
   	 	{
			if (options) {
				var options = DB.Client.mergeOptions(options);
				DB.Client.commonOptions = options;
				if (options.popup) {
					DB.Utils.usePopup = true;
				} else {
					DB.Utils.usePopup = false;
				}
			} else {
				DB.Client.commonOptions = {
	   				receiver: 'xdr/xd_receiver.html', 
	   				loginRewrite: DB.Utils.login_wrapper,
	   				showlogin:1,
	   				reloadclient:1,
	   				width:368, 
	   				height:230 
				} 
			}
			
			if (callback) {
				DB.Client.loginCallback = {'callback': callback, 'ns': ns, 'args': args};
			}

			if (navigator.appName == 'Opera') {
				DB.Utils.cleanChannel('server');
				if (options) {
					DB.Client.showLogin(options);
				} else {
					DB.Client.showLogin(DB.Client.commonOptions);
				}
	   	 	}  else {
				DB.Client.initLogin();
	   	 	}
   	 	},
   	 	
   	 	postLoginAuth: function(cookie)
   	 	{
			var url = 'http://'+DB.host+'/'+DB.Client.commonOptions.authPath;
			var auth = false;
			$.getJSON(url, null, function(data, success) {
				if (success) {
					if (data.auth == 0) {
						jQuery(document).trigger('close.facebox')
						DB.Client.logoutUser({receiver: DB.Client.commonOptions.receiver});
					} else {
						DB.Client.postLoginSetup(cookie);
					}  		
				} 				
			}); 
   	 	},
   	 	
   	 	postLoginSetup: function(cookie) {
			if (DB.Client.commonOptions.reloadclient){
					
				if (DB.Client.loginCallback) {
					DB.Utils.callFunction(DB.Client.loginCallback.callback, DB.Client.loginCallback.ns,  DB.Client.loginCallback.args);
				}
				DB.Client.reload();
			} else {
				jQuery(document).trigger('close.facebox')
				
				if (DB.Client.commonOptions.loginRewrite) {
					DB.Client.rewriteLogin(cookie);
				}
				if (DB.Client.loginCallback) {
					DB.Utils.callFunction(DB.Client.loginCallback.callback, DB.Client.loginCallback.ns,  DB.Client.loginCallback.args);
				}
			}  	
		},
		
		defaultPostLogin: function()
   	 	{
   			if (DB.userId) {
				$('#'+DB.Client.commonOptions.loginRewrite).unbind("click");
			}
   	 	}
  	};
}  	
