function fnCheckUname(uname)
{
	XMLID.async  = false;
	XMLID.src = "/CallBacks/xmlCheckUserName.asp?sQuery=" + encodeURIComponent(uname);
	
	sTextColor	 = XMLID.getElementsByTagName("color")[0].childNodes[0].nodeValue;
	
	var obj = document.getElementById("IfExistsText");
	
	if(obj) {
	    if (sTextColor == "red") {
	        obj.value = "Такой логин уже зарегистрирован";
	        obj.className = sTextColor;
	        document.frm.btnSubmit.disabled = true;
	    }
	    else {
	        obj.value = "Логин свободен";
	        obj.className = sTextColor;
	        document.frm.btnSubmit.disabled = false;
	    }
	}
		
}

function fnGetSubOptions(nValue, nSelected, sID, sName, sSelectID)
{
	var sSQL;
	
	sSQL = "SELECT tblCities.CityID, tblCities.CityName FROM tblCities "
	sSQL = sSQL + "INNER JOIN tblCountries ON tblCities.CountryID = tblCountries.CountryID "
	sSQL = sSQL +  "WHERE tblCities.CountryID = " + nValue +" ORDER BY CityName"
	
	XMLID.async		 = false;	
	XMLID.src		 = "/CallBacks/xmlGetSubOptions.asp?sQuery="+ sSQL +"&id="+ sID +"&value="+ sName;
	
	objNodeListID	 = XMLID.getElementsByTagName(sID);
	objNodeListValue = XMLID.getElementsByTagName(sName);
	
	var obj = document.getElementById(sSelectID);
	
	if(obj)
	{
	    obj.length = 0;
		for (var i = 0; i < objNodeListID.length; i++) 
		{
		    obj.options[i] = new Option(objNodeListValue[i].text, objNodeListID[i].text);	
			
			if(nSelected != "")
				obj.selectedIndex = i;
		}
	}
}

function fnGetSubOptionsForum(nValue, nSelected, sID, sName, sSelectID)
{
	var sSQL;
	
	sSQL = "SELECT tblForums.ForumID, tblForums.ForumName FROM tblForums  "
    sSQL = sSQL +  "INNER JOIN tblFourmGroups ON tblForums.ForumGroupID = tblFourmGroups.ForumGroupID "
	sSQL = sSQL +  "WHERE tblForums.IsActive = 1 AND tblForums.ForumGroupID = " + nValue
	
	xmlMove.async	 = false;	
	xmlMove.src		 = "/CallBacks/xmlGetSubOptions.asp?sQuery="+ sSQL +"&id="+ sID +"&value="+ sName;
	
	objNodeListID	 = xmlMove.getElementsByTagName(sID);
	objNodeListValue = xmlMove.getElementsByTagName(sName);
	
	var obj = document.getElementById(sSelectID);
	
	if(obj)
	{
	    obj.length = 0;
	    obj.options[0] = new Option("Выбрать", "");
		for (var i = 1; i <= objNodeListID.length; i++) 
		{
			obj.options[i] = new Option(objNodeListValue[i-1].text, objNodeListID[i-1].text);	
			
			if(nSelected != "")
				obj.selectedIndex = i;
		}
	}
}

function fnGetSubOptionsThread(nValue, nSelected, sID, sName, sSelectID)
{
	var sSQL;
    
	sSQL = "SELECT tblThreads.ThreadID, tblThreads.ThreadName FROM tblThreads  "
    sSQL = sSQL +  "INNER JOIN tblForums ON tblThreads.ForumID = tblForums.ForumID "
	sSQL = sSQL +  "WHERE tblThreads.IsActive = 1 AND tblThreads.ForumID = "+ nValue +" "
	sSQL = sSQL +  "ORDER BY tblThreads.ThreadName" 
	
	xmlMoveThread.async	 = false;	
	xmlMoveThread.src	 = "/CallBacks/xmlGetSubOptions.asp?sQuery="+ sSQL +"&id="+ sID +"&value="+ sName;
	
	objNodeListID	 = xmlMoveThread.getElementsByTagName(sID);
	objNodeListValue = xmlMoveThread.getElementsByTagName(sName);
	
	var obj = document.getElementById(sSelectID);
	
	if(obj)
	{
	    obj.length = 0;
	    obj.options[0] = new Option("Выбрать", "");
		for (var i = 1; i <= objNodeListID.length; i++) 
		{
			obj.options[i] = new Option(objNodeListValue[i-1].text, objNodeListID[i-1].text);	
			
			if(nSelected != "")
				obj.selectedIndex = i;
		}
	}
}

