
Message = {
    // old name is sendMessage
    openMessanger: function(userHref, name, img, width, height, id, invite, wintitle) {
        
        if(!$('messanger'))
            return false;
        
        Popup.open('messanger', {title: wintitle, width: 540});
        var messanger = $('messanger');
        
        var form = messanger.down("form");
        form.elements["content"].value = '';
        form.elements["symbolsLeft"].value = 1000;
        form.elements["id"].value = id ? id : -1;
        
        var title = $('messangerTitle');
        var imgTitle = $('messangerImg');

        title.href = userHref;
        imgTitle.href = userHref;
        while(title.firstChild) 
            title.removeChild(title.firstChild);
        title.appendChild(document.createTextNode(name));
        var imgs = imgTitle.getElementsByTagName('img');
        var imgObj = undefined;
        if (!(imgs && imgs.length > 0)) {
            imgObj = document.createElement('IMG');
            imgObj.className = 'photo';
            imgTitle.appendChild(imgObj);
        } else {
            imgObj = imgs[0];
        }
        imgObj.src = img;
        imgObj.width = width;
        imgObj.height = height;

        $('messangerGroupDiv').toggle(invite);

        form.action = userHref + '/message' + (invite ? '?action=invite' : '');        

        form.elements["content"].onkeydown = function() {
            var nn = form.elements["symbolsLeft"]; 
            var n = 1000 - form.elements["content"].value.length;
            if(n < 0)
                return false;
            nn.value = n;
        };
        form.elements["content"].focus();
        return false;
    }    

};







var DefaultValues = {
    init: function() {
        var nodes = document.all || document.getElementsByTagName('*');
        for(var i = 0; i < nodes.length; i++) {
            if(nodes[i].getAttribute('default'))
                DefaultValues.initNode(nodes[i], nodes[i].getAttribute('default'), nodes[i].getAttribute('defaultColor'));
        }
    },
    
    initNode: function(node, txt, color) {
        node = $(node);
        if(empty(node.value))
            node.value = txt;

        node.style.color = (node.value == txt) ? (color || '#666666') : '#000000';

        node.addEvent('onfocus', function() {
            if(this.value == txt) {
                this.style.color = '#000000';
                this.value = '';
            }
        }.bind(node));
        
        node.addEvent('onblur', function() {
            if(empty(this.value)) {
                this.style.color = color || '#666666';
                this.value = txt;
            }
        }.bind(node));
        
        node.DefaultValuesReset = function() {
            this.style.color = color || '#666666';
            this.value = txt;
        }.bind(node);
    }
};

$(DefaultValues.init);



