if (typeof jsPromto == "undefined" || !jsPromto) {
	var jsPromto = {};
}

jsPromto.ajax = typeof jsPromto.ajax != 'undefined' && jsPromto.ajax ? jsPromto.ajax : function(o) {
	var len = (typeof o.vars === 'undefined') ? 0 : o.vars.length;
	var url = (typeof o === 'string') ? o : o.url;
	var callback = (typeof o.callback === 'undefined') ? function() {} : o.callback;
	var method = (typeof o.method === 'undefined') ? 'GET' : o.method;
	var type = (typeof o.type === 'undefined') ? 'text' : o.type;

	var str="";
	for(var i=0;i < len;i++)
	{
		if(i!='0')
		{
			str=str+'&';
		}
		str=str+o.vars[i].name+'='+escape(o.vars[i].value);
	}

	var xhr = window.ActiveXObject ? new ActiveXObject("Microsoft.XMLHTTP") : new XMLHttpRequest();

	var onCompleteRequest = function () {
		if (xhr.readyState == 4)
	    {
	        if (xhr.status == 200)
	        {

	        	if (type == "text") {
	        		r=xhr.responseText;
	        	} else if (type=="json") {
	        	 	r=eval('('+xhr.responseText+')');
	        	} else if (type=="xml") {
	        		r=xhr.responseXML.documentElement;
	        	} else {
	        		r=xhr.responseText;
	        	}
	        	callback(r);
	        }
		}
	};

	xhr.open(method, url, true);
	xhr.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
	xhr.setRequestHeader('Accept-Language', 'en');
	xhr.setRequestHeader('Accept-Charset', 'utf-8');
	xhr.onreadystatechange=onCompleteRequest;
	xhr.send(str);

};