function fnValidateSubmitForm()
{
	var result = false;
	var err = 0;
	var frm = document.frm;
	
	// Username
	if(frm.Username.value == ""){err = err + 1}
	else
	{
		if(frm.Username.value.length < 3)
		{
			alert("Логин должен содержать не менее 3 знаков.");
			frm.Username.focus();
			return false;
		}
	}
	
	// Password
	if(frm.Password.value == ""){err = err + 1}
	else
	{
		if(frm.Password.value.length <= 5)
		{
			alert("Пароль должен содержать более 5 знаков.");
			frm.Password.focus();
			return false;
		}
	}
	
	// Email
	if(frm.Email.value == ""){err = err + 1}
	else
	{
		if(frm.Email.value.length < 5)
		{
			alert("Мэйл должен содержать более 5 знаков.");
			frm.Email.focus();
			return false;
		}
	}
	
	// Personal Name
	if(frm.PersonalName.value == ""){err = err + 1}
	else
	{
		if(frm.PersonalName.value.length < 3)
		{
			alert("Имя должно содержать более 3 знаков.");
			frm.Email.focus();
			return false;
		}
	}
	
	if(frm.SexID.value == ""){err = err + 1}
	if(frm.CountryID.value == ""){err = err + 1}
	//if(frm.CityID.value == ""){err = err + 1}
	
	if(err > 0)
	{
		result = false;
		alert("Форма заполнена неверно");
		frm.Username.focus();
	}
	else
	{
		result = true;
	}	
	
	return result;
}

function fnCreateThread(ForumID)
{
	location.href = "CreateThread.asp?ForumID="+ForumID;
}

function fnCreatePoll(ForumID) {
    location.href = "CreatePoll.asp?ForumID=" + ForumID;
}

function fnDeleteForum(ForumID)
{
	if(confirm('Are you sure you want to delete this forum?'))
	{
		location.href='_DeleteForum.asp?ForumID='+ForumID;
	}
}

function fnEditForum(ForumID)
{
	location.href='_EditForum.asp?ForumID='+ForumID;
}

function fnCreateForumGroup()
{
	location.href = "CreateNewForum.asp";
}

function fnCreateForum()
{
    location.href = "CreateForumGroup.asp";
}

function insert_text(open, close)
{
	var msgfield = (document.all) ? document.all.MsgBody : document.forms['frmActive']['MsgBody'];
 
	// IE support
	if (document.selection && document.selection.createRange)
	{
	  msgfield.focus();
	  sel = document.selection.createRange();
	  sel.text = open + sel.text + close;
	  msgfield.focus();
	}
 
	// Moz support
	else if (msgfield.selectionStart || msgfield.selectionStart == '0')
	{
	  var startPos = msgfield.selectionStart;
	  var endPos = msgfield.selectionEnd;
 
	  msgfield.value = msgfield.value.substring(0, startPos) + open + msgfield.value.substring(startPos, endPos) + close + msgfield.value.substring(endPos, msgfield.value.length);
	  msgfield.selectionStart = msgfield.selectionEnd = endPos + open.length + close.length;
	  msgfield.focus();
	}
 
	// Fallback support for other browsers
	else
	{
	  msgfield.value += open + close;
	  msgfield.focus();
	}
 
	return;
}

function fnCopySelected(theField) 
{
	var selectedText = document.selection;
	var field = document.getElementById(theField);
	
	if (selectedText.type == 'Text') 
	{
		var newRange = selectedText.createRange();
		//field.focus();
		field.value += '[quote]' + newRange.text + '[/quote]';
		field.focus();
	} 
	else 
	{
		alert('Текст не выделен.');
	}
}

function fnWriteBoldName(name, theField)
{
	var field = document.getElementById(theField);
	field.value += '[b]' + name + '[/b], ';
	
}

function fnDeleteMsg(MsgID,ThreadID,ForumID)
{
	if(confirm('Вы уверены, что хотите стереть это сообщение?'))
	{
		location.href='DeleteMsg.asp?ThreadID='+ThreadID+'&ForumID='+ForumID+'&MsgID='+MsgID;
	}
}

function fnDeleteThread(ThreadID,ForumID)
{
	if(confirm('Вы уверены, что хотите стереть эту тему?'))
	{
		location.href='DeleteThread.asp?ThreadID='+ThreadID+'&ForumID='+ForumID;
	}
}

