var MF = (function(){
	return {
		getCookie: function( name ) {
			var start = document.cookie.indexOf( name + "=" );
			var len = start + name.length + 1;
			if ( ( !start ) && ( name != document.cookie.substring( 0, name.length ) ) ) {
				return null;
			}
			if ( start == -1 ) return null;
			var end = document.cookie.indexOf( ';', len );
			if ( end == -1 ) end = document.cookie.length;
			return unescape( document.cookie.substring( len, end ) );
		},
                setCookie: function( name, value, expires, path, domain, secure ) {
			var today = new Date();
			today.setTime( today.getTime() );
			if ( expires ) {
				expires = expires * 1000 * 60 * 60 * 24;
			}
			var expires_date = new Date( today.getTime() + (expires) );
			document.cookie = name+'='+escape( value ) +
				( ( expires ) ? ';expires='+expires_date.toGMTString() : '' ) + //expires.toGMTString()
				( ( path ) ? ';path=' + path : '' ) +
				( ( domain ) ? ';domain=' + domain : '' ) +
				( ( secure ) ? ';secure' : '' );
		},
		deleteCookie: function( name, path, domain ) {
			if ( getCookie( name ) ) document.cookie = name + '=' +
				( ( path ) ? ';path=' + path : '') +
				( ( domain ) ? ';domain=' + domain : '' ) +
				';expires=Thu, 01-Jan-1970 00:00:01 GMT';
		},
		navSwitch: function(sw){
			var cookName = 'navOher';
			var oher = MF.getCookie(cookName);
			var ico = $('navOherSwitch');
			var content = $('navOherBlock');
			if(ico && content) {
				// set cookie
				if(sw == 1)
					if(oher == null || oher == 0) { MF.setCookie(cookName,1,1,'/','.mail.ru',false); oher = 1; }
					else if (oher == 1) { MF.setCookie(cookName,0,1, '/','.mail.ru',false); oher = 0; }
				// show/hide
				if(oher == null || oher == 0) {
					ico.className = 'mf_otherHide mf_otherHide_nav';
					content.hide();
				} else if (oher == 1) {
					ico.className = 'mf_otherShow mf_otherShow_nav';
					content.show();
				}
			}
		}
	}
})();
MF.navSwitch();
$(document).observe('booster:loaded', MF.navSwitch);

if (typeof Common === 'undefined') {
	Common = {};
}
Common.getMN = function(name) {
	var el = document.getElementById(name);
	if (el && el.value) {
		return el.value;
	}
	if ((typeof window[name] !== 'undefined') && window[name]) {
		return window[name];
	}
	if ((typeof V === 'object') && V.get && V.get(name)) {
		return V.get(name);
	}
	return false;
};
if (typeof Common.ClientServer === 'undefined') {
	Common.ClientServer = {
		commands: {},
		get: function(func_name, data, callback, url) {
			return this.sendCommand(func_name, data, callback, url, 'get');
		},
		post: function(func_name, data, callback, url) {
			return this.sendCommand(func_name, data, callback, url, 'post');
		},
		stop: function(func_name) {
			this.commands[func_name] = [];
		},
		sendCommand: function(func_name, data, callback, url, method) {
			url = url || '/cgi-bin/my/ajax';
			var success = false, error = false;
			if (typeof callback === 'function') {
				callback = {
					success: callback
				}
			} else if (!callback) {
				callback = {};
			}
			if (data.toJSON) {
				data = data.toJSON();
			} else if (Object.toJSON) {
				data = Object.toJSON(data);
			} else {
				return;
			};
			if (typeof this.commands[func_name] === 'undefined') {
				this.commands[func_name] = [];
			}
			var r = Math.random();
			this.commands[func_name].push(r);
			new Ajax.Request(url, {
				method: method,
				parameters: {
					ajax_call: 1,
					func_name: func_name,
					data: data,
					mna: Common.getMN('mna'),
					mnb: Common.getMN('mnb')
				},
				onSuccess: callback.success ? function(response){
					var index = Common.ClientServer.commands[func_name].indexOf(r);
					if (index === -1) {
						return;
					} else {
						Common.ClientServer.commands[func_name].splice(index, 1);
					}
					if (200 !== response.status) {
						if (callback.error) {
							callback.error(response); 
						}
						return;
					}
					var data = response.responseText.evalJSON(true);
					if (data instanceof Array && data.length >= 2 && data[0] === 'AjaxResponse') {
						if (data[1] === 'OK') {
							data.splice(0, 2);
							callback.success(data, response);
						} else if (data[1] === 'Redirect' && data.length > 2) {
							window.document.location = data[2];
						} else if (callback.error) {
							callback.error(response); 
						}
					} else if (callback.error) {
						callback.error(response); 
					}
					if (Common.ClientServer.commands[func_name] === this) {
						
					}
				} : null,
				onFailure: callback.error ? function(response) {
					var index = Common.ClientServer.commands[func_name].indexOf(r);
					if (index !== -1) {
						return;
					} else {
						Common.ClientServer.commands[func_name].splice(index, 1);
					}
					callback.error(response);
				} : null
			});
		}
	};
}