var QMessage = {
    STATIC: {},
    
    staticInit: function(param) {
        this.STATIC = param;
    },
    
    init: function(param) {
        var txt = $(param.id);
        var hh = txt.style.height && parseInt(txt.style.height);
        param.height = hh || param.height || 20;
        txt.QMessage = param;
        txt.QMessage.heightMeter = this.createHeightMeter(txt);
        txt.QMessage.button = this.createButton(txt, param);
	txt.rows = 3;
//        txt.style.height = param.height + 'px';
        
        DefaultValues.initNode(txt, param.defaultText, param.defaultColor);
        
        txt.addEvent('onfocus', this.reset.bind(this, txt, false));
        txt.addEvent('onblur', this.reset.bind(this, txt, false));
        if(param.hide)
            txt.addEvent('onblur', function(txt, node) { if(this.isDefault(txt)) $(node).hide(); }.bind(this, txt, param.hide));
        txt.addEvent('onkeyup', this.onchange.bind(this, txt));
        txt.addEvent('onkeypress', this.onchange.bind(this, txt));
        txt.addEvent('onkeypress', function(txt, event){
            if(event.keyCode==10 || (event.ctrlKey && event.keyCode==13))
                this.send(txt);
        }.bind(this, txt));
        txt.QMessage.reset = this.reset.bind(this, txt, true);
    },
    
    reset: function(txt, forced) {
        if(forced)
            txt.DefaultValuesReset();
        
        if(this.isDefault(txt)) {
//            txt.style.height = txt.QMessage.height + 'px';
//            txt.QMessage.button.hide();
        }
    },
    
    
    onchange: function(txt) {
//        var hh = this.textHeight(txt);
//        txt.style.height = (hh > txt.QMessage.height ? hh : txt.QMessage.height) + 'px';
//        txt.QMessage.button.toggle(!empty(txt.value));
    },        
        
    isDefault: function(txt) {
        return empty(txt.value) || txt.value == txt.QMessage.defaultText;
    },

    
    textHeight: function(txt) {
        txt.QMessage.heightMeter.value = txt.value;
        return txt.QMessage.heightMeter.scrollHeight + 18;
    },  
    
    createHeightMeter: function(txt) {
        var meter = txt.QMessage.heightMeter;
        if(!meter) {
            meter = $(txt.cloneNode(true));
            meter.id = null;
            meter.name = '';
            meter.style.height = 0;
            meter.style.margin = 0;
            meter.style.padding = 0;
            meter.style.border = "none";
            meter.style.display = "block";
            meter.style.position = "relative";
            meter.style.visibility = "hidden";
            txt.prependSibling(meter);
        }
        return meter;
    },
    
    createButton: function(txt) {
        var but = txt.QMessage.button; 
        if(!but) {
            but = $(txt.appendSibling(
//                '<div class="rep-button" style="display: none;">'+
                '<div class="rep-button">'+
                '<input type="button" class="button" title="Ctrl+Enter" onclick="QMessage.send(\'' +
                txt.QMessage.id + '\'); return false;" value="' + txt.QMessage.buttonText + '"/></div>'));
        }
        return but;
    },
    
    send: function(id) {
        var esc = encodeURIComponent||escape;
        var txt = $(id);
        var path = (txt.QMessage.blogPath || this.STATIC.path);
        var params = 'xml=1&action=send' +
            '&reply=' + (txt.QMessage.reply || '') + 
            (this.STATIC.objId ? '&id=' + this.STATIC.objId  : '') +
            (this.STATIC.albumId ? '&aid=' + this.STATIC.albumId  : '') +
            (txt.QMessage.sendParams ? txt.QMessage.sendParams : '') +
            '&' + txt.name + '=' + esc(txt.value);

        var callback = txt.QMessage.reloadPage ? 
        		function() { document.location.reload(); } :
        		this.sendOk.bind(this, txt, txt.value, path);
        		
        makeRequest(path, callback, false, params);
        txt.blur();
        txt.QMessage.reset(true);
        if(txt.id != 'reply_field')
            txt.up('div').hide();
    },
    
    sendOk: function(node, message, path, response) {
        var arr = response.split('+');
        var avatarImg = "<img alt='" + this.STATIC.uname + "' src='" + this.STATIC.avatar + "'/>";
        var html = $(node.QMessage.topicId ? 'qmessageReply' : 'qmessagePost').fillTemplate({
            UID: this.STATIC.uid,
            UNAME: this.STATIC.uname,
            AVATAR: avatarImg,
            MSGID: arr[1],
            TIME: arr[2],
            MESSAGE: this.escapeHTML(message),
            PATH: path
        });            
        html = html.replace('[script]', '<script>');
        html = html.replace('[/script]', '</script>');
        html = $html(html);
        
        var newNode;
        if(node.QMessage.topicId)
            newNode = node.up('.e').appendSibling(html);
        else
            newNode = $('qmessages').insertFirst(html);
        
        $(newNode).executeJS();
        
        var q = $('reply_field');
        if(q && q.QMessage)
            q.QMessage.reset();
    },
    
    escapeHTML : function(txt) {
        txt = txt
            .replace(/\&/g, '&amp;')
            .replace(/</g, '&lt;')
            .replace(/>/g, '&gt;')
            .replace(/\n/g, '<br>');
        return txt;
    },
    
    del: function(node, mid, blogPath) {
        var path = (blogPath || this.STATIC.path);
        var params = '?xml=1&action=delete&mid=' + mid;
        if(this.STATIC.objId)
            params += '&id=' + this.STATIC.objId;
        if(this.STATIC.albumId)
            params += '&aid=' + this.STATIC.albumId;
        if (this.STATIC.club)
            params += '&club=' + this.STATIC.club;
        if (this.STATIC.topic)
            params += '&topic=' + this.STATIC.topic;
        makeRequest(path + params, this.delOk.bind(this, node), false);
    },
    
    delOk: function(node, response) {
        node = $(node).up('.e');
        if(!Trigub._checkNode(node, '.rep')) {
            while(true) {
                var t = node.next('div');
                if(!t || !Trigub._checkNode(t, '.rep'))
                    break;
                t.remove();
            }
        }
        node.remove();
    }
};






// TODO end

