var mailru = mailru || {};
mailru.loader = {
	modvers: {
		receiver: 1,
		proxy: 5,
		api: 14
	},
    modreleases: {
		receiver: null,
		proxy: null,
		api: null
	},
	_modulePath: 'http://img1.imgsmail.ru/r/js/connect/',
	_loaded: {},
	_readyCallbacks: {},
	require: function(module, onready){
		if(this._loaded[module]){
			onready();
		} else {
			if(!this._readyCallbacks[module]){
				if(module=='api') {
					var ts = +new Date();
					(function(obj, name, cb){
						if (obj.addEventListener){
							obj.addEventListener(name, cb, false);
						} else if (obj.attachEvent){
							obj.attachEvent('on'+ name, cb);
						}
					})(window, 'beforeunload', function(){
						if(!mailru.loader._loaded[module] && (+new Date() - ts) > 15000){
							(new Image()).src='http://mail.ru/gstat?api.require=1&rnd='+ Math.random();
						}
					})
				}
				
				this._readyCallbacks[module] = [];
				this._readyCallbacks[module].push(onready);
				var modver = (this.modvers[module] && ('?'+ this.modvers[module])) || '';
                var modrelease = (this.modreleases[module] && ('/' + this.modreleases[module]) + '/') || '/';
				document.URL.match(/testmode=1/) && (modver = '');
				
				with(document.getElementsByTagName('head')[0].appendChild(document.createElement('script'))){
					type = 'text/javascript';
					src = this._modulePath+ module+ modrelease+ module+ '.js' +modver;
				}
			} else {
				this._readyCallbacks[module].push(onready);
			} 
						
		}
	},
	onready: function(module){
		if(this._readyCallbacks[module]){
			this._loaded[module] = true;
			var cbs = this._readyCallbacks[module];
			for(var i=0; i<cbs.length; i++){
				try{
					cbs[i]();
				}catch(e){}
			}
			
		}
	}
};
(function(){
	var branch = document.URL.match(/__branch=([a-z0-9_-]+)/i );
	if(branch){
		mailru.loader._modulePath = 'http://'+ branch[1]+ '.connect.rapira9.mail.ru/js/';
		mailru.loader._branch = branch[1];
	}
})()

mailru.isIE = /*@cc_on!@*/false;
mailru.isOpera = !!window.opera;
mailru.inited = false;
mailru.intercomType = ( window.postMessage && !mailru.isIE)? 'event' : (((function(){var i,a,o,p,s="Shockwave",f="Flash",t=" 2.0",u=s+" "+f,v=s+f+".",rSW=RegExp("^"+u+" (\\d+)");if((o=navigator.plugins)&&(p=o[u]||o[u+t])&&(a=p.description.match(rSW)))return a[1];else if(!!(window.ActiveXObject))for(i=10;i>0;i--)try{if(!!(new ActiveXObject(v+v+i)))return i}catch(e){}return 0;})() < 10) ? 'hash' : 'flash');

mailru.init = function(onready, private_key, DOMFlashId){
	mailru.loader.require('api', function(){
		try{
			mailru.app.init(private_key);
		}catch(e){
			(new Image()).src='http://mail.ru/gstat?api.param1=1&rnd='+ Math.random();		
		}
		var e;
		if(DOMFlashId && (e=document.getElementById(DOMFlashId))){
			setTimeout(onready, 1);
			mailru.events.listen('event', function(name, data){
				document.getElementById(DOMFlashId).mailruEvent(name, data);
			});
		}
	})
}
mailru.autoInit = (function(){
    var a = document.getElementsByTagName('a'), al = a.length;
    for(var i = 0; i < al; i++){
    	if (typeof a[i] !== 'undefined' && a[i].className.indexOf('mrc__plugin') != -1) {
            mailru.loader.require('api', function(){
                mailru.plugin.init();
            });
            break;
    	}
    }    
})();



(function(){
	var escGetStr = function(str){
		return (''+str).replace(/\&/g, '%26').replace(/\s/g, '+').replace(/\#/g, '%23').replace(/\=/g, '%3D');
	}
	var REPORT_URL = 'http://appsmail.ru/cgi-bin/my/js-error2?';
	var req = function(get){
		var img = document.body.appendChild(document.createElement('img'));
		img.style.position = 'absolute';
		img.style.left = '-1000px';
		img.width = 1;
		img.height = 1;
		img.src = REPORT_URL + get;
	}
	
	try {
		
		var browser = window.navigator.userAgent, ver;
		if( /*@cc_on!@*/false && (ver = parseFloat( (browser.match( /msie\s(\d+.\d+)/i ) || [0,0])[1]) ) ) {
			browser = 'IE'+ver;
		} else if( window.navigator && window.navigator.product && window.navigator.product.match( /Gecko/i ) ) {
			browser = (browser.match( /(?:Firefox|Iceweasel)\/\d+\.\d+/i ) || ['Gecko'+(window.navigator.productSub||'')])[0];
		} else {
			browser = 'UnknowBrowser';
		}
		if(browser.replace(/\s*/, '') == '')
			browser = 'UnknowBrowser';
			
		browser = escGetStr(browser);
		var os = escGetStr(window.navigator.platform || 'unknowOS');
		
	} catch(e) {
		return;
	}
	
	var handler = function(msg, src, line){
		(new Image()).src='http://mail.ru/gstat?api.param3=1&rnd='+ Math.random();
		
		if(Math.random(1) < 0.9) return;
		var mail = 'access denied';
		try {
			mail = (document.cookie.toString().match(/Mpop=.*?:([^@:]+@[^:]+)/) || [0,'nologin'])[1];
		} catch(e) {}
		
		var url = 'access denied';
		try {
			url = document.location.toString();
		} catch(e) {}
		
		var get = 'msg=' + escGetStr(msg) + '&' + 
					'src=' + escGetStr(src) + '&' + 
					'line=' + escGetStr(line) + '&' + 
					'url=' + escGetStr(url) + '&' + 
					'browser=' + browser + '&'  + 
					'mail=' + escGetStr(mail) + '&' + 
					'os=' + os;
		
		req(get);
	}
	window.onerror = handler;
})();