/**
 * MRIM status icon behaviour. Origin http://img.imgsmail.ru/r/js/mrim_replacer.js
 */
(function(){
	var winagent = !!window.navigator.userAgent.match(/MRA/), ie = /*@cc_on!@*/false, stop = function(ev){
		with(ev){
			cancelBubble=true;
			returnValue = false;
			ev.stopPropagation && stopPropagation();
			ev.preventDefault && preventDefault();
		}
	};

	(function(obj, cb){
		if( document.addEventListener )
			obj.addEventListener( 'click', cb, false );
		else
			obj.attachEvent( 'onclick', cb );
	})(document.body, function(ev){
		ev = window.event||ev;
		var trg = ev.srcElement || ev.target;
		trg.href || (trg=trg.parentNode);
		trg.href || (trg=trg.parentNode);
		if(trg.href && (email=trg.href.match(/^(magent:)?http:\/\/www.mail.ru\/agent\?message&to=(.*)/ ))){
			if(window.webagent && webagent.dom_handlers.onPageContactClick && webagent.dom_handlers.onPageContactClick(email[2], winagent)){
				stop(ev);
			} else if(!ie && !email[1]) {
				trg.href='magent:'+ trg.href;
				trg.target='';
			} else if(ie && trg.target!='') {
				trg.target='';
			}
		}
	})
})();

var MRIM = (function(){
	var _url = 'http://status.mail.ru/batch.js?';
	return {
		fetch: function(c){
			var links = (c.tagName ? c : document.body).getElementsByTagName('i');
			var mrim = {'el':[],'em':[],'t':[]}, mail = null;
			for(var i = 0;i < links.length;i++) {
				mail = $(links[i]).readAttribute('email');
				if(!mail) continue;
				mrim.el.push(links[i]);
				mrim.em.push(mail);
				mrim.t.push(links[i].className.match('spr-mrim-13') ? '13' : '9');
			}
			links = (c.tagName ? c : document.body).getElementsByTagName('a');
			for(var i = 0;i < links.length;i++) {
				mail = $(links[i]).readAttribute('email');
				if(!mail) continue;
				mrim.el.push(links[i]);
				mrim.em.push(mail);
				mrim.t.push(links[i].className.match('spr-mrim-13') ? '13' : '9');
			}
			this.get(mrim);
		},
		get: function(links) {
			this.links = links;
			var container = $('boosterCanvas') || $(document.body);
			var sc = container.appendChild(document.createElement('script'));
			sc.src = _url + links.em.join(',') + ',' + Math.floor(Math.random() * 10000);
		},
		update: function(c) {
			if (!c || !c.length) {
				return;
			}
			c = c.split('');
			var els = this.links.el;
			for(var i = 0; i < els.length; i++) {
				els[i].className += ' mrim-'+(c[i] == 0?'offline':c[i] == 1?'online':c[i] == 2?'away':'offline') + '_' + this.links.t[i];
			} 
		}
	};
})();
if (!$('boosterCanvas')) {
	$(document).observe('dom:loaded', MRIM.fetch.bindAsEventListener(MRIM));	
}