function makeRequest(url, p_callback, return_xml, doPost) {

   var http_request = false;
    if (window.XMLHttpRequest) { // Mozilla, Safari,...
        http_request = new XMLHttpRequest();
        if (http_request.overrideMimeType) {
            http_request.overrideMimeType('text/xml');
        }
    } else if (window.ActiveXObject) { // IE
        try {
            http_request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (e) {
            try {
            http_request = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {}
        }
    }

    if (!http_request) {
        alert('Giving up :( Cannot create an XMLHTTP instance');
        return false;
    }
    http_request.onreadystatechange = function() {
       if (http_request.readyState == 4) {
           if (http_request.status == 200) {
                if(typeof p_callback == 'function')
                    p_callback(return_xml ? http_request.responseXML : http_request.responseText);
                else
                    eval(p_callback + '(http_request.response' + (return_xml? 'XML' : 'Text') + ')');
           } else if (http_request.status == 302) {
                alert('Body '+ http_request.responseBody);
           } else {
               alert('There was a problem with the request.(Code: ' + http_request.status + ')');
           }
       }
   }
   var methodName = (doPost) ? "POST" : "GET";
   //if (doPost) {
   // http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
   //}    
   http_request.open(methodName, url, true);
   http_request.send((doPost) ? doPost : null);

}

function createParamsFromForm(p_name){
    var x_res = "";
    var x_form = document.forms[p_name];
    for(var i=0; i < x_form.elements.length; i++){
        var elem = x_form.elements[i];
        if (elem.type == 'button') {
            continue;
        }
      if (i > 0) {
            x_res += "&";
      }
      x_res += x_form.elements[i].name +"="+x_form.elements[i].value;
    }
    return x_res;
}

function xmlNode2Dom(node) {
    if (node.nodeType == DOM_TEXT_NODE) { //Text
        return document.createTextNode(node.nodeValue);
    }
    var nod = null;
    if ((ie && !opera)) {
        var x_node = node.nodeName;
        if (node.attributes) {
            x_node = '<' + node.nodeName;
            for (var i = 0; i < node.attributes.length; i++) {
                x_node += " " + node.attributes[i].nodeName + "='" + node.attributes[i].nodeValue + "'";
            }
            x_node += '></' + node.nodeName + '>'; 
        }
        //alert(x_node);
        nod = document.createElement(x_node);
    } else { 
        nod = document.createElement(node.nodeName);
        if (node.attributes) {
            for (var i = 0; i < node.attributes.length; i++) {
                nod.setAttribute(node.attributes[i].nodeName, node.attributes[i].nodeValue);
            }
        }
    }
    if (node.childNodes) {
        for (var i = 0; i < node.childNodes.length; i++) {
            var child = node.childNodes[i];
            if (child) {
                var childNode = xmlNode2Dom(child);
                nod.appendChild(childNode);
            }
        }
    }
    return nod;
}
    

var selectInputId;

function loadSelectCallback(xml) {
    try{
        var root = xml.firstChild;
        while (root && (root.nodeName == 'xml' || root.nodeType != DOM_ELEMENT_NODE)) {
            root = root.nextSibling;
        }
        if (root) {
	        var select = document.getElementById(selectInputId);
	        if (select) {
		        while (select.childNodes.length > 1) {
		            select.removeChild(select.childNodes[1]);
		        }
		        var options = root.getElementsByTagName('option');
		        if (options) {
			        for (var i = 0; i < options.length; i++) {
			           select.appendChild(xmlNode2Dom(options[i]));
			        }
			    }
		    }
	    }
    }catch (e){
    }
}

function clearSelect(selectId) {
    var select = document.getElementById(selectInputId);
    if (select) {
        while (select.childNodes.length > 1) {
            select.removeChild(select.childNodes[1]);
        }
    }
}

function loadSelect(selectId) {
    var path = document.location.pathname + '?xml=1';
    for (var i = 1; i < arguments.length; i++) {
        path += '&' + arguments[i];
    }
    var select = document.getElementById(selectId);
    if (select) {
        while (select.childNodes.length > 1) {
            select.removeChild(select.childNodes[1]);
        }
        //var option = document.createElement('OPTION');
        //option.value="-1";
        //option.appendChild(document.createTextNode('Loading...'));
        //select.appendChild(option);
        selectInputId = selectId;
        makeRequest(path, 'loadSelectCallback', true);
    }
}

var selectedDivId;

function deleteBlockCallback(xml) {
    try{
        var root = xml.firstChild;
        while (root && (root.nodeName == 'xml' || root.nodeType != DOM_ELEMENT_NODE)) {
            root = root.nextSibling;
        }
        if (root) {
            var div = document.getElementById(selectedDivId);
            if (div) {
                div.parentNode.removeChild(div);
            }
        }
    }catch (e){
    }
}

function removeBlock(id, type, isNew) {
    var myDiv = document.getElementById('block'+id);
    if (myDiv) {
        if (confirm("Are you sure want to delete?")) {
            if (isNew) {
                myDiv.parentNode.removeChild(myDiv);
            } else {
	        var path = document.location.pathname + '?xml=1&remove=true&id=' + id + '&type=' + type;
                selectedDivId = 'block'+id;
	        makeRequest(path, 'deleteBlockCallback', true);
	    }
        }    
    }
}

function addBlock() {
    for (var i = 1; i <= 5; i++) {
        var s = "block-" + i;
        var e = document.getElementById(s);
        if (e && e.style.display == "none") {
            e.style.display = "block";
            break;
        }
    }
}


function checkAll(checked) {
    var all = document.getElementById('all');
    if (all) {
        all.checked = checked;
    }
    for (var pos = 0; true; pos++) {
        var checkbox = document.getElementById('msg' + pos);
        if (checkbox) {
            checkbox.checked = checked;
        } else {
            break;
        }
    }
}

function checkNew() {
    var checked = true;
    for (var pos = 0; true; pos++) {
        var checkbox = document.getElementById('msg' + pos);
        if (checkbox) {
            checkbox.checked = (document.getElementById('newmsg' + pos) != undefined);
            if (!checkbox.checked) checked=false;
        } else {
            break;
        }
    }
    var all = document.getElementById('all');
    if (all) {
        all.checked = checked;
    }
}

function checkRead() {
    var checked = true;
    for (var pos = 0; true; pos++) {
        var checkbox = document.getElementById('msg' + pos);
        if (checkbox) {
            checkbox.checked = (document.getElementById('newmsg' + pos) == undefined);
            if (!checkbox.checked) checked=false;
        } else {
            break;
        }
    }
    var all = document.getElementById('all');
    if (all) {
        all.checked = checked;
    }
}
var selectedRow;

function delMsgCallback(xml) {
    try{
        var root = xml.firstChild;
        while (root && (root.nodeName == 'xml' || root.nodeType != DOM_ELEMENT_NODE)) {
            root = root.nextSibling;
        }
        if (root) {
            if (selectedRow) {
                selectedRow.parentNode.removeChild(selectedRow);
            }
        }
    } catch(e) {
    }
}
function delMsg(id, pos, out) {
    var row = document.getElementById('mess' + pos);
    if (row) {
        selectedRow = row;
	    var path = document.location.pathname + '?xml=1&delete=' + id;
	    if (out) {
            path += '&out=1';
	    }
	    makeRequest(path, 'delMsgCallback', true);
    }
}

function changeFriendCallback(xml) {
}

function changeFriendType(select) {
    if (select) {
        var path = document.location.pathname + '?xml=1&action=changeType&type=' + select.value;
        makeRequest(path, 'changeFriendCallback', true);
    }
}

function doMessageAction(select) {
if (select.value == 'msgDel') {
  if (!confirm('Do you realy want delete selected messages?')) {
    select.value = '';
    return;
  }
} else if (select.value == 'msgInboxDel') {
  if (!confirm('Do you realy want delete all messages?')) {
    select.value = '';
    return;
  }
}
select.form.submit();
}

function ge(id) {
return document.getElementById(id);
}
function png(element)
{if(ie){
var src,method='scale';
var classname=element.className;
if(classname.match('png'))
{
  src=element.getAttribute('src');
  element.setAttribute('src','/net/i/1.gif');
}
else if(classname.match('scale')||classname.match('crop'))
{
    if(element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i))
    src=element.currentStyle.backgroundImage.match(/url\("(.+\.png)"\)/i)[1];
  element.style.backgroundImage='none';
  if(classname.match('crop'))method='crop';
}
element.style.filter="progid:dximagetransform.microsoft.alphaimageloader(src='"+src+"',sizingmethod="+method+")";
}}

function preview(n)
{
    for(var i=1;i<=5;i++)if(i!=n)document.getElementById('preview'+i).style.display='none';
    document.getElementById('preview'+n).style.display='block'
}

function setCookie(name, value, ttl) {

    var Ndate = new Date();
    if (!ttl) {
        ttl = 1000 * 60 * 60 * 24 * 365;
    }
    Ndate.setTime(Ndate.getTime() + ttl);
    var curCookie = name + "=" + escape(value) +";" + " expires=" + Ndate.toGMTString() + "; path=/;";

    document.cookie = curCookie;
}

function showOnlineFriends(a) {
    var onlineFriends = ge('onlineFriends');
    if (onlineFriends && a) {
        if (onlineFriends.style.display == 'none') {
            a.className = '';
            onlineFriends.style.display = 'block';
            setCookie('so', '1');
        } else {
            a.className = 'collapse';
            onlineFriends.style.display = 'none';
            setCookie('so', '0');
        }
    }
}

function showFriendsBirthdays(a) {
    var friendsBirthdays = ge('friendsBirthdays');
    if (friendsBirthdays && a) {
        if (friendsBirthdays.style.display == 'none') {
            a.className = '';
            friendsBirthdays.style.display = 'block';
            setCookie('sb', '1');
        } else {
            a.className = 'collapse';
            friendsBirthdays.style.display = 'none';
            setCookie('sb', '0');
        }
    }
}


function getText(node) {
    if (!node) return "";
    if (node.nodeType == DOM_TEXT_NODE) {
        return node.nodeValue;
    } else if (node.childNodes) {
        var text = '';
        for (var i = 0; i < node.childNodes.length; i++) {
            var child = node.childNodes[i];
            if (child) {
                text += getText(child);
            }
        }
        return text;
    }
}

function writeComment(mid, page, pid, bid) {
if (!mid) {
mid="";
}
if (!bid) {
bid="";
}
ge('reply_field'+bid).value = ''
if (pid) {
	if (pid == 'quote') {
		var name=ge('mn'+mid);
		var date=ge('md'+mid);
		var text=ge('mt'+mid);
		if (name && date && text) {
		    ge('reply_field'+bid).value = '[quote=' + getText(name) + ','+ getText(date)+']\n' + getText(text) + '\n[/quote]\n';
		}
	} else {
        document.forms['postMessage'+bid].id.value = pid;
    }
}
document.forms['postMessage'+bid].reply.value = mid;
shide('r'+bid); 
shide('br'+bid);
}

function updateBlackList(text) {
var prevDiv = ge('blacklist');
prevDiv.innerHTML = text;
}

function deleteFromBlackList(id, page) {
    var path = document.location.pathname + '?js=1&delete='+id;
    if (page) {
        path += '&page' + page;
    }
   makeRequest(path, 'updateBlackList', false);
}

function hideComment(bid) {
if (!bid) {
bid="";
}
hide('r'+bid); 
hide('br'+bid);
}

function checkLegal() {
	var address = document.getElementById('reg-email').value;
	if (address != "") {
		var reg = /^([A-Za-z0-9_\-\.]+)\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if (!reg.test(address)) {
			alert("Введите корректный E-mail!");
			return false;
		}
	}
	
	if (document.getElementById('field_city').value < 0) {
		alert("Не выбран город");
		return false;
	}
	
	if (document.getElementById('first_name').value == document.getElementById('second_name').value) {
		alert("Поля Имя и Фамилия не должны совпадать");
		return false;
	}
	
	if (ge("first_name").length < 4) {
		alert("Слишком короткое Имя");
		return false;
	}

	if (ge("second_name").length < 4) {
		alert("Слишком короткая Фамилия");
		return false;
	}
	
	var legal = document.getElementById('legal');
    if (legal) {
        return legal.checked;
    }
    return true;
}

function closeAutoComplete(ev) {
  var autoDiv = document.getElementById('country-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('city-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('school-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('university-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('company-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('departament-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
  autoDiv = document.getElementById('chair-div');
  if (autoDiv) {
    autoDiv.style.display = 'none';
  }
}

function Ajax(doneHandler, failHandler)
{
  newAjax = this;
  this.onDone = doneHandler;
  this.onFail = failHandler;
  this.transport = this.getTransport();
  this.transport.onreadystatechange = ajaxTrampoline(this);
}

Ajax.prototype.get = function (uri, query, force_sync)
{
  // Firefox doesn't call onDone and onFail handlers if you force_sync
  force_sync = force_sync || false;
  if( typeof query != 'string' )
    query = ajaxArrayToQueryString(query);
  var cc = uri.indexOf('?') >= 0 ? '&' : '?';
  fullURI = uri + (query ? (cc+query) : '');
  this.transport.open('GET', fullURI, !force_sync );
  this.transport.send('');
}

Ajax.prototype.post = function (uri, data, force_sync)
{
  force_sync = force_sync || false;
  if( typeof data != 'string' )
    data = ajaxArrayToQueryString(data);
  var post_form_id=ge('post_form_id');
  if (post_form_id)
    data+='&post_form_id='+post_form_id.value;
  this.transport.open('POST', uri, !force_sync);
  this.transport.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
  this.transport.send(data);
}

Ajax.prototype.stateDispatch = function ()
{
  if( this.transport.readyState == 1 && this.showLoad )
    ajaxShowLoadIndicator();
  
  if( this.transport.readyState == 4 ) {
    if( this.showLoad )
      ajaxHideLoadIndicator();
    if( this.transport.status >= 200 &&
        this.transport.status < 300 &&
        this.transport.responseText.length > 0 ) {
      if( this.onDone ) this.onDone(this, this.transport.responseText);
    } else {
      if( this.onFail ) this.onFail(this);
    }
  }
}

Ajax.prototype.getTransport = function ()
{
  var ajax = null;
  
  try { ajax = new XMLHttpRequest(); }
  catch(e) { ajax = null; }
  
  try { if(!ajax) ajax = new ActiveXObject("Msxml2.XMLHTTP"); }
  catch(e) { ajax = null; }
  
  try { if(!ajax) ajax = new ActiveXObject("Microsoft.XMLHTTP"); }
  catch(e) { ajax = null; }
  
  return ajax;
}

function ajaxTrampoline(ajaxObject)
{
  return function () { ajaxObject.stateDispatch(); };
}

function ajaxArrayToQueryString(queryArray)
{
  var sep = '';
  var query = "";
  
  for( var key in queryArray ) {
    query = query +
      sep +
      encodeURIComponent(key) +
      '=' +
      encodeURIComponent(queryArray[key]);
    sep = '&';
  }
  return query;
}

var ajaxLoadIndicatorRefCount = 0;

function ajaxShowLoadIndicator()
{
  indicatorDiv = ge('ajaxLoadIndicator');
  if( !indicatorDiv ) {
    indicatorDiv = document.createElement("div");
    indicatorDiv.id = 'ajaxLoadIndicator';
    indicatorDiv.innerHTML = 'Loading';
    indicatorDiv.className = 'ajaxLoadIndicator';
    document.body.appendChild(indicatorDiv);
  }
  
  indicatorDiv.style.top = (5 + pageScrollY()) + 'px';
  indicatorDiv.style.left = (5 + pageScrollX()) + 'px';
  indicatorDiv.style.display = 'block';
  ajaxLoadIndicatorRefCount++;
}

function ajaxHideLoadIndicator()
{
  ajaxLoadIndicatorRefCount--;
  if( ajaxLoadIndicatorRefCount == 0 )
    ge('ajaxLoadIndicator').style.display = '';
}

var lastQuery;
var selectedCountry;
var selectedCity;
var selectedUniversity;
var selectedDepartment;

function loadCountry() {
    var select = document.getElementById('country');
    var path = document.location.pathname + '?js=1';
    if (select.value > 0 && selectedCountry != select.value) {
	    var ajax = new Ajax();
	    ajax.onDone = function (ajaxObj, responseText) {
	       eval(responseText);
	        var block = document.getElementById('city-block');
	        if (block) {
	            block.style.display='block';
	        }
	    };
	    ajax.post(path, 'country=' + select.value);
	    selectedCountry = select.value;
	} else if (select.value == -2) {
        var ajax = new Ajax();
        ajax.onDone = function (ajaxObj, responseText) {
            select.innerHTML = responseText;
        };	   
        ajax.post(path, 'full_countries_list=' + select.value);
	}
}

function changeCountry() {
    var select = document.getElementById('country');
    if (select.value == -2) {
        var path = document.location.pathname + '?js=1';
        var ajax = new Ajax();
        ajax.onDone = function (ajaxObj, responseText) {
            select.innerHTML = responseText;
            loadSelect('field_city', 'main=1&country='+select.value);
        };     
        ajax.post(path, 'full_countries_list=' + select.value);
    } else {
        loadSelect('field_city', 'main=1&country='+select.value);
    }
}

function reloadCitySelect(newCity) {
//	var select = document.getElementById('country');
//	if (newCity != "") {
//		loadSelect('field_city', 'main=1&country='+select.value+'&newCity='+newCity);
//	}
}

function selectCity() {
    var select = document.getElementById('field_city');
    var selectCity = document.getElementById('city-sel');
    var block = document.getElementById('city-block');
    if (block) {
        block.style.display='none';
    }
    if (selectCity.value > 0) {
        for (var i=0; i < select.options.length; i++) {
            if (select.options[i].value == selectCity.value) {
		        select.value = selectCity.value;
		        changeCity();
                return;
            }
        }
        var option = document.createElement('OPTION');
        option.value = selectCity.value;
        for (var i=0; i < selectCity.options.length; i++) {
            if (selectCity.options[i].value == selectCity.value) {
                option.appendChild(document.createTextNode(getText(selectCity.options[i])));
            }
        }
        select.insertBefore(option, select.options[select.options.length-1]);
        select.value = selectCity.value;
        changeCity();
    }
}

function changeEmail() {
	var select = document.getElementById('reg-email');
	var address = select.value;
	if (address != "") {
		var reg = /^([A-Za-z0-9_\-\.]+)\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		if (reg.test(address)) {
			var login = document.getElementById('reg-login');
			if (login) {
				login.value = address.replace(reg, "$1");
				return true;
			}
		}
	}
}

function changeCity() {
    var select = document.getElementById('field_city');
    var path = document.location.pathname + '?js=1';
    if (select.value > 0 && selectedCity != select.value) {
        var ajax = new Ajax();
        ajax.onDone = function (ajaxObj, responseText) {
            eval(responseText);
            var block = document.getElementById('school-block');
            if (block) {
                block.style.display='block';
		        var schoolName = document.getElementById('school-name');
		        schoolName.focus();
            }
            block = document.getElementById('university-block');
            if (block) {
                block.style.display='block';
            }
            block = document.getElementById('company-block');
            if (block) {
                block.style.display='block';
            }
        };
        var school = document.getElementById('school');
        var schoolName = document.getElementById('school-name');
        if (school.value > 0) {
	        school.value=-1;
	        schoolName.value='';
	    }
        var university = document.getElementById('university');
        var universityName = document.getElementById('university-name');
        if (university.value > 0) {
            university.value=-1;
            universityName.value='';
        }
        var company = document.getElementById('company');
        var companyName = document.getElementById('company-name');
        if (company.value > 0) {
            company.value=-1;
            companyName.value='';
        }
        ajax.post(path, 'city=' + select.value);
        selectedCity = select.value;
    } else if (select.value == -2) {
        var ajax = new Ajax();
        var path = document.location.pathname + '?js=1';
        var country = document.getElementById('country');
        ajax.onDone = function (ajaxObj, responseText) {
           eval(responseText);
            var block = document.getElementById('city-block');
            if (block) {
                block.style.display='block';
		        var cityName = document.getElementById('city-name');
		        cityName.focus();
            }
        };     
        var cityName = document.getElementById('city-name');
        cityName.value = '';
        ajax.post(path, 'country=' + country.value);
    }
}

function loadCity() {
    var select = document.getElementById('city-sel');
    if (select.value > 0 && selectedCity != select.value) {
	    var path = document.location.pathname + '?js=1';
	    var ajax = new Ajax();
	    ajax.onDone = function (ajaxObj, responseText) {
	        eval(responseText);
	        var block = document.getElementById('school-block');
	        if (block) {
	            block.style.display='block';
	        }
	        block = document.getElementById('university-block');
	        if (block) {
	            block.style.display='block';
	        }
	        block = document.getElementById('company-block');
	        if (block) {
	            block.style.display='block';
	        }
	    };
	    ajax.post(path, 'city=' + select.value);
        selectedCity = select.value;
	}
}

function loadUniversity() {
    var select = document.getElementById('university');
    if (select.value > 0 && selectedUniversity != select.value) {
        var path = document.location.pathname + '?js=1';
        var ajax = new Ajax();
        ajax.onDone = function (ajaxObj, responseText) {
            eval(responseText);
            var block = document.getElementById('department-block');
            if (block) {
                block.style.display='block';
            }
        };
        ajax.post(path, 'university=' + select.value);
        selectedUniversity = select.value;
    }
}

function loadDepartment() {
    var select = document.getElementById('university');
    var selectDep = document.getElementById('department');
    if (select.value > 0 && selectDep.value > 0 && selectedDepartment != selectDep.value) {
        var path = document.location.pathname + '?js=1';
        var ajax = new Ajax();
        ajax.onDone = function (ajaxObj, responseText) {
            eval(responseText);
            var block = document.getElementById('chair-block');
            if (block) {
                block.style.display='block';
            }
        };
        ajax.post(path, 'university=' + select.value+'&department='+selectDep.value);
        selectedDepartment = selectDep.value;
    }
}

function autoComplete(ev, name) {
    var input = document.getElementById(name+'-name');
    var div = document.getElementById(name+'-div');
    var select = document.getElementById((name != 'city') ? name : (name+'-sel'));
    if (input && select && div) {
     if (!ev) ev = window.event;
     //if (ev && (ev.keyCode == 40 || ev.keyCode == 38)) {
       //div.style.display='block';
     //} else 
     if (ev && ev.keyCode == 27) {
       closeAutoComplete(ev);
     } else if (input.value != lastQuery || (ev && (ev.keyCode == 40 || ev.keyCode == 38))) {
        var filter = input.value.toLowerCase();
        var array_ajax = (input.id == 'country-name') ? countries_ajax 
                                             : (input.id == 'city-name') ? cities_ajax
                                             : (input.id == 'university-name') ? education_ajax
                                             : (input.id == 'school-name') ? school_ajax
                                             : (input.id == 'company-name') ? company_ajax
                                             : (input.id == 'department-name') ? department_ajax
                                             : (input.id == 'chair-name') ? chair_ajax : undefined; 
        if (input.value != lastQuery || (array_ajax.length == 0)) {                                             
	        var insPos = 0;
	        if (filter.length > 0) {
		        for (var i in array_ajax) {
		           var name = array_ajax[i]['name'];
		           var loc_name = (array_ajax[i]['loc_name']) ? array_ajax[i]['loc_name'] : undefined;
		           var idx; 
		           var fname = undefined;
		            if ((idx = name.toLowerCase().indexOf(filter)) == 0 || (idx > 0 && name[idx-1] == ' ')) {
		                fname = name;
		            } else if (loc_name && ((idx = loc_name.toLowerCase().indexOf(filter)) == 0 || (idx > 0 && loc_name[idx-1] == ' '))) {
		                fname = loc_name;
		            } else if (array_ajax[i]['id'] == -1) {
		            	if (loc_name) {
		            		fname = loc_name;
		            	} else {
		            		fname = name;
		            	}		            	        
		            }
		            if (fname) {
		                var id = array_ajax[i]['id'];
		                var option;
		                if (insPos < select.options.length) {
		                    option = select.options[insPos];
	                        option.value = id;
		                } else {
			                var option = document.createElement('OPTION');
			                option.value = id;
	                        select.appendChild(option);
			           }
		                if (id == -1) {
		                	while (option.firstChild) option.removeChild(option.firstChild);
		                	option.appendChild(document.createTextNode(fname));
		                } else if (lastQuery != input.value) {
	                        while (option.firstChild) option.removeChild(option.firstChild);
	                        if (idx > 0) {
	                           option.appendChild(document.createTextNode(fname.substring(0, idx)));
	                        }
	                        if (filter.length > 0) {
		                        var b = document.createElement('B');
		                        b.appendChild(document.createTextNode(fname.substring(idx, idx + filter.length)));
		                        option.appendChild(b);
		                    }
	                        if (idx + filter.length < fname.length) {
	                           option.appendChild(document.createTextNode(fname.substring(idx+filter.length)));
	                        }
			           }
			           insPos++;
			           if (insPos > 5) {
			              break;
			           }
		            }
		        }
		    }
	        while (insPos < select.options.length) select.removeChild(select.options[insPos]);
            lastQuery = input.value;
            //select.innerHTML = text;
	    }
        if (select.childNodes.length > 0) {
            div.style.display='block';
            if (select.options.length == 1) {
                select.value = select.options[0].value;
            }
            if (ev) {
                if (ev.keyCode == 40) {
                   input.value = getText(select.options[0]);
                   select.options[0].selected = true;
                   select.focus();
                } else if (ev.keyCode == 38) {
                  input.value = getText(select.options[select.options.length-1]);
                  select.options[select.options.length-1].selected = true;
                  select.focus();
                }
            }
        } else {
            div.style.display='none';
            input.focus();
        }
     }   
    }
}

function createAutocomplete(name, def_value) {
    var input = document.getElementById(name+'-name');
    var div = document.getElementById(name+'-div');
    var select = document.getElementById((name != 'city') ? name : (name+'-sel'));
    if (input && select && div) {
		 //addEvent(q, "keyup", autoComplete);
		 //div.onkeyup = arrows;
		document.onclick=closeAutoComplete;
        select.onclick = function() {
            div.style.display='none';
            input.focus();
            if (select.value > 0) {
                for (var i=0; i < select.options.length; i++) {
                   var option = select.options[i];
                   if (option.value == select.value) {
                       input.value = getText(option);
		               if (name == 'city') {
		            	   selectCity();
		               }
		               break;
                   }
                } 
            }
            if (name == 'city' && select.value == -1) {
            	reloadCitySelect(input.value);
            }
        }
        select.onchange = function() {
            if (select.value > 0) {
                for (var i in select.childNodes) {
                   var option = select.childNodes[i];
                   if (option.selected) {
                       input.value = getText(option);
                       if (name == 'city') {
                          selectCity();
                       }
                       break;
                   }
                } 
            }
            if (name == 'city' && select.value == -1) {
            	reloadCitySelect(input.value);
            }
        };
        select.onkeyup = function (ev) {
             if (!ev) ev = window.event;
             if (ev && (ev.keyCode == 13 || ev.keyCode == 27)) {
                div.style.display = 'none';
                input.focus();
             }
             return true;
        };
        //if (input.value.length == 0) {
        //    input.value=def_value;
        //}
        //if (name == 'school') {
        //    input.onchange=function() { document.getElementById('school-add-block').style.display='block'; };
        //}
        //if (name == 'company') {
        //    input.onchange=function() { document.getElementById('position-block').style.display='block'; };
        //}
        input.onfocus = function() {
            //if (input.value == def_value) {
            //    this.value='';
            //}
            if (input.id == 'country-name') {
                loadCountry();
            } else if (input.id == 'city-name') {
                loadCity();
            /*} else if (input.id == 'university-name') {
                loadUniversity();
            } else if (input.id == 'department-name') {
                loadDepartment();
                */
            }
        };
        input.onblur = function() {
            if (select.value <= 0 && (input.id == 'country-name' || input.id == 'city-name')) {
                //input.value = def_value;
            } else if (input.id == 'country-name') {
                loadCountry();
            } else if (input.id == 'city-name') {
                loadCity();
            } /*else if (input.id == 'university-name') {
                loadUniversity();
            } else if (input.id == 'department-name') {
                loadDepartment();
            }*/
        }
 
        input.onkeyup = function(ev) {
            autoComplete(ev, name);
        };
        input.onkeydown = function(ev) {
            if (!ev) {
                ev = window.event;
            }
            if (ev && ev.keyCode == 13) {
		       if (name == 'city') {
		        selectCity();
		       }
               return false;
            }
            return true;
        }   
    }
}

function collapseBlock(a, title) {
if (a.className == 'collapse') {
a.className = '';
} else {
a.className = 'collapse';
}
var cont = document.getElementById(title+'-content');
if (cont) {
   var path = document.location.pathname + '?js=1';
   var ajax = new Ajax();
   ajax.onDone = function (ajaxObj, responseText) {
        cont.innerHTML = responseText;
   };
   ajax.post(path, 'collapse=' + title);
}
}


// Music Page //
var mediaDivId;
function createAlbumList(musicId, albumId) {
    var list = document.getElementById("list"+musicId);
    if (list) {
	list.style.display = "block";
	return;
    }
    var div0 = document.getElementById("ownerAlbums");
    var div1 = document.createElement("div");
    var list = div0.innerHTML;
    list = list.replace(/MID/g, musicId);
    div1.innerHTML = list.replace(/AID/g, albumId);
    div1.className = "albumList";
    div1.setAttribute('id', "list" + musicId);
    document.getElementById("m"+musicId).appendChild(div1);			
}

function musicAdd(musicId, albumId, newAlbumId) {
	var list = document.getElementById("list" + musicId);
	if (list) {
		list.style.display = "none";
		document.getElementById("m"+musicId).innerHTML = "<img src=\"/images/progressbar.gif\">";
		var p = document.location.pathname;
		var path = p.substring(0, p.lastIndexOf('/')) + "/edit_album?oid=" + musicId + "&id=" + albumId + "&nid=" + newAlbumId + "&action=addMedia";
		mediaDivId = "m"+musicId;
		makeRequest(path, 'updateMediaAdd', false);
	}
}

function albumAdd(userCode, albumId) {
	mediaDivId = "a" + albumId;
	document.getElementById(mediaDivId).innerHTML = "<img src=\"/images/progressbar.gif\">";
	var path = "/net/" + userCode + "/edit_album?id=" + albumId + "&action=addMedia";
	makeRequest(path, 'updateMediaAdd', false);
}

function updateMediaAdd(text) {
	document.getElementById(mediaDivId).innerHTML = text;
}

function showReplyBox(id) {
	document.getElementById("replyBox" + id).style.display = "block";	
}

function checkCategoryIdSelect(msgError) {
	var e = ge("categoryId");
	if (e && e.value != "0") {
		return true;
	} else {
		alert(msgError);
		return false;
	}
}

function startUploadVideo(uploadKey) {
	ge('selector_progressbar').style.display='block';
	ge('uploadForm').style.display='none';
	ge('uploadForm').submit();
	var path = "/net/uploadStatus?uploadKey=" + uploadKey;
	setInterval(function() { makeRequest(path, 'updateUploadVideoStatus', false); }, 5000);
	return true;
}

function updateUploadVideoStatus(text) {
	ge('uploadStatus').innerHTML = text + "%";
}

function getHtmlUploader(link) {
	ge('flashUploader').style.display = 'none';
	ge('htmlUploader').style.display = 'block'; 
	link.style.display = 'none'; 
	ge('flashUploaderLink').style.display = 'block';
	setCookie("flash", "0");
}

function getFlashUploader(link) {
	ge('htmlUploader').style.display = 'none';
	ge('flashUploader').style.display = 'block';
	link.style.display = 'none'; 
	ge('htmlUploaderLink').style.display = 'block';
	setCookie("flash", "1");
}

function checkUploader() {
	if (document.cookie.indexOf("flash=1") != -1) {
		ge('flashUploader').style.display = 'block';
		ge('htmlUploaderLink').style.display = 'block';
	} else {
		ge('htmlUploader').style.display = 'block';
		ge('flashUploaderLink').style.display = 'block';
	}
}








