// (c) 2006, MForum.ru

function madr(a,d) {
  return a+String.fromCharCode(64)+d.replace(/#/g,'\056');
}

function mto(a,d) {
  var m = madr(a,d);
  document.write(String.fromCharCode(60,97,32,104)+'ref=\"mai'+String.fromCharCode(108,116,111,58)+m+'\">'+m+'\074/a\076');
}

function qtCheck() {
  try {
    var qtVars=document.getElementsByName("qtmov");
    var qtVer, i;
    if (qtVars && qtVars.length>0) {
      for (i=0; i<qtVars.length; i++) {
        try { qtVer=qtVars[i].GetQuickTimeVersion(); } catch (e) {}
        if (qtVer) break;
      }
      if (parseInt(qtVer)<7 && confirm("Для просмотра видеофайлов рекомендуем установить QuickTime версии 7 или выше\nПрограмму можно скачать бесплатно: http://www.apple.com/quicktime/download/"))
        window.open("http://www.apple.com/quicktime/download/");
    }
    //else window.status='no quicktime movies on page';
  } catch (e) {}
}

function setCookie(name, value, expire, domain, path) {
  if ( expire == null ) {
    expire = new Date();
    expire.setTime(expire.getTime() + 2*365*24*3600*1000); // +2 years
  }
  document.cookie = name + "=" + escape(value)
   + ((expire == null) ? "" : ("; expires=" + expire.toGMTString()))
   + ((domain == null) ? "" : ("; domain=" + escape(domain)))
   + ((path == null) ? "" : ("; path=" + escape(path)));
  return document.cookie;
}

function getCookie(cName) {
  var aCookie = document.cookie.split(/\s*;\s*/);
  for (var i=0; i < aCookie.length; i++)
  {
    var aCrumb = aCookie[i].split("=");
    if (cName == aCrumb[0]) 
      return unescape(aCrumb[1]);
  }
  return null;
}

function getParam(cName) {
  var query = window.location.search + "";
  if (!query) return null;
  var qp = query.split(/\s*[\?&]\s*/);
  for (var i=0; i < qp.length; i++)
  {
    var pair = qp[i].split("=");
    if (cName == pair[0]) 
      return unescape(pair[1]);
  }
  return null;
}

function activateActiveX() {
  try {
    if (navigator.appVersion.indexOf("MSIE")>=0) {
      var theObjects = document.getElementsByTagName("object");
      for (var i=0; i<theObjects.length; i++) {

        var attrc=theObjects[i].attributes;
        var ohtml='<object';
        for(var n=0; n<attrc.length; n++) {
          var a=attrc[n];
          if (a.nodeValue) ohtml+=' '+a.nodeName+'="'+a.nodeValue+'"';
        }
        ohtml+='>';

        var prmc=theObjects[i].childNodes;
        var ihtml='';
        for(var n=0; n<prmc.length; n++) {
          var p=prmc[n];
          if (p.nodeName=='PARAM') {
            ihtml+='<param name="'+p.getAttribute('name')+'" value="'+p.getAttribute('value')+'">';
          }
          else return;
        }
        theObjects[i].outerHTML=ohtml+ihtml+'</object>';
      }
    }
  } catch (e) {}
}

// external docs

function showHiddenText(destElm, url) {
  if (typeof(destElm)=="string") destElm=document.getElementById(destElm);
  return loadDoc(url, doShowHiddenText, destElm);
}

function doShowHiddenText(destElm, htmlCode) {
  destElm.innerHTML=htmlCode;
}


// following code based on http://developer.apple.com/internet/webcontent/xmlhttpreq.html


function loadDoc(url, func, arg) {
  var xmlReq = false;
  // branch for native XMLHttpRequest object
  if(window.XMLHttpRequest) {
    try {
      xmlReq = new XMLHttpRequest();
    } catch(e) {
      xmlReq = false;
    }
  // branch for IE/Windows ActiveX version
  } else if(window.ActiveXObject) {
    try {
      xmlReq = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
      try {
        xmlReq = new ActiveXObject("Microsoft.XMLHTTP");
      } catch(e) {
        xmlReq = false;
      }
    }
  }
  if(xmlReq) {
    xmlReq.onreadystatechange = function() {
        // only if xmlReq shows "loaded"
        if (xmlReq.readyState == 4) {
          // only if "OK"
          if (xmlReq.status == 200) {
            // ...processing statements go here...
            func(arg, xmlReq.responseText, xmlReq.responseXML);
          } else if (xmlReq.status == 401) {
            window.location="/auth_required.htm";
          } else {
            alert("Загрузить информацию не удалось:\n" +
                 xmlReq.statusText);
          }
        }
      };
    xmlReq.open("GET", url, true);
    xmlReq.send("");
    return false;
  }
  return true;
}


// request img counter

var reqImg=new Array();
function requestImg(u) {
  var i=new Image();
  i.src=u;
  return reqImg.push(i);
}

function videoFLVhtml(flvPath, width, height) {
  return '<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0"'
    +' width="'+width+'" height="'+height+'" align="middle">'
    +'<param name="allowScriptAccess" value="sameDomain" />'
    +'<param name="movie" value="/video/flash/FLVPlayer_Progressive.swf" />'
    +'<param name="FlashVars" value="MM_ComponentVersion=1&skinName=/video/flash/Clear_Skin_2&streamName='+flvPath+'&autoPlay=true&autoRewind=true" />'
    +'<param name="play" value="true" />'
    +'<param name="loop" value="false" />'
    +'<param name="menu" value="false" />'
    +'<param name="quality" value="high" />'
    +'<param name="bgcolor" value="#ffffff" />'
    +'<embed src="/video/flash/FLVPlayer_Progressive.swf" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" play="false" loop="true" menu="false" quality="high" bgcolor="#ffffff" align="middle" allowscriptaccess="sameDomain"'
    +' flashvars="MM_ComponentVersion=1&skinName=/video/flash/Clear_Skin_2&streamName='+flvPath+'&autoPlay=true&autoRewind=true" width="'+width+'" height="'+height+'" />'
    +'</object>';
}

function videoFLVreplace(el, flvPath, width, height) {
  el.innerHTML=videoFLVhtml(flvPath, width, height);
}

function videoFLV(flvPath, width, height, preview) {
  if (!preview) preview='/video/flash/mfvideobg.jpg';
  flash('8', '/video/flash/flvplayer.swf', width, height+20, {'allowfullscreen':'true','FlashVars':'file='+flvPath+'&image='+preview+'&width='+width+'&height='+(height+20)+'&showicons=false&overstretch=true&showdownload=false&volume=100&type=flv'}, '<span style="background-color:yellow;padding:4px;">Для воспроизведения видео требуется Adobe Flash Player 8+</span>');
}

var defaultParams={'allowScriptAccess':'sameDomain','menu':'false','quality':'high','__escript':'true'};

function flash7(swf, width, height, parms, noflashHtml) {flash('7', swf, width, height, parms, noflashHtml);}
function flash8(swf, width, height, parms, noflashHtml) {flash('8', swf, width, height, parms, noflashHtml);}

function flash(version, swf, width, height, parms, noflashHtml) {
  var fpva=getFlashPlayerVersion2();
  var fpv=fpva[0];
  var fpvr=parseInt(version);
  if (noflashHtml && fpv<fpvr) {
    document.write(noflashHtml);
  }
  else {
    var o='<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version='+version+',0,0,0"'
      +(width?' width="'+width+'"':'')+(height?' height="'+height+'"':'')
      +' align="middle">'
      +'<param name="movie" value="'+swf+'" />';
    var e='<embed src="'+swf+'"'
      +(width?' width="'+width+'"':'')+(height?' height="'+height+'"':'')
      +' align="middle" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"';
    if (parms) {
      for(var p in parms) {
        o+='<param name="'+p+'" value="'+parms[p]+'" />';
        e+=' '+p+'="'+parms[p]+'"';
      }
    }
    for(var p in defaultParams) {
      if (!parms || !parms[p]) {
        o+='<param name="'+p+'" value="'+defaultParams[p]+'" />';
        e+=' '+p+'="'+defaultParams[p]+'"';
      }
    }
    e+='></embed>';
    o+=e+'</object>';
    document.write(o);
  }
}

function getFlashPlayerVersion2() {
  // code (C) http://code.google.com/p/swfobject/
  var playerVersion = [0,0,0];
  var d = null;
  if (typeof navigator.plugins != "undefined" && typeof navigator.plugins["Shockwave Flash"] == "object") {
    d = navigator.plugins["Shockwave Flash"].description;
    if (d) {
      d = d.replace(/^.*\s+(\S+\s+\S+$)/, "$1");
      playerVersion[0] = parseInt(d.replace(/^(.*)\..*$/, "$1"), 10);
      playerVersion[1] = parseInt(d.replace(/^.*\.(.*)\s.*$/, "$1"), 10);
      playerVersion[2] = /r/.test(d) ? parseInt(d.replace(/^.*r(.*)$/, "$1"), 10) : 0;
    }
  }
  else if (typeof window.ActiveXObject != "undefined") {
    var a = null;
    var fp6Crash = false;
    try {
      a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
    }
    catch(e) {
      try { 
        a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");
        playerVersion = [6,0,21];
        a.AllowScriptAccess = "always";  // Introduced in fp6.0.47
      }
      catch(e) {
        if (playerVersion[0] == 6) {
          fp6Crash = true;
        }
      }
      if (!fp6Crash) {
        try {
          a = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
        }
        catch(e) {}
      }
    }
    if (!fp6Crash && typeof a == "object") { // When ActiveX is disbled in IE, then "typeof a" returns "object", however it is "null" in reality, so something like "typeof a.GetVariable" will crash the script
      try {
        d = a.GetVariable("$version");  // Will crash fp6.0.21/23/29
        if (d) {
          d = d.split(" ")[1].split(",");
          playerVersion = [parseInt(d[0], 10), parseInt(d[1], 10), parseInt(d[2], 10)];
        }
      }
      catch(e) {}
    }
  }
  return playerVersion;
}

  function replaceSelection(text,control){
    var scroll_top = control.scrollTop;
    if(!!document.selection){
      control.focus();
      var range = (this.range) ? this.range : document.selection.createRange();
      range.text = text;
      range.select();
    }else if(!!control.setSelectionRange){
      var cursorPos=control.selectionEnd;
      control.value = control.value.substring(0,control.selectionStart) + text + control.value.substring(control.selectionEnd);
      control.setSelectionRange(control.selectionStart + text.length,control.selectionStart + text.length);
    control.focus();
    control.selectionStart = cursorPos + text.length;
    control.selectionEnd = cursorPos + text.length;
    }
    control.scrollTop = scroll_top;
  }


function doInsert(ibTag){
  var ibTagEmpty = "";
  var control = document.getElementById('messText');
  switch(ibTag){
    case 'B':ibTag='**';ibTagEmpty='Жирный';break;
    case 'U':ibTag='__';ibTagEmpty='Подчеркивание';break;
    case 'I':ibTag='//';ibTagEmpty='Курсив';break;
    case 'S':ibTag='--';ibTagEmpty='Зачеркнутый шрифт';break;
    case 'L':ibTag='--';ibTagEmpty='';break;
  }
  var scroll_top = control.scrollTop;
  var replacedText;
  if(!!document.selection){
    control.focus();
    var range = (document.selection.range) ? document.selection.range : document.selection.createRange();
    replacedText=range.text;
    if(replacedText.length==0){
      replacedText = ibTagEmpty;
    }
    range.text = ibTag+replacedText+ibTag;
    range.select();
  }else if(!!control.setSelectionRange){
    replacedText=control.value.substring(control.selectionStart,control.selectionEnd);
    var cursorPos=control.selectionEnd;
    if(replacedText.length==0){
      replacedText = ibTagEmpty;
    }
    control.value = control.value.substring(0,control.selectionStart) +
    ibTag+replacedText+ibTag +
    control.value.substring(control.selectionEnd);
    control.setSelectionRange(control.selectionStart,control.selectionStart + replacedText.length+4);
    control.focus();
    control.selectionStart = cursorPos + replacedText.length+4;
    control.selectionEnd = cursorPos + replacedText.length+4;
  }
  control.scrollTop = scroll_top;
}


function showWikiHelp(){
wWidth = 300;//screen.width - 100;
 wHeight = 300;//screen.height - 100;

	wnd=window.open("", "imgWin", 'width=' + wWidth + ',height=' + wHeight + ',resizable=yes,scrollbars=yes,toolbar=no,menubar=no');
	wnd.document.write('<html><head><meta http-equiv="Content-Type" content="text/html; charset=windows-1251" /><title>Справка по wiki-формату</title></head><body style="margin:0; padding:0;">');
	//wnd.document.write('<div align="center" style="width:100%">');
	wnd.document.write('<div style="padding: 4px; background-color: rgb(240, 240, 240);"><h3>Справка по wiki-формату</h3><p>Пустая строка - новый абзац. \\\\ - перевод строки.</p><p><b>Выделение текста:</b> <b>**жирный текст**</b>, <i>//курсив//</i>,<br>__ <u>подчеркнутый текст</u> __, --<s>зачеркнутый текст</s>--, <tt>##шрифт печатной машинки##</tt>.</p><p><b>Ссылки:</b> [[метка]] - ссылка на домашнюю страницу метки (энциклопедия). [[http://www.domain.ru/aaa/bbb.htm]] - внешняя ссылка.<br>[[метка|текст ссылки]], [[http://www.../b.htm|текст ссылки]] - так можно задать текст ссылки.</p><p><b>Картинки:</b> {{метка}} - картинка из галереи. {{http://www.../i.jpg}} - внешняя картинка.<br>{{метка|текст}}, {{http://www.../i.jpg|текст}} - так можно задать альтернативный текст.<br>{{метка|100x100}}, {{http://www.../i.jpg|текст|100}} - так можно задать размер картинки.</p><p>---- (четыре минуса в строке) - горизонтальная разделительная линия.</p><p>* пункт списка<br># пункт пронумерованного списка<br>&gt; цитата<br>: левый отступ<br>&gt;*# списки, цитаты и отступы могут быть вложенными</p><p>{{{ внутри тройных фигурных скобок текст не форматируется }}}</p><p>| Это | таблица |<br>| из двух | колонок. |</p><p>Чтобы отключить функцию любого спецсимвола введите перед ним знак ~</p></div>');
	wnd.document.write('<p><a href="javascript:window.close();">Закрыть окно</a></p>');
	//wnd.document.write('</div>');
	wnd.document.write('</body></html>');
	wnd.document.close();
	wnd.focus();
}

var rangeG=null;
var cursorPosG=null;

function saveCursorPosition(){
  var control = document.getElementById('messText');
  var scroll_top = control.scrollTop;
  if(!!document.selection){
    control.focus();
    rangeG = (this.range) ? this.range : document.selection.createRange();
  }else if(!!control.setSelectionRange){
    cursorPosG=control.selectionEnd;
  }
  control.scrollTop = scroll_top;
}

function replaceSelectionW(text){
  var control = document.getElementById('messText');
  var scroll_top = control.scrollTop;
  if(!!document.selection){
    control.focus();
    var range = rangeG;
    range.text = text;
    range.select();
  }else if(!!control.setSelectionRange){
    cursorPos=cursorPosG;
    control.selectionStart = cursorPosG;
    control.selectionEnd = cursorPosG;
    control.value = control.value.substring(0,control.selectionStart) + text + control.value.substring(control.selectionEnd);
    control.setSelectionRange(control.selectionStart + text.length,control.selectionStart + text.length);
    control.focus();
    control.selectionStart = cursorPos + text.length;
    control.selectionEnd = cursorPos + text.length;
  }
  control.scrollTop = scroll_top;
}


function showWikiDialog(dName,event){
  saveCursorPosition();
  var ref= $('#messText').position();
  $('#'+dName).show();
  $('#'+dName).css( {
    "left": (ref.left+100) + "px",
    "top":(ref.top+30) + "px",
    "visibility": "visible"
  } );
  $('#we_wrapper').show();
  $('#we_wrapper').css( {
    "visibility": "visible",
    "height":($(document.body).height())+"px",
    "opacity": "0.25",
    "width": ($(document.body).width())+"px"
  } );
}

function hideWikiDialog(dName,flag){
  var t = "";
  if(flag){
    //"[[";
    t+= $('#'+dName).find('#url').attr('value');
    if($('#'+dName).find('#txt').attr('value').length>0){
      t+='|'+ $('#'+dName).find('#txt').attr('value');
    }
    if($('#'+dName).find('#picwidth').length>0 && $('#'+dName).find('#picwidth').attr('value').length>0){      t+='|'+ $('#'+dName).find('#picwidth').attr('value');
    }
    if(t.length>0){
      if(dName=='wikiEditorLinkDialog'){
        t='[['+t+']]';
      }
      if(dName=='wikiEditorImageDialog'){
        t='{{'+t+'}}';
      }
    }
    replaceSelectionW(t);
  }

  $('#'+dName).find('#url').attr('value', '');
  $('#'+dName).find('#txt').attr('value', '');

$('#'+dName).css( {
    "visibility": "hidden"
  } );
  $('#'+dName).hide();
  $('#we_wrapper').css( {
    "visibility": "hidden"
  } );
  $('#we_wrapper').hide();
}

function FormClick (objButton) {
var str = $("#messageForm").serialize();
$("#messages").html('Загрузка:');
$.post('/fzcore/ajax', str, function(data) {
$("#messages").html(data);
});
return false;
}


function FormClick2 (formID,divID) {
  var str = $("#"+formID).serialize();

  $("#"+divID).html('Загрузка:');
  $.post("/fzcore/ajax", str, function(data) {
    $("#"+divID).html(data);
  });
  return false;
}