var notWhitespace = /\S/;

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function remove_curreny_sign(num)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ccy;
ccy = /^\£|,/g;
num = num.replace(ccy,"");
ccy = /^\$|,/g;
num = num.replace(ccy,"");
return num;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function round_number(num,dec)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
if(IsNumeric(num)==true)
{
var result = Math.round(num*Math.pow(10,dec))/Math.pow(10,dec);
var dp;
var len;
result = result.toString();
dp = result.indexOf(".");
if(dp==-1) result += ".00";
else
{
if((result.substring(dp+1,result.length)).length<2) result += "0";
}
}
else
{
result = 0;
}
return result;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function getCheckedRadioValue(radioObj) 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
	if(!radioObj)
		return "";
	var radioLength = radioObj.length;
	if(radioLength == undefined)
		if(radioObj.checked)
			return radioObj.value;
		else
			return "";
	for(var i = 0; i < radioLength; i++) {
		if(radioObj[i].checked) {
			return radioObj[i].value;
		}
	}
	return "";
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function createElement(xmlDomObj,node_name,node_prefix)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
if (typeof document.createElementNS != 'undefined') 
{
	return xmlDomObj.createElementNS(node_name,node_prefix,"");
}
if (typeof document.createElement != 'undefined') 
{
	return xmlDomObj.createNode(node_name,node_prefix,"");
}
return false;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cleanWhitespace(node)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
for (var x=0;x<node.childNodes.length;x++)
{
var childNode = node.childNodes[x];
if((childNode.nodeType==3)&&(!notWhitespace.test(childNode.nodeValue)))
{
node.removeChild(node.childNodes[x]);
x--;
}
if(childNode.nodeType==1)
{
cleanWhitespace(childNode);
}
}
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_level_text(eval)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ReturnVal;
if(eval==0) ReturnVal = "0 - No Skill";
if(eval==1) ReturnVal = "1 - Basic Training Only";
if(eval==2) ReturnVal = "2 - Novice";
if(eval==3) ReturnVal = "3 - Intermediate";
if(eval==4) ReturnVal = "4 - Advanced";
if(eval==5) ReturnVal = "5 - Expert";
return ReturnVal;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_years_text(eval)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ReturnVal;
if(eval==1) ReturnVal = "1 Year ";
if(eval==10) ReturnVal = "10+ Years ";
else ReturnVal = eval + " Years";
return ReturnVal;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_level_txt(eval)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ReturnVal;
if(eval==0) ReturnVal = "No Skill";
if(eval==1) ReturnVal = "Basic Training Only";
if(eval==2) ReturnVal = "Novice";
if(eval==3) ReturnVal = "Intermediate";
if(eval==4) ReturnVal = "Advanced";
if(eval==5) ReturnVal = "Expert";
return ReturnVal;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_years_txt(eval)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ReturnVal;
if(eval==1) ReturnVal = "1 Year ";
else if(eval==10) ReturnVal = "10+ Years ";
else ReturnVal = eval + " Years";
return ReturnVal;
}

var special_character_string = "~ # ; < > & '";

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cleanse_text(NodeObj, str_text, str_length)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var special_character_message	= null;
var return_val			= null;
var str_text_new		= null;

