var rdyMgr = {          
	isOp:/opera/i.test(navigator.userAgent),
	isIE:(!this.isOp && /msie/i.test(navigator.userAgent)),
	isFF:/firefox/i.test(navigator.userAgent),
	isSaf: /webkit|safari|khtml/i.test(navigator.userAgent),
	onRdy: function(fn) {this.bindRdy();if(this.isRdy){try{fn.call(document);}catch(e){}}else{this.rdyList.push(function(){try{ fn.call(document);}catch(e){}});}},
	isRdy: false,rdyBnd: false,rdyList:[],
	rdy: function() {if(!rdyMgr.isRdy){rdyMgr.isRdy=true;if(rdyMgr.rdyList){var l=rdyMgr.rdyList;l.reverse();while(fn=l.pop()){fn.apply(document);}rdyMgr.rdyList=null;}}},
	bindRdy: function() {if(this.rdyBnd) return;this.rdyBnd=true;if(document.addEventListener && !this.isOp)document.addEventListener("DOMContentLoaded",this.rdy,false);
		if (this.isIE&&window==top)(function(){if(rdyMgr.isRdy)return;try{document.documentElement.doScroll("left");}catch(e){setTimeout(arguments.callee,0);return;}rdyMgr.rdy();})();
		if (this.isOp)document.addEventListener("DOMContentLoaded",function(){if(rdyMgr.isRdy)return;rdyMgr.rdy();},false);
		if (this.isSaf){(function(){if(rdyMgr.isRdy)return;if(document.readyState!="loaded"&&document.readyState!="complete"){setTimeout(arguments.callee,0);return;}rdyMgr.rdy();})();}
		if (window.addEventListener){window.addEventListener("load",this.rdy, false);}else if(window.attachEvent){window.attachEvent("onload", this.rdy);}
	}
}
function onDomReady(fn){rdyMgr.onRdy(fn);}

function makesure() {
 if (confirm(functions_sure_delete)) {
  return true;
 } else {
  return false;
 }
}		

function flexToggle(el) {
  if (el.className == 'flexOpen') {
    el.className = 'flexShut';
  } else {
    el.className = 'flexOpen';
  }
}

function ge()
{
  var ea;
  for( var i = 0; i < arguments.length; i++ ) {
    var e = arguments[i];
    if( typeof e == 'string' )
      e = document.getElementById(e);
    if( arguments.length == 1 )
      return e;
    if( !ea )
      ea = new Array();
    ea[ea.length] = e;
  }
  return ea;
}

function show()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
    if (element && element.style) element.style.display = 'block';
  }
}

function show2()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
   	if (element && element.style) element.style.display = "inline";
  }
  return false;
}

function hide()
{
  for( var i = 0; i < arguments.length; i++ ) {
    var element = ge(arguments[i]);
    if (element && element.style) element.style.display = 'none';
  }
}

function shown(el) {
    el = ge(el);
    return (el.style.display != 'none');
}

function shide(el) {if (shown(el)) {hide(el);} else {show(el);}}

function textLimit(ta, count) {
  var text = ge(ta);
  if(text.value.length > count) {
    text.value = text.value.substring(0,count);
    if(arguments.length>2) { // id of an error block is defined
      ge(arguments[2]).style.display='block';
    }
  }
}

function isIE() {
 return rdyMgr.isIE;
}   

function placeholderSetup(id) {
	var el = ge(id);
	if (!el) return;
	if (el.type != 'text') return;	
	var ph = el.getAttribute("placeholder");
	if (ph && ph != "") {
		el.value = ph;
		el.style.color = '#777';
		el.is_focused = 0;
		el.onfocus = placeholderFocus;
		el.onblur = placeholderBlur;
	}
}

function placeholderFocus() {
  if(!this.is_focused) {
    this.is_focused = 1;
    this.value = '';
    this.style.color = '#000';
    var rs = this.getAttribute("radioselect");
    if( rs && rs != "" ) {
      var re = document.getElementById(rs);
      if(!re) { return; }
      if(re.type != 'radio') return;
      re.checked=true;
    }
  }
}

