﻿function isImageOk(img) {
	// IE test
	if (!img.complete) { return false; }

	// gecko test: loading finished but failed
	if (typeof img.naturalWidth != "undefined" && img.naturalWidth == 0) { return false; }

	// test for konqueror and opera

	// note that img.width must not be defined in the html with a width="..."
	// for this to work.

	// konq seems to give "broken images" width 16, presumably an icon width
	// this test would probably work in gecko too, *except for very small images*
	if (typeof img.width == 'undefined' || img.width <=  16) { return false; }

	// No other way of checking: assume it's ok.
	return true;
}

function smallImgURL(fullImgURL) {
var pos=fullImgURL.lastIndexOf("/")+1;
return fullImgURL.substring(0,pos)+"s"+fullImgURL.substring(pos);
}

function normSpaces(txt) {
  var rSmiles=/(( >\( )|( :D )|( B\) )|( :\'\( )|( <_< )|( \^_\^ )|( :\( )|( :\) )|( :o )|( :p )|( \%\) )|( ;\) )|( :\w+: ))/gm;
//  var delim='\f';
  txt=txt.replace(rSmiles,'\f $1 \f');
  txt=txt.replace(/\ \ +/gm,' ');
  txt=txt.replace(/\ +(([\.\,])|(\!^\!))/gm,'$1');
  txt=txt.replace(/([^\ -\~][^\ -\~][^\ -\~]\.)([^\ -\~])/gm,'$1 $2');
  txt=txt.replace(/([\,\!\?])([^\ -\~])/gm,'$1 $2');
  txt=txt.replace(/\.\.([^\.])/gm,'.. $1');
//  txt=txt.replace(/\: \:/gm,':  :');
  txt=txt.replace(/\f/gm,'');

  txt=txt.replace(/([\$\]\>])[\,\.\ ]*((\$IMAGE)|(\[[uU][rR][lL])|(\<[aA] ))/gm,'$1 $2');

// ( ... )
  txt=txt.replace(/([^\ -\~])\(\ ?/gm,'$1 (');
//  txt=txt.replace(/\ \)/gm,')');
  txt=txt.replace(/\ ?\)([^\ -\~])/gm,') $1');

  txt=txt.replace(/т\.к\./gm,'так как');
  txt=txt.replace(/(К|к)абел/gm,'$1обел');

//  txt=txt.replace(/\.jpg\.html/gi,'.jpg');
  txt=txt.replace(/<a [^>]*radikal.ru\/?[^0-9a-zA-Z\/]+[^>]*>(<img [^>]+>)<\/a>/gi,'$1');  
  txt=txt.replace(/\[url=[^\]]*radikal.ru\/?\](\[img.[^\]]+\])\[\/url\]/gi,'$1');  
  txt=txt.replace(/keep4u.ru\/full(\/20[0-9]{2}\/[0-9]{2}\/[0-9]{2})(\/[0-9a-z]{2})?\/([0-9a-z]{2})(([a-z0-9])+)\/jpg/gi,'keep4u.ru\/imgs/b$1/$3/$3$4.jpg');  

  return txt;
}


function normSpacesIn(controlID) {
 var ctrl=$('#'+controlID);
 ctrl.val(normSpaces(ctrl.val()));
}

function hasExtLinks(txt){
  var links=txt.match(/(href=[^>]+)|(\[url.[^\]]+\])/gi);
  if(!links) return false;
  for(var i in links){
    var url=links[i].toLowerCase();
    if(url.indexOf('http')>=0 && url.indexOf('poteryashka.')<0) 
      return true;
  }
  return false;
}

function hasExtLinksIn(controlID){
  return hasExtLinks($('#'+controlID).val());
}

function trimInput(controlID) {
 var ctrl=$('#'+controlID);
 ctrl.val(ctrl.val().replace(/^(\n|(<br ?\/?>))+/,'').replace(/(\n|(<br ?\/?>))+$/,''));
}

function getEditArea(){
 var win=document.getElementById('idContentoEditmessage');
 if(!win) win=document.getElementById('idContentoEdit1');
 if(win)
 return win.contentDocument.body;
 else 
 return document.getElementById('message');
}

