// Select menus

flag = false;
curentlySelect = null;

function HideSelect()
{
	if (flag)
	{
		curentlySelect.style.display = 'none';
		curentlySelect.father.className = "select";
		flag = false;
		currentlySelect = null;
		document.body.onclick = null;
	}
}

function SelectBox(root, hiddenElement)
{
	flag = false;
	this.root = document.getElementById(root);
	this.hidden = document.getElementById(hiddenElement);
	this.topValue = this.root.getElementsByTagName('span')[0];
	this.option = this.root.getElementsByTagName('li');
}

SelectBox.prototype.GetValue = function()
{
	var v = this.option[0].id;
	var t = this.option[0].innerHTML;
	var arr = this.option
	for ( var i=0; i<arr.length; i++ )
	{
		if ( arr[i].className=='active' )
		{
			v = arr[i].id;
			t = arr[i].firstChild.data;
			break;
		}
	}
	v = v.substr( 1, v.length-1 );
	this.ChangeValue(v, t);
	this.ChangeSelected();
	this.root.onclick = this.RootClicker;
}

SelectBox.prototype.ChangeValue = function(value, title)
{
	this.topValue.innerHTML = title;
	this.hidden.value = value;
}

SelectBox.prototype.ChangeSelected = function ()
{
	var self = this;
	for ( var i=0; i<this.option.length; i++ )
	{
		this.option[i].onclick = function()
		{
			var str = this.id;
			str = str.substr( 1, str.length-1 );
			self.ChangeValue(str, this.firstChild.data);
		}
		this.option[i].onmouseover = function()
		{
				this.className = 'mouseover';
		}
		this.option[i].onmouseout = function()
		{
				this.className = '';
		}
	}
}

SelectBox.prototype.RootClicker = function (ev)
{
	var obj = this.getElementsByTagName('ul')[0];
	if (obj.style.display != 'block')
	{
		HideSelect();
		flag = true;
		curentlySelect = obj;
		curentlySelect.father = this;
		obj.style.display = 'block';
		obj.style.width = (obj.parentNode.offsetWidth-12)+"px";
		document.body.onclick = HideSelect;
		(window.event) ? event.cancelBubble = true : ev.stopPropagation();
	}
	this.className = "select focus";
}

var selectsArray = new Array();

initSelects = function()
{
	var selects = document.getElementsByTagName( "DIV" );
	var count = selects.length;
	var c = 0;
	var cnt = 0;
	while( cnt<count )
	{
		if ( selects[cnt] && selects[cnt].className=="select" )
		{
			var id = selects[cnt].id;
			id = id.substr( 0, id.length-6 );
			selectsArray[c] = new SelectBox( id+'Select', id+'Input' );
			selectsArray[c].GetValue();
			selectsArray[c].root.style.zIndex = 999-c;
			c ++;
		}
		cnt++;
	}
};

// End.

// Text + Language menus

initInputs = function()
{
	var inputs = document.getElementsByTagName( "DIV" );
	var count = inputs.length;
	var c = 0;
	var cnt = 0;
	while( cnt<count )
	{
		if ( inputs[cnt] && inputs[cnt].className=="inputLang" )
		{
			var langs = document.createElement( "div" );
			langs.className = "langs";
			var inp = inputs[cnt];
			var fields = inp.getElementsByTagName( "INPUT" );
			for ( var idx=0; idx<fields.length; idx++ )
			{
				var lang = fields[idx].id;
				lang = lang.substr( lang.length-2, 2 );
				var img = new Image();
				img.src = "images/flags/"+lang+".gif";
				if ( !idx ) { img.className = "active"; fields[idx].style.display = "inline"; }
				img.inpName = inp.id;
				img.lang = lang;
				img.onclick = function()
				{
					var inp = document.getElementById( this.inpName );
					var fields = inp.getElementsByTagName( "INPUT" );
					for ( var idx=0; idx<fields.length; idx++ )
					{
						fields[idx].style.display = "none";
						if ( fields[idx].id==this.inpName+"_"+this.lang ) fields[idx].style.display = "inline";
					}
					var imgs = inp.getElementsByTagName( "IMG" );
					for ( idx=0; idx<imgs.length; idx++ )
					{
						imgs[idx].className = "";
					}
					this.className = "active";
				}
				langs.appendChild( img );
			}
			inp.appendChild( langs );
		}
		cnt++;
	}
}

initTextareas = function()
{
	var inputs = document.getElementsByTagName( "DIV" );
	var count = inputs.length;
	var c = 0;
	var cnt = 0;
	while( cnt<count )
	{
		if ( inputs[cnt] && inputs[cnt].className=="textareaLang" )
		{
			var langs = document.createElement( "div" );
			langs.className = "langs";
			var inp = inputs[cnt];
			var fields = inp.getElementsByTagName( "TEXTAREA" );
			for ( var idx=0; idx<fields.length; idx++ )
			{
				var lang = fields[idx].id;
				lang = lang.substr( lang.length-2, 2 );
				var img = new Image();
				img.src = "images/flags/"+lang+".gif";
				if ( !idx ) { img.className = "active"; fields[idx].style.display = "inline"; }
				img.inpName = inp.id;
				img.lang = lang;
				img.onclick = function()
				{
					var inp = document.getElementById( this.inpName );
					var fields = inp.getElementsByTagName( "TEXTAREA" );
					for ( var idx=0; idx<fields.length; idx++ )
					{
						fields[idx].style.display = "none";
						if ( fields[idx].id==this.inpName+"_"+this.lang ) fields[idx].style.display = "inline";
					}
					var imgs = inp.getElementsByTagName( "IMG" );
					for ( idx=0; idx<imgs.length; idx++ )
					{
						imgs[idx].className = "";
					}
					this.className = "active";
				}
				langs.appendChild( img );
			}
			inp.appendChild( langs );
		}
		cnt++;
	}
}

