var Messenger = {
	settings: {
		request_interval: 4000,
		max_requests: 500,
		url: '',
		total_url: '',
		sound_url: ''
	},

	id: 0,
	focus: false,
	init_state: false,
	req: 0,
	message: 0,
	sound_play: false,

	init:function() {
		$(document).everyTime(Messenger.settings.request_interval, function(i) {
			if (Messenger.req >= Messenger.settings.max_requests) {
				return true;
			}
			Messenger.request();
			Messenger.init_state = true;
		});
		return true;
	},

	message_init:function(user_id) {
		Messenger.message = user_id;
	},

	sound_init:function() {
		Messenger.sound_play = true;
	},

	request:function() {
		var msg = $.cookie('msg_' + Messenger.message);
		var date = new Date();
		Messenger.req++;
		master = D.check();
		var request = false;
		if (master == true) {
//			console.log('master ' + D.id + ' ' + date.getTime());
			request = true;
		}
		else {
			if (Messenger.message > 0) {
				var msg = $.cookie('msg_' + Messenger.message);
				if (typeof msg != 'undefined' && msg > 0) {
					$.cookie('msg_' + Messenger.message, null, {path: '/'});
					S.get();
				}
			}
//			console.log('slave ' + D.id + ' ' + date.getTime());
		}
		if (request === true) {
			$.getJSON(Messenger.settings.url, function(r) {
				if (r == 1) {
					Messenger.show();
				}
			});
		}
	},

	sound:function() {
		if (Messenger.sound_play) {
			var so = new SWFObject(Messenger.settings.sound_url, "sound_flash", "1", "1", "9", "#ffffff");
			so.addVariable("allowScriptAccess", "always");
			so.addVariable("autoplay", "true");
			so.addVariable("quality", "high");
			so.addVariable("wmode", "opaque");
			so.write("message_alert");
		}
	},

	show:function() {
		Messenger.sound();
		$mails = $('ul#message_notify .mails span');
		$.getJSON(Messenger.settings.total_url, function(r) {
			if (r.status == 'OK') {
				var msg = false;
				$.each(r.data.contacts, function(i, el) {
					if (el !== Messenger.message) {
						$.cookie('msg_' + el, 1, {path: '/'});
					}
					else {
						msg = true;
					}
				});
				if (Messenger.message > 0 && msg) {
					S.get();
				}
				else {
					if (r.data.count > 0) {
						$mails.html('(' +r.data.count + ' ' + r.data.count_text + ')');
						$mails.parent().show();
					}
					else {
						$mails.parent().hide();
					}
				}
			}
		});
	}
};

var D = {
	settings: {
		cookie: 604800000
	},
	id: 0,

	init:function() {
		D.set(D.getId());
	},

	getId:function() {
		var date = new Date();
		var id = $.cookie('prid');
		if (id == null || typeof id == 'undefined') {
			$.cookie('prid', 0, {expires: date.setTime(date.getTime() + D.settings.cookie), path: '/'});
			id = 0;
		}
		else {
			id++;
			$.cookie('prid', id, {expires: date.setTime(date.getTime() + D.settings.cookie), path: '/'});
		}
		return id;
	},

	set:function(id) {
		D.id = id;
		D.lastid = 0;
		D.setLast(0);
		var date = new Date();
		$.cookie('prmaster', id, {expires: date.setTime(date.getTime() + D.settings.cookie), path: '/'});
		return false;
	},

	setLast:function(id) {
		var date = new Date();
		$.cookie('prlid', id, {expires: date.setTime(date.getTime() + D.settings.cookie), path: '/'});
		return false;
	},

	getLast:function() {
		var id = $.cookie('prlid');
		if (typeof id == 'undefined' || id == null) {
			id = 0;
		}
		return id;
	},

	check:function() {
		var date = new Date();
		var master = $.cookie('prmaster');
		if (master != null && typeof master != 'undefined') {
			if (master == D.id) {
				return true;
			}
		}
		else {
			return true;
		}
		return false;
	}
};