jsPromto.client = typeof jsPromto.client != 'undefined' && jsPromto.client ? jsPromto.client : function() {

	var dialog = document.createElement('div');
    var tim="";
    var base = "/promto/";
    var baseUrl=base+"client.php?func=";
    var iCount=10;
    var key="";

    var onlineFlag=true;
    var onlineId="promtoOnline";
    var def_html_online = '<a href="javascript:void(0);" onclick="javascript:jsPromto.client.begin();"><img src="/promto/_active.gif" />Консультант он-лайн</a>';
    var def_html_offline = '<a href="javascript:void(0);" onclick="javascript:jsPromto.client.offline();"><img src="/promto/_inactive.gif" />Консультант отсутствует</a>';
    var html_online="";
    var html_offline="";

	var request = function() {
   		clearTimeout(tim);
   		if (iCount<10)
   		{
   			iCount++;
   			jsPromto.ajax({url:baseUrl+'clientRequest',method:"POST",type:"json",callback:clientRequest});

   		} else {
   			iCount = 0;
   			jsPromto.ajax({url:baseUrl+'clientNotify',method:"POST",type:"json",callback:clientNotify});
   		}
	};

	var clientNew = function(r) {
		key=r.key;
		tim = setTimeout(request,100);
	};

	var clientRequest = function(r) {
       	clearTimeout(tim);
       	if (r.status=='yes')
       	{
       		dialog.innerHTML=r.msg;
       		dialog.style.display="";
       		dialog.style.top=(250+getScrollY())+'px';
       	}
       	else
       	{
       		tim=setTimeout(request,5000);
       	}
	};

	var clientNotify = function(r) {
       	if (r.status=='online')
       	{
       		if (onlineFlag)
       		{
       			document.getElementById(onlineId).innerHTML=html_online;
       		}
       		tim=setTimeout(request,100);
       	}
       	else
       	{
        	if (onlineFlag)
       		{
      			document.getElementById(onlineId).innerHTML=html_offline;
       		}
       		iCount=10;
       		tim=setTimeout(request,60000);
       	}
	};

	var clientBegin = function (r) {
		clearTimeout(tim);
		dialog.innerHtml="";
		dialog.style.display="none";
   		iCount=10;
   		tim=setTimeout(request,60000);
	};

	var clientCancel = function(r) {
		dialog.innerHtml="";
		dialog.style.display="none";
		iCount=0;
		tim=setTimeout(request,100);
	};

	var openChat = function (key) {
		if (key!="")
		{
			win = window.open('http://client.promto.ru/sup/chat.php?key='+key,'Im'+key+'client','toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=600,height=330,resizable=1');
			return false;
		}
	};

	var getScrollY = function() {
		var y = 0;
		if( typeof( window.pageYOffset ) == 'number' ) {
			//Netscape compliant
			y = window.pageYOffset;
		} else if ( document.body && document.body.scrollTop ) {
			//DOM compliant
			y = document.body.scrollTop;
		} else if( document.documentElement && document.documentElement.scrollTop ) {
			//IE6 standards compliant mode
			y = document.documentElement.scrollTop;
		}
		return y;
	}

	return  {
		start : function(o) {
			if (typeof o === "undefined")
			{
				onlineFlag=false;
			} else if (typeof o === "boolean") {
				onlineFlag=o;
			} else {
				onlineFlag = (typeof o.flag === 'undefined') ? false : o.flag;
			}

			onlineId = (typeof o.id === 'undefined') ? "promtoOnline" : o.id;
			html_online = (typeof o.html_online === 'undefined') ? def_html_online : o.html_online;
			html_offline = (typeof o.html_offline === 'undefined') ? def_html_offline : o.html_offline;

			//next test helpers :)
			var exp1 = /#a(.*?)#/gi;
			var exp2 = /#\/a#/gi;
			if (typeof o.helper_online === 'string')
			{
				html_online = o.helper_online.replace(exp1,'<a '+'href="javascript:void(0);" onclick="javascript:jsPromto.client.begin();"'+'$1>').replace(exp2,"</a>");
			}

			if (typeof o.helper_offline === 'string')
			{
				html_offline = o.helper_offline.replace(exp1,'<a '+'href="javascript:void(0);" onclick="javascript:jsPromto.client.offline();"'+'$1>').replace(exp2,"</a>");
			}

			base = (typeof o.base === 'undefined') ? "/promto/" : o.base;
			if (base[base.length-1]!='/')
			{
				base+='/';
			}

			baseUrl=base+"client.php?func=";

			var css=document.createElement("link");
			css.setAttribute("rel", "stylesheet");
			css.setAttribute("type", "text/css");
			css.setAttribute("href", base+"promto.css");
			document.getElementsByTagName("head")[0].appendChild(css);

			dialog.id="promto_message";
			dialog.style.display="none";
			document.body.insertBefore(dialog,null);

			var oldonscroll = window.onscroll;
			if (typeof window.onscroll != 'function') {
				window.onscroll = function () {
					document.getElementById('promto_message').style.top=(250+getScrollY())+'px';
				};
			} else {
				window.onscroll = function() {
					oldonscroll();
					document.getElementById('promto_message').style.top=(250+getScrollY())+'px';
				};
			}
			jsPromto.ajax({url:baseUrl+'clientNew',vars:[{name:"page",value:document.location.href},{name:'ref',value:document.referrer}],method:"POST",type:"json",callback:clientNew});
		},

		begin : function () {
			openChat(key);
			jsPromto.ajax({url:baseUrl+'clientStart',method:"POST",type:"json",callback:clientBegin});
		},

		cancel : function () {
			jsPromto.ajax({url:baseUrl+'clientCancel',method:"POST",type:"json",callback:clientCancel});
		},

		offline : function () {
			window.open('http://client.promto.ru/sup/offline.php?key='+key,'Offline'+key,'toolbar=0,scrollbars=0,location=0,status=1,menubar=0,width=600,height=430,resizable=1');
		}
	};
}();


var jsPromtoParam={
	flag:true,
	base:'/promto',
	helper_online: '#a title="Онлайн-консультант"#<img src="/promto/_active.gif" alt="Онлайн-консультант" /><span style="top: -5px; position: relative;">&nbsp;Онлайн-консультант</span>#/a#',
	helper_offline: '#a title="Онлайн-консультант"#<img src="/promto/_inactive.gif" alt="Онлайн-консультант" /><span style="top: -5px; position: relative;">&nbsp;Онлайн-консультант</span>#/a#'
	};

var oldonload = window.onload;

if (typeof window.onload !== 'function')
{
	window.onload = function () {
		jsPromto.client.start(jsPromtoParam);
	}
}
else
{
	window.onload = function() {
		oldonload();
		jsPromto.client.start(jsPromtoParam);
	}
}