str_text_new = trim(str_text," ");
str_text_new = trim(str_text,/\s/);
//alert(str_text_new.charCodeAt(1));
str_text_new = str_text_new.replace(/script /g,"_");
str_text_new = str_text_new.replace("../","_");
str_text_new = str_text_new.replace(/--/g,"_");
str_text_new = str_text_new.replace(/~/g,"_");
str_text_new = str_text_new.replace(/#/g,"");
str_text_new = str_text_new.replace(/;/g,",");
str_text_new = str_text_new.replace(/"/g,"");
str_text_new = str_text_new.replace(/'/g,"");
str_text_new = str_text_new.replace(/</g,"[");
str_text_new = str_text_new.replace(/>/g,"]");
str_text_new = str_text_new.replace(/&/g,"+");

if(str_text_new!=str_text) special_character_message = null;

if(str_text_new.length>str_length)
{
	str_text_new = str_text_new.substr(0,str_length);
	return_val = "You have entered " + str_text.length + " characters. The maximum length is " + str_length + " characters. ";
	return_val += (str_text.length - str_length) + " character(s) will be truncated.";
	if(special_character_message!=null) return_val += special_character_message;	
}

if(return_val==null) return_val = special_character_message;

NodeObj.value = str_text_new;

return return_val;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function restore_special_chars(str_text)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
str_text = str_text.replace(/CHR10/g,String.fromCharCode(10));
str_text = str_text.replace(/CHR11/g,String.fromCharCode(11));
str_text = str_text.replace(/CHR13/g,String.fromCharCode(13));
return str_text;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function cleanse_text_new(NodeObj, str_text, str_length)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
//alert("function start: cleanse_text_new");
var special_character_message	= null;
var return_val			= null;
var str_text_new		= null;

str_text_new = trim(str_text," ");

str_text_new = str_text_new.replace(/script /g,"_");
str_text_new = str_text_new.replace("../","_");
str_text_new = str_text_new.replace(/--/g,"_");
str_text_new = str_text_new.replace(/~/g,"_");
str_text_new = str_text_new.replace(/#/g,"");
str_text_new = str_text_new.replace(/"/g,"");
str_text_new = str_text_new.replace(/'/g,"");
str_text_new = str_text_new.replace(/</g,"[");
str_text_new = str_text_new.replace(/>/g,"]");
str_text_new = str_text_new.replace(/&/g,"+");

if(str_text_new!=str_text) special_character_message = null;

if(str_text_new.length>str_length)
{
	str_text_new = str_text_new.substr(0,str_length);
	return_val = "You have entered " + str_text.length + " characters. The maximum length is " + str_length + " characters. ";
	return_val += (str_text.length - str_length) + " character(s) will be truncated.";
	if(special_character_message!=null) return_val += special_character_message;	
}

if(return_val==null) return_val = special_character_message;

NodeObj.value = str_text_new;
//alert("function end: cleanse_text_new");
return return_val;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_default_value(eval,evaltype)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ReturnVal;
switch(evaltype)
{
case(evaltype="1"): //	level slider
ReturnVal = "0";
break;
case(evaltype="2"): // radio
ReturnVal = "N";
break;
case(evaltype="3"): // text
ReturnVal = "";
break;
case(evaltype="4"): //	years slider
ReturnVal = "0";
break;
case(evaltype="5"): // multichoice
ReturnVal = "A";
break;
case(evaltype="9"): // screening
ReturnVal = "";
break;
}

return ReturnVal;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function split_multi_string(str_multi,index)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var return_val = "";
if(index=="1") return_val = "Don't know";
else if(str_multi!="")
{
	var temp_array = str_multi.split("#");

	index_0 = temp_array[0];
	index_1 = "Don't know";
	index_2 = temp_array[1];
	index_3 = temp_array[2];
	index_4 = temp_array[3];
	index_5 = temp_array[4];

	if(index=="0") return_val = index_0;
	else if(index=="1") return_val = index_1;
	else if(index=="2") return_val = index_2;
	else if(index=="3") return_val = index_3;
	else if(index=="4") return_val = index_4;
	else if(index=="5") return_val = index_5;
	else return_val = "<span class='mdblk_bld'>" + index_0 + "</span><BR>a) " + index_1 + "<BR>b) " + index_2 + "<BR>c) " + index_3 + "<BR>d) " + index_4 + "<BR>e) " + index_5;
}

return return_val;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function strip_evaltype(node_id)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var return_val = "";

if(node_id.substr(node_id.length-2,1)=="_") return_val = node_id.substr(0,node_id.length-2);
else return_val = node_id;

return return_val;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function expand_list(targetFrame,rowid)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
//alert("expanding");
var docTableObj = targetFrame.getElementById(gc_str_tbl_nm);
var col_tbl_rows = docTableObj.rows;
var next_row = parseInt(rowid) + 1;
next_row = next_row + "";
var int_max_row_count = docTableObj.rows.length;
if(int_max_row_count>1) int_max_row_count = int_max_row_count - 1;

previous_row = targetFrame.getElementById(rowid);
previous_row_count = previous_row.rowIndex;

for (count=previous_row_count+1;count<int_max_row_count+1;count++)
{
	current_row = docTableObj.rows[count];
	if((current_row.getAttribute("id")!=next_row)||(count==int_max_row_count)) current_row.style.display = ""; //current_row.className = "display";
	else break;
}
btn = targetFrame.getElementById(rowid + "btn");
btn.src = "images/minus.gif";
btn.onclick = function () {contract_list(window.document,rowid);};
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function contract_list(targetFrame,rowid)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
//alert("contracting");
var docTableObj = targetFrame.getElementById(gc_str_tbl_nm);
var col_tbl_rows = docTableObj.rows;
var next_row = parseInt(rowid) + 1;
next_row = next_row + "";
var int_max_row_count = docTableObj.rows.length;
if(int_max_row_count>1) int_max_row_count = int_max_row_count - 1;

previous_row = targetFrame.getElementById(rowid);
previous_row_count = previous_row.rowIndex;

for (count=previous_row_count+1;count<int_max_row_count+1;count++)
{
	current_row = docTableObj.rows[count];
	if(current_row.getAttribute("id")==next_row) break;
	else current_row.style.display = "none"; //current_row.className = "display_none";
}
btn = targetFrame.getElementById(rowid + "btn");
btn.src = "images/plus.gif";
btn.onclick = function () {expand_list(window.document,rowid);};

}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_button_html(rowid,action)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var return_value;
var str_btn_actn;
var str_btn_src;
if(action=="contract") 
{
	str_btn_actn = "ONCLICK='expand_list(window.document," + rowid + ");' ";
	str_btn_src = "images/plus.gif";
}
else
{
	str_btn_actn = "ONCLICK='contract_list(window.document," + rowid + ");' ";
	str_btn_src = "images/minus.gif";

}
return_value = "<img id='" + rowid + "btn' src='" + str_btn_src + "' width=9 height=9 border=1 hspace=10 " + str_btn_actn + ">";

return return_value;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function get_subtitle_html(rowid,subtitle,action)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var return_value;

return_value = "<p><SPAN style='margin-left:10px;margin-right:10px'>" + get_button_html(rowid,action) + "</SPAN>" + subtitle + "</p>";

return return_value;
}

////////////////////////////////////////////////////////////////////////////
function isValidDecimal(decimal)
////////////////////////////////////////////////////////////////////////////
{
var returnVal = true;
var prefix;
var postfix;

var colon = decimal.indexOf(":");
if(colon!=-1) decimal = decimal.replace(/:/g,".");

if(isNaN(decimal)!=true) // the value is a number
{
	prefix = getPrefix(decimal);
	postfix = getPostfix(decimal);

	//	test prefix

	if(isNaN(decimal)==true) returnVal = "Decimal values must be a number above or equal to '0'";

	//	test postfix

	else if(isNaN(postfix)==true) returnVal = "Decimal values must be a number above or equal to '0'";
}
else returnVal = "Not a valid decimal value";
return returnVal;
}

////////////////////////////////////////////////////////////////////////////
function isValidExp(exp)
////////////////////////////////////////////////////////////////////////////
{
var returnVal = true;
var prefix;
var postfix;

var colon = exp.indexOf(":");
if(colon!=-1) exp = exp.replace(/:/g,".");

if((isNaN(exp)!=true)&&(parseInt(exp)>0)) // the value is a number
{
	prefix = getPrefix(exp);
	postfix = getPostfix(exp);

	//	test prefix

	if(isNaN(exp)==true) returnVal = "Expenses must be a number above '0'";

	//	test postfix

	else if(postfix.length>2) returnVal = "Pence must be entered in decimal form";
	else if(isNaN(postfix)==true) returnVal = "Pence must be entered in decimal form";
}
else if(parseInt(exp)==0) returnVal = "Please enter a valid expense amount";
else returnVal = "Not a valid monetary value";
return returnVal;
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function IsNumeric(sText)
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var ValidChars = "0123456789.";
var IsNumber=true;
var Char;

if((sText=="")||(sText==null)||(sText==undefined)) 
{
	IsNumber = false;
}
else
{
	for (i = 0; i < sText.length && IsNumber == true; i++) 
	{ 
		Char = sText.charAt(i); 
		if (ValidChars.indexOf(Char) == -1) 
		{
		IsNumber = false;
		}
	}
}
return IsNumber;
}

////////////////////////////////////////////////////////////////////////////
function isMoney(amount)
////////////////////////////////////////////////////////////////////////////
{
var isMoneyAmount = true;
var prefix;
var postfix;

if((amount=="")||(amount==null)||(amount==undefined)||(parseInt(amount)==0)) 
{
	isMoneyAmount = false;
}
else
{
	if(isNaN(amount)!=true)
	{
		prefix = getPrefix(amount);
		postfix = getPostfix(amount);

		//	test prefix

		if(isNaN(prefix)==true) isMoneyAmount = false;

		//	test postfix

		else if(postfix.length>2) isMoneyAmount = false;
		else if(isNaN(postfix)==true) isMoneyAmount = false;
	}
	else isMoneyAmount = false;
}
return isMoneyAmount;
}

////////////////////////////////////////////////////////////////////////////
function isValidTime(time)
////////////////////////////////////////////////////////////////////////////
{
//alert("isValidTime");
var returnVal = true;
var prefix;
var postfix;

var colon = time.indexOf(":");
if(colon!=-1) time = time.replace(/:/g,".");

if(isNaN(time)!=true)
{

	prefix = getPrefix(time);
	postfix = getPostfix(time);

	//	test nulls

	if((prefix==undefined)||(postfix==undefined)) return "Not a valid time";

	//	test prefix

	if(isNaN(prefix)==true) returnVal = "Hours must be between 0 and 24";
	else if(parseFloat(prefix)>24) returnVal = "Hours must be between 0 and 24";

	//	test postfix

	if(postfix.length>2) returnVal = "Minutes must be entered as '00', '15', '30' or '45'";
	else if((postfix!="00")&&(postfix!="15")&&(postfix!="30")&&(postfix!="45")) returnVal = "Minutes must be entered as '00', '15', '30' or '45'";
	else if(isNaN(postfix)==true) returnVal = "Minutes must be entered as '00', '15', '30' or '45'";

	//	test limit

	if((parseInt(time)>24)||(parseInt(time)<0)) returnVal = "Not a valid time format";
}
else returnVal = "Not a valid time format";
return returnVal;
}

////////////////////////////////////////////////////////////////////////////
function isValidHours(hours)
////////////////////////////////////////////////////////////////////////////
{
//alert("isValidHours");
var returnVal = true;
var prefix;
var postfix;

var colon = hours.indexOf(":");
if(colon!=-1) hours = hours.replace(/:/g,".");

if(isNaN(hours)!=true)
{
	prefix = getPrefix(hours);
	postfix = getPostfix(hours);

	//	test prefix

	if(isNaN(prefix)==true) returnVal = "";

	//	test postfix

	if(postfix.length>2) returnVal = "Minutes must be entered in decimal form in multiples of '00', '25', '50' or '75'";
	else if((postfix!="00")&&(postfix!="25")&&(postfix!="50")&&(postfix!="75")) returnVal = "Minutes must be entered in decimal form in multiples of '00', '25', '50' or '75'";
	else if(isNaN(postfix)==true) returnVal = "Minutes must be entered in decimal form in multiples of '00', '25', '50' or '75'";

	//	test limit

	if((parseInt(hours)>24)||(parseInt(hours)<0)) returnVal = "Not a valid time format";
}
else returnVal = "Not a valid time format";
return returnVal;
}

////////////////////////////////////////////////////////////////////////////
function convertTime(time)
////////////////////////////////////////////////////////////////////////////
{
var returnVal;
var prefix;
var postfix;

prefix = getPrefix(time);
postfix = getPostfix(time);

if(postfix=="15") returnVal = "25";
else if(postfix=="30") returnVal = "50";
else if(postfix=="45") returnVal = "75";
else returnVal = "00";

returnVal = prefix + "." + returnVal;
return returnVal;
}

////////////////////////////////////////////////////////////////////////////
function convertHours(hours)
////////////////////////////////////////////////////////////////////////////
{
var returnVal;
var prefix;
var postfix;

prefix = getPrefix(hours);
postfix = getPostfix(hours);

if(postfix=="25") returnVal = "25";
else if(postfix=="50") returnVal = "50";
else if(postfix=="75") returnVal = "75";
else returnVal = "00";

returnVal = prefix + "." + returnVal;
return returnVal;
}

////////////////////////////////////////////////////////////////////////////
function formatExp(elem)
////////////////////////////////////////////////////////////////////////////
{
var formattedExp = "";
var prefix = "";
var postfix = "";

if(elem.value!="")
{
	prefix = getPrefix(elem.value);
	postfix = getPostfix(elem.value);

	formattedExp = round_number((prefix.toString() + "." + postfix.toString()),2);
	//alert(formattedExp);
	if(isValidExp(formattedExp)==true) elem.value = formattedExp;
}
}

////////////////////////////////////////////////////////////////////////////
function formatDecimal(elem)
////////////////////////////////////////////////////////////////////////////
{
var formattedDecimal = "";
var prefix = "";
var postfix = "";

if(elem.value!="")
{
	prefix = getPrefix(elem.value);
	postfix = getPostfix(elem.value);

	formattedDecimal = round_number((prefix.toString() + "." + postfix.toString()),2);
	if(isValidDecimal(formattedDecimal)==true) elem.value = formattedDecimal;
}
}

////////////////////////////////////////////////////////////////////////////
function formatHours(elem)
////////////////////////////////////////////////////////////////////////////
{
var formattedHours = "";
var prefix = "";
var postfix = "";

if(elem.value!="")
{
	prefix = getPrefix(elem.value);
	postfix = getPostfix(elem.value);

	if(parseInt(postfix)<12) postfix = "00";
	else if(parseInt(postfix)<37) postfix = "25";
	else if(parseInt(postfix)<62) postfix = "50";
	else if(parseInt(postfix)<87) postfix = "75";
	else postfix = "00";

	formattedHours = prefix.toString() + "." + postfix;
	if(isValidHours(formattedHours)==true) elem.value = formattedHours;
}
}

////////////////////////////////////////////////////////////////////////////
function formatTime(elem)
////////////////////////////////////////////////////////////////////////////
{
//alert("function start: formatTime");
var formattedTime = "";
var prefix = "";
var postfix = "";

if(elem.value!="")
{
	prefix = getPrefix(elem.value);
	postfix = getPostfix(elem.value);

	formattedTime = prefix.toString() + "." + postfix.toString();
	if(isValidTime(formattedTime)==true) elem.value = formattedTime;
}
}

////////////////////////////////////////////////////////////////////////////
function isDuration(duration)
////////////////////////////////////////////////////////////////////////////
{
var isDurationAmount = true;
var prefix;
var postfix;

if((duration=="")||(duration==null)||(duration==undefined)||(parseInt(duration)==0)) 
{
	isDurationAmount = false;
}
else
{
	if(isNaN(duration)!=true)
	{
		prefix = getPrefix(duration);
		postfix = getPostfix(duration);

		//	test prefix

		if(isNaN(prefix)==true) isDurationAmount = false;

		//	test postfix

		else if(postfix.length>2) isDurationAmount = false;
		else if(isNaN(postfix)==true) isDurationAmount = false;
	}
	else isDurationAmount = false;
}
return isDurationAmount;
}

////////////////////////////////////////////////////////////////////////////
function getPostfix(inString)
////////////////////////////////////////////////////////////////////////////
{
//alert("function start: getPostfix");
var decimalPlace_first;
var decimalPlace_last;
var colon;
var postfix;

colon = inString.indexOf(":");
if(colon!=-1) inString = inString.replace(/:/g,".");

decimalPlace_first = inString.indexOf(".");
decimalPlace_last = inString.lastIndexOf(".");

if(decimalPlace_first==-1)
{
if(isNaN(inString)==false) postfix = "00"; // no decimal place with valid number
else postfix = ""; // no decimal place with invalid number
} 
else if(decimalPlace_first!=decimalPlace_last) postfix = "";
else if(inString.length>1) // decimal place plus at least one digit
{
	if(decimalPlace_first==0) postfix = inString.substr(decimalPlace_first+1,(inString.length-decimalPlace_first)); // no prefix
	else postfix = inString.substr(decimalPlace_first+1,(inString.length-decimalPlace_first)); // prefix AND decimal place

	if (postfix.length==1) postfix += "0";
}
//alert("function end: getPostfix");
return postfix;
}

////////////////////////////////////////////////////////////////////////////
function getPrefix(inString)
////////////////////////////////////////////////////////////////////////////
{
//alert("function start: getPrefix");
var decimalPlace_first;
var decimalPlace_last;
var colon;
var prefix;

colon = inString.indexOf(":");
if(colon!=-1) inString = inString.replace(/:/g,".");

decimalPlace_first = inString.indexOf(".");
decimalPlace_last = inString.lastIndexOf(".");

//alert(inString);
//alert(decimalPlace_first);
//alert(decimalPlace_last);

if(decimalPlace_first==-1) 
{
if(isNaN(inString)==false) prefix = inString; // no decimal place with valid number
else prefix = "";  // no decimal place with invalid number
}
else if(decimalPlace_first!=decimalPlace_last)  prefix = "";
else if(inString.length>1) // decimal place plus at least one digit
{
	if(decimalPlace_first==0) prefix = "0";// no prefix
	else prefix = inString.substr(0,decimalPlace_first); // prefix AND decimal place
}
//alert("function end: getPrefix");
return prefix;
}

////////////////////////////////////////////////////////////////////////////
function trim(str, chars)
////////////////////////////////////////////////////////////////////////////
{
	return ltrim(rtrim(str, chars), chars);
}

////////////////////////////////////////////////////////////////////////////
function ltrim(str, chars) 
////////////////////////////////////////////////////////////////////////////
{
	chars = chars || "\\s";
	return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}

////////////////////////////////////////////////////////////////////////////
function rtrim(str, chars)
////////////////////////////////////////////////////////////////////////////
{
	chars = chars || "\\s";
	return str.replace(new RegExp("[" + chars + "]+$", "g"), "");
}

//////////////////////////////////////////////////////////////////////////////////////////////////////////////
function on_textarea(me,maxlength) 
//////////////////////////////////////////////////////////////////////////////////////////////////////////////
{
var strUrl 		= "textarea.asp?source_id=" + me.id + "&maxlength=" + maxlength;
var w 			= 550;
var wleft;
var h 			= 450;
var wtop;
var name 		= "newWindow";

w 			+= 32;
h 			+= 96;
wleft 			= (screen.width - w) / 2;
wtop 			= (screen.height - h) / 2;

if (wleft < 0) 
{
	w = screen.width;
	wleft = 0;
}
if (wtop < 0) 
{
	h = screen.height;
	wtop = 0;
}

var win = window.open(strUrl,name,'width='+w+',height='+h +','+'left='+wleft+',top='+wtop+','+'location=no, menubar=no,'+'status=no,toolbar=no,scrollbars=no,resizable=no');
win.resizeTo(w, h);
win.moveTo(wleft, wtop);
win.focus();
if(win.document.getElementById("ta")!=undefined) win.document.getElementById("ta").focus();
}