function fnEditMsg(MsgID,ThreadID,ForumID)
{
	location.href='EditMsg.asp?ThreadID='+ThreadID+'&ForumID='+ForumID+'&MsgID='+MsgID;
}

function fnMoveMsg(MsgID,ThreadID,ForumID)
{
	location.href='MoveMsg.asp?MsgID='+MsgID+'&ThreadID='+ThreadID+'&ForumID='+ForumID;
}

function fnSubmitThread(ThreadID, ForumID, UserID)
{
    if(confirm('Вы уверены, что хотите получать уведомления на мэйл?'))
	{
		location.href='AnswersToEmailThread.asp?ThreadID='+ThreadID+'&ForumID='+ForumID+'&UserID='+UserID;
	}
}

function fnCitateAllMsg(MsgID)
{
    location.href='ReplayToMsg.asp?MsgID='+MsgID;
}

// Translit START

// One character letters
var t_table1 = "ABVGDEZIJKLMNOPRSTUFXHCYWabvgdezijklmnoprstufxhcyw'#";
var w_table1 = "АБВГДЕЗИЙКЛМНОПРСТУФХХЦЫЩабвгдезийклмнопрстуфххцыщьъ";

// Two character letters
var t_table2 = "EHSZYOJOZHCHSHYUJUYAJAehszyojozhchshyujuyajaEhSzYoJoZhChShYuJuYaJa";
var w_table2 = "ЭЩЁЁЖЧШЮЮЯЯэщёёжчшююяяЭЩЁЁЖЧШЮЮЯЯ";

var tagArray = [
	'code',  '',
	'img',   '',
	'quote', "(=[\"']?[^"+String.fromCharCode(92,93)+"]+)?",
	'email', "(=[\"']?[a-zA-Z0-9_.-]+@?[a-zA-Z0-9_.-]+[\"']?)?",
	'url',   "(=[\"']?[^ \"'"+String.fromCharCode(92,93)+"]*[\"']?)?"
];

function translit2win (str)
{
	var len = str.length;
	var new_str = "";

	for (i = 0; i < len; i++)
	{
	/* non-translatable text must be in ^ */
	if(str.substr(i).indexOf("^")==0){
	  end_len=str.substr(i+1).indexOf("^")+2;
	  if (end_len>1){
	    new_str+=str.substr(i,end_len);
	    i += end_len - 1;
	    continue;
	  }
	}

	/* Skipping emoticons */
	if(str.substr(i).indexOf(":")==0){
	  iEnd = str.substr(i+1).indexOf(":")+2;
	  if (iEnd > 1 && str.substr(i,iEnd).match("^:[a-zA-Z0-9]+:$")){
	    new_str += str.substr(i,iEnd);
	    i += iEnd - 1;
	    continue;
	  }
	}

	/* Skipping http|news|ftp:/.../ links */
	rExp = new RegExp("^((http|https|news|ftp|ed2k):\\/\\/[\\/a-zA-Z0-9%_?.:;&#|\(\)+=@-]+)","i");
	if (newArr = str.substr(i).match(rExp)){
	  new_str += newArr[1];
	  i += newArr[1].length - 1;
	  continue;
	}

	/* Skipping FONT, COLOR, SIZE tags */
	rExp = new RegExp("^(\\[\\/?(b|i|u|s|font(=[a-z0-9]+)?|size(=[0-9]+)?|color(=#?[a-z0-9]+)?)\\])","i");
	if (newArr = str.substr(i).match(rExp)){
	  new_str += newArr[1];
	  i += newArr[1].length - 1;
	  continue;
	}

	/* Skipping [QUOTE]..[/QUOTE], [IMG]..[/IMG], [CODE]..[/CODE], [SQL]..[/SQL], [EMAIL]..[/EMAIL] tags */
	bSkip = false;
	for(j = 0; j < tagArray.length; j += 2){
	  rExp = new RegExp("^(\\["+tagArray[j]+tagArray[j+1]+"\\])","i");
	  if (newArr = str.substr(i).match(rExp)){
	    rExp = new RegExp("\\[\\/" + tagArray[j] + "\\]", "i");
	    if (iEnd = str.substr(i + newArr[1].length + 2).search(rExp)){
	      end_len = iEnd + newArr[1].length + tagArray[j].length + 4;
	      new_str += str.substr(i,end_len);
	      i += end_len - 1;
	      bSkip = true;
	    }
	  }
	  if(bSkip)break;
	}
	if(bSkip)continue;

	// Check for 2-character letters
	is2char=false;
	if (i < len-1) {
	 for(j = 0; j < w_table2.length; j++)
	 {
	  if(str.substr(i, 2) == t_table2.substr(j*2,2)) {
	   new_str+= w_table2.substr(j, 1);
	   i++;
	   is2char=true;
	   break;
	  }
	 }
	}

	if(!is2char) {
	  // Convert one-character letter
	  var c = str.substr(i, 1);
	  var pos = t_table1.indexOf(c);
	  if (pos < 0)
	    new_str+= c;
	  else
	    new_str+= w_table1.substr(pos, 1);
	}
 }

//  document.REPLIER.Post.focus();
  return new_str;
}

