var arequest;
var funcname;
//Преобразование номера к MSISDN
function getmsisdn(number,pl) {

	if (typeof pl == "undefined") {
	    pl = false;
	  }
	//временно ---------------------
	if(number.substr(0,1)=='+') {
		if(!pl) return number.substr(1);
		return number;
	}
	//-------------------------------------
	number=''+number;
	var retval='';
	if(pl) { retval='+'; } else { retval=''; }
	number=number.replace(/\s/g,'');
	number=number.replace(/[^\+\d]/g,'');
	number=number.replace(/^\s*?((\+7)|7|8)?(\d{10})\s*?$/,retval+"7$3");
	
	retval=number;
	return retval;
}

//Проверка является ли номер MSISDN
function ismsisdn(num) {
	//временно----------------------
	if(num.substr(0,1)=='+') {
		var reg=/^\+\d+?$/;
		return reg.test(num);
	}
	//------------------------------
	var reg=/^\+?7\d{10}$/;
	return reg.test(num);
}

//Приводим дату к виду DD-MM-YYYY
function fD(d,m,y,sep) {
	if(!sep) var sep='-';
	return LS(d)+sep+LS(m)+sep+(y);
}

//Подставляем 0 к числам <10 
function LS(n) {
    return String(n).replace(/\b(\d)\b/g, "0$1");
}


//Функция replace (caseInsensitive для русского текста)
function cireplace(text,w,r) {
	var lt,lw,si=0,wl=w.length,rep='';
	do {
		lt=text.toLowerCase();
		lw=w.toLowerCase();
 
		si=lt.indexOf(lw,si+rep.length);
		if(si!=-1) {
			rep=r.replace("$1",text.substr(si,wl))
			text=text.substr(0,si)+rep+text.substr(si+wl);
		}	
	} while(si!=-1);

 	return text;

}

//Убрать HTML
function stripHTML(text) {
	return text.replace(/</g,"&lt;").replace(/>/g,"&gt;");
}

//Закодировать в URI
function mescape(text) {
	return encodeURIComponent(text);
	//return text.replace(/[&?]/,'');
}

//Превратить \r\n в <br/>
function ntobr(text) {

	text = escape(text);
	var re_nlchar=/<br\/>/g;
	if(text.indexOf('%0D%0A') > -1){
		re_nlchar = /%0D%0A/g ;
	} else if(text.indexOf('%0A') > -1){
		re_nlchar = /%0A/g ;
	} else if(text.indexOf('%0D') > -1){
		re_nlchar = /%0D/g ;
	}
	return unescape( text.replace(re_nlchar,'<br/>') );
}

//Выделение текста
function highlight(text,hl) {
	if(hl=='') return text;
	return cireplace(text,hl,'<div style="background: #ffaaaa;display: inline;">$1</div>');
}

//Функция форматирования текста для вывода
function md(text) {
	return ntobr(stripHTML(text));
}

//Получение параметров из адресной строки броузера
function get_url_par(param){
	param = param.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
	var r1 = "[?&]"+param+"=([^&#]*)";
	var r2 = new RegExp(r1);
	var r3 = r2.exec( window.location.href );
	if( r3 == null ) { return ""; } else return r3[1];
}

//Trim
function trim(string) {
	if(string==undefined) string='';
	string=''+string;
	return string.replace(/(^\s+)|(\s+$)/g, "");
}


//AJAX


function createPostQuery(form)
{
    var elements = form.elements;
    var pairs = new Array();
    
    for (var i = 0; i < elements.length; i++) {
	var ename = elements[i].id;
	if(ename.length==0) ename=elements[i].name;
	var evalue = elements[i].value;
	if (ename == "pref" || elements[i].type== "checkbox"){
	    if (elements[i].checked == false){
		continue;
	    }
	}
	pairs.push(ename + "=" + encodeURIComponent(evalue));
    }
    return pairs.join("&");
}

function unstripHTML(text) {
	return text.replace("<br/>","\n").replace("&lt;","<").replace("&gt;",">");
}



function CreatePostRequest(url,query)
{
    var request = null;
    if (window.XMLHttpRequest)
    {
	try {request = new XMLHttpRequest();}
	catch (e) {}
    }
    
    else if (window.ActiveXObject)
    {
        try {request = new ActiveXObject('Msxml2.XMLHTTP');}
	catch (e)
	{
	    try {request = new ActiveXObject('Microsoft.XMLHTTP');}
	    catch (e) {}
	}
    }
    if (request)
    {
	request.open("POST", url, false);
	request.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
        request.send(query);
	return request;
    }
    else
    {
	alert("Браузер не поддерживает передачу данных при помощи JavaScript");
    }
}