function placeholderBlur() {
  var ph = this.getAttribute("placeholder")
  if( this.is_focused && ph && this.value == "" ) {
		this.is_focused = 0;
    this.value = ph;
    this.style.color = '#777';
  }
}

function getXY(obj) {
 if (!obj || obj == undefined) return;
 var left = 0, top = 0;
 if (obj.offsetParent) {
  do {
   left += obj.offsetLeft;
   top += obj.offsetTop;
  } while (obj = obj.offsetParent);
 }
 return [left,top];
}

var qCur = 0, qOn = 0, sOn = 0, qfOn = 0, qd = 0, l = 0, qa = 0, qfCur = -1;
var qArr = [[0,'ïî èìåíàì','search.php?act=quick&n=1&q'],
[1,'ïî âèäåîçàïèñÿì','videosearch.php?q'],
[2,'ïî àóäèîçàïèñÿì','audiosearch.php?q'],
[3,'ïî ãðóïïàì','browse.php?&gSearch'],
[4,'ïî îáúÿâëåíèÿì','market.php?q'],
[5,'ïî ïðèëîæåíèÿì','apps.php?act=all&s'],
[6,'ïî âîïðîñàì','questions.php?act=all&word']]

reqs = []; res = [];
friends_l = [];
friends_arr = [];
floaded = false;

function doRequest(params, resultFunc) {
  var req = createRequest(params, resultFunc);
  sendRequest(req);
}

function createRequest(params, resultFunc) {
  var req = new Object();
  req.params = params;
  req.resultFunc = resultFunc;
  req.destroy = destroy;
  var rnum = Math.floor(Math.random()*1000);
  req.num = rnum;
  req.running = 1;
  reqs[rnum] = req;
  return req;
}

function getFriends() {
 doRequest('&id='+getCookie('mid')+'&act=friends&to=2500&w=50', gotFriends);
}

function gotFriends(result) {
 friends_arr = result;
 var l = friends_arr.length;
 for (var i = 0; i < l; i++) {
  friends_l[i] = friends_arr[i][1].toLowerCase();
 }
 floaded = true;
}

function friendNav(k) {
  if (k == 38) {
   if (qd) {if (qCur > 0) {qCur = qCur - 1} else {qCur = 6} genQDrop(); return true}
   if (qfCur > 0) {qfrOn(qfCur-1)} else {qfrOn(l-1)}
   return true;
  } 
  if (k == 40) {
   if (qd) {if (qCur < 6) {qCur = qCur + 1} else {qCur = 0} genQDrop(); return true}
   if (qfCur < l - 1) {qfrOn(qfCur+1)} else {qfrOn(0)}
   return true;
  } 
  if (k == 13) {
   if (qd) {hideQDrop(qCur); return true;}
   if (!qCur && qfCur > -1 && res.length && res[qfCur] && res[qfCur][0]) {
    window.location = 'http://vkontakte.ru/id'+res[qfCur][0];
    return true;
   } else {
    qDoSearch();
   }
  }
 }

