// General functions used in Componennts

$=getE=function(id){
	return document.getElementById(id);
}

function chr(cod) {
	return String.fromCharCode(cod);
}

function ord(character) {
	return character.charCodeAt(0);
}

Array.prototype.isIn = function(elem) {
	var i=this.length;
	while(--i>=0){
		if(this[i]==elem){
			return true;
		}
	}
	return false;
}
function addEvent(obj,type,fn,bubbling){
	bubbling=bubbling || false;
	if(window.addEventListener){
		//Standard
		obj.addEventListener(type,fn,bubbling);
		return true;
	}else if(window.attachEvent){
		//IE
		obj['e'+type+fn]=fn;
		obj.attachEvent('on'+type,function(){
			obj['e'+type+fn](window.event);
		});
		//obj.attachEvent('on'+type,fn);
		return true;
	}
	return false;
}
addListener=addEvent;

function removeEvent(obj,type,fn,bubbling){
	bubbling=bubbling || false;
	if(obj.removeEventListener){
		//Standard
		obj.removeEventListener(type,fn,false);
		return true;
	}else if(window.detachEvent){
		//IE
		obj.detachEvent('on'+type,obj['e'+type+fn]);
		obj['e'+type+fn]=null;
		return true;
	}
	return false;
}

function triggerEvent(obj,type){
	if(document.createEventObject){
		//IE
		if(obj.fireEvent){
			return obj.fireEvent('on'+type,document.createEventObject());
		}
	}else{
		//standard
		var evt=document.createEvent('HTMLEvents');
		evt.initEvent(type,true,true);//event type,bubbling,cancelable
		return !obj.dispatchEvent(evt);
	}
}

function docWrite(text){
	if(text!=null){
		text=text.split('\n');
		for(var i=0;i<text.length;i++){
			document.write(text[i].trim());
		}
	}
}

String.prototype.regQuote=function(){
    return this.replace(/([\\\.\+\*\?\[\^\]\$\(\)\{\}\=\!\<\>\|\:])/g,"\\$1");
}

String.prototype.trim=function(charList){
	if(charList==null){
		charList=" \r\n";
	}
	return this.replace(new RegExp("^["+charList+"]+|["+charList+"]+$","g"),"");
}

function popup(url,name,width,height,scroll,resizable){
	width=Math.min(screen.availWidth,width);
	height=Math.min(screen.availHeight-40,height);
	newwin=window.open(url, name, 'scrollbars='+(scroll || scroll==null || scroll=='yes' ? 'yes' : 'no')+', menubar=no, width='+width+', height='+height+', resizable='+(resizable ? 'yes' : 'no')+',toolbar=no, left='+(screen.availWidth-width)/2+', top='+(screen.availHeight-height-30)/2+', location=no, status=yes');
}

function setAlpha(obj,value){
	if(nav==1){
		if(obj.filters.alpha){
			obj.filters.alpha.opacity=value;
		}else{
			obj.style.filter+=" alpha(opacity="+value+")";
		}
	}else{
		obj.style.opacity=value/100;
	}
}

function checkKey(evt,str,multiline){
	var e=evt ? evt : event,allow={8:1,9:1,13:!multiline,27:1,33:1,34:1,35:1,36:1,37:1,38:1,39:1,40:1,46:1},allowWhich={0:1,8:1,9:1,13:1};
	//return e.ctrlKey || e.which===0 || e.which==8 || e.keyCode==13 || str!='' && (new RegExp("^["+str+"]$")).test(chr(e.which ? e.which : e.keyCode));
	//return e.ctrlKey || e.which===0 || (allow[e.which] || allow[e.keyCode]) && !e.shiftKey ? 1 : str!='' && (new RegExp("^["+str+"]$")).test(chr(e.which ? e.which : e.keyCode));
	return e.ctrlKey || e.which===0 || (allowWhich[e.which] && allow[e.keyCode]) && !e.shiftKey ? 1 : str!='' && (new RegExp("^["+str+"]$")).test(chr(e.which ? e.which : e.keyCode));
}

function getAbsX(obj){
	var result = 0;
	while(obj!=null){
		result+=obj.offsetLeft;
		obj=obj.offsetParent;
	}
	return result;
}

function getAbsY(obj){
	var result = 0;
	while(obj!=null){
		result+=obj.offsetTop;
		obj=obj.offsetParent;
	}
	return result;
}

function mouseX(evt){
	return evt.pageX ? evt.pageX : evt.clientX+(document.documentElement.scrollLeft ? document.documentElement.scrollLeft : document.body.scrollLeft);
}

function mouseY(evt){
	return evt.pageY ? evt.pageY : evt.clientY+(document.documentElement.scrollTop ? document.documentElement.scrollTop : document.body.scrollTop);
}

function setSelRange(input,start,end){
	if(input.setSelectionRange){
		input.setSelectionRange(start,end);
	}else{
		var range=input.createTextRange(),m;
		range.collapse(true);
		if(m=input.value.substr(0,start).match(/\n/g)){
			start-=m.length;
		}
		if(m=input.value.substr(0,end).match(/\n/g)){
			end-=m.length;
		}
		range.moveStart("character",start);
		range.moveEnd("character",end-start);
		range.select();
	}
}

function getSelStart(input) {
	if(input.setSelectionRange){
		return input.selectionStart;
	}else{
		var range=document.selection.createRange();
		var stored_range=range.duplicate();
		stored_range.moveToElementText(input);
		stored_range.setEndPoint('EndToEnd',range);
		return stored_range.text.length-range.text.length;
	}
}

function getSelEnd(input){
	if(input.setSelectionRange){
		return input.selectionEnd;
	}else{
		var range=document.selection.createRange();
		var stored_range=range.duplicate();
		stored_range.moveToElementText(input);
		stored_range.setEndPoint('EndToEnd',range);
		return stored_range.text.length-range.text.length+range.text.length;
	}
}

function adddate(date,days,months,years){
	var daysInMonth=[0,31,28,31,30,31,30,31,31,30,31,30,31];

	if(days==null){
		days=0;
	}
	if(months==null){
		months=0;
	}
	if(years==null){
		years=0;
	}
	var year=Number(date[0]);
	var mon=Number(date[1]);
	var mday=Number(date[2]);

	year+=years;

	mon+=months;
	year+=Math.floor((mon-1)/12);
	mon=(mon-1)%12+1;
	if(mon<=0){
		mon=12+mon;
	}

	daysInMonth[2]=((year%4==0 && year%100!=0) || year%400==0) ? 29 : 28;
	if(days==0){
		mday=Math.min(mday,daysInMonth[mon]);
	}else{
		mday+=days;
		while(mday>daysInMonth[mon] || mday<=0){
			if(mday<=0){
	            mon--;
	            year+=Math.floor((mon-1)/12);
	            mon=(mon-1)%12+1;
	            if(mon<=0){
	                mon=12+mon;
	            }
	            daysInMonth[2] = ((year%4==0 && year%100!=0) || year%400==0) ? 29 : 28;
	            mday+=daysInMonth[mon];
			}else{
	            mday-=daysInMonth[mon];
	            mon++;
	            year+=Math.floor((mon-1)/12);
	            mon=(mon-1)%12+1;
			}
            daysInMonth[2] = ((year%4==0 && year%100!=0) || year%400==0) ? 29 : 28;
		}
	}

	return [year,mon,mday];
}