function _getimage(n){ 
// uses global variables imgWidth, imgHeight, allowSetImgSize
 if(typeof imgWidth == 'undefined') imgWidth=300;
 if(typeof imgHeight == 'undefined') imgHeight=300;
 if(typeof allowSetImgSize == 'undefined') allowSetImgSize=false;
 var t = document.getElementById('fln'+n); 
 if (t.value){ 
 ext = new Array('png','jpg','gif','jpeg','jpe'); 
 var img = t.value.replace(/\\/g,'/'); 
 var pic = img.toLowerCase(); 
 var ok=0; 
 for (i=0;i<ext.length;i++){m = pic.indexOf('.' + ext[i]);if (m != -1) {ok=1;break;}} 
 if (ok==1){
 var code='$IMAGE'+n+'$'; 
 document.getElementById('iCode'+n).innerHTML=
 ' <input type="text" readonly onClick="select(this)" name="h1" value="'+code+'" title="Вставьте этот код в любое место сообщения" size="'
 + (code.length)
 + '" style="font-family:\'courier new\';direction:ltr;text-align:center;background:#F0F0F0;color:#0000FF;border:1px inset"> '
+ (allowSetImgSize ?
   '<input style="font-size:7pt;width:30px;" type="text" name="iws'+n+'" value="' + imgWidth + '" size="4" maxlength="4" title="Width">'
 + 'x<input style="font-size:7pt;width:30px;" type="text" name="ihs'+n+'" value="' + imgHeight + '" size="4" maxlength="4" title="Height">' 
:
   '<input type="hidden" name="iws'+n+'" value="' + imgWidth + '">'
 + '<input type="hidden" name="ihs'+n+'" value="' + imgHeight + '">'
);
 if(navigator.imgSize){
  var url=$('#del_img'+n).next().next().attr('href');
  if(url){
   var shortURL=url.replace(/^http\:\/\/[^\/]+(\/.*$)/,'$1');
   if(navigator.imgSize[shortURL]) 
    delete navigator.imgSize[shortURL];
  }
 }
 var objMess=getEditArea();
 var textHolder=(objMess.nodeName=="TEXTAREA"?"value":"innerHTML");
 var br=(objMess.nodeName=="TEXTAREA"?"\n":"<br>");
 var editText=objMess[textHolder];
 if(editText.indexOf(code)<0) {
 if(editText.match(/(\n|(<br>))\$IMAGE[0-9]+\$$/))
  editText+=' ';
 else {
  var leng=editText.length;
  if(editText.substr(leng-2*br.length)!=(br+br)){
   if(editText.substr(leng-br.length)==br)
    editText+=br;
   else
    editText+=(br+br);
 }
 }
 objMess[textHolder]=editText+code; 
 }
 } 
 else {document.getElementById('iCode'+n).innerHTML='';_uWnd.alert('Недопустимый формат изображения','',{w:230,h:80,tm:3000});}} 
 else {document.getElementById('iCode'+n).innerHTML='';} 
} 



function bindModifyOnSave() {
 $("form").bind("submit", function(event){
  $('textarea').each(function(el) { $(this).val(normSpaces($(this).val())) });
  return true;
 });
}

function correctIEselectBug(){
   var ocats=document.getElementById("cus1");
   if(!ocats || typeof document.documentElement.style.maxHeight != "undefined")
      return;
   ocats=ocats.parentNode.parentNode;
   ocats.innerHTML+="<iframe style='display:none;display/**/:block;position:absolute;top:0;left:0;z-index:-1;filter:mask();width:250px;height:250px;'></iframe>"
}

function currTime(){
  var time=Math.round((new Date()).getTime()/1000);
  if(window.timeDiff) time+=window.timeDiff;
  return time;
}

function n2(num){
 return (num<10 ? '0' : '') + num;
}

function newPM_alert(pmCount){
// if(!navigator.pmCount || pmCount>navigator.pmCount)
// $(document).ready(function(){
// alert('Вам пришло Личное Сообщение.\nДля просмотра щелкните линк "Личные сообщения" в меню заголовка страницы');
  w_newPM = new _uWnd('newPM','Новые Личные Сообщения',230,100,{close:1,min:0,max:0,align:'center',alert:1,autosize:1,fixed:1,shadow:0,resize:0,nomove:0,hidden:0,notaskbar:1,fadetype:2,fadespeed:500,fadeclosetype:2,fadeclosespeed:500},
      (pmCount=="1" ? 'Вам пришло Личное Сообщение!' : 'У вас '+pmCount+' новых личных сообщени' + 
        (pmCount=="2" || pmCount=="3" || pmCount=="4" ?'я':'й')+'!')
      +'<br><br><input type="button" onclick="window.open(\'/index/14\',\'pmw\',\'scrollbars=1,top=0,left=0,resizable=1,width=680,height=350\');w_newPM.close(); " value="Читать">'
      +'<p>Чтобы просмотреть Личные Сообщения позднее, используйте ссылку "Личные сообщения" в меню заголовка страниц</p>'
  );
// _uWnd.alert('<?if($UNREAD_PM$=1)?>Вам пришло Личное Сообщение!<?else?>У вас $UNREAD_PM$ новых личных сообщени<?if($UNREAD_PM$<5)?>я<?else?>й<?endif?>!<?endif?><br><br><input type="button" onclick="window.open(\'/index/14\',\'pmw\',\'scrollbars=1,top=0,left=0,resizable=1,width=680,height=350\'); " value="Читать">',
// 'Уведомление',
// {w:230,h:100,tm:10000});
  navigator.pmCount=pmCount;
// });
}

function getQueryString() {
// creates queryString as hash of key=value from URL
 queryString=[];
 var a = location.search.slice(1).split(/&|=/); 
 for ( var i=0; i<a.length; i++) 
  queryString[a[i]] = unescape(a[++i]); 
}

function sendPM(user,subj,text){
 if(window.userName)
   $.post('/index/',{a:18,s:user,subject:subj,message:text});
}

function admAlert(subject,text){
 var subj="info: "+subject;
 var txt=text+'\n\npage: '+window.location.href+'\nuser: ' + window.userName;

 sendPM('yuri',subj,txt);
// sendPM('admin',subj,txt);
}

function help(fileName,width,height) {
// if fileName contains spaces then this is the text of help
 new _uWnd('HelpWd','Помощник',width ? width: 350, height ? height : 350,
  {align:'justify',closeonesc:1},
  fileName.indexOf(' ') > 0 ? fileName : {url:'/help/'+fileName+'.html',xml:false});
// admAlert('Помощь вызвана','help: '+fileName);
}

function wOpen(url) {
   return window.open(url,null,'toolbar=1,location=1,menubar=1,scrollbars=1,resizable=1,status=1,fullscreen=0');
}

function log(msg){
  var logBox=document.getElementById('logBox');
  if(logBox) logBox.value+=msg+'\n';
}