function friendFilter(e) {

 var k = 0;
 if (e) {
  k = e.keyCode;
  friendNav(k);
 }
 if (qCur) {return;}

 res = [];
 if (!floaded) {
  qfCur = -1;
  getFriends();
  setTimeout("friendFilter()", 700);
 }
 
 var st = 0, en = 0, img, cl, name, q_lat;
 var q = ge('qinput').value.toLowerCase();
 if (!q.length && k != 8) {
  return;
 }
 q_lat = parseLatin(q);
 l = friends_l.length;
 for (var i = 0; i < l; i++) {
  if (q.length && friends_l[i].indexOf(q) != -1) {            
   res.push(friends_arr[i]);
  } else if (q_lat && q_lat.length && friends_l[i].indexOf(q_lat) != -1) {
   res.push(friends_arr[i]);
  }
 }
 var str = '', onl = '';
 l = res.length;
 if (l > 10) {l = 10;}
 if (l) {
  for (var i = 0; i < l; i++) {
   name = res[i][1];
   if (qfCur == i) {cl = 'qfr_cell_on'} else if (qfCur == i - 1) {cl = 'qfr_cell_un'} else {cl = 'qfr_cell'}
   pos = name.toLowerCase().indexOf(q);
   if (pos == -1 && q_lat && q_lat.length) {
    q = q_lat;
    pos = name.toLowerCase().indexOf(q); 
   }
   if (pos != -1) {
    if (res[i][2].length > 1) {img = "<img src='"+res[i][2]+"'>";} else {img = "?";}
    if (res[i][3]) {onl = "<b class='qonl'>online</b>";} else {onl = "";}
    name = name.substr(0, pos) + "<span>" + name.substr(pos, q.length) + "</span>" + name.substr(pos+q.length);
   }                                                                                                      
   str += "<div id='qfr"+i+"' class='"+cl+"' onmouseover=\"qfrOn("+i+")\" onmouseout=\"qfrOff("+i+")\" onclick=\"window.location='http://vkontakte.ru/id"+res[i][0]+"'\"><table border=0><tr><td><div>"+img+"</div></td><td>"+name+onl+"</td></tr></table></div>";
  }
  hideQDrop(qCur);
  show('qfriends');
 } else {hide('qfriends');}
 ge('qfriends').innerHTML = str;
}

function qfrOn(i) {
 if (qfCur > -1) {qfrOff(qfCur);}
 qfOn = 1; qfCur = i;
 if (ge('qfr'+i)) ge('qfr'+i).className = 'qfr_cell_on';
 if (ge('qfr'+(i+1))) {ge('qfr'+(i+1)).className = 'qfr_cell_un';}
}

function qfrOff(i) {
 qfOn = 0;
 if (ge('qfr'+i)) ge('qfr'+i).className = 'qfr_cell';
 if (ge('qfr'+(i+1))) {ge('qfr'+(i+1)).className = 'qfr_cell';}
}

function sendRequest(req) {
 attachScript('req'+req.num, 'http://userapi.com/data?'+req.params+'&sid='+getCookie('sid')+'&back=reqs['+req.num+'].resultFunc');
}

function attachScript(id, src) {
 var i;
 var newreqs = [];
 for (reqnum in reqs) {
  req = reqs[reqnum];
  if (req) { 
   if (req.running == 0) {
    ge('req'+req.num).parentNode.removeChild(ge('req'+req.num)); 
    reqs[reqnum] = null;
   } else {
    newreqs[reqnum] = req;
   }
  }
 }
 reqs = newreqs;
 var element = document.createElement('script');
 element.type = 'text/javascript';
 element.src = src;
 element.id = id;
 document.getElementsByTagName('head')[0].appendChild(element);
}

function destroy() {
 if (reqs[this.num]) {
  reqs[this.num].running = 0;
 }
}

function getCookie(name) {
 var prefix = name + "=";
 var start_ind = document.cookie.indexOf(prefix);
 if (start_ind == -1) return null;
 var end_ind = document.cookie.indexOf(";", start_ind + prefix.length)
 if (end_ind == -1) end_ind = document.cookie.length;
 return unescape(document.cookie.substring(start_ind + prefix.length, end_ind));
}

function searchOn(obj) {
 hide('qfriends'); sOn = 1;
 var qq = ge('qquery'); 
 var ph = obj.getAttribute('placeholder');
 if (obj.value && obj.value != ph) {return;}
 hide('topNav');
 qq.style.width = '618px';
 obj.style.width = '448px'
 ge('quickSearch').style.width = '625px';
 obj.value = ''; var qs = qd ? 'qdrop_on' : 'qdrop_off';
 ge('qchoose').innerHTML = "<div onclick=\"showQDrop()\" id='qdrop' class='"+qs+"' onmouseover=\"qOn = 1;if (!qd) {this.className='qdrop_over'}\" onmouseout=\"setTimeout('startHide()',1200); qOn = 0;if (!qd) {this.className='qdrop_off'}\">"+qArr[qCur][1]+"</div>";
 genQDrop();
 obj.style.color = '#000'; if (!qa) showQDrop(); 
}

