//---------------------------------------------------------------------------
//                   GLOBAL VARIABLE
//---------------------------------------------------------------------------
var arrUploadFile=[];
//---------------------------------------------------------------------------
//                   FILE FUNCTION
//---------------------------------------------------------------------------
function createIFrame(){
  var id='f'+Math.floor(Math.random()*99999);
  var div=document.createElement('div');
  div.innerHTML='<iframe style="display:none" src="about:blank" id="'+id+'" name="'+id+'" onload="sendComplete(\''+id+'\')"></iframe>';
  document.body.appendChild(div);
  return $('#'+id)[0];
}

function sendForm(form,url,func,arg){
  if(!document.createElement){return;}
  if(typeof(form)=="string"){form=$('#'+form)[0];}
  var frame=createIFrame();
  frame.onSendComplete=function(){uploadComplete(arg,getIFrameXML(frame),form);}
  form.setAttribute('target',frame.id);
  form.setAttribute('action',url);
  form.submit();
}

function sendComplete(id){
  var iframe=$('#'+id)[0];
  if(iframe.onSendComplete&&typeof(iframe.onSendComplete)=='function'){
    iframe.onSendComplete();
  }
}

function getIFrameXML(iframe){
  var doc=iframe.contentDocument;
  if(!doc&&iframe.contentWindow){doc=iframe.contentWindow.document;}
  if(!doc){doc=window.frames[iframe.id].document;}
  if(!doc){return null;}
  if(doc.location=="about:blank"){return null;}
  if(doc.XMLDocument){doc=doc.XMLDocument;}
  return doc;
}

function uploadComplete(element,doc,form){
  if(!doc){ return null; }
  if(typeof(element)=="string"){ var ResDiv=$('#res'+element)[0]; } 
  else{ var ResDiv=element; }
  var res=doc.documentElement.firstChild.nodeValue;
  var Txt='<font size="-1" color="';
  switch(res){
    case '0':
	    Txt += '#0F0">Файл успешно загружен';
		form.style.display='none';
		var DelSpan=$('#del'+element)[0];
		DelSpan.style.display='';
		var edtFileName=$('#fn'+element)[0];
		var FileName=edtFileName.value;
		arrUploadFile.push([element,FileName]);
		break;
	case '1': Txt += '#F00">Файл незагружен'; break;
	case '2': Txt += '#F00">Размер файла превышает максимальный'; break;
	case '4': Txt += '#F00">Файл загружен некоректно'; break;
	case '5': Txt += '#F00>Ошибка при копированиии файла'; break;
	case '6': Txt += '#F00>Неверный формат файла'; break;
	default: Txt += '#F00>'+res;
  }
  Txt += '</font> ';
  ResDiv.innerHTML=Txt;
}

function DelUploadFile(FileName,FormID){
  var NeedDel=false;
  for(var i=0,Ln=arrUploadFile.length; i < Ln; i++){
    var Item=arrUploadFile[i];
    if((Item[0]==FormID) &&(Item[1]==FileName)){
      NeedDel=true;
      break;
    }
  }
  if(NeedDel){
    $.ajax({url:'/core/ajx/delupfile.php?fn='+FileName,type:'GET',dataType:'text',error:function(){DelUploadFileOnError(FormID);},success: function(data){DelUploadFileOnSuccess(data,FormID)}});
  }
}

function DelUploadFileOnError(FormID) {
  var contentDiv=$('#del'+FormID)[0];
  contentDiv.innerHTML="Ошибка при удалении: error";
}