//SSToolTip Component (29.09.2009)
function SSToolTip(obj,title,content,width,fixed,padding,alpha){
	if(typeof(SSTT)=='undefined'){
		SSTT=document.createElement('div');
		document.body.appendChild(SSTT);
		SSTT.id='SSToolTip';
		SSTT.style.display="none";
		SSTT.style.position="absolute";
		SSTT.style.zIndex=10100;
		SSTT.style.left='0px';
		SSTT.style.top='0px';
		SSTT.padding=padding==null ? "4px" : padding;
		SSTT.moved=0;
		SSTT.onmouseout=function(){
			this.style.display='none';
		}
		SSTT.intID=setInterval(function(){
			if(SSTT.style.display=='' && !SSTT.moved){
				SSTT.update(SSTT.last_e);
			}
			SSTT.moved=0;
		},500);
		SSTT.update=function(e){
			if(e){
				SSTT.last_e={pageX:e.pageX,clientX:e.clientX,clientY:e.clientY,pageY:e.pageY};
			}
			if(SSTT.move){
				if(e=e ? e : window.event){
					SSTT.moved=1;
					var mousex=mouseX(e)+15;
					var mousey=mouseY(e)+15;
					var x=mousex;
					var y=mousey;
					if(x+SSTT.clientWidth>document.body.scrollLeft+document.body.clientWidth){
						x=mousex-SSTT.clientWidth-20;
						if(x<document.body.scrollLeft){
							x=document.body.scrollLeft+document.body.clientWidth-SSTT.clientWidth;
						}
					}
					if(y+SSTT.clientHeight>document.body.scrollTop+document.body.clientHeight){
						y=mousey-SSTT.clientHeight-20;
						if(y<document.body.scrollTop){
							y=document.body.scrollTop;
						}
					}
					SSTT.style.left = x+'px';
					SSTT.style.top = y+'px';
					if(SSTT.stopafterfirst){
						SSTT.move=0;
					}
				}
			}
		}
		addEvent(document,'mousemove',SSTT.update);
		SSTT.hide=function(){
			this.style.display='none';
			SSTT.move=0;
		}
	}
	if(obj==null){
		SSTT.hide();
	}else{
		title=decodeURIComponent(title);
		width=width==null ? "" : width;
		alpha=alpha==null ? (content==null ? 100 : 90) : alpha;
		setAlpha(SSTT,alpha);
		SSTT.style.cursor=(SSTT.onclick=obj.onclick) ? "pointer" : "default";
		SSTT.onmouseover=obj.onclick ? function(){
			this.style.display='';
		} : null;
		if(content==null){
			SSTT.innerHTML='<!--[if lte IE 6]><iframe id="SSTT_iframe" style="position:absolute;z-index:-100;filter:alpha(opacity=0);"></iframe><![endif]--><table style="-moz-box-shadow:2px 2px 5px 0px #888;border:solid 1px #36c;background:#fff;filter:progid:DXImageTransform.Microsoft.Shadow(color=#333333,direction=135,strength=2,enabled=true);width:'+width+';" cellPadding="1" cellSpacing="0"><tr><td style="padding:'+SSTT.padding+';">'+title+'</td></tr></table>';
		}else{
			content=decodeURIComponent(content);
			SSTT.innerHTML='<!--[if lte IE 6]><iframe id="SSTT_iframe" style="position:absolute;z-index:-100;filter:alpha(opacity=0);"></iframe><![endif]--><table style="-moz-box-shadow:2px 2px 5px 0px #888;border:solid 1px #36c;background:#fff;filter:progid:DXImageTransform.Microsoft.Shadow(color=#333333,direction=135,strength=2,enabled=true);width:'+width+';" cellpadding="1" cellspacing="0">'+(title!="" ? '<tr><td style="background:#4B5F6D;color:#fff;padding:'+SSTT.padding+';"><b>'+title+'</b></td></tr>' : '')+'<tr valign=top><td style="padding:'+SSTT.padding+';">'+content+'</td></tr></table>';
		}
		SSTT.style.display = "";
		var iframe=document.getElementById('SSTT_iframe');
		if(iframe!=null){
			iframe.style.width=SSTT.offsetWidth;
			iframe.style.height=SSTT.offsetHeight;
		}
		if(obj.onmouseout==null){
			obj.onmouseout=function(){
				SSTT.hide();
			}
		}
		SSTT.move=1;
		SSTT.stopafterfirst=fixed;
		SSTT.update();
	}
}

function xmlRemoveWhiteSpace(xml){
	if(xml.hasChildNodes()){
		for(var i=0;i<xml.childNodes.length;i++){
			if(xml.childNodes[i].nodeType==1){
				xmlRemoveWhiteSpace(xml.childNodes[i]);
			}else{
				if(xml.childNodes[i].nodeType==7 || xml.childNodes[i].nodeType==3 && xml.childNodes[i].nodeValue.replace(/\s\t\r\n/g,'')==""){
					xml.removeChild(xml.childNodes[i]);
				}
			}
		}
	}
	return xml;
}

//XMLHTTP OBject
var xmlhttp=false;
/*@cc_on @*/
/*@if(@_jscript_version>=5)
//JScript gives us Conditional compilation, we can cope with old IE versions.
//and security blocked creation of the objects.
try{
	xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
}catch(e){
	try{
		xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
	}catch(E){
		xmlhttp=false;
	}
}
@end @*/
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {
	try {
		xmlhttp = new XMLHttpRequest();
	} catch (e) {
		xmlhttp=false;
	}
}
if (!xmlhttp && window.createRequest) {
	try {
		xmlhttp = window.createRequest();
	} catch (e) {
		xmlhttp=false;
	}
}

sendAndLoad=function(url,callback,method,extra){
	// method = GET,POST,HEAD
	// extra = for GET and POST requests:0-plain text,1-xml,2-JSON, for HEAD:header property
	var xmlhttp=false;
	/*@cc_on @*/
	/*@if(@_jscript_version>=5)
	//JScript gives us Conditional compilation, we can cope with old IE versions.
	//and security blocked creation of the objects.
	try{
		xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");
	}catch(e){
		try{
			xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
		}catch(E){
			xmlhttp=false;
		}
	}
	@end @*/
	if (!xmlhttp && typeof XMLHttpRequest!='undefined'){
		try{
			xmlhttp=new XMLHttpRequest();
		}catch(e){
			xmlhttp=false;
		}
	}
	if (!xmlhttp && window.createRequest){
		try{
			xmlhttp=window.createRequest();
		}catch(e){
			xmlhttp=false;
		}
	}
	if(xmlhttp){
		if(method==null){
			method="GET";
		}
		try{
			if(method=='POST'){
				var params=url.match(/\?[^?]+$/);
				params=params ? params[0].substr(1) : '';
				url=url.replace(/\?[^?]+$/,'');
				if(url==''){
					url='?';
				}
			}
			xmlhttp.open(method,url,true);
			if(method=='POST'){
				xmlhttp.setRequestHeader("Content-type","application/x-www-form-urlencoded");
				xmlhttp.setRequestHeader("Content-length",params.length);
				xmlhttp.setRequestHeader("Connection","close");
			}
			if(callback){
				xmlhttp.onreadystatechange=function(){
					if(xmlhttp.readyState==4){
						if(xmlhttp.status==200){
							if(method=="HEAD"){
								var value=extra==null ? xmlhttp.getAllResponseHeaders() : xmlhttp.getResponseHeader(extra);
							}else{
								try{
									var value=extra ? (extra==2 ? eval("("+xmlhttp.responseText+")") : xmlRemoveWhiteSpace(xmlhttp.responseXML)) : xmlhttp.responseText;
								}catch(e){
									value=false;
								}
							}
							callback(value);
						}else{
							callback(false);
						}
					}
				}
			}
			xmlhttp.setRequestHeader('X-Requested-With','XMLHttpRequest');
			xmlhttp.send(method=='POST' ? params : null);
		}catch(e){
		}
		return true;
	}else{
		return false;
	}
}


