// JavaScript Document
	// navigator identification
	ua= navigator.userAgent;
	
	this.nav= new Object(); 
	
	this.nav['isMacOS'] = (ua.indexOf('Mac OS') != -1);
	
	this.nav['isIE'] = (navigator.appName == "Microsoft Internet Explorer");
	if(this.nav['isIE']){
		this.nav['isIE'] = ua.replace(/^.*?MSIE ([0-9\.]*).*$/, "$1");
		if(this.nav['isIE']<6)
			this.has_error(); 
	}
	if(this.nav['isNS'] = ua.indexOf('Netscape/') != -1){	// work only on netscape > 8 with render mode IE
		this.nav['isNS']= ua.substr(ua.indexOf('Netscape/')+9);
		if(this.nav['isNS']<8 || !this.nav['isIE'])
			this.has_error();			
	}
	
	if(this.nav['isOpera'] = (ua.indexOf('Opera') != -1)){	
		this.nav['isOpera']= ua.replace(/^.*?Opera.*?([0-9\.]+).*$/i, "$1");
		if(this.nav['isOpera']<9)
			this.has_error();
		this.nav['isIE']=false;			
	}
	this.nav['isGecko'] = (ua.indexOf('Gecko') != -1);
	
	if(this.nav['isFirefox'] =(ua.indexOf('Firefox') != -1))
		this.nav['isFirefox'] = ua.replace(/^.*?Firefox.*?([0-9\.]+).*$/i, "$1");
	// Iceweasel is a clone of Firefox 	
	if(this.nav['isIceweasel'] =(ua.indexOf('Iceweasel') != -1))
		this.nav['isFirefox']= this.nav['isIceweasel'] = ua.replace(/^.*?Iceweasel.*?([0-9\.]+).*$/i, "$1");
	
	if(this.nav['isCamino'] =(ua.indexOf('Camino') != -1))
		this.nav['isCamino'] = ua.replace(/^.*?Camino.*?([0-9\.]+).*$/i, "$1");
	
	if(this.nav['isSafari'] =(ua.indexOf('Safari') != -1))
		this.nav['isSafari']= ua.replace(/^.*?Version\/([0-9]+\.[0-9]+).*$/i, "$1");
	
	if(this.nav['isIE']>=6 || this.nav['isOpera']>=9 || this.nav['isFirefox'] || this.nav['isCamino'] || this.nav['isSafari']>=3)
		this.nav['isValidBrowser']=true;
	else
		this.nav['isValidBrowser']=false;
		
//TEXTAREA Manipulation Functions
function getSelectionRange(id){
    	var sel= {"start": 0, "end": 0};
		    editArea=document.getElementById(id);
			if(this.nav['isIE']){
			 sel = getIESelection(editArea);	
			} else {
			sel["start"]=editArea.selectionStart;
			sel["end"]=editArea.selectionEnd;
			}
        return sel;
}
function getCaretPos(obj)   
{   
  obj.focus();   
     
  if(obj.selectionStart) return obj.selectionStart;//Gecko   
  else if (document.selection)//IE   
  {   
    var sel = document.selection.createRange();   
    var clone = sel.duplicate();   
    sel.collapse(true);   
    clone.moveToElementText(obj);   
    clone.setEndPoint('EndToEnd', sel);   
    return clone.text.length;   
  }   
     
  return 0;   
}  

function getIESelection(element){
	element.focus();
	if( document.selection ){
		// The current selection
		var range = document.selection.createRange();
		//if (range.text != ''){
		// We'll use this as a 'dummy'
		var stored_range = range.duplicate();
		// Select all text
		stored_range.moveToElementText( element );
		// Now move 'dummy' end point to end point of original range
		stored_range.setEndPoint( 'EndToEnd', range );
		// Now we can calculate start and end points
		element.selectionStart = stored_range.text.length - range.text.length;
		//alert(stored_range.text.length);
		element.selectionEnd = element.selectionStart + range.text.length;
		/*} else {
			var Position = getCaretPos(element);
			return {"start": Position, "end": Position};
		}*/
		return {"start": element.selectionStart, "end": element.selectionEnd};
	}
}
function setSelectionRanged(id, start, end){
		textarea=document.getElementById(id);
		textarea.focus();
		
		start= Math.max(0, Math.min(textarea.value.length, start));
		end= Math.max(start, Math.min(textarea.value.length, end));
	
		/*if(nav['isOpera']){	// Opera bug when moving selection start and selection end
			textarea.selectionEnd = 1;	
			textarea.selectionStart = 0;			
		}*/
		textarea.selectionStart = start;
		textarea.selectionEnd = end;		
		if(nav['isIE'])
			setIESelection(textarea);
			
		
}
function setIESelection(textarea){
		if(!window.closed){ 
			var nbLineStart=textarea.value.substr(0, textarea.selectionStart).split("\n").length - 1;
			var nbLineEnd=textarea.value.substr(0, textarea.selectionEnd).split("\n").length - 1;
			var range = document.selection.createRange();
			range.moveToElementText( textarea );
			range.setEndPoint( 'EndToStart', range );
			range.moveStart('character', textarea.selectionStart - nbLineStart);
			range.moveEnd('character', textarea.selectionEnd - nbLineEnd - (textarea.selectionStart - nbLineStart)  );
			range.select();
		}
}
function getSelectedText(id){
		textarea=document.getElementById(id);
		textarea.focus();
	    if( document.selection ){
			var range = document.selection.createRange();
			textvalue = range.text;
		} else {
			 var selStart = textarea.selectionStart;
			 var selEnd = textarea.selectionEnd;
			
			 textvalue = (textarea.value).substring(selStart, selEnd)
		}
		return textvalue;
}
function setSelectedText(id,value){
			var scrollTop= document.getElementById(id).scrollTop;
			var scrollLeft= document.getElementById(id).scrollLeft;

        textarea=document.getElementById(id);
		textarea.focus();
		 var sel = getSelectionRange(id);
		 var selStart = sel["start"];
		 var selEnd = sel["end"];

	    if( document.selection ){
			var range = document.selection.createRange();
			 range.text = value;
			 setSelectionRanged(id, selStart, selStart+value.length);
		} else {
			 var selLength = textarea.textLength;
			 if (selEnd == 1 || selEnd == 2)
				selEnd = selLength;
			
			 var s1 = (textarea.value).substring(0,selStart);
			 var s3 = (textarea.value).substring(selEnd, selLength);
			 textarea.value = s1 + value + s3;
			 textarea.selectionStart = selStart;
			 textarea.selectionEnd = selStart+value.length;		
			 //textarea.setSelectionRange(selStart, selStart+value.length);
		}
	document.getElementById(id).scrollTop= scrollTop;
	document.getElementById(id).scrollLeft= scrollLeft;

}