function genQDrop() {
 var str = '', qoff, qover, st = '';
 for (var i = 0; i < qArr.length; i++) {
  if (i == qArr.length-1) {st = "style='border-bottom: 1px solid ";if (i!=qCur){st+="#2A5883;'";}else{st+="#839EB7;'";}} else {st='';}
  if (i != qCur) {qoff = 'qdiv_off', qover = 'qdiv_over'; if (!i) {qover='qdiv_over_top';}} else {qoff = 'qdiv_on', qover = 'qdiv_on';}
  str += "<div onclick='hideQDrop("+i+")' class='"+qoff+"' onmouseover=\"qOn = 1; this.className='"+qover+"'\" onmouseout=\"setTimeout('startHide()',1200); qOn = 0; this.className='"+qoff+"'\" "+st+">"+qArr[i][1]+"</div>";
 }
 ge('qdropdown').innerHTML = str;
}

function startHide() {
 if (qOn) return;
 hideQDrop(qCur);
}

function showQDrop() {
 if (qd) {hideQDrop(qCur);return;}
 genQDrop();
 qd = 1; qa = 1;
 ge('qdrop').className = 'qdrop_on';
 ge('qdropdown').style.display = 'block';
 ge('qinput').focus();
}

function hideQDrop(i) {
 qOn = 0; qCur = i; qd = 0;
 if (ge('qdrop')) {
  ge('qdrop').innerHTML = qArr[i][1];
  ge('qdrop').className = 'qdrop_off';
  ge('qdropdown').style.display = 'none';
 } 
 if (sOn) ge('qinput').focus(); 
}

function searchOut(qi) {
 if (qOn || qfOn) {return;}
 hide('qfriends'); sOn = 0;
 var ph = qi.getAttribute('placeholder');
 if (qi.value && qi.value != ph) {return;}
 ge('qchoose').innerHTML = "";
 var qq = ge('qquery');
 qi.style.color = '#777';
 qi.style.width = '85px';
 qq.style.width = '105px';
 ge('quickSearch').style.width = '112px';
 show('topNav');
 qi.value = ph; qa = 0; qd = 0;
 var qd = ge('qdropdown');
 qd.style.display = 'none';
}

function qDoSearch() {
 var qi = ge('qinput');
 var ph = qi.getAttribute('placeholder');
 if (!qi.value || qi.value == ph) {return;}
 window.location = qArr[qCur][2]+"="+qi.value; 
}

function parseLatin(text){
	var outtext = text;
	var lat1 = ["yo","zh","kh","ts","ch","sch","shch","sh","eh","yu","ya","YO","ZH","KH","TS","CH","SCH","SHCH","SH","EH","YU","YA","'"];
	var rus1 = ["¸", "æ", "õ", "ö", "÷", "ù",  "ù",   "ø", "ý", "þ", "ÿ", "¨", "Æ", "Õ", "Ö", "×", "Ù",  "Ù",   "Ø", "Ý", "Þ", "ß", "ü"];
	for(var i=0;i<lat1.length;i++){
		outtext = outtext.split(lat1[i]).join(rus1[i]);
	}
	var lat2 = "abvgdezijklmnoprstufhcyABVGDEZIJKLMNOPRSTUFHCY" + "¸¨";
	var rus2 = "àáâãäåçèéêëìíîïðñòóôõöûÀÁÂÃÄÅÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖÛ" + "åÅ";
	for(var i=0;i<lat2.length;i++){
		outtext = outtext.split(lat2[i]).join(rus2[i]);
	}
	return (outtext==text)?null:outtext;
}