function ASyncRequest(url,func) {

	if(get_url_par('debug')=='1') alert(url);
	clearRequest(arequest);	
	if (window.XMLHttpRequest) {
        try {
            arequest = new XMLHttpRequest();
        } catch (e){}
    } else if (window.ActiveXObject) {
        try {
            arequest = new ActiveXObject('Msxml2.XMLHTTP');
        } catch (e){
            try {
                arequest = new ActiveXObject('Microsoft.XMLHTTP');
            } catch (e){}
        }
    }
 
    if (arequest) {

       funcname=func;
       arequest.open("GET", url, true);
       arequest.onreadystatechange = processReqChange;
       arequest.send(null);
    }
    return arequest;
}

function processReqChange() {
try { 

    // только при состоянии "complete"
    if (arequest.readyState == 4) {
        // для статуса "OK"
        if (arequest.status == 200) {
            // обработка ответа
            funcname();
            //clearRequest(arequest);
        } else {
            
        }
    }
  }
  catch( e ) {
   
  }

}

function CreateRequest(url)
{
	if(get_url_par('debug')=='1') alert(url);
    var request = null;
    if (window.XMLHttpRequest)
    {
	try {request = new XMLHttpRequest();}
	catch (e) {}
    }
    
    else if (window.ActiveXObject)
    {
        try {request = new ActiveXObject('Msxml2.XMLHTTP');}
	catch (e)
	{
	    try {request = new ActiveXObject('Microsoft.XMLHTTP');}
	    catch (e) {}
	}
    }
    if (request)
    {
	request.open("GET", url, false);
        request.send(null);
    //alert('returning request');
	return request;
    }
    else
    {
	alert("Браузер не поддерживает передачу данных при помощи JavaScript");
    }
}



function clearRequest(request) 
{
	if(request==null) return;
	try {
	if (request.readyState != 0) request.abort(); 
	} catch(e) { }
	request=null;
}
function CheckRequest(request)
{
	//alert(request.responseText);
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{
			try
			{
				if (request.responseXML == null)
				{
					try {
						request.responseXML.loadXML(request.responseText);
					}
					catch (e) {
						alert("Can't load XML "+ e);
						return false;
					}
				}
				
				return CheckXML(request.responseXML);
			}
			catch (e) {
				alert('Ошибка: ' + e);
				return false;
			}
		} else {
			alert("Не удалось получить данные:\n" + request.statusText);
			return false;
		}
	}

	return false;
}

function CheckXML(responseXML)
{
	var response = responseXML.getElementsByTagName('Response')[0].firstChild.data;

	if (response == "OK") {
		return true;
	}
	else if (response == "ERROR") {
		var _f0=document.getElementById("m-login-error");
		if(_f0!=null && _f0!='') {
		 	showloginerror(responseXML.getElementsByTagName('Error')[0].firstChild.data);
		} else {
			alert(responseXML.getElementsByTagName('Error')[0].firstChild.data);
		}
		return false;
	}
	else if (response == "ERROR_SES") {
		//alert(responseXML.getElementsByTagName('Error')[0].firstChild.data);
		window.location.href = "index.php";
		return false;
	}
	else {
	var _f0=document.getElementById("m-login-error");
		if(_f0!=null && _f0!='') {
		 	showloginerror(responseXML.getElementsByTagName('Error')[0].firstChild.data);
		} else {
			alert(responseXML.getElementsByTagName('Error')[0].firstChild.data);
		}
		return false;
	}
}




function CheckHtmlRequest(request)
{
	//alert(request.responseText);
	if (request.readyState == 4)
	{
		if (request.status == 200)
		{

			return true;
			
		} else {
			alert("Не удалось получить данные:\n" + request.statusText);
			return false;
		}
	}

	return false;
}



//Cookies

function GetCookParam(cook, startPos, paramLen)
{
	var param = '';
	for (i=startPos+paramLen+1; i<cook.length && cook.charAt(i) != ';'; i++) {
		param += cook.charAt(i);
	}
	return param;
}

function getCookie(name) {
	var cookie = " " + document.cookie;
	var search = " " + name + "=";
	var setStr = null;
	var offset = 0;
	var end = 0;
	if (cookie.length > 0) {
		offset = cookie.indexOf(search);
		if (offset != -1) {
			offset += search.length;
			end = cookie.indexOf(";", offset)
			if (end == -1) {
				end = cookie.length;
			}
			setStr = unescape(cookie.substring(offset, end));
		}
	}
	return(setStr);
}

function setCookie(name,value,expiredays)
{
	var exdate=new Date();
	exdate.setDate(exdate.getDate()+expiredays);
	document.cookie=name+ "=" +escape(value)+((expiredays==null) ? "" : ";expires="+exdate.toGMTString());
}