function DelUploadFileOnSuccess(response,FormID){
  if(response.indexOf('OK')>-1){
    var form=$('#'+FormID)[0];
    if(form){form.style.display='';}
    var delspan=$('#del'+FormID)[0];
    delspan.style.display='none';
  } else{
    var delspan=$('#del'+FormID)[0];
    delspan.innerHTML="Ошибка при удалении: "+response;
  }
}
//---------------------------------------------------------------------------
//                   EDITOR FUNCTION
//---------------------------------------------------------------------------
//За основу взят объект,написанный автором Sardar <Sardar at vingrad.ru>
//Массив экземпляров объекта
var textAreaSelectionObjects=[];
// Получаем экземпляр объекта
function getTextAreaSelection(id){ // Получаем объект synhe
	if(typeof(textAreaSelectionObjects[id])=="undefined"){
		textAreaSelectionObjects[id]=new textAreaSelectionHelper(id);
	}
	return textAreaSelectionObjects[id];
}
// Собственно объект,принимающий в качестве аргумента ID текстового поля
function textAreaSelectionHelper(id){
	var obj=$('#'+id)[0];
	this.target=obj;
	// Создаем свойства carretHandler для доступа к объекту в контексте узла
	// из обработчиков событий
	this.target.carretHandler=this;
	// Добавляем обработчик событий
	this.target.onchange=_textareaSaver;
	this.target.onmousedown=_textareaSaver;
	this.target.onmouseup=_textareaSaver;
	this.target.onkeyup=_textareaSaver;
	this.target.onfocus=_textareaSaver;
	if(document.attachEvent) this.target.onselect=_textareaSaver;
	// Свойства для запоминания позиции выделения
	this.start=-1;
	this.end=-1;
	this.scroll=-1;
	this.iesel=null;
	this.Prepared=false;
}
// В прототип записываем методы
textAreaSelectionHelper.prototype={
	// Получим выделение
	getSelectedText : function(){
		return this.iesel? this.iesel.text:(this.start >= 0 && this.end > this.start)? this.target.value.substring(this.start,this.end) : "";
	},
	// Установим текстовые фрагменты до выделения - text
	// и после него,если нужно - secondtag
	setSelectedText : function(text,secondtag){
		secondtag=SetEmptyStrIfUndefined(secondtag);
		if(this.iesel){
			var l=this.iesel.text.length;
			this.iesel.text=text+this.iesel.text+secondtag;
			this.iesel.moveEnd("character",-secondtag.length);
			this.iesel.moveStart("character",-l);   
			this.iesel.select();
		} else if(this.start >= 0 && this.end >= this.start){
			var left=this.target.value.substring(0,this.start);
			var right=this.target.value.substr(this.end);
			var scont=this.target.value.substring(this.start,this.end);
			this.target.value=left+text+scont+secondtag+right;
			this.end=this.target.selectionEnd=this.start+text.length+scont.length;
			this.start=this.target.selectionStart=this.start+text.length;    
			this.target.scrollTop=this.scroll;
			this.target.focus();
		} else{
			this.target.value += text+secondtag;
			if(this.scroll >= 0) this.target.scrollTop=this.scroll;
		}
	},
	setList : function(MainTagB,MainTagE,ChildTagB,ChildTagE){
	  MainTagB=SetEmptyStrIfUndefined(MainTagB);
		MainTagE=SetEmptyStrIfUndefined(MainTagE);
		ChildTagB=SetEmptyStrIfUndefined(ChildTagB);
		ChildTagE=SetEmptyStrIfUndefined(ChildTagE);
		if(this.iesel){
			var SelTxt=GetStringFromArr(this.iesel.text.split('\n'),ChildTagB,ChildTagE,true);
			var l=SelTxt.length;
			this.iesel.text=MainTagB+SelTxt+MainTagB;
			this.iesel.moveEnd("character",-MainTagB.length);
			this.iesel.moveStart("character",-l);   
			this.iesel.select();
		} else if(this.start >= 0 && this.end >= this.start){
			var left=this.target.value.substring(0,this.start);
			var right=this.target.value.substr(this.end);
			var scont=this.target.value.substring(this.start,this.end);
			scont=GetStringFromArr(scont.split('\n'),ChildTagB,ChildTagE,true);
			this.target.value=left+MainTagB+scont+MainTagE+right;
			this.end=this.target.selectionEnd=this.start+scont.length+scont.length;
			this.start=this.target.selectionStart=this.start+scont.length;    
			this.target.scrollTop=this.scroll;
			this.target.focus();
		} else{
			this.target.value += MainTagB+ChildTagB+ChildTagE+MainTagE;
			if(this.scroll >= 0) this.target.scrollTop=this.scroll;
		}
	},
	getText : function(){ return this.target.value; },
	setText : function(text){ this.target.value=text; }
}
function _textareaSaver(){
    this.Prepared=false;
	if(document.selection){
		this.carretHandler.iesel=document.selection.createRange().duplicate();
	} else if(typeof(this.selectionStart) != "undefined"){
		this.carretHandler.start=this.selectionStart;
		this.carretHandler.end=this.selectionEnd;
		this.carretHandler.scroll=this.scrollTop;
	} else{
		this.carretHandler.start=this.carretHandler.end=-1;
	}
}
// tools functions
function SetEmptyStrIfUndefined(Txt){
	return typeof(Txt)=='undefined' ? '' : Txt;
}

function GetStringFromArr(Arr,TagB,TagE,NeedBR){
	var Res='';
	TagE=SetEmptyStrIfUndefined(TagE);
	for(var i=0,Ln=Arr.length; i < Ln; i++){
		Res += TagB+Arr[i]+TagE;
		if(NeedBR){ Res += '\n'; }
	}
	return Res;
}

// Клиентские функции,хотя можно обойтись и без них
function SetTags(id,first,second){
	getTextAreaSelection(id).setSelectedText(first,second);
}

function setList(id,Tag){
	getTextAreaSelection(id).setList('<'+Tag+'>','<\/'+Tag+'>','<li>','<\/li>');
}

function insertLINK1(id,href,title,target){
  var Txt='<a href="'+href+'" title="'+title+'" ';
	if((typeof(target)=='string') &&(target != '')){ Txt += 'target="_blank"'; }
	Txt += '>';
	getTextAreaSelection(id).setSelectedText(Txt,'<\/a>');
}