function fnCheckForm()
{
    var item = document.frm;
    
    if(item.MailingListName.value == "")
    {
        alert("Please enter group name");
        item.MailingListName.focus();
        return false;
    }
    
    if (item.RegDay.value != "" && item.RegMonth.value != "" && item.RegYear.value != "")
    {
        item.RegDate.value = item.RegDay.value +"/"+ item.RegMonth.value +"/"+ item.RegYear.value;
    }
    
    item.submit();
    return true;
}

function fnMoveThread(ThreadID, ForumID)
{
    location.href="MoveThread.asp?ThreadID="+ThreadID+"&ForumID="&ForumID;
}

function fnLoginValidate()
{
    var item = document.frmLogin;
    
    if(document.getElementsByName("username")[0].value == ""){alert("Заполните, пожалуйста, свой ник (логин).");document.getElementsByName("username")[0].focus();return false;}
	if(document.getElementsByName("password")[0].value == ""){alert("Заполните, пожалуйста, свой пароль.");document.getElementsByName("password")[0].focus();return false;}
	
	item.submit();
}

function fnShowOnlyThis(sID)
{
    if (sID == "trInbox")
    {
        document.getElementById("trSent").style.display = "none";
        document.getElementById("trMessage").style.display = "none";
        document.getElementById("trInbox").style.display = "block";
    }
    else
    {
        if (sID == "trMessage")
        {
            document.getElementById("trInbox").style.display = "none";
            document.getElementById("trSent").style.display = "none";
            document.getElementById("trMessage").style.display = "block";
            
            //Cleaning
            document.frmsend.Whom.value = "";
            document.frmsend.MessageSubject.value = "";
            document.frmsend.MessageText.value = "";
        }
        else // trSent
        {
            document.getElementById("trInbox").style.display = "none";
            document.getElementById("trMessage").style.display = "none";
            document.getElementById("trSent").style.display = "block";
        }
    }
}

function fnSubmitForm()
{
    var frm = document.submitfrm;
    
    if(frm.username.value == ""){alert("Заполните, пожалуйста, своё имя.");frm.username.focus();return false;}
    if (frm.email.value == "") 
    {
        alert("Заполните, пожалуйста, свой мэйл."); frm.email.focus(); return false; 
    }
    else 
    {
        if (!(fnValidateEmail(frm.email.value))) { alert("Заполните, пожалуйста, свой мэйл."); frm.email.focus(); return false; }
    }
    
    var sql = "SELECT UserName FROM tblUsers WHERE email = '"+ frm.email.value +"';"
   
    xmlIndex.async = false;   
    xmlIndex.src = "/CallBacks/xmlHTTPGetData.asp?sql="+ sql +"&ask=1";
   
    var bIsExists = xmlIndex.getElementsByTagName("UserAlreadyExists")[0].text;
    
    if(bIsExists == "1")
    {
        document.getElementById("dFastRegistration").innerHTML = "<br /><center><b>Ваши данные у нас уже есть.</b></center>";
    }
    else
    {
        sql = "INSERT INTO tblUsers (Username, Password, Email, PersonalName) VALUES ('"+ convert(frm.username.value) +"', '1234', '"+ frm.email.value +"', '')"
        
        xmlIndex.src = null;
        xmlIndex.src = "/CallBacks/xmlHTTPGetData.asp?sql="+ sql +"&insert=1";
        document.getElementById("dFastRegistration").innerHTML = "<br /><center><b>Спасибо, мы сохранили у себя Ваши данные.</b></center>";
    }
}

