$(function(){

var sr=[[/&#1122;/g,'Е'],[/&#1123;/g,'е'],[/&#1138;/g,'Ф'],[/&#1139;/g,'ф'],[/&#1140;/g,'Ж'],[/&#1141;/g,'ж'],[/&([a-z]+|#[0-9]+);/ig,' '],[/\s+/g,' '],[/^[^а-яА-Яa-zA-Z0-9]+/,'']],
hr=[1122,1123,1138,1139,1140,1141,38,60,62,34,39],
rev={},rev2={},nums=[],cits=[],s='',c='',z=false,ll={},la=[],st=1,lnk1,lnk2
u=(location.protocol=="http:"&&location.href.search(/\./)!=-1?location.href:uri).replace(/#.*$/,'')

var add2list=function(k){
  $('#mth_guru_list').append($('#mth_cite'+k))
}

var clr=function(k){$('#mth_hidden').append($('#mth_guru_list div.mth_cite'))}
var cond_ok=function(){$('#mth_condition').addClass('mth_cond-ok').removeClass('mth_cond-wait').get(0).innerHTML=conditions[1];z=true}
var cond_wait=function(){$('#mth_condition').addClass('mth_cond-wait').removeClass('mth_cond-ok').get(0).innerHTML=conditions[0];z=false}
var htmlspecialchars=function(s){$.each(hr,function(i,n){s=s.replace(new RegExp(String.fromCharCode(n),'g'),'&#'+n+';')});return s}

var getpagescroll=function(){
	var de=document.documentElement,db=document.body
	return [window.pageXOffset||(de&&de.scrollLeft)||(db&&db.scrollLeft),
	  window.pageYOffset||(de&&de.scrollTop)||(db&&db.scrollTop)]
}

var getpagesize=function(){
	var de=document.documentElement
	return [window.innerWidth||window.innerWidth||(de&&de.clientWidth)||document.body.clientWidth,
	  window.innerHeight||window.innerHeight||(de&&de.clientHeight)||document.body.clientHeight]
}

var sort_by_number=function(){
  var l=this&&this.hash?this.hash.substr(1):''
  if(z)cond_wait()
  st=1
  clr()
  $('#mth_letter_list a.mth_show-letter-only').removeClass('current').unbind('click').click(st==1?sort_by_number:sort_by_alphabet)
  $('#mth_sort_by_alphabet').removeClass('current')
  $('#mth_sort_by_number').addClass('current')
  if(this&&this.hash)$(this).addClass('current')
  for(var q=0;q<nums.length;q++){
    if(l==''||(l.substr(0,6)=='phrase'&&l.substr(6)==nums[q])||rev2[nums[q]].charCodeAt(0)==l)add2list(nums[q])
  }
  cond_ok()
  return false
}

var sort_by_alphabet=function(){
  var l=this&&this.hash?this.hash.substr(1):0
  if(z)cond_wait()
  st=2
  clr()
  $('#mth_letter_list a.mth_show-letter-only').removeClass('current').unbind('click').click(st==1?sort_by_number:sort_by_alphabet)
  $('#mth_sort_by_number').removeClass('current')
  $('#mth_sort_by_alphabet').addClass('current')
  if(this&&this.hash)$(this).addClass('current')
  for(var q=0;q<cits.length;q++){
    if(l==''||(l.substr(0,6)=='phrase'&&l.substr(6)==rev[cits[q]])||cits[q].charCodeAt(0)==l)add2list(rev[cits[q]])
  }
  cond_ok()
  return false
}

var repos=function(){
  var sz=getpagesize(),sc=getpagescroll()
  $('#mth_html_code').css({
    left:sc[0]+(sz[0]-$('#mth_html_code').width())/2,
    top:sc[1]+(sz[1]-$('#mth_html_code').height())/2
  })
}

var form_sbm=function(){
  var n=$('#mth_show_number')[0].number.value
  if(guru[n]=='')return false
  var s=$('<a href="#phrase'+n+'"></a>')[0]
  s.f=st==1?sort_by_number:sort_by_alphabet
  location.hash=s.hash
  s.f()
  return false
}

var preload=function(){
  var qq=0,zz=[]
  for(var k in guru){
    if(k.indexOf('-link') != -1) continue;
    if(k<1)continue
    nums.push(k)
    s=guru[k].toUpperCase()
    for(var q=0;q<sr.length;q++)s=s.replace(sr[q][0],sr[q][1])
    ll[s.substr(0,1)]=1
    cits.push(s)
    rev[s]=k
    rev2[k]=s
  }
  nums.sort(function(a,b){return a-b})
  cits.sort()

  $('body').append('<div id="mth_guru_list"></div><div id="mth_hidden"></div><div id="mth_html_code"><p><a class="mth_close" href="#">закрыть</a></p><div><div id="mth_cite_div"></div><textarea id="mth_code_div"></textarea></div><p><a href="#" id="mth_show_code" title="посмотреть HTML-код цитаты">код</a> / <a href="#" id="mth_show_view" title="посмотреть оформление цитаты">вид</a></p></div>')

  for(var k in ll){la.push(k)}
  la.sort()
  for(var q=0;q<la.length;q++){
    $('#mth_letter_list').append('<a href="#'+la[q].charCodeAt(0)+'" class="mth_show-letter-only">'+la[q].toUpperCase()+'</a>')
  }


  for(var q=0;q<codetype.length;q++){
    c=c+'<a href="#'+q+'" class="mth_codetype">'+codetype[q].title+'</a> '
    $('.mth_codetype').click(function(){
      var i=$(this).parent().get(0).id.substr(8)
    })
  }

  for(var k in guru){
    if(k.indexOf('-link') != -1) continue;
    $('#mth_hidden').append('<div class="mth_cite" id="mth_cite'+k+'"><a name="phrase'+k+'" id="phrase'+k+'"></a>'+
      '<span class="mth_cite-text">'+k+'. '+guru[k].replace(/\n/g,'<br />\n')+'</span>'+
      (guru[k+'-link'] != null ? '<a href="' + guru[k+'-link'] + '">источник</a>' : '')+
      (up_link? '<a href=\"#top\">наверх</a>': '')+c+
      '</div>')
  }

  $('a.mth_codetype').click(function(){
    var ct=codetype[this.hash.substr(1)],i=$(this).parent()[0].id.substr(8),
      fc=ct.body.replace(/\[cite\]/g,guru[i].replace(/\n/g,'<br />\n')+'&nbsp;<sup><a href="'+u+'#phrase'+i+'" target="_blank">'+ct.up+'</a></sup>'),
      sz=getpagesize(),sc=getpagescroll()
    $('#mth_html_code').css({
      width:ct.width.substr(ct.width.length-1)=='%'?ct.width.substr(0,ct.width.length-1)*sz[0]/100:1*ct.width
      }).show()
    $('#mth_cite_div').append(fc).hide()
    $('#mth_code_div')[0].value=fc
    repos()
	  $(window).scroll(function(){repos()});
    return false
  })

  $('#mth_html_code a.mth_close').click(function(){
    $('#mth_html_code').hide()
    $('#mth_cite_div').empty()
    $('#mth_code_div').empty()
    $(window).unbind('scroll');
    return false
  })
  $('#mth_show_code').click(function(){
    $('#mth_cite_div').hide()
    $('#mth_code_div').show()
    return false
  })
  $('#mth_show_view').click(function(){
    $('#mth_code_div').hide()
    $('#mth_cite_div').show()
    return false
  })

  $('#mth_show_number').submit(form_sbm)
  if(location.hash.substr(1,6)=='phrase'){
    $('#mth_show_number')[0].number.value=location.hash.substr(7)
    form_sbm()
  }else{sort_by_number()}

  $('a.mth_sort-by-alphabet').click(sort_by_alphabet)
  $('a.mth_sort-by-number').click(sort_by_number)
}




preload()
})