function insertImage1(id,FileName,title,width,height,align){
  var Txt='<img class="NewImg" src="/inf/image/'+FileName+'" title="'+title+'" alt="'+title+'" width="'+width+'" height="'+height+'"';
  switch(align){case "1":Txt+=' align="left"';break;case "2":Txt+=' align="right"';break;}Txt+='>';
	getTextAreaSelection(id).setSelectedText(Txt);AddSendForm('UploadFrame',FileName);
}

function insertLINK(id){
	var wnd=window.open("",'linkwindow','width=360,height=120','True');
	wnd.document.write('<HTML><HEAD><link rel="stylesheet" type="text/css" href="../css/main.css"><TITLE>Настройка ссылки</TITLE></HEAD><BODY>');
	wnd.document.write("<form action=#><table>");
	wnd.document.write("<tr><td align=right>href </td><td><input type=text name=url size=40 value='http://'></td></tr>");
	wnd.document.write("<tr><td align=right>title </td><td><input type=text name=title size=40 value=''></td></tr>");
	wnd.document.write("<tr><td align=right>target </td><td><input type=text name=target size=40 value='_blank'></td></tr><tr><td colspan=2>_blank - в новом окне,если пустое то в текущем</td></tr>");
	wnd.document.write('<tr><td align=center colspan=2><input type=button onClick="window.opener.insertLINK1(\''+id+'\',document.forms[0].elements[0].value,document.forms[0].elements[1].value,document.forms[0].elements[2].value,document.forms[0].elements[3].value);window.close();" value="Ok" style="width:80px;">');
	wnd.document.write(" <input type=button onClick='window.close();' value='Отмена' style='width:80px;'></td></tr>");
	wnd.document.write("</table></form></BODY></HTML>");
}

function insertImage(id){
	var wnd=window.open("",'linkwindow','width=450,height=200','True');
	wnd.document.write('<HTML><HEAD><link rel="stylesheet" type="text/css" href="../css/main.css"><TITLE>Настройка изображения</TITLE></HEAD><BODY>');
	wnd.document.write("<form action=#><table>");
	wnd.document.write("<tr><td align=right>Название файла</td><td><input type=text name=url size=40 value=''></td></tr>");
	wnd.document.write("<tr><td align=right>Описание рисунка (Title)</td><td><input type=text name=title size=40 value=''></td></tr>");
	wnd.document.write("<tr><td align=right>Шырина(px)</td><td><input type=text name=width size=40 value=''></td></tr>");
	wnd.document.write("<tr><td align=right>Высота(px)</td><td><input type=text name=height size=40 value=''></td></tr>");
  wnd.document.write("<tr><td align=right>Вирівнювання</td><td><select><option value=\"0\">Немає<option value=\"1\">Зліва<option value=\"2\">Зправа</select></td></tr>");
	wnd.document.write('<tr><td align=center colspan=2><input type=button onClick="window.opener.insertImage1(\''+id+'\',document.forms[0].elements[0].value,document.forms[0].elements[1].value,document.forms[0].elements[2].value,document.forms[0].elements[3].value,document.forms[0].elements[4].value);window.close();" value="Ok" style="width:80px;">');
	wnd.document.write("<input type=button onClick='window.close();' value='Отмена' style='width:80px;'></td></tr>");
	wnd.document.write("</table></form></BODY></HTML>");
}

function AddSendForm(ParentId,FileName){
  if(!document.createElement){ return false; }
  var FormId='frm'+Math.floor(Math.random()*99999);
  var div=document.createElement('div');
  div.innerHTML='<form class="frmAjUpFile frmInline" id="'+FormId+'" name="'+FormId+'" method="post" enctype="multipart/form-data" onsubmit="sendForm(this,\'/core/ajx/upfile.php\',uploadComplete,\''+FormId+'\');return true;">' +
                  '<input id="fn'+FormId+'" type=hidden name="FileName" value="'+FileName+'">' +
                  'Файл: <input type="file" name="upfile"><input type="submit" value="Загрузить"></form><span class="frmUpRes" id="res'+FormId+'"></span><span class="frmAjDel JSLnk" id="del'+FormId+'" style="display: none;" onClick="DelUploadFile(\''+FileName+'\',\''+FormId+'\')">Удалить</span>';
  var Parent=$('#'+ParentId)[0];
  if(Parent){
    Parent.appendChild(div);
  } else{
    document.body.appendChild(div);
  }
  return true;
}

// PREVIEWER
function Preview(id,PreviewID){
  var PreviewDiv=$('#'+PreviewID)[0];
  if(PreviewDiv){
    PreviewDiv.innerHTML=getTextAreaSelection(id).getText().replace(/\n/g,'<br>');
  }
  $('#PreviewTR').show();
}
function EnableEditor(ID,State){
var Edt=$(ID);
if(Edt){
 for(var i=0,Ln=Edt.length;i<Ln;i++){
 Edt[i].disabled=State;
}
}
}
