}
}
}
+
//
// Добывает с сервера информацию о модераторах данного форума и
// возвращает user, moderator или admin в зависисмости от статуса
// указанного пользователя.
//
function getUserRights(user) {
-
+ status="user";
+ var xhr=getXMLHttpRequest();
+ if(!xhr) return status;
+
+ var hr=location.href.match(/^\w+:\/\/[^/]*\/([^?#]+)/);
+ if(hr==null) return status;
+ var depth=hr[1].split(/\//).length;
+ var re=new RegExp("\n\[\s*(admins|moderators|banned)\s*\]\s*\n"+user+"\n","m");
+ for(var path="",i=0;i<depth;path+="../",i++) {
+ xhr.open(GET, path+"perms.txt",false);
+ xhr.send("");
+ if(xhr.status!=200) continue;
+
+ var perms=("\n"+xhr.responsText+"\n").match(re);
+ if(perms!=null) {
+ if(perms[1]=="banned") return "banned";
+ if(perms[1]=="admins") return "admin";
+ status=="moderator";
+ }
+
+ xhr.open(GET, path+".forum",false);
+ xhr.send("");
+ if(xhr.status==403) break;
+ }
+
+ return "user";
}
+
// Обработчик body onLoad
// Пробегается по странице и прячет все элементы
// управления, которые не разрешены данному пользователю
// позиционируем форму под текущей ссылкой.
return false;
}
+
+/**
+* Создаёт объект XMLHttpRequest, предварительно уничтожая существующий,
+* если такой существует.
+*/
+function getXMLHttpRequest()
+{
+ try {
+ return xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
+ } catch (e) {
+ try {
+ return new ActiveXObject("Microsoft.XMLHTTP");
+ } catch (E) {
+ if (typeof XMLHttpRequest!='undefined')
+ return new XMLHttpRequest();
+ }
+ }
+
+ return false;
+}
+