You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@stratos.apache.org by la...@apache.org on 2013/07/11 13:55:30 UTC

[16/22] refactoring theme-mgt components, service stub and changing service stub parent name to stratos-service-stubs-parent

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/manage_area.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/manage_area.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/manage_area.js
new file mode 100644
index 0000000..e10c5e9
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/manage_area.js
@@ -0,0 +1,623 @@
+	EditArea.prototype.focus = function() {
+		this.textarea.focus();
+		this.textareaFocused=true;
+	};
+
+
+	EditArea.prototype.check_line_selection= function(timer_checkup){
+		var changes, infos, new_top, new_width,i;
+		
+		var t1=t2=t2_1=t3=tLines=tend= new Date().getTime();
+		// l'editeur n'existe plus => on quitte
+		if(!editAreas[this.id])
+			return false;
+		
+		if(!this.smooth_selection && !this.do_highlight)
+		{
+			//do nothing
+		}
+		else if(this.textareaFocused && editAreas[this.id]["displayed"]==true && this.isResizing==false)
+		{
+			infos	= this.get_selection_infos();
+			changes	= this.checkTextEvolution( typeof( this.last_selection['full_text'] ) == 'undefined' ? '' : this.last_selection['full_text'], infos['full_text'] );
+		
+			t2= new Date().getTime();
+			
+			// if selection change
+			if(this.last_selection["line_start"] != infos["line_start"] || this.last_selection["line_nb"] != infos["line_nb"] || infos["full_text"] != this.last_selection["full_text"] || this.reload_highlight || this.last_selection["selectionStart"] != infos["selectionStart"] || this.last_selection["selectionEnd"] != infos["selectionEnd"] || !timer_checkup )
+			{
+				// move and adjust text selection elements
+				new_top		= this.getLinePosTop( infos["line_start"] );
+				new_width	= Math.max(this.textarea.scrollWidth, this.container.clientWidth -50);
+				this.selection_field.style.top=this.selection_field_text.style.top=new_top+"px";
+				if(!this.settings['word_wrap']){	
+					this.selection_field.style.width=this.selection_field_text.style.width=this.test_font_size.style.width=new_width+"px";
+				}
+				
+				// usefull? => _$("cursor_pos").style.top=new_top+"px";	
+		
+				if(this.do_highlight==true)
+				{
+					// fill selection elements
+					var curr_text	= infos["full_text"].split("\n");
+					var content		= "";
+					//alert("length: "+curr_text.length+ " i: "+ Math.max(0,infos["line_start"]-1)+ " end: "+Math.min(curr_text.length, infos["line_start"]+infos["line_nb"]-1)+ " line: "+infos["line_start"]+" [0]: "+curr_text[0]+" [1]: "+curr_text[1]);
+					var start		= Math.max(0,infos["line_start"]-1);
+					var end			= Math.min(curr_text.length, infos["line_start"]+infos["line_nb"]-1);
+					
+					//curr_text[start]= curr_text[start].substr(0,infos["curr_pos"]-1) +"¤_overline_¤"+ curr_text[start].substr(infos["curr_pos"]-1);
+					for(i=start; i< end; i++){
+						content+= curr_text[i]+"\n";	
+					}
+					
+					// add special chars arround selected characters
+					selLength	= infos['selectionEnd'] - infos['selectionStart'];
+					content		= content.substr( 0, infos["curr_pos"] - 1 ) + "\r\r" + content.substr( infos["curr_pos"] - 1, selLength ) + "\r\r" + content.substr( infos["curr_pos"] - 1 + selLength );
+					content		= '<span>'+ content.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace("\r\r", '</span><strong>').replace("\r\r", '</strong><span>') +'</span>';
+					
+					if( this.isIE || ( this.isOpera && this.isOpera < 9.6 ) ) {
+						this.selection_field.innerHTML= "<pre>" + content.replace(/^\r?\n/, "<br>") + "</pre>";
+					} else {
+						this.selection_field.innerHTML= content;
+					}
+					this.selection_field_text.innerHTML = this.selection_field.innerHTML;
+					t2_1 = new Date().getTime();
+					// check if we need to update the highlighted background 
+					if(this.reload_highlight || (infos["full_text"] != this.last_text_to_highlight && (this.last_selection["line_start"]!=infos["line_start"] || this.show_line_colors || this.settings['word_wrap'] || this.last_selection["line_nb"]!=infos["line_nb"] || this.last_selection["nb_line"]!=infos["nb_line"]) ) )
+					{
+						this.maj_highlight(infos);
+					}
+				}		
+			}
+			t3= new Date().getTime();
+			
+			// manage line heights
+			if( this.settings['word_wrap'] && infos["full_text"] != this.last_selection["full_text"])
+			{
+				// refresh only 1 line if text change concern only one line and that the total line number has not changed
+				if( changes.newText.split("\n").length == 1 && this.last_selection['nb_line'] && infos['nb_line'] == this.last_selection['nb_line'] )
+				{
+					this.fixLinesHeight( infos['full_text'], changes.lineStart, changes.lineStart );
+				}
+				else
+				{
+					this.fixLinesHeight( infos['full_text'], changes.lineStart, -1 );
+				}
+			}
+		
+			tLines= new Date().getTime();
+			// manage bracket finding
+			if( infos["line_start"] != this.last_selection["line_start"] || infos["curr_pos"] != this.last_selection["curr_pos"] || infos["full_text"].length!=this.last_selection["full_text"].length || this.reload_highlight || !timer_checkup )
+			{
+				// move _cursor_pos
+				var selec_char= infos["curr_line"].charAt(infos["curr_pos"]-1);
+				var no_real_move=true;
+				if(infos["line_nb"]==1 && (this.assocBracket[selec_char] || this.revertAssocBracket[selec_char]) ){
+					
+					no_real_move=false;					
+					//findEndBracket(infos["line_start"], infos["curr_pos"], selec_char);
+					if(this.findEndBracket(infos, selec_char) === true){
+						_$("end_bracket").style.visibility	="visible";
+						_$("cursor_pos").style.visibility	="visible";
+						_$("cursor_pos").innerHTML			= selec_char;
+						_$("end_bracket").innerHTML			= (this.assocBracket[selec_char] || this.revertAssocBracket[selec_char]);
+					}else{
+						_$("end_bracket").style.visibility	="hidden";
+						_$("cursor_pos").style.visibility	="hidden";
+					}
+				}else{
+					_$("cursor_pos").style.visibility	="hidden";
+					_$("end_bracket").style.visibility	="hidden";
+				}
+				//alert("move cursor");
+				this.displayToCursorPosition("cursor_pos", infos["line_start"], infos["curr_pos"]-1, infos["curr_line"], no_real_move);
+				if(infos["line_nb"]==1 && infos["line_start"]!=this.last_selection["line_start"])
+					this.scroll_to_view();
+			}
+			this.last_selection=infos;
+		}
+		
+		tend= new Date().getTime();
+		//if( (tend-t1) > 7 )
+		//	console.log( "tps total: "+ (tend-t1) + " tps get_infos: "+ (t2-t1)+ " tps selec: "+ (t2_1-t2)+ " tps highlight: "+ (t3-t2_1) +" tps lines: "+ (tLines-t3) +" tps cursor+lines: "+ (tend-tLines)+" \n" );
+		
+		
+		if(timer_checkup){
+			setTimeout("editArea.check_line_selection(true)", this.check_line_selection_timer);
+		}
+	};
+
+
+	EditArea.prototype.get_selection_infos= function(){
+		var sel={}, start, end, len, str;
+	
+		this.getIESelection();
+		start	= this.textarea.selectionStart;
+		end		= this.textarea.selectionEnd;		
+		
+		if( this.last_selection["selectionStart"] == start && this.last_selection["selectionEnd"] == end && this.last_selection["full_text"] == this.textarea.value )
+		{	
+			return this.last_selection;
+		}
+			
+		if(this.tabulation!="\t" && this.textarea.value.indexOf("\t")!=-1) 
+		{	// can append only after copy/paste 
+			len		= this.textarea.value.length;
+			this.textarea.value	= this.replace_tab(this.textarea.value);
+			start	= end	= start+(this.textarea.value.length-len);
+			this.area_select( start, 0 );
+		}
+		
+		sel["selectionStart"]	= start;
+		sel["selectionEnd"]		= end;		
+		sel["full_text"]		= this.textarea.value;
+		sel["line_start"]		= 1;
+		sel["line_nb"]			= 1;
+		sel["curr_pos"]			= 0;
+		sel["curr_line"]		= "";
+		sel["indexOfCursor"]	= 0;
+		sel["selec_direction"]	= this.last_selection["selec_direction"];
+
+		//return sel;	
+		var splitTab= sel["full_text"].split("\n");
+		var nbLine	= Math.max(0, splitTab.length);		
+		var nbChar	= Math.max(0, sel["full_text"].length - (nbLine - 1));	// (remove \n caracters from the count)
+		if( sel["full_text"].indexOf("\r") != -1 )
+			nbChar	= nbChar - ( nbLine - 1 );		// (remove \r caracters from the count)
+		sel["nb_line"]	= nbLine;		
+		sel["nb_char"]	= nbChar;
+	
+		if(start>0){
+			str					= sel["full_text"].substr(0,start);
+			sel["curr_pos"]		= start - str.lastIndexOf("\n");
+			sel["line_start"]	= Math.max(1, str.split("\n").length);
+		}else{
+			sel["curr_pos"]=1;
+		}
+		if(end>start){
+			sel["line_nb"]=sel["full_text"].substring(start,end).split("\n").length;
+		}
+		sel["indexOfCursor"]=start;		
+		sel["curr_line"]=splitTab[Math.max(0,sel["line_start"]-1)];
+	
+		// determine in which direction the selection grow
+		if(sel["selectionStart"] == this.last_selection["selectionStart"]){
+			if(sel["selectionEnd"]>this.last_selection["selectionEnd"])
+				sel["selec_direction"]= "down";
+			else if(sel["selectionEnd"] == this.last_selection["selectionStart"])
+				sel["selec_direction"]= this.last_selection["selec_direction"];
+		}else if(sel["selectionStart"] == this.last_selection["selectionEnd"] && sel["selectionEnd"]>this.last_selection["selectionEnd"]){
+			sel["selec_direction"]= "down";
+		}else{
+			sel["selec_direction"]= "up";
+		}
+		
+		_$("nbLine").innerHTML	= nbLine;		
+		_$("nbChar").innerHTML	= nbChar;		
+		_$("linePos").innerHTML	= sel["line_start"];
+		_$("currPos").innerHTML	= sel["curr_pos"];
+
+		return sel;		
+	};
+	
+	// set IE position in Firefox mode (textarea.selectionStart and textarea.selectionEnd)
+	EditArea.prototype.getIESelection= function(){
+		var selectionStart, selectionEnd, range, stored_range;
+		
+		if( !this.isIE )
+			return false;
+			
+		// make it work as nowrap mode (easier for range manipulation with lineHeight)
+		if( this.settings['word_wrap'] )
+			this.textarea.wrap='off';
+			
+		try{
+			range			= document.selection.createRange();
+			stored_range	= range.duplicate();
+			stored_range.moveToElementText( this.textarea );
+			stored_range.setEndPoint( 'EndToEnd', range );
+			if( stored_range.parentElement() != this.textarea )
+				throw "invalid focus";
+				
+			// the range don't take care of empty lines in the end of the selection
+			var scrollTop	= this.result.scrollTop + document.body.scrollTop;
+			var relative_top= range.offsetTop - parent.calculeOffsetTop(this.textarea) + scrollTop;
+			var line_start	= Math.round((relative_top / this.lineHeight) +1);
+			var line_nb		= Math.round( range.boundingHeight / this.lineHeight );
+						
+			selectionStart	= stored_range.text.length - range.text.length;		
+			selectionStart	+= ( line_start - this.textarea.value.substr(0, selectionStart).split("\n").length)*2;		// count missing empty \r to the selection
+			selectionStart	-= ( line_start - this.textarea.value.substr(0, selectionStart).split("\n").length ) * 2;
+			
+			selectionEnd	= selectionStart + range.text.length;		
+			selectionEnd	+= (line_start + line_nb - 1 - this.textarea.value.substr(0, selectionEnd ).split("\n").length)*2;			
+		
+			this.textarea.selectionStart	= selectionStart;
+			this.textarea.selectionEnd		= selectionEnd;
+		}
+		catch(e){}
+		
+		// restore wrap mode
+		if( this.settings['word_wrap'] )
+			this.textarea.wrap='soft';
+	};
+	
+	// select the text for IE (and take care of \r caracters)
+	EditArea.prototype.setIESelection= function(){
+		var a = this.textarea, nbLineStart, nbLineEnd, range;
+		
+		if( !this.isIE )
+			return false;
+		
+		nbLineStart	= a.value.substr(0, a.selectionStart).split("\n").length - 1;
+		nbLineEnd 	= a.value.substr(0, a.selectionEnd).split("\n").length - 1;
+		range		= document.selection.createRange();
+		range.moveToElementText( a );
+		range.setEndPoint( 'EndToStart', range );
+		
+		range.moveStart('character', a.selectionStart - nbLineStart);
+		range.moveEnd('character', a.selectionEnd - nbLineEnd - (a.selectionStart - nbLineStart)  );
+		range.select();
+	};
+	
+	
+	
+	EditArea.prototype.checkTextEvolution=function(lastText,newText){
+		// ch will contain changes datas
+		var ch={},baseStep=200, cpt=0, end, step,tStart=new Date().getTime();
+	
+		end		= Math.min(newText.length, lastText.length);
+        step	= baseStep;
+        // find how many chars are similar at the begin of the text						
+		while( cpt<end && step>=1 ){
+            if(lastText.substr(cpt, step) == newText.substr(cpt, step)){
+                cpt+= step;
+            }else{
+                step= Math.floor(step/2);
+            }
+		}
+		
+		ch.posStart	= cpt;
+		ch.lineStart= newText.substr(0, ch.posStart).split("\n").length -1;						
+		
+		cpt_last	= lastText.length;
+        cpt			= newText.length;
+        step		= baseStep;			
+        // find how many chars are similar at the end of the text						
+		while( cpt>=0 && cpt_last>=0 && step>=1 ){
+            if(lastText.substr(cpt_last-step, step) == newText.substr(cpt-step, step)){
+                cpt-= step;
+                cpt_last-= step;
+            }else{
+                step= Math.floor(step/2);
+            }
+		}
+		
+		ch.posNewEnd	= cpt;
+		ch.posLastEnd	= cpt_last;
+		if(ch.posNewEnd<=ch.posStart){
+			if(lastText.length < newText.length){
+				ch.posNewEnd= ch.posStart + newText.length - lastText.length;
+				ch.posLastEnd= ch.posStart;
+			}else{
+				ch.posLastEnd= ch.posStart + lastText.length - newText.length;
+				ch.posNewEnd= ch.posStart;
+			}
+		} 
+		ch.newText		= newText.substring(ch.posStart, ch.posNewEnd);
+		ch.lastText		= lastText.substring(ch.posStart, ch.posLastEnd);			            
+		
+		ch.lineNewEnd	= newText.substr(0, ch.posNewEnd).split("\n").length -1;
+		ch.lineLastEnd	= lastText.substr(0, ch.posLastEnd).split("\n").length -1;
+		
+		ch.newTextLine	= newText.split("\n").slice(ch.lineStart, ch.lineNewEnd+1).join("\n");
+		ch.lastTextLine	= lastText.split("\n").slice(ch.lineStart, ch.lineLastEnd+1).join("\n");
+		//console.log( ch );
+		return ch;	
+	};
+	
+	EditArea.prototype.tab_selection= function(){
+		if(this.is_tabbing)
+			return;
+		this.is_tabbing=true;
+		//infos=getSelectionInfos();
+		//if( document.selection ){
+		this.getIESelection();
+		/* Insertion du code de formatage */
+		var start = this.textarea.selectionStart;
+		var end = this.textarea.selectionEnd;
+		var insText = this.textarea.value.substring(start, end);
+		
+		/* Insert tabulation and ajust cursor position */
+		var pos_start=start;
+		var pos_end=end;
+		if (insText.length == 0) {
+			// if only one line selected
+			this.textarea.value = this.textarea.value.substr(0, start) + this.tabulation + this.textarea.value.substr(end);
+			pos_start = start + this.tabulation.length;
+			pos_end=pos_start;
+		} else {
+			start= Math.max(0, this.textarea.value.substr(0, start).lastIndexOf("\n")+1);
+			endText=this.textarea.value.substr(end);
+			startText=this.textarea.value.substr(0, start);
+			tmp= this.textarea.value.substring(start, end).split("\n");
+			insText= this.tabulation+tmp.join("\n"+this.tabulation);
+			this.textarea.value = startText + insText + endText;
+			pos_start = start;
+			pos_end= this.textarea.value.indexOf("\n", startText.length + insText.length);
+			if(pos_end==-1)
+				pos_end=this.textarea.value.length;
+			//pos = start + repdeb.length + insText.length + ;
+		}
+		this.textarea.selectionStart = pos_start;
+		this.textarea.selectionEnd = pos_end;
+		
+		//if( document.selection ){
+		if(this.isIE)
+		{
+			this.setIESelection();
+			setTimeout("editArea.is_tabbing=false;", 100);	// IE can't accept to make 2 tabulation without a little break between both
+		}
+		else
+		{ 
+			this.is_tabbing=false;
+		}	
+		
+  	};
+	
+	EditArea.prototype.invert_tab_selection= function(){
+		var t=this, a=this.textarea;
+		if(t.is_tabbing)
+			return;
+		t.is_tabbing=true;
+		//infos=getSelectionInfos();
+		//if( document.selection ){
+		t.getIESelection();
+		
+		var start	= a.selectionStart;
+		var end		= a.selectionEnd;
+		var insText	= a.value.substring(start, end);
+		
+		/* Tab remove and cursor seleciton adjust */
+		var pos_start=start;
+		var pos_end=end;
+		if (insText.length == 0) {
+			if(a.value.substring(start-t.tabulation.length, start)==t.tabulation)
+			{
+				a.value		= a.value.substr(0, start-t.tabulation.length) + a.value.substr(end);
+				pos_start	= Math.max(0, start-t.tabulation.length);
+				pos_end		= pos_start;
+			}	
+			/*
+			a.value = a.value.substr(0, start) + t.tabulation + insText + a.value.substr(end);
+			pos_start = start + t.tabulation.length;
+			pos_end=pos_start;*/
+		} else {
+			start		= a.value.substr(0, start).lastIndexOf("\n")+1;
+			endText		= a.value.substr(end);
+			startText	= a.value.substr(0, start);
+			tmp			= a.value.substring(start, end).split("\n");
+			insText		= "";
+			for(i=0; i<tmp.length; i++){				
+				for(j=0; j<t.tab_nb_char; j++){
+					if(tmp[i].charAt(0)=="\t"){
+						tmp[i]=tmp[i].substr(1);
+						j=t.tab_nb_char;
+					}else if(tmp[i].charAt(0)==" ")
+						tmp[i]=tmp[i].substr(1);
+				}		
+				insText+=tmp[i];
+				if(i<tmp.length-1)
+					insText+="\n";
+			}
+			//insText+="_";
+			a.value		= startText + insText + endText;
+			pos_start	= start;
+			pos_end		= a.value.indexOf("\n", startText.length + insText.length);
+			if(pos_end==-1)
+				pos_end=a.value.length;
+			//pos = start + repdeb.length + insText.length + ;
+		}
+		a.selectionStart = pos_start;
+		a.selectionEnd = pos_end;
+		
+		//if( document.selection ){
+		if(t.isIE){
+			// select the text for IE
+			t.setIESelection();
+			setTimeout("editArea.is_tabbing=false;", 100);	// IE can accept to make 2 tabulation without a little break between both
+		}else
+			t.is_tabbing=false;
+  	};
+	
+	EditArea.prototype.press_enter= function(){		
+		if(!this.smooth_selection)
+			return false;
+		this.getIESelection();
+		var scrollTop= this.result.scrollTop;
+		var scrollLeft= this.result.scrollLeft;
+		var start=this.textarea.selectionStart;
+		var end= this.textarea.selectionEnd;
+		var start_last_line= Math.max(0 , this.textarea.value.substring(0, start).lastIndexOf("\n") + 1 );
+		var begin_line= this.textarea.value.substring(start_last_line, start).replace(/^([ \t]*).*/gm, "$1");
+		var lineStart = this.textarea.value.substring(0, start).split("\n").length;
+		if(begin_line=="\n" || begin_line=="\r" || begin_line.length==0)
+		{
+			return false;
+		}
+			
+		if(this.isIE || ( this.isOpera && this.isOpera < 9.6 ) ){
+			begin_line="\r\n"+ begin_line;
+		}else{
+			begin_line="\n"+ begin_line;
+		}	
+		//alert(start_last_line+" strat: "+start +"\n"+this.textarea.value.substring(start_last_line, start)+"\n_"+begin_line+"_")
+		this.textarea.value= this.textarea.value.substring(0, start) + begin_line + this.textarea.value.substring(end);
+		
+		this.area_select(start+ begin_line.length ,0);
+		// during this process IE scroll back to the top of the textarea
+		if(this.isIE){
+			this.result.scrollTop	= scrollTop;
+			this.result.scrollLeft	= scrollLeft;
+		}
+		return true;
+		
+	};
+	
+	EditArea.prototype.findEndBracket= function(infos, bracket){
+			
+		var start=infos["indexOfCursor"];
+		var normal_order=true;
+		//curr_text=infos["full_text"].split("\n");
+		if(this.assocBracket[bracket])
+			endBracket=this.assocBracket[bracket];
+		else if(this.revertAssocBracket[bracket]){
+			endBracket=this.revertAssocBracket[bracket];
+			normal_order=false;
+		}	
+		var end=-1;
+		var nbBracketOpen=0;
+		
+		for(var i=start; i<infos["full_text"].length && i>=0; ){
+			if(infos["full_text"].charAt(i)==endBracket){				
+				nbBracketOpen--;
+				if(nbBracketOpen<=0){
+					//i=infos["full_text"].length;
+					end=i;
+					break;
+				}
+			}else if(infos["full_text"].charAt(i)==bracket)
+				nbBracketOpen++;
+			if(normal_order)
+				i++;
+			else
+				i--;
+		}
+		
+		//end=infos["full_text"].indexOf("}", start);
+		if(end==-1)
+			return false;	
+		var endLastLine=infos["full_text"].substr(0, end).lastIndexOf("\n");			
+		if(endLastLine==-1)
+			line=1;
+		else
+			line= infos["full_text"].substr(0, endLastLine).split("\n").length + 1;
+					
+		var curPos= end - endLastLine - 1;
+		var endLineLength	= infos["full_text"].substring(end).split("\n")[0].length;
+		this.displayToCursorPosition("end_bracket", line, curPos, infos["full_text"].substring(endLastLine +1, end + endLineLength));
+		return true;
+	};
+	
+	EditArea.prototype.displayToCursorPosition= function(id, start_line, cur_pos, lineContent, no_real_move){
+		var elem,dest,content,posLeft=0,posTop,fixPadding,topOffset,endElem;	
+
+		elem		= this.test_font_size;
+		dest		= _$(id);
+		content		= "<span id='test_font_size_inner'>"+lineContent.substr(0, cur_pos).replace(/&/g,"&amp;").replace(/</g,"&lt;")+"</span><span id='endTestFont'>"+lineContent.substr(cur_pos).replace(/&/g,"&amp;").replace(/</g,"&lt;")+"</span>";
+		if( this.isIE || ( this.isOpera && this.isOpera < 9.6 ) ) {
+			elem.innerHTML= "<pre>" + content.replace(/^\r?\n/, "<br>") + "</pre>";
+		} else {
+			elem.innerHTML= content;
+		}
+		
+
+		endElem		= _$('endTestFont');
+		topOffset	= endElem.offsetTop;
+		fixPadding	= parseInt( this.content_highlight.style.paddingLeft.replace("px", "") );
+		posLeft 	= 45 + endElem.offsetLeft + ( !isNaN( fixPadding ) && topOffset > 0 ? fixPadding : 0 );
+		posTop		= this.getLinePosTop( start_line ) + topOffset;// + Math.floor( ( endElem.offsetHeight - 1 ) / this.lineHeight ) * this.lineHeight;
+	
+		// detect the case where the span start on a line but has no display on it
+		if( this.isIE && cur_pos > 0 && endElem.offsetLeft == 0 )
+		{
+			posTop	+=	this.lineHeight;
+		}
+		if(no_real_move!=true){	// when the cursor is hidden no need to move him
+			dest.style.top=posTop+"px";
+			dest.style.left=posLeft+"px";	
+		}
+		// usefull for smarter scroll
+		dest.cursor_top=posTop;
+		dest.cursor_left=posLeft;	
+	//	_$(id).style.marginLeft=posLeft+"px";
+	};
+	
+	EditArea.prototype.getLinePosTop= function(start_line){
+		var elem= _$('line_'+ start_line), posTop=0;
+		if( elem )
+			posTop	= elem.offsetTop;
+		else
+			posTop	= this.lineHeight * (start_line-1);
+		return posTop;
+	};
+	
+	
+	// return the dislpayed height of a text (take word-wrap into account)
+	EditArea.prototype.getTextHeight= function(text){
+		var t=this,elem,height;
+		elem		= t.test_font_size;
+		content		= text.replace(/&/g,"&amp;").replace(/</g,"&lt;");
+		if( t.isIE || ( this.isOpera && this.isOpera < 9.6 ) ) {
+			elem.innerHTML= "<pre>" + content.replace(/^\r?\n/, "<br>") + "</pre>";
+		} else {
+			elem.innerHTML= content;
+		}
+		height	= elem.offsetHeight;
+		height	= Math.max( 1, Math.floor( elem.offsetHeight / this.lineHeight ) ) * this.lineHeight;
+		return height;
+	};
+
+	/**
+	 * Fix line height for the given lines
+	 * @param Integer linestart
+	 * @param Integer lineEnd End line or -1 to cover all lines
+	 */
+	EditArea.prototype.fixLinesHeight= function( textValue, lineStart,lineEnd ){
+		var aText = textValue.split("\n");
+		if( lineEnd == -1 )
+			lineEnd	= aText.length-1;
+		for( var i = Math.max(0, lineStart); i <= lineEnd; i++ )
+		{
+			if( elem = _$('line_'+ ( i+1 ) ) )
+			{
+				elem.style.height= typeof( aText[i] ) != "undefined" ? this.getTextHeight( aText[i] )+"px" : this.lineHeight;
+			}
+		}
+	};
+	
+	EditArea.prototype.area_select= function(start, length){
+		this.textarea.focus();
+		
+		start	= Math.max(0, Math.min(this.textarea.value.length, start));
+		end		= Math.max(start, Math.min(this.textarea.value.length, start+length));
+
+		if(this.isIE)
+		{
+			this.textarea.selectionStart	= start;
+			this.textarea.selectionEnd		= end;		
+			this.setIESelection();
+		}
+		else
+		{
+			// Opera bug when moving selection start and selection end
+			if(this.isOpera && this.isOpera < 9.6 )
+			{	
+				this.textarea.setSelectionRange(0, 0);
+			}
+			this.textarea.setSelectionRange(start, end);
+		}
+		this.check_line_selection();
+	};
+	
+	
+	EditArea.prototype.area_get_selection= function(){
+		var text="";
+		if( document.selection ){
+			var range = document.selection.createRange();
+			text=range.text;
+		}else{
+			text= this.textarea.value.substring(this.textarea.selectionStart, this.textarea.selectionEnd);
+		}
+		return text;			
+	};
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax.js
new file mode 100644
index 0000000..11518cc
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax.js
@@ -0,0 +1,166 @@
+	EditAreaLoader.prototype.get_regexp= function(text_array){
+		//res="( |=|\\n|\\r|\\[|\\(|µ|)(";
+		res="(\\b)(";
+		for(i=0; i<text_array.length; i++){
+			if(i>0)
+				res+="|";
+			//res+="("+ tab_text[i] +")";
+			//res+=tab_text[i].replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\{|\})/g, "\\$1");
+			res+=this.get_escaped_regexp(text_array[i]);
+		}
+		//res+=")( |\\.|:|\\{|\\(|\\)|\\[|\\]|\'|\"|\\r|\\n|\\t|$)";
+		res+=")(\\b)";
+		reg= new RegExp(res);
+		
+		return res;
+	};
+	
+	
+	EditAreaLoader.prototype.get_escaped_regexp= function(str){
+		return str.toString().replace(/(\.|\?|\*|\+|\\|\(|\)|\[|\]|\}|\{|\$|\^|\|)/g, "\\$1");
+	};
+	
+	EditAreaLoader.prototype.init_syntax_regexp= function(){
+		var lang_style= {};	
+		for(var lang in this.load_syntax){
+			if(!this.syntax[lang])	// init the regexp if not already initialized
+			{
+				this.syntax[lang]= {};
+				this.syntax[lang]["keywords_reg_exp"]= {};
+				this.keywords_reg_exp_nb=0;
+			
+				if(this.load_syntax[lang]['KEYWORDS']){
+					param="g";
+					if(this.load_syntax[lang]['KEYWORD_CASE_SENSITIVE']===false)
+						param+="i";
+					for(var i in this.load_syntax[lang]['KEYWORDS']){
+						if(typeof(this.load_syntax[lang]['KEYWORDS'][i])=="function") continue;
+						this.syntax[lang]["keywords_reg_exp"][i]= new RegExp(this.get_regexp( this.load_syntax[lang]['KEYWORDS'][i] ), param);
+						this.keywords_reg_exp_nb++;
+					}
+				}
+				
+				if(this.load_syntax[lang]['OPERATORS']){
+					var str="";
+					var nb=0;
+					for(var i in this.load_syntax[lang]['OPERATORS']){
+						if(typeof(this.load_syntax[lang]['OPERATORS'][i])=="function") continue;
+						if(nb>0)
+							str+="|";				
+						str+=this.get_escaped_regexp(this.load_syntax[lang]['OPERATORS'][i]);
+						nb++;
+					}
+					if(str.length>0)
+						this.syntax[lang]["operators_reg_exp"]= new RegExp("("+str+")","g");
+				}
+				
+				if(this.load_syntax[lang]['DELIMITERS']){
+					var str="";
+					var nb=0;
+					for(var i in this.load_syntax[lang]['DELIMITERS']){
+						if(typeof(this.load_syntax[lang]['DELIMITERS'][i])=="function") continue;
+						if(nb>0)
+							str+="|";
+						str+=this.get_escaped_regexp(this.load_syntax[lang]['DELIMITERS'][i]);
+						nb++;
+					}
+					if(str.length>0)
+						this.syntax[lang]["delimiters_reg_exp"]= new RegExp("("+str+")","g");
+				}
+				
+				
+		//		/(("(\\"|[^"])*"?)|('(\\'|[^'])*'?)|(//(.|\r|\t)*\n)|(/\*(.|\n|\r|\t)*\*/)|(<!--(.|\n|\r|\t)*-->))/gi
+				var syntax_trace=[];
+				
+		//		/("(?:[^"\\]*(\\\\)*(\\"?)?)*("|$))/g
+				
+				this.syntax[lang]["quotes"]={};
+				var quote_tab= [];
+				if(this.load_syntax[lang]['QUOTEMARKS']){
+					for(var i in this.load_syntax[lang]['QUOTEMARKS']){	
+						if(typeof(this.load_syntax[lang]['QUOTEMARKS'][i])=="function") continue;			
+						var x=this.get_escaped_regexp(this.load_syntax[lang]['QUOTEMARKS'][i]);
+						this.syntax[lang]["quotes"][x]=x;
+						//quote_tab[quote_tab.length]="("+x+"(?:\\\\"+x+"|[^"+x+"])*("+x+"|$))";
+						//previous working : quote_tab[quote_tab.length]="("+x+"(?:[^"+x+"\\\\]*(\\\\\\\\)*(\\\\"+x+"?)?)*("+x+"|$))";
+						quote_tab[quote_tab.length]="("+ x +"(\\\\.|[^"+ x +"])*(?:"+ x +"|$))";
+						
+						syntax_trace.push(x);			
+					}			
+				}
+						
+				this.syntax[lang]["comments"]={};
+				if(this.load_syntax[lang]['COMMENT_SINGLE']){
+					for(var i in this.load_syntax[lang]['COMMENT_SINGLE']){	
+						if(typeof(this.load_syntax[lang]['COMMENT_SINGLE'][i])=="function") continue;						
+						var x=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_SINGLE'][i]);
+						quote_tab[quote_tab.length]="("+x+"(.|\\r|\\t)*(\\n|$))";
+						syntax_trace.push(x);
+						this.syntax[lang]["comments"][x]="\n";
+					}			
+				}		
+				// (/\*(.|[\r\n])*?\*/)
+				if(this.load_syntax[lang]['COMMENT_MULTI']){
+					for(var i in this.load_syntax[lang]['COMMENT_MULTI']){
+						if(typeof(this.load_syntax[lang]['COMMENT_MULTI'][i])=="function") continue;							
+						var start=this.get_escaped_regexp(i);
+						var end=this.get_escaped_regexp(this.load_syntax[lang]['COMMENT_MULTI'][i]);
+						quote_tab[quote_tab.length]="("+start+"(.|\\n|\\r)*?("+end+"|$))";
+						syntax_trace.push(start);
+						syntax_trace.push(end);
+						this.syntax[lang]["comments"][i]=this.load_syntax[lang]['COMMENT_MULTI'][i];
+					}			
+				}		
+				if(quote_tab.length>0)
+					this.syntax[lang]["comment_or_quote_reg_exp"]= new RegExp("("+quote_tab.join("|")+")","gi");
+				
+				if(syntax_trace.length>0) //   /((.|\n)*?)(\\*("|'|\/\*|\*\/|\/\/|$))/g
+					this.syntax[lang]["syntax_trace_regexp"]= new RegExp("((.|\n)*?)(\\\\*("+ syntax_trace.join("|") +"|$))", "gmi");
+				
+				if(this.load_syntax[lang]['SCRIPT_DELIMITERS']){
+					this.syntax[lang]["script_delimiters"]= {};
+					for(var i in this.load_syntax[lang]['SCRIPT_DELIMITERS']){
+						if(typeof(this.load_syntax[lang]['SCRIPT_DELIMITERS'][i])=="function") continue;							
+						this.syntax[lang]["script_delimiters"][i]= this.load_syntax[lang]['SCRIPT_DELIMITERS'];
+					}			
+				}
+				
+				this.syntax[lang]["custom_regexp"]= {};
+				if(this.load_syntax[lang]['REGEXPS']){
+					for(var i in this.load_syntax[lang]['REGEXPS']){
+						if(typeof(this.load_syntax[lang]['REGEXPS'][i])=="function") continue;
+						var val= this.load_syntax[lang]['REGEXPS'][i];
+						if(!this.syntax[lang]["custom_regexp"][val['execute']])
+							this.syntax[lang]["custom_regexp"][val['execute']]= {};
+						this.syntax[lang]["custom_regexp"][val['execute']][i]={'regexp' : new RegExp(val['search'], val['modifiers'])
+																			, 'class' : val['class']};
+					}
+				}
+				
+				if(this.load_syntax[lang]['STYLES']){							
+					lang_style[lang]= {};
+					for(var i in this.load_syntax[lang]['STYLES']){
+						if(typeof(this.load_syntax[lang]['STYLES'][i])=="function") continue;
+						if(typeof(this.load_syntax[lang]['STYLES'][i]) != "string"){
+							for(var j in this.load_syntax[lang]['STYLES'][i]){							
+								lang_style[lang][j]= this.load_syntax[lang]['STYLES'][i][j];
+							}
+						}else{
+							lang_style[lang][i]= this.load_syntax[lang]['STYLES'][i];
+						}
+					}
+				}
+				// build style string
+				var style="";		
+				for(var i in lang_style[lang]){
+					if(lang_style[lang][i].length>0){
+						style+= "."+ lang +" ."+ i.toLowerCase() +" span{"+lang_style[lang][i]+"}\n";
+						style+= "."+ lang +" ."+ i.toLowerCase() +"{"+lang_style[lang][i]+"}\n";				
+					}
+				}
+				this.syntax[lang]["styles"]=style;
+			}
+		}				
+	};
+	
+	editAreaLoader.waiting_loading["reg_syntax.js"]= "loaded";

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/basic.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/basic.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/basic.js
new file mode 100644
index 0000000..93b578d
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/basic.js
@@ -0,0 +1,69 @@
+editAreaLoader.load_syntax["basic"] = {
+	'COMMENT_SINGLE' : {1 : "'", 2 : 'rem'}
+	,'COMMENT_MULTI' : { }
+	,'QUOTEMARKS' : {1: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'statements' : [
+			'if','then','for','wend','while',
+			'else','elseif','select','case','end select',
+			'until','next','step','to','end if', 'call'
+		]
+		,'keywords' : [
+			'sub', 'end sub', 'function', 'end function', 'exit',
+			'exit function', 'dim', 'redim', 'shared', 'const',
+			'is', 'absolute', 'access', 'any', 'append', 'as',
+			'base', 'beep', 'binary', 'bload', 'bsave', 'chain',
+			'chdir', 'circle', 'clear', 'close', 'cls', 'color',
+			'com', 'common', 'data', 'date', 'declare', 'def',
+			'defdbl', 'defint', 'deflng', 'defsng', 'defstr',
+			'double', 'draw', 'environ', 'erase', 'error', 'field',
+			'files', 'fn', 'get', 'gosub', 'goto', 'integer', 'key',
+			'kill', 'let', 'line', 'list', 'locate', 'lock', 'long',
+			'lprint', 'lset', 'mkdir', 'name', 'off', 'on', 'open',
+			'option', 'out', 'output', 'paint', 'palette', 'pcopy',
+			'poke', 'preset', 'print', 'pset', 'put', 'random',
+			'randomize', 'read', 'reset', 'restore', 'resume',
+			'return', 'rmdir', 'rset', 'run', 'screen', 'seg',
+			'shell', 'single', 'sleep', 'sound', 'static', 'stop',
+			'strig', 'string', 'swap', 'system', 'time', 'timer',
+			'troff', 'tron', 'type', 'unlock', 'using', 'view',
+			'wait', 'width', 'window', 'write'
+	        ]
+		,'functions' : [
+			'abs', 'asc', 'atn', 'cdbl', 'chr', 'cint', 'clng',
+			'cos', 'csng', 'csrlin', 'cvd', 'cvdmbf', 'cvi', 'cvl',
+			'cvs', 'cvsmbf', 'eof', 'erdev', 'erl', 'err', 'exp',
+			'fileattr', 'fix', 'fre', 'freefile', 'hex', 'inkey',
+			'inp', 'input', 'instr', 'int', 'ioctl', 'lbound',
+			'lcase', 'left', 'len', 'loc', 'lof', 'log', 'lpos',
+			'ltrim', 'mid', 'mkd', 'mkdmbf', 'mki', 'mkl', 'mks',
+			'mksmbf', 'oct', 'peek', 'pen', 'play', 'pmap', 'point',
+			'pos', 'right', 'rnd', 'rtrim', 'seek', 'sgn', 'sin',
+			'space', 'spc', 'sqr', 'stick', 'str', 'tab', 'tan',
+			'ubound', 'ucase', 'val', 'varptr', 'varseg'
+		]
+		,'operators' : [
+			'and', 'eqv', 'imp', 'mod', 'not', 'or', 'xor'
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '!', '&'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #99CC00;'
+		,'QUOTESMARKS': 'color: #333399;'
+		,'KEYWORDS' : {
+			'keywords' : 'color: #3366FF;'
+			,'functions' : 'color: #0000FF;'
+			,'statements' : 'color: #3366FF;'
+			,'operators' : 'color: #FF0000;'
+			}
+		,'OPERATORS' : 'color: #FF0000;'
+		,'DELIMITERS' : 'color: #0000FF;'
+
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/brainfuck.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/brainfuck.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/brainfuck.js
new file mode 100644
index 0000000..810c3d6
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/brainfuck.js
@@ -0,0 +1,44 @@
+editAreaLoader.load_syntax["brainfuck"] = {
+	'COMMENT_SINGLE' : {}
+	,'COMMENT_MULTI' : {}
+	,'QUOTEMARKS' : {}
+	,'KEYWORD_CASE_SENSITIVE' : true
+	,'OPERATORS' :[
+		'+', '-'
+	]
+	,'DELIMITERS' :[
+		'[', ']'
+	]
+	,'REGEXPS' : {
+		'bfispis' : {
+			'search' : '()(\\.)()'
+			,'class' : 'bfispis'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}
+		,'bfupis' : {
+			'search' : '()(\\,)()'
+			,'class' : 'bfupis'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}
+		,'bfmemory' : {
+			'search' : '()([<>])()'
+			,'class' : 'bfmemory'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'OPERATORS' : 'color: #88AA00;'
+		,'DELIMITERS' : 'color: #00C138;'
+		,'REGEXPS' : {
+			'bfispis' : 'color: #EE0000;'
+			,'bfupis' : 'color: #4455ee;'
+			,'bfmemory' : 'color: #DD00DD;'
+		}
+	}
+};
+

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/c.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/c.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/c.js
new file mode 100644
index 0000000..31667a0
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/c.js
@@ -0,0 +1,62 @@
+editAreaLoader.load_syntax["c"] = {
+	'COMMENT_SINGLE' : {1 : '//'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : true
+	,'KEYWORDS' : {
+		'constants' : [
+			'NULL', 'false', 'stdin', 'stdout', 'stderr', 'true'
+		]
+		,'types' : [
+			'FILE', 'auto', 'char', 'const', 'double',
+			'extern', 'float', 'inline', 'int', 'long', 'register',
+			'short', 'signed', 'size_t', 'static', 'struct',
+			'time_t', 'typedef', 'union', 'unsigned', 'void',
+			'volatile'
+		]
+		,'statements' : [
+			'do', 'else', 'enum', 'for', 'goto', 'if', 'sizeof',
+			'switch', 'while'
+		]
+ 		,'keywords' : [
+			'break', 'case', 'continue', 'default', 'delete',
+			'return'
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'REGEXPS' : {
+		'precompiler' : {
+			'search' : '()(#[^\r\n]*)()'
+			,'class' : 'precompiler'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}
+/*		,'precompilerstring' : {
+			'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])'
+			,'class' : 'precompilerstring'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}*/
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'constants' : 'color: #EE0000;'
+			,'types' : 'color: #0000EE;'
+			,'statements' : 'color: #60CA00;'
+			,'keywords' : 'color: #48BDDF;'
+		}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #0038E1;'
+		,'REGEXPS' : {
+			'precompiler' : 'color: #009900;'
+			,'precompilerstring' : 'color: #994400;'
+		}
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/coldfusion.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/coldfusion.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/coldfusion.js
new file mode 100644
index 0000000..673e874
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/coldfusion.js
@@ -0,0 +1,119 @@
+editAreaLoader.load_syntax["coldfusion"] = {
+	'COMMENT_SINGLE' : {1 : '//', 2 : '#'}
+	,'COMMENT_MULTI' : {'<!--' : '-->'}
+	,'COMMENT_MULTI2' : {'<!---' : '--->'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+		,'KEYWORDS' : {
+		'statements' : [
+			'include', 'require', 'include_once', 'require_once',
+			'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+            'endif', 'switch', 'case', 'endswitch',
+			'return', 'break', 'continue'
+		]
+		,'reserved' : [
+			'AND', 'break', 'case', 'CONTAIN', 'CONTAINS', 'continue', 'default', 'do', 
+			'DOES', 'else', 'EQ', 'EQUAL', 'EQUALTO', 'EQV', 'FALSE', 'for', 'GE', 
+			'GREATER', 'GT', 'GTE', 'if', 'IMP', 'in', 'IS', 'LE', 'LESS', 'LT', 'LTE', 
+			'MOD', 'NEQ', 'NOT', 'OR', 'return', 'switch', 'THAN', 'TO', 'TRUE', 'var', 
+			'while', 'XOR'
+		]
+		,'functions' : [
+			'Abs', 'ACos', 'ArrayAppend', 'ArrayAvg', 'ArrayClear', 'ArrayDeleteAt', 'ArrayInsertAt', 
+			'ArrayIsEmpty', 'ArrayLen', 'ArrayMax', 'ArrayMin', 'ArrayNew', 'ArrayPrepend', 'ArrayResize', 
+			'ArraySet', 'ArraySort', 'ArraySum', 'ArraySwap', 'ArrayToList', 'Asc', 'ASin', 'Atn', 'AuthenticatedContext', 
+			'AuthenticatedUser', 'BitAnd', 'BitMaskClear', 'BitMaskRead', 'BitMaskSet', 'BitNot', 'BitOr', 
+			'BitSHLN', 'BitSHRN', 'BitXor', 'Ceiling', 'Chr', 'CJustify', 'Compare', 'CompareNoCase', 'Cos', 
+			'CreateDate', 'CreateDateTime', 'CreateODBCDate', 'CreateODBCDateTime', 'CreateODBCTime', 
+			'CreateTime', 'CreateTimeSpan', 'DateAdd', 'DateCompare', 'DateConvert', 'DateDiff', 
+			'DateFormat', 'DatePart', 'Day', 'DayOfWeek', 'DayOfWeekAsString', 'DayOfYear', 'DaysInMonth', 
+			'DaysInYear', 'DE', 'DecimalFormat', 'DecrementValue', 'Decrypt', 'DeleteClientVariable', 
+			'DirectoryExists', 'DollarFormat', 'Duplicate', 'Encrypt', 'Evaluate', 'Exp', 'ExpandPath', 
+			'FileExists', 'Find', 'FindNoCase', 'FindOneOf', 'FirstDayOfMonth', 'Fix', 'FormatBaseN', 
+			'GetBaseTagData', 'GetBaseTagList', 'GetBaseTemplatePath', 'GetClientVariablesList', 
+			'GetCurrentTemplatePath', 'GetDirectoryFromPath', 'GetException', 'GetFileFromPath', 
+			'GetFunctionList', 'GetHttpTimeString', 'GetHttpRequestData', 'GetLocale', 'GetMetricData', 
+			'GetProfileString', 'GetTempDirectory', 'GetTempFile', 'GetTemplatePath', 'GetTickCount', 
+			'GetTimeZoneInfo', 'GetToken', 'Hash', 'Hour', 'HTMLCodeFormat', 'HTMLEditFormat', 'IIf', 
+			'IncrementValue', 'InputBaseN', 'Insert', 'Int', 'IsArray', 'IsAuthenticated', 'IsAuthorized', 
+			'IsBoolean', 'IsBinary', 'IsCustomFunction', 'IsDate', 'IsDebugMode', 'IsDefined', 'IsLeapYear', 
+			'IsNumeric', 'IsNumericDate', 'IsProtected', 'IsQuery', 'IsSimpleValue', 'IsStruct', 'IsWDDX', 
+			'JavaCast', 'JSStringFormat', 'LCase', 'Left', 'Len', 'ListAppend', 'ListChangeDelims', 
+			'ListContains', 'ListContainsNoCase', 'ListDeleteAt', 'ListFind', 'ListFindNoCase', 'ListFirst', 
+			'ListGetAt', 'ListInsertAt', 'ListLast', 'ListLen', 'ListPrepend', 'ListQualify', 'ListRest', 
+			'ListSetAt', 'ListSort', 'ListToArray', 'ListValueCount', 'ListValueCountNoCase', 'LJustify', 
+			'Log', 'Log10', 'LSCurrencyFormat', 'LSDateFormat', 'LSEuroCurrencyFormat', 'LSIsCurrency', 
+			'LSIsDate', 'LSIsNumeric', 'LSNumberFormat', 'LSParseCurrency', 'LSParseDateTime', 'LSParseNumber', 
+			'LSTimeFormat', 'LTrim', 'Max', 'Mid', 'Min', 'Minute', 'Month', 'MonthAsString', 'Now', 'NumberFormat', 
+			'ParagraphFormat', 'ParameterExists', 'ParseDateTime', 'Pi', 'PreserveSingleQuotes', 'Quarter', 
+			'QueryAddRow', 'QueryNew', 'QuerySetCell', 'QuotedValueList', 'Rand', 'Randomize', 'RandRange', 
+			'REFind', 'REFindNoCase', 'RemoveChars', 'RepeatString', 'Replace', 'ReplaceList', 'ReplaceNoCase', 
+			'REReplace', 'REReplaceNoCase', 'Reverse', 'Right', 'RJustify', 'Round', 'RTrim', 'Second', 'SetLocale', 
+			'SetProfileString', 'SetVariable', 'Sgn', 'Sin', 'SpanExcluding', 'SpanIncluding', 'Sqr', 'StripCR', 
+			'StructAppend', 'StructClear', 'StructCopy', 'StructCount', 'StructDelete', 'StructFind', 'StructFindKey', 
+			'StructFindValue', 'StructGet', 'StructInsert', 'StructIsEmpty', 'StructKeyArray', 'StructKeyExists', 
+			'StructKeyList', 'StructNew', 'StructSort', 'StructUpdate', 'Tan', 'TimeFormat', 'ToBase64', 'ToBinary', 
+			'ToString', 'Trim', 'UCase', 'URLDecode', 'URLEncodedFormat', 'Val', 'ValueList', 'Week', 'WriteOutput', 
+			'XMLFormat', 'Year', 'YesNoFormat'
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '%', '!', '&&', '||'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'REGEXPS' : {
+		'doctype' : {
+			'search' : '()(<!DOCTYPE[^>]*>)()'
+			,'class' : 'doctype'
+			,'modifiers' : ''
+			,'execute' : 'before' // before or after
+		}
+		,'cftags' : {
+			'search' : '(<)(/cf[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'cftags'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'cftags2' : {
+			'search' : '(<)(cf[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'cftags2'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'tags' : {
+			'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'tags'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'attributes' : {
+			'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+			,'class' : 'attributes'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'reserved' : 'color: #48BDDF;'
+			,'functions' : 'color: #0000FF;'
+			,'statements' : 'color: #60CA00;'
+			}
+		,'OPERATORS' : 'color: #E775F0;'
+		,'DELIMITERS' : ''
+		,'REGEXPS' : {
+			'attributes': 'color: #990033;'
+			,'cftags': 'color: #990033;'
+			,'cftags2': 'color: #990033;'
+			,'tags': 'color: #000099;'
+			,'doctype': 'color: #8DCFB5;'
+			,'test': 'color: #00FF00;'
+		}	
+	}		
+};
+
+ 	  	 

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/cpp.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/cpp.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/cpp.js
new file mode 100644
index 0000000..74826d3
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/cpp.js
@@ -0,0 +1,65 @@
+editAreaLoader.load_syntax["cpp"] = {
+	'COMMENT_SINGLE' : {1 : '//'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : true
+	,'KEYWORDS' : {
+		'constants' : [
+			'NULL', 'false', 'std', 'stdin', 'stdout', 'stderr',
+			'true'
+		]
+		,'types' : [
+			'FILE', 'auto', 'char', 'class', 'const', 'double',
+			'extern', 'float', 'friend', 'inline', 'int',
+			'iterator', 'long', 'map', 'operator', 'queue',
+			'register', 'short', 'signed', 'size_t', 'stack',
+			'static', 'string', 'struct', 'time_t', 'typedef',
+			'union', 'unsigned', 'vector', 'void', 'volatile'
+		]
+		,'statements' : [
+			'catch', 'do', 'else', 'enum', 'for', 'goto', 'if',
+			'sizeof', 'switch', 'this', 'throw', 'try', 'while'
+		]
+ 		,'keywords' : [
+			'break', 'case', 'continue', 'default', 'delete',
+			'namespace', 'new', 'private', 'protected', 'public',
+			'return', 'using'
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'REGEXPS' : {
+		'precompiler' : {
+			'search' : '()(#[^\r\n]*)()'
+			,'class' : 'precompiler'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}
+/*		,'precompilerstring' : {
+			'search' : '(#[\t ]*include[\t ]*)([^\r\n]*)([^\r\n]*[\r\n])'
+			,'class' : 'precompilerstring'
+			,'modifiers' : 'g'
+			,'execute' : 'before'
+		}*/
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'constants' : 'color: #EE0000;'
+			,'types' : 'color: #0000EE;'
+			,'statements' : 'color: #60CA00;'
+			,'keywords' : 'color: #48BDDF;'
+		}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #0038E1;'
+		,'REGEXPS' : {
+			'precompiler' : 'color: #009900;'
+			,'precompilerstring' : 'color: #994400;'
+		}
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/css.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/css.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/css.js
new file mode 100644
index 0000000..8dded1b
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/css.js
@@ -0,0 +1,84 @@
+editAreaLoader.load_syntax["css"] = {
+	'COMMENT_SINGLE' : {1 : '@'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : ['"', "'"]
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'attributes' : [
+			'aqua', 'azimuth', 'background-attachment', 'background-color',
+			'background-image', 'background-position', 'background-repeat',
+			'background', 'border-bottom-color', 'border-bottom-style',
+			'border-bottom-width', 'border-left-color', 'border-left-style',
+			'border-left-width', 'border-right', 'border-right-color',
+			'border-right-style', 'border-right-width', 'border-top-color',
+			'border-top-style', 'border-top-width','border-bottom', 'border-collapse',
+			'border-left', 'border-width', 'border-color', 'border-spacing',
+			'border-style', 'border-top', 'border',  'caption-side',
+			'clear', 'clip', 'color', 'content', 'counter-increment', 'counter-reset',
+			'cue-after', 'cue-before', 'cue', 'cursor', 'direction', 'display',
+			'elevation', 'empty-cells', 'float', 'font-family', 'font-size',
+			'font-size-adjust', 'font-stretch', 'font-style', 'font-variant',
+			'font-weight', 'font', 'height', 'letter-spacing', 'line-height',
+			'list-style', 'list-style-image', 'list-style-position', 'list-style-type',
+			'margin-bottom', 'margin-left', 'margin-right', 'margin-top', 'margin',
+			'marker-offset', 'marks', 'max-height', 'max-width', 'min-height',
+			'min-width', 'opacity', 'orphans', 'outline', 'outline-color', 'outline-style',
+			'outline-width', 'overflow', 'padding-bottom', 'padding-left',
+			'padding-right', 'padding-top', 'padding', 'page', 'page-break-after',
+			'page-break-before', 'page-break-inside', 'pause-after', 'pause-before',
+			'pause', 'pitch', 'pitch-range',  'play-during', 'position', 'quotes',
+			'richness', 'right', 'size', 'speak-header', 'speak-numeral', 'speak-punctuation',
+			'speak', 'speech-rate', 'stress', 'table-layout', 'text-align', 'text-decoration',
+			'text-indent', 'text-shadow', 'text-transform', 'top', 'unicode-bidi',
+			'vertical-align', 'visibility', 'voice-family', 'volume', 'white-space', 'widows',
+			'width', 'word-spacing', 'z-index', 'bottom', 'left'
+		]
+		,'values' : [
+			'above', 'absolute', 'always', 'armenian', 'aural', 'auto', 'avoid',
+			'baseline', 'behind', 'below', 'bidi-override', 'black', 'blue', 'blink', 'block', 'bold', 'bolder', 'both',
+			'capitalize', 'center-left', 'center-right', 'center', 'circle', 'cjk-ideographic', 
+            'close-quote', 'collapse', 'condensed', 'continuous', 'crop', 'crosshair', 'cross', 'cursive',
+			'dashed', 'decimal-leading-zero', 'decimal', 'default', 'digits', 'disc', 'dotted', 'double',
+			'e-resize', 'embed', 'extra-condensed', 'extra-expanded', 'expanded',
+			'fantasy', 'far-left', 'far-right', 'faster', 'fast', 'fixed', 'fuchsia',
+			'georgian', 'gray', 'green', 'groove', 'hebrew', 'help', 'hidden', 'hide', 'higher',
+			'high', 'hiragana-iroha', 'hiragana', 'icon', 'inherit', 'inline-table', 'inline',
+			'inset', 'inside', 'invert', 'italic', 'justify', 'katakana-iroha', 'katakana',
+			'landscape', 'larger', 'large', 'left-side', 'leftwards', 'level', 'lighter', 'lime', 'line-through', 'list-item', 'loud', 'lower-alpha', 'lower-greek', 'lower-roman', 'lowercase', 'ltr', 'lower', 'low',
+			'maroon', 'medium', 'message-box', 'middle', 'mix', 'monospace',
+			'n-resize', 'narrower', 'navy', 'ne-resize', 'no-close-quote', 'no-open-quote', 'no-repeat', 'none', 'normal', 'nowrap', 'nw-resize',
+			'oblique', 'olive', 'once', 'open-quote', 'outset', 'outside', 'overline',
+			'pointer', 'portrait', 'purple', 'px',
+			'red', 'relative', 'repeat-x', 'repeat-y', 'repeat', 'rgb', 'ridge', 'right-side', 'rightwards',
+			's-resize', 'sans-serif', 'scroll', 'se-resize', 'semi-condensed', 'semi-expanded', 'separate', 'serif', 'show', 'silent', 'silver', 'slow', 'slower', 'small-caps', 'small-caption', 'smaller', 'soft', 'solid', 'spell-out', 'square',
+			'static', 'status-bar', 'super', 'sw-resize',
+			'table-caption', 'table-cell', 'table-column', 'table-column-group', 'table-footer-group', 'table-header-group', 'table-row', 'table-row-group', 'teal', 'text', 'text-bottom', 'text-top', 'thick', 'thin', 'transparent',
+			'ultra-condensed', 'ultra-expanded', 'underline', 'upper-alpha', 'upper-latin', 'upper-roman', 'uppercase', 'url',
+			'visible',
+			'w-resize', 'wait', 'white', 'wider',
+			'x-fast', 'x-high', 'x-large', 'x-loud', 'x-low', 'x-small', 'x-soft', 'xx-large', 'xx-small',
+			'yellow', 'yes'
+		]
+		,'specials' : [
+			'important'
+		]
+	}
+	,'OPERATORS' :[
+		':', ';', '!', '.', '#'
+	]
+	,'DELIMITERS' :[
+		'{', '}'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'attributes' : 'color: #48BDDF;'
+			,'values' : 'color: #2B60FF;'
+			,'specials' : 'color: #FF0000;'
+			}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #60CA00;'
+				
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/html.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/html.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/html.js
new file mode 100644
index 0000000..d508364
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/html.js
@@ -0,0 +1,50 @@
+/*
+* last update: 2006-08-24
+*/
+
+editAreaLoader.load_syntax["html"] = {
+	'COMMENT_SINGLE' : {}
+	,'COMMENT_MULTI' : {'<!--' : '-->'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+	}
+	,'OPERATORS' :[
+	]
+	,'DELIMITERS' :[
+	]
+	,'REGEXPS' : {
+		'doctype' : {
+			'search' : '()(<!DOCTYPE[^>]*>)()'
+			,'class' : 'doctype'
+			,'modifiers' : ''
+			,'execute' : 'before' // before or after
+		}
+		,'tags' : {
+			'search' : '(<)(/?[a-z][^ \r\n\t>]*)([^>]*>)'
+			,'class' : 'tags'
+			,'modifiers' : 'gi'
+			,'execute' : 'before' // before or after
+		}
+		,'attributes' : {
+			'search' : '( |\n|\r|\t)([^ \r\n\t=]+)(=)'
+			,'class' : 'attributes'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			}
+		,'OPERATORS' : 'color: #E775F0;'
+		,'DELIMITERS' : ''
+		,'REGEXPS' : {
+			'attributes': 'color: #B1AC41;'
+			,'tags': 'color: #E62253;'
+			,'doctype': 'color: #8DCFB5;'
+			,'test': 'color: #00FF00;'
+		}	
+	}		
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/java.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/java.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/java.js
new file mode 100644
index 0000000..bf48b53
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/java.js
@@ -0,0 +1,56 @@
+editAreaLoader.load_syntax["java"] = {
+'COMMENT_SINGLE': { 1: '//', 2: '@' }
+	, 'COMMENT_MULTI': { '/*': '*/' }
+	, 'QUOTEMARKS': { 1: "'", 2: '"' }
+	, 'KEYWORD_CASE_SENSITIVE': true
+	, 'KEYWORDS': {
+	    'constants': [
+			'null', 'false', 'true'
+		]
+		, 'types': [
+			'String', 'int', 'short', 'long', 'char', 'double', 'byte',
+			'float', 'static', 'void', 'private', 'boolean', 'protected',
+			'public', 'const', 'class', 'final', 'abstract', 'volatile',
+			'enum', 'transient', 'interface'
+		]
+		, 'statements': [
+            'this', 'extends', 'if', 'do', 'while', 'try', 'catch', 'finally',
+            'throw', 'throws', 'else', 'for', 'switch', 'continue', 'implements',
+            'break', 'case', 'default', 'goto'
+		]
+ 		, 'keywords': [
+           'new', 'return', 'import', 'native', 'super', 'package', 'assert', 'synchronized',
+           'instanceof', 'strictfp'
+		]
+	}
+	, 'OPERATORS': [
+		'+', '-', '/', '*', '=', '<', '>', '%', '!', '?', ':', '&'
+	]
+	, 'DELIMITERS': [
+		'(', ')', '[', ']', '{', '}'
+	]
+	, 'REGEXPS': {
+	    'precompiler': {
+	        'search': '()(#[^\r\n]*)()'
+			, 'class': 'precompiler'
+			, 'modifiers': 'g'
+			, 'execute': 'before'
+	    }
+	}
+	, 'STYLES': {
+	    'COMMENTS': 'color: #AAAAAA;'
+		, 'QUOTESMARKS': 'color: #6381F8;'
+		, 'KEYWORDS': {
+		    'constants': 'color: #EE0000;'
+			, 'types': 'color: #0000EE;'
+			, 'statements': 'color: #60CA00;'
+			, 'keywords': 'color: #48BDDF;'
+		}
+		, 'OPERATORS': 'color: #FF00FF;'
+		, 'DELIMITERS': 'color: #0038E1;'
+		, 'REGEXPS': {
+		    'precompiler': 'color: #009900;'
+			, 'precompilerstring': 'color: #994400;'
+		}
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/js.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/js.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/js.js
new file mode 100644
index 0000000..2799b70
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/js.js
@@ -0,0 +1,93 @@
+editAreaLoader.load_syntax["js"] = {
+	'COMMENT_SINGLE' : {1 : '//'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'statements' : [
+			'as', 'break', 'case', 'catch', 'continue', 'decodeURI', 'delete', 'do',
+			'else', 'encodeURI', 'eval', 'finally', 'for', 'if', 'in', 'is', 'item',
+			'instanceof', 'return', 'switch', 'this', 'throw', 'try', 'typeof', 'void',
+			'while', 'write', 'with'
+		]
+ 		,'keywords' : [
+			'class', 'const', 'default', 'debugger', 'export', 'extends', 'false',
+			'function', 'import', 'namespace', 'new', 'null', 'package', 'private',
+			'protected', 'public', 'super', 'true', 'use', 'var', 'window', 'document',		
+			// the list below must be sorted and checked (if it is a keywords or a function and if it is not present twice
+			'Link ', 'outerHeight ', 'Anchor', 'FileUpload', 
+			'location', 'outerWidth', 'Select', 'Area', 'find', 'Location', 'Packages', 'self', 
+			'arguments', 'locationbar', 'pageXoffset', 'Form', 
+			'Math', 'pageYoffset', 'setTimeout', 'assign', 'Frame', 'menubar', 'parent', 'status', 
+			'blur', 'frames', 'MimeType', 'parseFloat', 'statusbar', 'Boolean', 'Function', 'moveBy', 
+			'parseInt', 'stop', 'Button', 'getClass', 'moveTo', 'Password', 'String', 'callee', 'Hidden', 
+			'name', 'personalbar', 'Submit', 'caller', 'history', 'NaN', 'Plugin', 'sun', 'captureEvents', 
+			'History', 'navigate', 'print', 'taint', 'Checkbox', 'home', 'navigator', 'prompt', 'Text', 
+			'Image', 'Navigator', 'prototype', 'Textarea', 'clearTimeout', 'Infinity', 
+			'netscape', 'Radio', 'toolbar', 'close', 'innerHeight', 'Number', 'ref', 'top', 'closed', 
+			'innerWidth', 'Object', 'RegExp', 'toString', 'confirm', 'isFinite', 'onBlur', 'releaseEvents', 
+			'unescape', 'constructor', 'isNan', 'onError', 'Reset', 'untaint', 'Date', 'java', 'onFocus', 
+			'resizeBy', 'unwatch', 'defaultStatus', 'JavaArray', 'onLoad', 'resizeTo', 'valueOf', 'document', 
+			'JavaClass', 'onUnload', 'routeEvent', 'watch', 'Document', 'JavaObject', 'open', 'scroll', 'window', 
+			'Element', 'JavaPackage', 'opener', 'scrollbars', 'Window', 'escape', 'length', 'Option', 'scrollBy'			
+		]
+    	,'functions' : [
+			// common functions for Window object
+			'alert', 'Array', 'back', 'blur', 'clearInterval', 'close', 'confirm', 'eval ', 'focus', 'forward', 'home',
+			'name', 'navigate', 'onblur', 'onerror', 'onfocus', 'onload', 'onmove',
+			'onresize', 'onunload', 'open', 'print', 'prompt', 'scroll', 'scrollTo', 'setInterval', 'status',
+			'stop' 
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'statements' : 'color: #60CA00;'
+			,'keywords' : 'color: #48BDDF;'
+			,'functions' : 'color: #2B60FF;'
+		}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #0038E1;'
+				
+	}
+	,'AUTO_COMPLETION' :  {
+		"default": {	// the name of this definition group. It's posisble to have different rules inside the same definition file
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\."
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+				'': [	// the prefix of thoses items
+						/**
+						 * 0 : the keyword the user is typing
+						 * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+						 * 		If empty the keyword will be displayed
+						 * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+						 */
+						 ['Array', '§()', '']
+			    		,['alert', '§({@})', 'alert(String message)']
+			    		,['document']
+			    		,['window']
+			    	]
+		    	,'window' : [
+			    		 ['location']
+			    		,['document']
+			    		,['scrollTo', 'scrollTo({@})', 'scrollTo(Int x,Int y)']
+					]
+		    	,'location' : [
+			    		 ['href']
+					]
+			}
+		}
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/pas.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/pas.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/pas.js
new file mode 100644
index 0000000..7c1bc3c
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/pas.js
@@ -0,0 +1,82 @@
+editAreaLoader.load_syntax["pas"] = {
+	'COMMENT_SINGLE' : {}
+	,'COMMENT_MULTI' : {'{' : '}', '(*':'*)'}
+	,'QUOTEMARKS' : {1: '"', 2: "'"}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'constants' : [
+			'Blink', 'Black', 'Blue', 'Green', 'Cyan', 'Red',
+			'Magenta', 'Brown', 'LightGray', 'DarkGray',
+			'LightBlue', 'LightGreen', 'LightCyan', 'LightRed',
+			'LightMagenta', 'Yellow', 'White', 'MaxSIntValue',
+			'MaxUIntValue', 'maxint', 'maxLongint', 'maxSmallint',
+			'erroraddr', 'errorcode', 'LineEnding'
+		]
+		,'keywords' : [
+			'in', 'or', 'div', 'mod', 'and', 'shl', 'shr', 'xor',
+			'pow', 'is', 'not','Absolute', 'And_then', 'Array',
+			'Begin', 'Bindable', 'Case', 'Const', 'Do', 'Downto',
+			'Else', 'End', 'Export', 'File', 'For', 'Function',
+			'Goto', 'If', 'Import', 'Implementation', 'Inherited',
+			'Inline', 'Interface', 'Label', 'Module', 'Nil',
+			'Object', 'Of', 'Only', 'Operator', 'Or_else',
+			'Otherwise', 'Packed', 'Procedure', 'Program',
+			'Protected', 'Qualified', 'Record', 'Repeat',
+			'Restricted', 'Set', 'Then', 'To', 'Type', 'Unit',
+			'Until', 'Uses', 'Value', 'Var', 'Virtual', 'While',
+			'With'
+		]
+		,'functions' : [
+			'Abs', 'Addr', 'Append', 'Arctan', 'Assert', 'Assign',
+			'Assigned', 'BinStr', 'Blockread', 'Blockwrite',
+			'Break', 'Chdir', 'Chr', 'Close', 'CompareByte',
+			'CompareChar', 'CompareDWord', 'CompareWord', 'Concat',
+			'Continue', 'Copy', 'Cos', 'CSeg', 'Dec', 'Delete',
+			'Dispose', 'DSeg', 'Eof', 'Eoln', 'Erase', 'Exclude',
+			'Exit', 'Exp', 'Filepos', 'Filesize', 'FillByte',
+			'Fillchar', 'FillDWord', 'Fillword', 'Flush', 'Frac',
+			'Freemem', 'Getdir', 'Getmem', 'GetMemoryManager',
+			'Halt', 'HexStr', 'Hi', 'High', 'Inc', 'Include',
+			'IndexByte', 'IndexChar', 'IndexDWord', 'IndexWord',
+			'Insert', 'IsMemoryManagerSet', 'Int', 'IOresult',
+			'Length', 'Ln', 'Lo', 'LongJmp', 'Low', 'Lowercase',
+			'Mark', 'Maxavail', 'Memavail', 'Mkdir', 'Move',
+			'MoveChar0', 'New', 'Odd', 'OctStr', 'Ofs', 'Ord',
+			'Paramcount', 'Paramstr', 'Pi', 'Pos', 'Power', 'Pred',
+			'Ptr', 'Random', 'Randomize', 'Read', 'Readln',
+			'Real2Double', 'Release', 'Rename', 'Reset', 'Rewrite',
+			'Rmdir', 'Round', 'Runerror', 'Seek', 'SeekEof',
+			'SeekEoln', 'Seg', 'SetMemoryManager', 'SetJmp',
+			'SetLength', 'SetString', 'SetTextBuf', 'Sin', 'SizeOf',
+			'Sptr', 'Sqr', 'Sqrt', 'SSeg', 'Str', 'StringOfChar',
+			'Succ', 'Swap', 'Trunc', 'Truncate', 'Upcase', 'Val',
+			'Write', 'WriteLn'
+		]
+		,'types' : [
+			'Integer', 'Shortint', 'SmallInt', 'Longint',
+			'Longword', 'Int64', 'Byte', 'Word', 'Cardinal',
+			'QWord', 'Boolean', 'ByteBool', 'LongBool', 'Char',
+			'Real', 'Single', 'Double', 'Extended', 'Comp',
+			'String', 'ShortString', 'AnsiString', 'PChar'
+		]
+	}
+	,'OPERATORS' :[
+		'@', '*', '+', '-', '/', '^', ':=', '<', '=', '>'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']'
+	]
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #6381F8;'
+		,'KEYWORDS' : {
+			'specials' : 'color: #EE0000;'
+			,'constants' : 'color: #654321;'
+			,'keywords' : 'color: #48BDDF;'
+			,'functions' : 'color: #449922;'
+			,'types' : 'color: #2B60FF;'
+			}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #60CA00;'
+	}
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/perl.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/perl.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/perl.js
new file mode 100644
index 0000000..b63e951
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/perl.js
@@ -0,0 +1,88 @@
+/***************************************************************************
+ * (c) 2008 - file created by Christoph Pinkel, MTC Infomedia OHG.
+ *
+ * You may choose any license of the current release or any future release
+ * of editarea to use, modify and/or redistribute this file.
+ *
+ * This language specification file supports for syntax checking on
+ * a large subset of Perl 5.x.
+ * The basic common syntax of Perl is fully supported, but as for
+ * the highlighting of built-in operations, it's mainly designed
+ * to support for hightlighting Perl code in a Safe environment (compartment)
+ * as used by CoMaNet for evaluation of administrative scripts. This Safe
+ * compartment basically allows for all of Opcode's :default operations,
+ * but little others. See http://perldoc.perl.org/Opcode.html to learn
+ * more.
+ ***************************************************************************/
+
+editAreaLoader.load_syntax["perl"] = {
+
+	'COMMENT_SINGLE' : {1 : '#'},
+	'QUOTEMARKS' : {1: "'", 2: '"'},
+	'KEYWORD_CASE_SENSITIVE' : true,
+	'KEYWORDS' :
+	{
+		'core' :
+			[ "if", "else", "elsif", "while", "for", "each", "foreach",
+				"next", "last", "goto", "exists", "delete", "undef",
+				"my", "our", "local", "use", "require", "package", "keys", "values",
+				"sub", "bless", "ref", "return" ],
+		'functions' :
+			[
+				//from :base_core
+				"int", "hex", "oct", "abs", "substr", "vec", "study", "pos",
+				"length", "index", "rindex", "ord", "chr", "ucfirst", "lcfirst",
+				"uc", "lc", "quotemeta", "chop", "chomp", "split", "list", "splice",
+				"push", "pop", "shift", "unshift", "reverse", "and", "or", "dor",
+				"xor", "warn", "die", "prototype",
+				//from :base_mem
+				"concat", "repeat", "join", "range",
+				//none from :base_loop, as we'll see them as basic statements...
+				//from :base_orig
+				"sprintf", "crypt", "tie", "untie", "select", "localtime", "gmtime",
+				//others
+				"print", "open", "close"
+			]
+	},
+	'OPERATORS' :
+		[ '+', '-', '/', '*', '=', '<', '>', '!', '||', '.', '&&',
+			' eq ', ' ne ', '=~' ],
+	'DELIMITERS' :
+		[ '(', ')', '[', ']', '{', '}' ],
+	'REGEXPS' :
+	{
+		'packagedecl' : { 'search': '(package )([^ \r\n\t#;]*)()',
+			'class' : 'scopingnames',
+			'modifiers' : 'g', 'execute' : 'before' },
+		'subdecl' : { 'search': '(sub )([^ \r\n\t#]*)()',
+			'class' : 'scopingnames',
+			'modifiers' : 'g', 'execute' : 'before' },
+		'scalars' : { 'search': '()(\\\$[a-zA-Z0-9_:]*)()',
+			'class' : 'vars',
+			'modifiers' : 'g', 'execute' : 'after' },
+		'arrays' : { 'search': '()(@[a-zA-Z0-9_:]*)()',
+			'class' : 'vars',
+			'modifiers' : 'g', 'execute' : 'after' },
+		'hashs' : { 'search': '()(%[a-zA-Z0-9_:]*)()',
+			'class' : 'vars',
+			'modifiers' : 'g', 'execute' : 'after' },
+	},
+
+	'STYLES' :
+	{
+		'COMMENTS': 'color: #AAAAAA;',
+		'QUOTESMARKS': 'color: #DC0000;',
+		'KEYWORDS' :
+		{
+			'core' : 'color: #8aca00;',
+			'functions' : 'color: #2B60FF;'
+		},
+		'OPERATORS' : 'color: #8aca00;',
+		'DELIMITERS' : 'color: #0038E1;',
+		'REGEXPS':
+		{
+			'scopingnames' : 'color: #ff0000;',
+			'vars' : 'color: #00aaaa;',
+		}
+	} //'STYLES'
+};

http://git-wip-us.apache.org/repos/asf/incubator-stratos/blob/f6330834/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/php.js
----------------------------------------------------------------------
diff --git a/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/php.js b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/php.js
new file mode 100644
index 0000000..5a5cff9
--- /dev/null
+++ b/components/org.apache.stratos.theme.mgt.ui/src/main/resources/web/tenant-theme/js/editarea/edit_area/reg_syntax/php.js
@@ -0,0 +1,156 @@
+editAreaLoader.load_syntax["php"] = {
+	'COMMENT_SINGLE' : {1 : '//', 2 : '#'}
+	,'COMMENT_MULTI' : {'/*' : '*/'}
+	,'QUOTEMARKS' : {1: "'", 2: '"'}
+	,'KEYWORD_CASE_SENSITIVE' : false
+	,'KEYWORDS' : {
+		'statements' : [
+			'include', 'require', 'include_once', 'require_once',
+			'for', 'foreach', 'as', 'if', 'elseif', 'else', 'while', 'do', 'endwhile',
+            'endif', 'switch', 'case', 'endswitch',
+			'return', 'break', 'continue'
+		]
+		,'reserved' : [
+			'_GET', '_POST', '_SESSION', '_SERVER', '_FILES', '_ENV', '_COOKIE', '_REQUEST',
+			'null', '__LINE__', '__FILE__',
+			'false', '&lt;?php', '?&gt;', '&lt;?',
+			'&lt;script language', '&lt;/script&gt;',
+			'true', 'var', 'default',
+			'function', 'class', 'new', '&amp;new', 'this',
+			'__FUNCTION__', '__CLASS__', '__METHOD__', 'PHP_VERSION',
+			'PHP_OS', 'DEFAULT_INCLUDE_PATH', 'PEAR_INSTALL_DIR', 'PEAR_EXTENSION_DIR',
+			'PHP_EXTENSION_DIR', 'PHP_BINDIR', 'PHP_LIBDIR', 'PHP_DATADIR', 'PHP_SYSCONFDIR',
+			'PHP_LOCALSTATEDIR', 'PHP_CONFIG_FILE_PATH', 'PHP_OUTPUT_HANDLER_START', 'PHP_OUTPUT_HANDLER_CONT',
+			'PHP_OUTPUT_HANDLER_END', 'E_ERROR', 'E_WARNING', 'E_PARSE', 'E_NOTICE',
+			'E_CORE_ERROR', 'E_CORE_WARNING', 'E_COMPILE_ERROR', 'E_COMPILE_WARNING', 'E_USER_ERROR',
+			'E_USER_WARNING', 'E_USER_NOTICE', 'E_ALL'
+			
+		]
+		,'functions' : [
+			'func_num_args', 'func_get_arg', 'func_get_args', 'strlen', 'strcmp', 'strncmp', 'strcasecmp', 'strncasecmp', 'each', 'error_reporting', 'define', 'defined',
+			'trigger_error', 'user_error', 'set_error_handler', 'restore_error_handler', 'get_declared_classes', 'get_loaded_extensions',
+			'extension_loaded', 'get_extension_funcs', 'debug_backtrace',
+			'constant', 'bin2hex', 'sleep', 'usleep', 'time', 'mktime', 'gmmktime', 'strftime', 'gmstrftime', 'strtotime', 'date', 'gmdate', 'getdate', 'localtime', 'checkdate', 'flush', 'wordwrap', 'htmlspecialchars', 'htmlentities', 'html_entity_decode', 'md5', 'md5_file', 'crc32', 'getimagesize', 'image_type_to_mime_type', 'phpinfo', 'phpversion', 'phpcredits', 'strnatcmp', 'strnatcasecmp', 'substr_count', 'strspn', 'strcspn', 'strtok', 'strtoupper', 'strtolower', 'strpos', 'strrpos', 'strrev', 'hebrev', 'hebrevc', 'nl2br', 'basename', 'dirname', 'pathinfo', 'stripslashes', 'stripcslashes', 'strstr', 'stristr', 'strrchr', 'str_shuffle', 'str_word_count', 'strcoll', 'substr', 'substr_replace', 'quotemeta', 'ucfirst', 'ucwords', 'strtr', 'addslashes', 'addcslashes', 'rtrim', 'str_replace', 'str_repeat', 'count_chars', 'chunk_split', 'trim', 'ltrim', 'strip_tags', 'similar_text', 'explode', 'implode', 'setlocale', 'localeconv',
+			'parse_str', 'str_pad', 'chop', 'strchr', 'sprintf', 'printf', 'vprintf', 'vsprintf', 'sscanf', 'fscanf', 'parse_url', 'urlencode', 'urldecode', 'rawurlencode', 'rawurldecode', 'readlink', 'linkinfo', 'link', 'unlink', 'exec', 'system', 'escapeshellcmd', 'escapeshellarg', 'passthru', 'shell_exec', 'proc_open', 'proc_close', 'rand', 'srand', 'getrandmax', 'mt_rand', 'mt_srand', 'mt_getrandmax', 'base64_decode', 'base64_encode', 'abs', 'ceil', 'floor', 'round', 'is_finite', 'is_nan', 'is_infinite', 'bindec', 'hexdec', 'octdec', 'decbin', 'decoct', 'dechex', 'base_convert', 'number_format', 'fmod', 'ip2long', 'long2ip', 'getenv', 'putenv', 'getopt', 'microtime', 'gettimeofday', 'getrusage', 'uniqid', 'quoted_printable_decode', 'set_time_limit', 'get_cfg_var', 'magic_quotes_runtime', 'set_magic_quotes_runtime', 'get_magic_quotes_gpc', 'get_magic_quotes_runtime',
+			'import_request_variables', 'error_log', 'serialize', 'unserialize', 'memory_get_usage', 'var_dump', 'var_export', 'debug_zval_dump', 'print_r','highlight_file', 'show_source', 'highlight_string', 'ini_get', 'ini_get_all', 'ini_set', 'ini_alter', 'ini_restore', 'get_include_path', 'set_include_path', 'restore_include_path', 'setcookie', 'header', 'headers_sent', 'connection_aborted', 'connection_status', 'ignore_user_abort', 'parse_ini_file', 'is_uploaded_file', 'move_uploaded_file', 'intval', 'floatval', 'doubleval', 'strval', 'gettype', 'settype', 'is_null', 'is_resource', 'is_bool', 'is_long', 'is_float', 'is_int', 'is_integer', 'is_double', 'is_real', 'is_numeric', 'is_string', 'is_array', 'is_object', 'is_scalar',
+			'ereg', 'ereg_replace', 'eregi', 'eregi_replace', 'split', 'spliti', 'join', 'sql_regcase', 'dl', 'pclose', 'popen', 'readfile', 'rewind', 'rmdir', 'umask', 'fclose', 'feof', 'fgetc', 'fgets', 'fgetss', 'fread', 'fopen', 'fpassthru', 'ftruncate', 'fstat', 'fseek', 'ftell', 'fflush', 'fwrite', 'fputs', 'mkdir', 'rename', 'copy', 'tempnam', 'tmpfile', 'file', 'file_get_contents', 'stream_select', 'stream_context_create', 'stream_context_set_params', 'stream_context_set_option', 'stream_context_get_options', 'stream_filter_prepend', 'stream_filter_append', 'fgetcsv', 'flock', 'get_meta_tags', 'stream_set_write_buffer', 'set_file_buffer', 'set_socket_blocking', 'stream_set_blocking', 'socket_set_blocking', 'stream_get_meta_data', 'stream_register_wrapper', 'stream_wrapper_register', 'stream_set_timeout', 'socket_set_timeout', 'socket_get_status', 'realpath', 'fnmatch', 'fsockopen', 'pfsockopen', 'pack', 'unpack', 'get_browser', 'crypt', 'opendir', 'closedir', 'chdir', 'getcwd', 'rewi
 nddir', 'readdir', 'dir', 'glob', 'fileatime', 'filectime', 'filegroup', 'fileinode', 'filemtime', 'fileowner', 'fileperms', 'filesize', 'filetype', 'file_exists', 'is_writable', 'is_writeable', 'is_readable', 'is_executable', 'is_file', 'is_dir', 'is_link', 'stat', 'lstat', 'chown',
+			'touch', 'clearstatcache', 'mail', 'ob_start', 'ob_flush', 'ob_clean', 'ob_end_flush', 'ob_end_clean', 'ob_get_flush', 'ob_get_clean', 'ob_get_length', 'ob_get_level', 'ob_get_status', 'ob_get_contents', 'ob_implicit_flush', 'ob_list_handlers', 'ksort', 'krsort', 'natsort', 'natcasesort', 'asort', 'arsort', 'sort', 'rsort', 'usort', 'uasort', 'uksort', 'shuffle', 'array_walk', 'count', 'end', 'prev', 'next', 'reset', 'current', 'key', 'min', 'max', 'in_array', 'array_search', 'extract', 'compact', 'array_fill', 'range', 'array_multisort', 'array_push', 'array_pop', 'array_shift', 'array_unshift', 'array_splice', 'array_slice', 'array_merge', 'array_merge_recursive', 'array_keys', 'array_values', 'array_count_values', 'array_reverse', 'array_reduce', 'array_pad', 'array_flip', 'array_change_key_case', 'array_rand', 'array_unique', 'array_intersect', 'array_intersect_assoc', 'array_diff', 'array_diff_assoc', 'array_sum', 'array_filter', 'array_map', 'array_chunk', 'array_key_exists
 ', 'pos', 'sizeof', 'key_exists', 'assert', 'assert_options', 'version_compare', 'ftok', 'str_rot13', 'aggregate',
+			'session_name', 'session_module_name', 'session_save_path', 'session_id', 'session_regenerate_id', 'session_decode', 'session_register', 'session_unregister', 'session_is_registered', 'session_encode',
+			'session_start', 'session_destroy', 'session_unset', 'session_set_save_handler', 'session_cache_limiter', 'session_cache_expire', 'session_set_cookie_params', 'session_get_cookie_params', 'session_write_close', 'preg_match', 'preg_match_all', 'preg_replace', 'preg_replace_callback', 'preg_split', 'preg_quote', 'preg_grep', 'overload', 'ctype_alnum', 'ctype_alpha', 'ctype_cntrl', 'ctype_digit', 'ctype_lower', 'ctype_graph', 'ctype_print', 'ctype_punct', 'ctype_space', 'ctype_upper', 'ctype_xdigit', 'virtual', 'apache_request_headers', 'apache_note', 'apache_lookup_uri', 'apache_child_terminate', 'apache_setenv', 'apache_response_headers', 'apache_get_version', 'getallheaders', 'mysql_connect', 'mysql_pconnect', 'mysql_close', 'mysql_select_db', 'mysql_create_db', 'mysql_drop_db', 'mysql_query', 'mysql_unbuffered_query', 'mysql_db_query', 'mysql_list_dbs', 'mysql_list_tables', 'mysql_list_fields', 'mysql_list_processes', 'mysql_error', 'mysql_errno', 'mysql_affected_rows', 'mysql_i
 nsert_id', 'mysql_result', 'mysql_num_rows', 'mysql_num_fields', 'mysql_fetch_row', 'mysql_fetch_array', 'mysql_fetch_assoc', 'mysql_fetch_object', 'mysql_data_seek', 'mysql_fetch_lengths', 'mysql_fetch_field', 'mysql_field_seek', 'mysql_free_result', 'mysql_field_name', 'mysql_field_table', 'mysql_field_len', 'mysql_field_type', 'mysql_field_flags', 'mysql_escape_string', 'mysql_real_escape_string', 'mysql_stat',
+			'mysql_thread_id', 'mysql_client_encoding', 'mysql_get_client_info', 'mysql_get_host_info', 'mysql_get_proto_info', 'mysql_get_server_info', 'mysql_info', 'mysql', 'mysql_fieldname', 'mysql_fieldtable', 'mysql_fieldlen', 'mysql_fieldtype', 'mysql_fieldflags', 'mysql_selectdb', 'mysql_createdb', 'mysql_dropdb', 'mysql_freeresult', 'mysql_numfields', 'mysql_numrows', 'mysql_listdbs', 'mysql_listtables', 'mysql_listfields', 'mysql_db_name', 'mysql_dbname', 'mysql_tablename', 'mysql_table_name', 'pg_connect', 'pg_pconnect', 'pg_close', 'pg_connection_status', 'pg_connection_busy', 'pg_connection_reset', 'pg_host', 'pg_dbname', 'pg_port', 'pg_tty', 'pg_options', 'pg_ping', 'pg_query', 'pg_send_query', 'pg_cancel_query', 'pg_fetch_result', 'pg_fetch_row', 'pg_fetch_assoc', 'pg_fetch_array', 'pg_fetch_object', 'pg_fetch_all', 'pg_affected_rows', 'pg_get_result', 'pg_result_seek', 'pg_result_status', 'pg_free_result', 'pg_last_oid', 'pg_num_rows', 'pg_num_fields', 'pg_field_name', 'pg_fi
 eld_num', 'pg_field_size', 'pg_field_type', 'pg_field_prtlen', 'pg_field_is_null', 'pg_get_notify', 'pg_get_pid', 'pg_result_error', 'pg_last_error', 'pg_last_notice', 'pg_put_line', 'pg_end_copy', 'pg_copy_to', 'pg_copy_from',
+			'pg_trace', 'pg_untrace', 'pg_lo_create', 'pg_lo_unlink', 'pg_lo_open', 'pg_lo_close', 'pg_lo_read', 'pg_lo_write', 'pg_lo_read_all', 'pg_lo_import', 'pg_lo_export', 'pg_lo_seek', 'pg_lo_tell', 'pg_escape_string', 'pg_escape_bytea', 'pg_unescape_bytea', 'pg_client_encoding', 'pg_set_client_encoding', 'pg_meta_data', 'pg_convert', 'pg_insert', 'pg_update', 'pg_delete', 'pg_select', 'pg_exec', 'pg_getlastoid', 'pg_cmdtuples', 'pg_errormessage', 'pg_numrows', 'pg_numfields', 'pg_fieldname', 'pg_fieldsize', 'pg_fieldtype', 'pg_fieldnum', 'pg_fieldprtlen', 'pg_fieldisnull', 'pg_freeresult', 'pg_result', 'pg_loreadall', 'pg_locreate', 'pg_lounlink', 'pg_loopen', 'pg_loclose', 'pg_loread', 'pg_lowrite', 'pg_loimport', 'pg_loexport',
+			'echo', 'print', 'global', 'static', 'exit', 'array', 'empty', 'eval', 'isset', 'unset', 'die'
+
+		]
+	}
+	,'OPERATORS' :[
+		'+', '-', '/', '*', '=', '<', '>', '%', '!', '&&', '||'
+	]
+	,'DELIMITERS' :[
+		'(', ')', '[', ']', '{', '}'
+	]
+	,'REGEXPS' : {
+		// highlight all variables ($...)
+		'variables' : {
+			'search' : '()(\\$\\w+)()'
+			,'class' : 'variables'
+			,'modifiers' : 'g'
+			,'execute' : 'before' // before or after
+		}
+	}
+	,'STYLES' : {
+		'COMMENTS': 'color: #AAAAAA;'
+		,'QUOTESMARKS': 'color: #879EFA;'
+		,'KEYWORDS' : {
+			'reserved' : 'color: #48BDDF;'
+			,'functions' : 'color: #0040FD;'
+			,'statements' : 'color: #60CA00;'
+			}
+		,'OPERATORS' : 'color: #FF00FF;'
+		,'DELIMITERS' : 'color: #2B60FF;'
+		,'REGEXPS' : {
+			'variables' : 'color: #E0BD54;'
+		}		
+	}
+	,'AUTO_COMPLETION' :  {
+		"default": {	// the name of this definition group. It's posisble to have different rules inside the same definition file
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\-\\>|\\:\\:"
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+					'': [	// the prefix of thoses items
+						/**
+						 * 0 : the keyword the user is typing
+						 * 1 : (optionnal) the string inserted in code ("{@}" being the new position of the cursor, "§" beeing the equivalent to the value the typed string indicated if the previous )
+						 * 		If empty the keyword will be displayed
+						 * 2 : (optionnal) the text that appear in the suggestion box (if empty, the string to insert will be displayed)
+						 */
+						 ['$_POST']
+			    		,['$_GET']
+			    		,['$_SESSION']
+			    		,['$_SERVER']
+			    		,['$_FILES']
+			    		,['$_ENV']
+			    		,['$_COOKIE']
+			    		,['$_REQUEST']
+			    		// magic methods
+			    		,['__construct', '§( {@} )']
+			    		,['__destruct', '§( {@} )']
+			    		,['__sleep', '§( {@} )']
+			    		,['__wakeup', '§( {@} )']
+			    		,['__toString', '§( {@} )']
+			    		// include
+			    		,['include', '§ "{@}";']
+			    		,['include_once', '§ "{@}";']
+			    		,['require', '§ "{@}";']
+			    		,['require_once', '§ "{@}";']
+			    		// statements
+			    		,['for', '§( {@} )']
+			    		,['foreach', '§( {@} )']
+			    		,['if', '§( {@} )']
+			    		,['elseif', '§( {@} )']
+			    		,['while', '§( {@} )']
+			    		,['switch', '§( {@} )']
+			    		,['break']
+			    		,['case']
+			    		,['continue']
+			    		,['do']
+			    		,['else']
+			    		,['endif']
+			    		,['endswitch']
+			    		,['endwhile']
+			    		,['return']
+			    		// function
+			    		,['unset', '§( {@} )']
+					]
+				}
+			}
+		,"live": {	
+			
+			// class NAME: /class\W+([a-z]+)\W+/gi
+			// method: /^(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi
+			// static: /^(public|private|protected)?\s+static\s+(public|private|protected)?\s*function\s+([a-z][a-z0-9\_]*)\s*(\([^\{]*\))/gmi 
+			// attributes: /(\$this\-\>|(?:var|public|protected|private)\W+\$)([a-z0-9\_]+)(?!\()\b/gi 
+			// 		v1 : /(\$this\-\>|var\W+|public\W+|protected\W+|private\W+)([a-z0-9\_]+)\W*(=|;)/gi 
+			// var type: /(\$(this\-\>)?[a-z0-9\_]+)\s*\=\s*new\s+([a-z0-9\_])+/gi 
+			
+			
+			"REGEXP": { "before_word": "[^a-zA-Z0-9_]|^"	// \\s|\\.|
+						,"possible_words_letters": "[a-zA-Z0-9_\$]+"
+						,"letter_after_word_must_match": "[^a-zA-Z0-9_]|$"
+						,"prefix_separator": "\\-\\>"
+					}
+			,"CASE_SENSITIVE": true
+			,"MAX_TEXT_LENGTH": 100		// the maximum length of the text being analyzed before the cursor position
+			,"KEYWORDS": {
+					'$this': [	// the prefix of thoses items
+						['test']
+					]
+				}
+			}
+	}
+};