//SSColorPicker Component, v1.3 (16.10.2008)
function SSColorPicker(obj,color,callback,allowNull){
	if(typeof(SSCP)=='undefined'){
		SSCP_in=0;
		SSCP_intID=0;
		SSCP_alpha=100;
		SSCP=document.createElement('div');
		document.body.appendChild(SSCP);
		SSCP.id='SSColorPicker';
		SSCP.style.visibility="hidden";
		SSCP.style.position="absolute";
		SSCP.style.zIndex=10001;
		SSCP.style.filter="progid:DXImageTransform.Microsoft.Shadow(color=#333333,direction=135,strength=2,enabled=true);";
		SSCP.style.left=0;
		SSCP.style.top=0;
		var html='<!--[if lte IE 6]><iframe id="SSCP_iframe" style="position:absolute;z-index:-100;filter:alpha(opacity=0);"></iframe><![endif]--><table cellpadding=0 cellspacing=0 border=1 bordercolor=1 style="border:solid 1px #000000;border-collapse:collapse;background:#000;filter:alpha(opacity=100);" onmouseover="SSCP_in=1" onmouseout="SSCP_in=0"><tr><td colspan=18>'+(allowNull ? '<input type=button onclick="SSCP.setColor(null)" onmouseover="SSCP.previewColor(null)" style="float:right;background:white;color:red;font-weight:bold;padding:0 3 1 3px;margin:1 1 0 0px;font-family:Verdana;font-stylea:italic" value="/">' : '')+'<div id="SSCP_preview" style="cursor:pointer;width:50px;height:19px;background-color:#fff;float:left;" onclick="SSCP.setColor(document.getElementById(\'SSCP_value\').value)"></div><span style="color:#fff;margin-left:10px">#</span><input id=SSCP_value maxlength=6 value="ffffff" style="width:60px;height:19px;margin-left:1px;" onblur="this.value=this.value.replace(/[^0-9a-fA-F]/g,\'\');" onkeypress="if(document.all ? (window.event.keyCode==13) : (arguments[0].which==13)){SSCP.setColor(this.value)};return checkKey(event,\'0-9a-fA-F\')" onkeyup="SSCP.previewColor(this.value,1)"></td></tr>';
		for(var i=0;i<12;i++){
			html+='<tr>';
			for(var j=0;j<18;j++){
				var c=(0x330000*(Math.floor(j/6))+(0x3300*(j%6))+0x33*(i%6)+(i>=6 ? 0x990000 : 0)).toString(16).toUpperCase();
				while(c.length<6){
					c="0"+c;
				}
				html+='<td style="border:solid 1px #000000;padding-left:13px;height:13px;background-color:#'+c+'" onmouseover="SSCP.previewColor(\''+c+'\');" onclick="SSCP.setColor(\''+c+'\')"></td>';
			}
			html+='</tr>';
		}
		html+='<tr>';
		var custom=[0xff0000,0x00ff00,0x0000ff,0xffff00,0xff00ff,0x00ffff,0x333333,0x444444,0x555555,0x666666,0x777777,0x888888,0x999999,0xaaaaaa,0xbbbbbb,0xcccccc,0xdddddd,0xeeeeee];
		for(i=0;i<custom.length;i++){
			c=custom[i].toString(16).toUpperCase();
			while(c.length<6){
				c="0"+c;
			}
			html+='<td style="border:solid 1px #000000;padding-left:13px;height:13px;background-color:#'+c+'" onmouseover="SSCP.previewColor(\''+c+'\');" onclick="SSCP.setColor(\''+c+'\')"></td>';
		}
		html+='</tr>';
		html+='</table>';
		setTimeout(function(){
			var iframe=document.getElementById('SSCP_iframe');
			if(iframe!=null){
				iframe.style.width=SSCP.offsetWidth;
				iframe.style.height=SSCP.offsetHeight;
			}
			SSCP.style.visibility="visible";
			SSCP.style.display="none";
		},1);
		SSCP.innerHTML=html;
		SSCP.hide=function(){
			clearInterval(SSCP_intID);
			SSCP_intID=setInterval(function(){
				SSCP_alpha-=20;
				setAlpha(SSCP,SSCP_alpha);
				if(SSCP_alpha<=0){
					SSCP.style.display="none";
					clearInterval(SSCP_intID);
				}
			},50)
		}
		SSCP.previewColor=function(value,skipInput){
			if(value==null){
				document.getElementById('SSCP_preview').style.backgroundColor="#000000";
				if(!skipInput){
					document.getElementById('SSCP_value').value='';
				}
			}else{
				value=value.replace(/#/g,'');
				while(value.length<6){
					value="0"+value;
				}
				document.getElementById('SSCP_preview').style.backgroundColor="#"+value;
				if(!skipInput){
					document.getElementById('SSCP_value').value=value;
				}
			}
		}
		SSCP.setColor=function(value){
			if(value==null){
				SSCP.callback(null);
			}else{
				value=value.replace(/#/g,'');
				while(value.length<6){
					value="0"+value;
				}
				SSCP.callback(value.toUpperCase());
			}
			this.hide();
		}
		addEvent(document,'mouseup',function(){
			if(!SSCP_in){
				SSCP.hide();
			}
		});
		addEvent(window,'resize',function(){
			if(SSCP.style.display==""){
				SSCP.hide();
			}
		});
	}

	setTimeout(function(){
		SSCP_alpha=0;
		setAlpha(SSCP,SSCP_alpha);
		SSCP.style.display='';
		SSCP.callback=callback;
		var x=getAbsX(obj)+obj.clientWidth;
		var y=getAbsY(obj);
		var w=SSCP.clientWidth+2;
		if(x+w>document.body.clientWidth){
			x=document.body.clientWidth-w;
		}
		var scrollTop=document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
		if(y+SSCP.clientHeight>scrollTop+document.body.clientHeight){
			y=scrollTop+document.body.clientHeight-SSCP.clientHeight;
			if(y<scrollTop){
				y=scrollTop;
			}
		}
		SSCP.style.left=x+'px';
		SSCP.style.top=y+'px';
		SSCP.previewColor(color);
		clearInterval(SSCP_intID);
		SSCP_intID=setInterval(function(){
			SSCP_alpha+=20;
			setAlpha(SSCP,SSCP_alpha);
			if(SSCP_alpha>=100){
				clearInterval(SSCP_intID);
			}
		},50)
	},10);
}

//SSDate Component (30.09.2009)
function SSDatePicker(obj,value,minYear,maxYear,callback,language){
	if(typeof(SSD)=='undefined'){
		SSD_in=0;
		SSD_intID=0;
		SSD_alpha=100;
		SSD=document.createElement('div');
		document.body.appendChild(SSD);
		SSD.language=language==null ? 'en' : language;
		if(SSD.language=='ro'){
			SSD.months=["","ianuarie","februarie","martie","aprilie","mai","iunie","iulie","august","septembrie","octombrie","noiembrie","decembrie"];
			SSD.days=["","L","M","M","J","V","S","D"];
		}else{
			SSD.months=["","january","february","march","april","may","june","july","august","september","october","november","december"];
			SSD.days=["S","M","T","W","T","F","S"];
		}
		SSD.id='SSDatePicker';
		SSD.style.visibility="hidden";
		SSD.style.position="absolute";
		SSD.style.zIndex=10002;
		SSD.style.filter="progid:DXImageTransform.Microsoft.Shadow(color=#333333,direction=135,strength=2,enabled=true);";
		SSD.style.width=200;
		SSD.style.left=0;
		SSD.style.top=0;
		var html='<!--[if lte IE 6]><iframe id="SSD_iframe" style="position:absolute;z-index:-100;filter:alpha(opacity=0);"></iframe><![endif]--><table width="100%" cellpadding=0 cellspacing=0 border=1 bordercolor=1 style="-moz-box-shadow:2px 2px 5px 0px #888;color:#000;border:solid 1px #000;border-collapse:collapse;background:#fffee9;filter:alpha(opacity=100);cursor:default;" onmouseover="SSD_in=1" onmouseout="SSD_in=0" onmousewheel="SSD.onWheel(event)"><tr><td><input id=SSD_prev type=button value="&laquo;" style=width:30px onclick="clearTimeout(this.timeoutID);clearInterval(this.intervalID);SSD.prevMonth()" onmouseout="clearTimeout(this.timeoutID);clearInterval(this.intervalID)" onmousedown="var me=this;me.timeoutID=setTimeout(function(){me.intervalID=setInterval(function(){SSD.prevMonth()},10)},500)"></td><td id=SSD_location align="center" width=100%></td><td><input id=SSD_next type=button value="&raquo;" style=width:30px onclick="clearTimeout(this.timeoutID);clearInterval(this.intervalID);SSD.nextMonth()" onmouseout="clearTimeout(this.timeoutID);clearInterval(this.intervalID)" onmousedown="var me=this;me.timeoutID=setTimeout(function(){me.intervalID=setInterval(function(){SSD.nextMonth()},10)},500)"></td></tr><tr><td colspan=3><table id=SSD_days border=1 bordercolor=#cccccc style="border:solid 1px #ccc;border-collapse:collapse;background:#fff;" width=100%><tr style="background:#000;color:#fff">';
		for(var i=0;i<7;i++){
			html+='<td align=center width=14%>'+SSD.days[SSD.language=='ro' ? i+1 : i]+'</td>';
		}
		html+='</tr>';
		for(var i=0;i<6;i++){
			html+='<tr>';
			for(var j=0;j<7;j++){
				html+='<td align=right onmouseover="SSD.rollOver(this)" onmouseout="SSD.rollOut(this)" onclick="SSD.click(this)" style="padding-right:2px;border:solid 1px #ccc"></td>';
			}
			html+='</tr>';
		}
		html+='</table></td></tr><tr><td colspan=3 style="padding:2px;text-align:center;font-size:9px">'+(SSD.language=='ro' ? 'Foloseşte rotiţa mouse-ului sau ţine apăsat săgeţile pentru a schimba rapid luna' : 'Use mouse wheel or arrows to change month')+'</td></tr></table>';
		SSD.updateIframe=function(){
			var iframe=document.getElementById('SSD_iframe');
			if(iframe!=null){
				iframe.style.width=SSD.offsetWidth;
				iframe.style.height=SSD.offsetHeight;
			}
		}
		setTimeout(function(){
			SSD.updateIframe();
			SSD.style.visibility="visible";
			SSD.style.display="none";
		},1);
		SSD.innerHTML=html;
		SSD.hide=function(){
			this.style.display="none";
			/*clearInterval(SSD_intID);
			SSD_intID=setInterval(function(){
				SSD_alpha-=25;
				setAlpha(SSD,SSD_alpha);
				if(SSD_alpha<=0){
					SSD.style.display="none";
					clearInterval(SSD_intID);
				}
			},50)*/
		}
		SSD.nextMonth=function(){
			var next_date=adddate([this.year,this.month,1],0,1);
			this.browseTo(next_date);
		}
		SSD.prevMonth=function(){
			var next_date=adddate([this.year,this.month,1],0,-1);
			this.browseTo(next_date);
		}
		SSD.browseTo=function(value){
			value[0]=Number(value[0]);
			if(value[0]>=this.minYear && value[0]<=this.maxYear){
				this.year=value[0];
				this.month=Number(value[1]);
				if(document.getElementById("SSD_prev").disabled=this.year==this.minYear && this.month==1){
					try{
						clearTimeout(document.getElementById("SSD_prev").timeoutID);
						clearInterval(document.getElementById("SSD_prev").intervalID);
					}catch(err){}
				}
				if(document.getElementById("SSD_next").disabled=this.year==this.maxYear && this.month==12){
					try{
						clearTimeout(document.getElementById("SSD_next").timeoutID);
						clearInterval(document.getElementById("SSD_next").intervalID);
					}catch(err){}
				}
				document.getElementById("SSD_location").innerHTML=this.months[this.month]+" "+this.year;
				var table=document.getElementById("SSD_days");
				var d=new Date();
				d.setFullYear(this.year,this.month-1,1);
				var wday=d.getDay();
				var ndays=[0,31,28,31,30,31,30,31,31,30,31,30,31][this.month];
				if(this.month==2 && (this.year%4==0 && this.year%100!=0) || this.year%400==0){
					ndays=29;
				}
				for(var i=1;i<=6;i++){
					table.rows[i].style.display="";
					for(var j=0;j<7;j++){
						var cell=table.rows[i].cells[j];
						cell.innerHTML="";
						cell.style.background="transparent";
						cell.style.color="#000";
						cell.style.borderWidth=0;
					}
				}
				var day=1;
				if(this.language=='ro'){
					i=wday==0 ? 6 : wday-1;
				}else{
					i=wday;
				}
				var line=i==0 ? 0 : 1;
				while(day<=ndays){
					if(i%7==0){
						line++;
					}
					table.rows[line].cells[i%7].innerHTML=day;
					table.rows[line].cells[i%7].color=table.rows[line].cells[i%7].style.background=wday==0 || wday==6 ? '#efefef' : '#fff';
					table.rows[line].cells[i%7].style.borderWidth=1;
					if(this.year==SSD.selected[0] && this.month==SSD.selected[1] && day==SSD.selected[2]){
						table.rows[line].cells[i%7].color=table.rows[line].cells[i%7].style.background="#fffbb3";
					}
					i++;
					day++;
					wday=(wday+1)%7;
				}
				for(i=line+1;i<table.rows.length;i++){
					table.rows[i].style.display="none";
				}
				SSD.updateIframe();
			}
		}
		SSD.rollOver=function(cell){
			if(cell.innerHTML!=""){
				cell.style.background="#4B5F6D";
				cell.style.color="#fff";
			}
		}
		SSD.rollOut=function(cell){
			if(cell.innerHTML!=""){
				cell.style.background=cell.color;
				cell.style.color="#000";
			}
		}
		SSD.click=function(cell){
			if(cell.innerHTML!=""){
				this.setValue(cell.innerHTML);
			}
		}
		SSD.setValue=function(value){
			this.hide();
			SSD.callback([this.year,this.month,value]);
		}
		addEvent(document,'mouseup',function(){
			if(!SSD_in){
				SSD.hide();
			}
		});
		addEvent(window,'resize',function(){
			if(SSD.style.display==""){
				SSD.hide();
			}
		});
		SSD.onWheel=function(event){
			if(event.detail){
				var delta=-event.detail;
			}else{
				var delta=event.wheelDelta;
			}
			if(delta>0){
				SSD.nextMonth();
			}else{
				SSD.prevMonth();
			}
			if(event.preventDefault){
				event.preventDefault();
			}
			event.returnValue=false;
		}
		if(SSD.addEventListener){
			SSD.addEventListener('DOMMouseScroll',SSD.onWheel,false)
		}
	}

	setTimeout(function(){
		SSD_alpha=0;
		setAlpha(SSD,SSD_alpha);
		SSD.style.display='';
		SSD.minYear=minYear;
		SSD.maxYear=maxYear;
		SSD.callback=callback;
		SSD.selected=value;
		var table=document.getElementById("SSD_days");
		for(var i=1;i<=6;i++){
			table.rows[i].style.display="";
			for(var j=0;j<7;j++){
				table.rows[i].cells[j].innerHTML="&nbsp;";
			}
		}
		var x=getAbsX(obj)+obj.clientWidth;
		var y=getAbsY(obj);
		var w=SSD.clientWidth+2;
		if(x+w>document.body.clientWidth){
			x=document.body.clientWidth-w;
		}
		var scrollTop=document.documentElement ? document.documentElement.scrollTop : document.body.scrollTop;
		if(y+SSD.clientHeight>scrollTop+document.body.clientHeight){
			y=scrollTop+document.body.clientHeight-SSD.clientHeight;
			if(y<scrollTop){
				y=scrollTop;
			}
		}
		SSD.style.left=x+'px';
		SSD.style.top=y+'px';
		SSD.browseTo(value[0]>0 && value[1]>0 ? value : [minYear,1,1]);
		clearInterval(SSD_intID);
		SSD_alpha=100;
		setAlpha(SSD,SSD_alpha);
		/*SSD_intID=setInterval(function(){
			SSD_alpha+=33;
			setAlpha(SSD,SSD_alpha);
			if(SSD_alpha>=100){
				clearInterval(SSD_intID);
			}
		},50)*/
	},10);
}

//SSAutoComplete Component (22.02.2010)
function SSAutoComplete(obj,url,options,x,y,callback,delay,autoSelect){

	if(obj!=null){
		if(typeof(options)=='object' && options!=null){
			var minChars=options['minChars'];
			var x=options['x'];
			var y=options['y'];
			var callback=options['callback'];
			var delay=options['delay'];
			var autoSelect=options['autoSelect'];
		}else{
			var minChars=options;
		}
		minChars=minChars==null ? 2 : minChars;
		delay=delay==null ? 300 : delay;
		autoSelect=autoSelect==null ? 0 : autoSelect;
	}
	if(typeof(SSAC)=='undefined'){
		SSAC_in=0;
		SSAC_intID=0;
		SSAC_alpha=100;
		SSAC=document.createElement('div');
		document.body.appendChild(SSAC);
		SSAC.id='SSAutoComplete';
		SSAC.style.visibility="visible";
		SSAC.style.position="absolute";
		SSAC.style.zIndex=10003;
		SSAC.style.filter="progid:DXImageTransform.Microsoft.Shadow(color=#333333,direction=135,strength=2,enabled=true);";
		SSAC.style.left=0;
		SSAC.style.top=0;
		var html='<span style="display:none" id="SSAC_decoder"></span><!--[if lte IE 6]><iframe id="SSAC_iframe" style="position:absolute;z-index:-100;filter:alpha(opacity=0);"></iframe><![endif]--><table id="SSAC_table" cellpadding=2 cellspacing=0 border=1 bordercolor=#cccccc style="font-family:Tahoma;font-size:10px;color:#000;border:solid 1px #ccc;border-collapse:collapse;background:#fffee9;filter:alpha(opacity=100);cursor:default;" onmouseout="SSAC.setSelected(-1)"></table>';
		SSAC.updateIframe=function(){
			var iframe=document.getElementById('SSAC_iframe');
			if(iframe!=null){
				iframe.style.width=SSAC.offsetWidth;
				iframe.style.height=SSAC.offsetHeight;
			}
		}
		setTimeout(function(){
			SSAC.updateIframe();
			SSAC.style.display="none";
		},1);
		SSAC.innerHTML=html;
		SSAC.table=document.getElementById("SSAC_table");
		SSAC.hide=function(){
			clearInterval(SSAC_intID);
			SSAC_intID=setInterval(function(){
				SSAC_alpha-=50;
				setAlpha(SSAC,SSAC_alpha);
				if(SSAC_alpha<=0){
					SSAC.style.display="none";
					clearInterval(SSAC_intID);
				}
			},50)
		}
		SSAC.setSelected=-1;
		SSAC.setSelected=function(value){
			if(this.selected>-1){
				with(this.table.rows[this.selected].cells[0]){
					style.color="#000";
					bgColor="#fffee9";
				}
			}
			if((this.selected=value)>-1){
				with(this.table.rows[this.selected].cells[0]){
					style.color="#fff";
					bgColor="#4B5F6D";
				}
			}
			if(this.cobj.autoSelect>0){
				try{
					this.cobj.callback(this.table.rows[this.selected].value,this.selected==-1 ? null : this.table.rows[this.selected].data);
				}catch(e){
				}
			}
		}
		SSAC.rollOver=function(obj){
			this.setSelected(obj.nr);
		}
		//SSAC.rollOut=function(obj){
			//this.setSelected(obj.nr);
		//}
		SSAC.autoFill=function(obj,strAutoSelect){
			if(strAutoSelect!=null){
				var str=strAutoSelect;
				obj.value=obj.value+strAutoSelect.substr(obj.value.length);
			}else{
				var str=this.selected>-1 ? this.table.rows[this.selected].value : this.value;
				obj.value=str;
			}
			setSelRange(obj,str.toLowerCase().indexOf(this.value.toLowerCase())==0 ? this.value.length : 0,str.length);
			obj.tempValue=str.trim();
		}
		SSAC.moveUp=function(obj){
			if(this.visible){
				this.setSelected(this.selected>-1 ? this.selected-1 : this.lines-1);
				setTimeout(function(){
					SSAC.autoFill(obj);
				},1);
			}
		}
		SSAC.moveDown=function(obj){
			if(this.visible){
				this.setSelected(this.selected<this.lines-1 ? this.selected+1 : -1);
				setTimeout(function(){
					SSAC.autoFill(obj);
				},1);
			}
		}
		this.visible=1;
		SSAC.setVisible=function(value){
			this.style.visibility=value ? "visible" : "hidden";
			this.visible=value;
		}
		SSAC.select=function(obj){
			if(this.selected==-1 || !this.visible){
				return true;
			}else{
				obj.value=this.table.rows[this.selected].value;
				obj.tempValue=obj.value.trim();
				setTimeout(function(){
					SSAC.setSelected(-1);
					obj.focus();
					setSelRange(obj,0,obj.value.length);
				},1);
				this.setVisible(0);
				try{
					obj.callback(this.table.rows[this.selected].value,this.table.rows[this.selected].data,true);
				}catch(e){
				}
				return false;
			}
		}
		SSAC.curentXML="";
		SSAC.update=function(obj,xml){
			if(this.currentXML!=xml || obj.fullLoad){
				this.setVisible(1);
				var table=this.table;
				this.lines=xml.childNodes.length;
				var row,cell,value;
				i=0;
				var htmldecoder=document.getElementById('SSAC_decoder');
				var preg=new RegExp('^'+this.value.regQuote(),'i');
				for(var j=0;j<this.lines;j++){
					htmldecoder.innerHTML=decodeURIComponent(xml.childNodes[j].firstChild.nodeValue);
					value=xml.childNodes[j].getAttribute('value')!=null ? decodeURIComponent(xml.childNodes[j].getAttribute('value')) : htmldecoder.firstChild.nodeValue;
					if(obj.fullLoad && value.match(preg)==null){
						continue;
					}
					if(table.rows.length<=i){
						row=table.insertRow(i);
						cell=row.insertCell(-1);
						cell.noWrap="nowrap";
						row.nr=i;
						cell.style.paddingLeft=7;
						cell.style.paddingRight=7;
						row.onmouseover=function(){
							SSAC.rollOver(this);
						}
						//row.onmouseout=function(){
							//SSAC.rollOut(this);
						//}
					}else{
						row=table.rows[i];
					}
					row.style.display="";
					//row.cells[0].innerHTML=decodeURIComponent(xml.childNodes[i].firstChild.nodeValue);
					row.cells[0].innerHTML=htmldecoder.innerHTML;
					//row.value=xml.childNodes[i].getAttribute('value')!=null ? decodeURIComponent(xml.childNodes[i].getAttribute('value')) : row.cells[0].firstChild.nodeValue;
					row.value=value;
					row.data=xml.childNodes[i].getAttribute('data');
					row.onmousedown=function(){
						SSAC.select(obj);
					}
					i++;
					if(i>=obj.limit){
						break;
					}
				}
				this.lines=i;
				if(this.lines==0){
					this.setVisible(0);
				}
				for(var i=this.lines;i<table.rows.length;i++){
					table.rows[i].style.display="none";
				}
				this.setSelected(-1);
				if(this.lastKeyCode!=16 && this.lastKeyCode!=36 && this.lastKeyCode!=46 && this.lastKeyCode!=8 && obj.autoSelect && this.lines>0 && table.rows[0].value.toLowerCase().indexOf(this.value.toLowerCase())==0){
					if(obj.autoSelect==1){
						this.autoFill(obj,table.rows[0].value);
					}else{
						this.moveDown(obj);
					}
					try{
						obj.callback(this.table.rows[this.selected].value,this.table.rows[this.selected].data);
					}catch(e){
					}
				}
				this.currentXML=xml;
				this.updateIframe();
			}
		}
		SSAC.loadData=function(obj,value){
			this.value=value;
			var k=obj.fullLoad ? 'xml' : value;
			if(typeof(obj.xmls[obj.url][k])=="undefined"){
				clearTimeout(obj.SSAC_intID);
				obj.SSAC_intID=setTimeout(function(){
					sendAndLoad(obj.url+(obj.fullLoad ? '' : encodeURIComponent(k)),function(xml){
						obj.xmls[obj.url][k]=xml.firstChild;
						if(obj.value.trim()==k){
							SSAC.update(obj,xml.firstChild);
						}
					},'GET',1);
				},delay);
			}else{
				if(obj.xmls[obj.url][k].childNodes.length>0){
					this.setVisible(1);
				}
				this.update(obj,obj.xmls[obj.url][k]);
			}
		}
	}

	if(obj!=null){
		setTimeout(function(){
			if(!obj.SSAC_on){
				if(obj.getAttribute('autocomplete')!='off'){
					obj.setAttribute('autocomplete','off');
					obj.blur();
					obj.focus();
				}
				obj.tempValue="";
				obj.SSAC_on=1;
				obj.xmls={};
				obj.hasFocus=true;
				addEvent(obj,'focus',function(){
					this.hasFocus=true;
				});
				addEvent(obj,'blur',function(){
					this.hasFocus=false;
					setTimeout(function(){
						SSAC.hide();
					},1);
				});
				obj.SSAC_intID=0;
				if(typeof obj.onkeypress!='undefined'){
					addEvent(obj,'keypress',obj.onkeypress);
				}
				obj.onkeypress=function(evt){
					var e=evt ? evt : event;
					var charCode = e.which ? e.which : e.keyCode;
					if(charCode==27){
						SSAC.setSelected(-1);
						SSAC.setVisible(0);
						SSAC.autoFill(this);
						return false;
					}else if(charCode==13){
						return SSAC.select(this);
					}else if(charCode==9 && SSAC.visible){
						setSelRange(this,1000000,1000000);
						SSAC.loadData(this,this.value);
						return false;
					}
				};
				addEvent(obj,'keydown',function(evt){
					var e=evt ? evt : event;
					if(!e.keyed){
						var charCode = e.which ? e.which : e.keyCode;
						if(charCode==38){
							SSAC.moveUp(this);
						}else if(charCode==40){
							SSAC.moveDown(this);
						}else if(charCode==27){
							SSAC.setSelected(-1);
							SSAC.setVisible(0);
							SSAC.autoFill(this);
							return false;
						}
					}
				});
				addEvent(obj,'keyup',function(evt){
					var me=this;
					var e=evt ? evt : event;
					var charCode=e.which ? e.which : e.keyCode;
					SSAC.lastKeyCode=e.keyCode;
					SSAC.lastWhich=e.which;
					var value=this.value.trim();
					if(value.length>=Number(minChars)){
						if(value!=this.tempValue || (charCode==38 || charCode==40) && !SSAC.visible){
							if(this.autoSelect>0){
								try{
									this.callback(value);
								}catch(e){
								}
							}
							SSAC.loadData(this,value);
						}
					}else{
						if(this.autoSelect>0){
							try{
								this.callback(value);
							}catch(e){
							}
						}
						SSAC.setVisible(0);
					}
				});
				addEvent(obj,'mousedown',function(){
					if(this.hasFocus){
						var value=this.value.trim();
						if(value.length>=Number(minChars)){
							SSAC.loadData(this,value);
						}
					}
				});
				addEvent(obj,'dblclick',function(){
					var value=this.value.trim();
					if(value.length>=Number(minChars)){
						SSAC.loadData(this,value);
					}
				});
			}
			obj.url=url;
			if(obj.xmls[url]==null){
				obj.xmls[url]={};
			}
			obj.callback=callback;
			obj.fullLoad=url.match(/=$/)==null;
			obj.limit=obj.fullLoad ? 10 : 100;
			obj.autoSelect=autoSelect;
			SSAC.cobj=obj;
			SSAC.setVisible(0);
			SSAC.style.display='';
			if(x==null || y==null){
				x=getAbsX(obj);
				y=getAbsY(obj)+obj.clientHeight;
			}
			var w=SSAC.clientWidth+2;
			SSAC.style.left=x
			SSAC.style.top=y
			SSAC.style.width=document.getElementById("SSAC_table").style.width=obj.clientWidth;
			clearInterval(SSAC_intID);
			setAlpha(SSAC,100);
			SSAC_alpha=100;
			if(minChars==0 && obj.value==''){
				SSAC.loadData(obj,'');
			}
		},10);
	}
}

//SSToolBar Component, 8.12.2009
function SSToolBar(obj,container,set,options){
	//options: hide_thumbnails, url, eurl, text
	if(typeof(SSTB)=='undefined'){
		SSTB={
			containers:[],
			attrs:{b:'',i:'',u:'',list:'',color:'=[#0-9a-z]+',size:'=[1-6]?[0-9]',url:'(=[^\\]]*)?',img:''},
			saveSelection:function(txt){
				if(txt.setSelectionRange){
					txt.start=txt.selectionStart;
					txt.end=txt.selectionEnd;
				}else{
					var range=document.selection.createRange();
					var stored_range=range.duplicate();
					stored_range.moveToElementText(txt);
					stored_range.setEndPoint('EndToEnd',range);
					txt.start=stored_range.text.length-range.text.length;
					txt.end=txt.start+range.text.length;
				}
			},
			getSelection:function(txt){
				return [txt.value.substr(0,txt.start),txt.value.substr(txt.start,txt.end-txt.start),txt.value.substr(txt.end)];
			},
			setStyle:function(btn,tag,value){
				this.hidePreview(btn.parentNode);
				var txt=btn.parentNode.SSTB_obj,m;
				var sel=this.getSelection(txt);
				var attr=this.attrs[tag];
				if((m=sel[1].match(new RegExp('^\\['+tag+attr+'\\]','i'))) && sel[1].match(new RegExp('\\[\\/'+tag+'\\]$','i'))){
					if(value==null || attr==''){
						txt.value=sel[0]+sel[1].substr(m[0].length,sel[1].length-3-tag.length-m[0].length)+sel[2];
						txt.end-=3+tag.length+m[0].length;
					}else{
						txt.value=sel[0]+'['+tag+'='+value+']'+sel[1].substr(m[0].length)+sel[2];
						txt.end+=3+tag.length+value.length-m[0].length;
					}
				}else if((m=sel[0].match(new RegExp('\\['+tag+attr+'\\]$','i'))) && sel[2].match(new RegExp('^\\[\\/'+tag+'\\]','i'))){
					if(value==null || attr==''){
						txt.value=sel[0].substr(0,sel[0].length-m[0].length)+sel[1]+sel[2].substr(3+tag.length);
						txt.start-=m[0].length;
						txt.end-=m[0].length;
					}else{
						txt.value=sel[0].substr(0,sel[0].length-m[0].length)+'['+tag+'='+value+']'+sel[1]+sel[2];
						txt.start+=3+tag.length+value.length-m[0].length;
						txt.end+=3+tag.length+value.length-m[0].length;
					}
				}else if(value!=null || attr==''){
					if(tag=='url' && sel[1]==''){
						sel[1]=value;
						txt.end+=value.length;
					}
					txt.value=sel[0]+'['+tag+(attr=='' ? '' : '='+value)+']'+sel[1]+'[/'+tag+']'+sel[2];
					txt.start+=2+tag.length+(attr=='' ? 0 : value.length+1);
					txt.end+=2+tag.length+(attr=='' ? 0 : value.length+1);
				}
				txt.focus();
				setSelRange(txt,txt.start,txt.end);
			},
			showPreview:function(btn){
				var txt=btn.parentNode.SSTB_obj;
				var div=btn.parentNode.firstChild;
				btn.innerHTML=btn.parentNode.options.text.edit;
				if(this.hidePreview(btn.parentNode)){
					btn.innerHTML=btn.parentNode.options.text.preview;
					txt.focus();
					setSelRange(txt,txt.start,txt.end);
					return;
				}
				div.style.marginLeft=getAbsX(txt)-getAbsX(div.parentNode);
				div.style.marginTop=getAbsY(txt)-getAbsY(div.parentNode);
				div.style.width=txt.offsetWidth;
				div.style.height=txt.offsetHeight;
				div.innerHTML='';
				div.style.display='';
				txt.style.visibility='hidden';
				sendAndLoad(btn.parentNode.options.url+'?text='+encodeURIComponent(txt.value)+'&tags='+set.join('|'),function(value){
					div.innerHTML=value;
				},'POST');
			},
			hidePreview:function(container){
				if(container.SSTB_obj.style.visibility=='hidden'){
					container.firstChild.style.display='none';
					container.SSTB_obj.style.visibility='visible';
					return true;
				}
			},
			setUpload:function(id,img,url){
				this.hidePreview(this.containers[id]);
				var txt=this.containers[id].SSTB_obj;
				var sel=this.getSelection(txt);
				txt.value=sel[0]+'\n[url='+url+']'+(this.containers[id].options.hide_thumbnails ? this.containers[id].options.text.attached_image : '[img]'+img+'[/img]')+'[/url]'+sel[1]+sel[2];
				txt.start=txt.end=txt.value.length-sel[2].length;
				txt.focus();
				setSelRange(txt,txt.start,txt.end);
			}
		};
	}
	if(typeof(set)!='object'){
		switch(set){
			case 'basic':
				set=['b','i','u','preview'];
				break;
			case 'noimg':
				set=['b','i','u','color','size','url','preview'];
				break;
			case 'advanced':
				set=['b','i','u','color','size','url','img','preview'];
				break;
			case 'full':
				set=['b','i','u','color','size','url','img','uimg','preview'];
				break;
			default:
				set=['b','i','u','color','size','preview'];
				break;
		}
	}
	if(!obj.SSTB_on){
		container.SSTB_obj=obj;
		container.SSTB_id=SSTB.containers.length;
		SSTB.containers.push(container);
		if(options==null){
			options={};
		}
		if(options['url']==''){
			options['url']=false;
		}
		if(options['eurl']==''){
			options['eurl']=false;
		}
		if(options['text']==null){
			options.text={b:'<b>B</b>',i:'<i>I</i>',u:'<u>U</u>',color:'Color',size:'Size',url:'URL',url_enter:'Enter URL address',img:'IMG',uimg:'Upload IMG',preview:'Preview',edit:'Edit'};
		}
		container.options=options;
		container.set=set;
		var html='';
		for(var i=0;i<set.length;i++){
			switch(set[i]){
				case 'b':
					html+='<button type="button" tabindex=-1 onclick="SSTB.setStyle(this,\'b\')" style="padding:0 3px" title="Ctrl+B">'+options.text.b+'</button>&nbsp;';
					break;
				case 'i':
					html+='<button type="button" tabindex=-1 onclick="SSTB.setStyle(this,\'i\')" style="padding:0 3px" title="Ctrl+I">'+options.text.i+'</button>&nbsp;';
					break;
				case 'u':
					html+='<button type="button" tabindex=-1 onclick="SSTB.setStyle(this,\'u\')" style="padding:0 3px" title="Ctrl+U">'+options.text.u+'</button>&nbsp;';
					break;
				case 'color':
					html+='<button type="button" tabindex=-1 onclick="var me=this;SSColorPicker(this,null,function(color){SSTB.setStyle(me,\'color\',color==null ? null : \'#\'+color)},1)" style="padding:0 3px">'+options.text.color+'</button>&nbsp;';
					break;
				case 'size':
					html+='<select tabindex=-1 onchange="SSTB.setStyle(this,\'size\',this.value==0 ? null : this.value);this.selectedIndex=0"><option value="0">'+options.text.size+'</option><option value="0">---</option>';
					for(var j=8;j<=64;j++){
						html+='<option value="'+j+'">'+j+'</option>';
					}
					html+='</select>&nbsp;';
					break;
				case 'url':
					html+='<button type="button" tabindex=-1 onclick="var value;if((value=prompt(this.parentNode.options.text.url_enter,\'\'))!==null){SSTB.setStyle(this,\'url\',value==\'\' ? null : value)}" style="padding:0 3px">'+options.text.url+'</button>&nbsp;';
					break;
				case 'img':
					html+='<button type="button" tabindex=-1 onclick="SSTB.setStyle(this,\'img\')" style="padding:0 3px">'+options.text.img+'</button>&nbsp;';
					break;
				case 'uimg':
					html+='<button type="button" tabindex=-1 onclick="'+(options.eurl ? 'window.open(\''+options.eurl+'\')' : 'popup(this.parentNode.options.url+\'?tb='+container.SSTB_id+'\',\'_blank\',400,250)')+'" style="padding:0 3px">'+options.text.uimg+'</button>&nbsp;';
					break;
				case 'preview':
					if(options.url){
						html+='<button type="button" tabindex=-1 onclick="SSTB.showPreview(this)" style="padding:0 3px">'+options.text.preview+'</button>&nbsp;';
					}
					break;
			}
		}
		container.innerHTML='<div style="position:absolute;display:none;overflow:auto"></div>'+html+container.innerHTML;
		obj.SSTB_on=1;
		obj.start=obj.end=0;
		obj.container=container;
		addEvent(obj,'select',function(){
			SSTB.saveSelection(this);
		});
		addEvent(obj,'mouseup',function(){
			SSTB.saveSelection(this);
		});
		addEvent(obj,'keyup',function(){
			SSTB.saveSelection(this);
		});
		addEvent(obj,'blur',function(){
			if(this.value.match(/\[/)){
				var tags=['b','i','u','list','color','size'],m1,m2,scrollValue=this.scrollTop;
				for(var i=0;i<tags.length;i++){
					m1=this.value.match(new RegExp('\\['+tags[i]+SSTB.attrs[tags[i]]+'\\]','ig'));
					m1=m1==null ? 0 : m1.length;
					m2=this.value.match(new RegExp('\\[/'+tags[i]+'\\]','ig'));
					m2=m2==null ? 0 : m2.length;
					for(j=0;j<m1-m2;j++){
						this.value+='[/'+tags[i]+']';
					}
					for(j=0;j<m2-m1;j++){
						this.value=this.value.replace(new RegExp('(.*)\\[/'+tags[i]+'\\]','i'),'$1');
					}
				}
				this.scrollTop=scrollValue;
			}
		});
		if(obj.onkeydown){
			addEvent(obj,'onkeydown',obj.onkeydown);
		}
		obj.onkeydown=function(){
			var e=arguments[0] ? arguments[0] : event;
			if(e.ctrlKey){
				switch(e.keyCode){
					case 66:
						if(container.set.isIn('b')){
							SSTB.setStyle(container.firstChild,'b');
							return false;
						}
						break;
					case 73:
						if(container.set.isIn('i')){
							SSTB.setStyle(container.firstChild,'i');
							return false;
						}
						break;
					case 85:
						if(container.set.isIn('u')){
							SSTB.setStyle(container.firstChild,'u');
							return false;
						}
						break;
				}
			}
		};
	}
}

//Grid initialization
function setGrid(grid,colorOver,colorSelected,cellPos,onChangeSelection,color1,color2){
	if(grid==null){
		return;
	}
	if(color1!=null && color2==null){
		color2=color1;
	}
	grid.gridOver=function(obj){
		obj.bgColor=colorOver;
	}
	grid.gridOut=function(obj){
		obj.bgColor=cellPos!=null && obj.cells[cellPos].firstChild && obj.cells[cellPos].firstChild.checked ? colorSelected : obj.color;
	}
	grid.gridClick=function(obj,state){
		if(obj.isGridCheck){
			if(state==null){
				state=!obj.cells[cellPos].firstChild.checked;
			}
			obj.cells[cellPos].firstChild.checked=state;
			obj.bgColor=state ? colorSelected : obj.color;
			if(arguments.length==1){
				grid.sync();
			}
		}
	}
	grid.gridSelectAll=function(state){
		for(var i=1;i<grid.rows.length;i++){
			this.gridClick(grid.rows[i],state);
		}
		grid.sync();
	}
	grid.sync=function(){
		var sel=1;
		var count=0;
		for(var i=1;i<this.rows.length;i++){
			if(this.rows[i].isGridCheck){
				if(this.rows[i].cells[cellPos].firstChild.checked){
					count++;
				}else{
					sel=0;
				}
			}
		}
		if(onChangeSelection!=null){
			onChangeSelection(count);
		}
		grid.rows[0].cells[cellPos].firstChild.checked=sel;
	}
	for(var i=1;i<grid.rows.length;i++){
		var obj=grid.rows[i];
		if(color1!=null && obj.bgColor==''){
			obj.bgColor=i%2 ? color1 : color2;
		}
		obj.color=obj.bgColor;
		if(colorOver!=null){
			addEvent(obj,'mouseover',function(){
				grid.gridOver(this);
			});
			addEvent(obj,'mouseout',function(){
				grid.gridOut(this);
			});
		}
		if(cellPos!=null && obj.cells[cellPos].firstChild && obj.cells[cellPos].firstChild.checked!=null){
			obj.isGridCheck=true;
			obj.onclick=function(){
				grid.gridClick(this);
			}
			obj.cells[cellPos].firstChild.onclick=function(){
				grid.gridClick(this.parentNode.parentNode);
			}
			if(obj.cells[cellPos].firstChild.checked){
				grid.gridClick(obj,1);
			}
		}
	}
	if(cellPos!=null){
		grid.sync();
		grid.rows[0].cells[cellPos].firstChild.onclick=function(){
			grid.gridSelectAll(this.checked);
		}
	}
}