// End.


// RTF

rtfArray = new Array();

function RTF( id, c )
{
	var frameobjid = id+"IFrame"; inp = id+"Input";
	this.doc = window.frames[frameobjid].document;
	this.doc.designMode = 'On';
	this.inp = document.getElementById( inp );
	
	this.filesList = new Dialog( "filesList", "dialog", "250", "150", "Files", "ajax", "index.php?m=files&editor=1&viewfiles=1&c="+c, "rtfArray["+c+"].filesList" );
	this.imgList = new Dialog( "imgList", "dialog", "250", "150", "Images", "ajax", "index.php?m=files&editor=1&viewimages=1&c="+c, "rtfArray["+c+"].imgList" );
	
	var rtf = document.getElementById( id );
	var par = rtf.getElementsByTagName( "P" )[0];
	var links = par.getElementsByTagName( "A" );
	var count = links.length;
	var c = 0;
	for ( var cnt=0; cnt<count; cnt++ )
	{
		if ( links[cnt] )
		{
			links[cnt].rtf = this;
		}
	}
}

RTF.prototype.exec = function( format, params )
{
	if ( params && format != 'InsertImage' )
	{
		this.doc.execCommand( format, false, null );
	}
	else
	{
		switch ( format )
		{
			case 'createlink':
				var url = window.prompt( "URL:", "" );
				if ( !url ) return;
				if ( !url.match(/^((http)|(ftp))(.+?)$/i) ) url='http://'+url;

				this.doc.execCommand( "Unlink", false, null );
				this.doc.execCommand( "CreateLink", false, url );
			break;
			case 'InsertImage':
				this.doc.execCommand( "InsertImage", false, params );
			break;
		}
	}
}

RTF.prototype.getSource = function()
{
	if( this.doc.body )  this.inp.value = this.doc.body.innerHTML;
}

RTF.prototype.addFile = function( url )
{
	this.doc.execCommand( "CreateLink", false, url );
	this.filesList.close();
}

RTF.prototype.addImage = function( url )
{
	this.doc.body.focus();
	this.exec( 'InsertImage', url );
	this.doc.body.focus();
	this.imgList.close();
}

RTF.prototype.openAddFile = function()
{
	this.filesList.open();
}

RTF.prototype.openAddImage = function()
{
	this.imgList.open();
}

function initRTFs()
{
	var inputs = document.getElementsByTagName( "div" );
	var count = inputs.length;
	var c = 0;
	var cnt = 0;
	//alert( count );
	while( cnt<count )
	{
		//alert( cnt );
		if ( inputs[cnt] && inputs[cnt].className=="RTF" )
		{
			var id = inputs[cnt].id;
			rtfArray[c] = new RTF( id, c );
			rtfArray[c].getSource();
			c ++;
		}
		cnt++;
	}
	cnt = 0;
	while( cnt<count )
	{
		if ( inputs[cnt] && inputs[cnt].className=="RTFLang" )
		{			
			var langs = document.createElement( "div" );
			langs.className = "langs";
			var inp = inputs[cnt];
			var fields = inp.getElementsByTagName( "DIV" );
			for ( var idx=0; idx<fields.length; idx++ )
			{
				var lang = fields[idx].id;
				lang = lang.substr( lang.length-2, 2 );
				var img = new Image();
				img.src = "images/flags/"+lang+".gif";
				if ( !idx ) { img.className = "active"; fields[idx].className="RTFactive"; }
				img.inpName = inp.id;
				img.lang = lang;
				img.onclick = function()
				{
					var inp = document.getElementById( this.inpName );
					var fields = inp.getElementsByTagName( "DIV" );
					for ( var idx=0; idx<fields.length; idx++ )
					{
						fields[idx].className = "RTF";
						if ( fields[idx].id==this.inpName+"_"+this.lang ) fields[idx].className = "RTFactive";
					}
					var imgs = inp.getElementsByTagName( "IMG" );
					for ( idx=0; idx<imgs.length; idx++ )
					{
						imgs[idx].className = "";
					}
					this.className = "active";
				}
				langs.appendChild( img );
			}
			inp.appendChild( langs );
		}
		cnt++;
	}
}

function getSources()
{
	var count = rtfArray.length;
	var cnt = 0;
	while( cnt<count )
	{
		if ( rtfArray[cnt] )
		{
			rtfArray[cnt].getSource();
		}
		cnt++;
	}
}

// End.