function fnValidateEmail(strEmail)
{
    var emailFilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
    var illegalChars = /[\(\)\<\>\,\;\:\\\/\"\[\]]/;

    if (!(strEmail.match(illegalChars))) { return emailFilter.test(strEmail) }
}

function convert(str)
{  
    strArr=str.split('')
    for (i=0;i<str.length;i++)
        strArr[i]=conChar(strArr[i])
    return strArr.join('')
}

function conChar(ch)
{
   if (/[-_.!~*'()]/.test(ch)) return ch
   if (ch==' ') return '+'
   return escape(ch)
}

function fnAddVote(Rate, MsgID, UserID, DivID)
{
    var sql = "INSERT INTO tblMsgsRates (MsgID, UserID, Rate) VALUES ( "+ MsgID +", "+ UserID +", "+ Rate +")"
    
    xmlRateMsg.async = false;   
    xmlRateMsg.src = "/CallBacks/xmlHTTPRateMsg.asp?sql="+ sql;
    
    var bIsAdded = xmlRateMsg.getElementsByTagName("Added")[0].text;
    
    if(bIsAdded == "1")
    {
        document.getElementById(DivID).innerHTML = "<span class=small10Regular>&#1047;&#1072;&#1089;&#1095;&#1080;&#1090;&#1072;&#1085;&#1086;</span>";
    }
    else
    {
        document.getElementById(DivID).innerHTML = "Not Rated";
    }
}

function fnASCIItoHEX(str)
{ 
    if(str != '')
    { 
        result = ''; 
        for (var i=0; i<str.length; i++) 
            result += '&#' + str.charCodeAt(i) + ';'; 
        return result;
    }
}

function fnOpenFind(sNameStarting) 
{
	XMLIDMSG.async = false;
    XMLIDMSG.src   = "/CallBacks/UsersListForSending.asp?sQuery=" + encodeURIComponent(sNameStarting);
	
    var sUsername  = XMLIDMSG.getElementsByTagName("Username")[0].childNodes[0].nodeValue;
    var sUserID    = XMLIDMSG.getElementsByTagName("UserID")[0].childNodes[0].nodeValue;
	
    var obj     = document.getElementsByName("ToWhomText")[0];
    var objText = document.getElementsByName("ToWhom")[0];
    
    var objSubmit = document.getElementsByName("Send")[0];
    
    if (obj && objText) 
    {
        obj.value = sUsername;
        objText.value = sUserID;
        
        if(sUserID > 0)
        {
			//alert("Имя пользователя заполнено правильно.");
			objSubmit.disabled = false;
		}
		else
		{
			alert("Имя пользователя заполнено неправильно. Возможно вы ошиблись в написании.");
			objSubmit.disabled = true;
		}
    }
}

function fnSendPrivateMsg(UserID) {
    location.href = "/MyMessages.asp?folder=New&UserID=" + UserID;
}

function fnSendCrash(nFrom,nTo) {
    location.href = "/Crashes.asp?nFrom=" + nFrom + "&nTo=" + nTo;
}


function fnUnsubscribeEmail(ThreadID, UserID)
{
	if(confirm('Хотите прекратить получать уведомления об обновлениях темы на мэйл?'))
	{
		location.href='RemoveAnswersToEmailThread.asp?ThreadID='+ThreadID+'&UserID='+UserID;
	}
}

function fnUnsubscribe(ThreadID, UserID)
{
	if(confirm('Хотите отписаться от темы?'))
	{
		location.href='UnsubscribeThread.asp?ThreadID='+ThreadID+'&UserID='+UserID;
	}
}

function fnGoToForum(ForumID) {
    if ((ForumID == 0) || (ForumID == ""))
        location.href = "Forums.asp";
    else
        location.href = "ForumThreads.asp?ForumID=" + ForumID;
}


function fnAddEditUserStatus(UserID, sOldStatus) 
{
    document.getElementById("UserStatusName").readOnly = false;
    document.getElementById("UserStatusName").style.backgroundColor = '#F5F5FF';
    document.getElementById("btnSaveUserStatus").style.display = "block";
}

function fnSaveUserStatus(sNewStatus, UserID, sOldStatus) {
    var bIsUpdate = true;
    if (sOldStatus == "") bIsUpdate = false;
    
    location.href = 'EditUserStatus.asp?bIsUpdate=' + bIsUpdate + '&UserID=' + UserID + '&sNewStatus=' + sNewStatus;
}