var i_errfound; //for function error()
var isCheckAll = false;

String.prototype.trim=function()
{
   return   this.replace(/^\s*(.*?)[\s\n]*$/g,   '$1');
   
} 

function mouseOver(msg)
{
   alert(msg);
}
function mouseOut()
{
//document.b1.src ="b_pink.gif";
}


function popup(val_1, val_2) {
	window.open('select_city.php?field=' + val_1 + '&field2=' + val_2,'','width=300,height=150,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,left=100,top=50')
}

/*
function popup(val_1, val_2) {
	window.open('select_city.php?field=' + val_1,'','width=300,height=150,location=no,menubar=no,status=no,toolbar=no,scrollbars=yes,resizable=yes,left=100,top=50')
}
*/
function changeForm(location)
{
   document.regform.action = location;
}

function checkAll() {   
   for (x = 1; x <= document.regform.TotalNoOfRecord.value;x++) {
      eval("document.regform.chkSend" + x).checked = true;
      // = true;
   }
/*   
   if (checkBoxes.length >= 2)
   {
      for (i = 0; i < checkBoxes.length; i++)
	     field[i].checked = true ;
   }
   else {
      document.regform.checkbox.checked = true
   }
*/
}

function uncheckAll()
{
   var x;
   for (x = 1; x <= document.regform.TotalNoOfRecord.value;x++) {
      eval("document.regform.chkSend" + x).checked = false;
      // = true;
   }
/*
   if (field.length >= 2)
   {
      for (i = 0; i < field.length; i++)
	     field[i].checked = false ;
   }
   else {
      document.regform.checkbox.checked = false
   }
*/   
}

function postBack()
{
   document.regform.submit();
}

function gjftrim(argvalue) {
	var tmpstr = gjfltrim(argvalue);
	
	return gjfrtrim(tmpstr);
}

function gjfltrim(argvalue) {
	while (1) {
		if (argvalue.substring(0, 1) != ' ')
			break;
			
		argvalue = argvalue.substring(1, argvalue.length);
	}
	
	return argvalue;
}

function gjfrtrim(argvalue) {
	while (1) {
		if (argvalue.substring(argvalue.length - 1, argvalue.length)!= ' ')
			break;
		argvalue = argvalue.substring(0, argvalue.length - 1);
	}
	
	return argvalue;
}

function gjferror(elem, text) {
	if (i_errfound) return;
	
	window.alert (text);
	elem.focus();
	i_errfound=true;
}
function gjferror_div(elem,msg_pix,text) {	
    imgURL="<img src='templates/images/icon/icon_error.png'/> ";
    returnHTML="<table><tbody><tr><td valign='top'>"+imgURL+"</td><td style='line-height:16px'>"+text+"</td></tr></tbody></table>";
	$("#"+elem+msg_pix).html(returnHTML);
	$("#"+elem+msg_pix).show();
	if(!i_errfound){
		var destination = $("#"+elem+msg_pix).offset().top - 100;
		$("html:not(:animated),body:not(:animated)").animate({ scrollTop: destination}, 1500 );
		window.document.getElementById(elem).focus();
	}
	i_errfound=true;
}
function validate_init(className)
{
     i_errfound = false;
     $('.'+className).each(function(i){
     	//this.innerText = "";
    	this.innerHtml = "&nbsp;";
     	this.style.display="block" 
     }); 
}
function gjferror2(text) {
	if (i_errfound) return;
	
	window.alert (text);
	i_errfound=true;
}

function gjfValidLength(item, len) {
	return (item.length >= len);
}

 //-----------------------------------------------------------------------------------------
 // Check for valid email
 //-----------------------------------------------------------------------------------------
 function validEmail(item) {
        var emailRegEx = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9]+([.-]?[a-zA-Z0-9\u4e00-\u9fa5]+)?([\.]{1}[a-zA-Z0-9\u4e00-\u9fa5]{1,}){1,}$/;
        if (!gjfValidLength(item,5)) {
                return false;
        }
        else if (item.search(emailRegEx) == -1) {
                return false;
    	}
    	else {
	    	return true;
    	}
 }

function gjfValidEmail(item) {
	var alertEmailAddrNotEntered         ="Sorry, you must enter your email address.";
	var alertInvalidCharFoundInEmailAddr ="Sorry, this email address seems wrong.";
	var alertAtSignMissingInEmailAddr    ="Sorry, this email address seems wrong.";
	var alertBlankSpaceFoundInEmailAddr  ="Sorry, this email address seems wrong.";
	var invalidEmailChars = "\"|&;<>!*\\";

	email = item;

  if (! gjfValidateAsciiData (email)) {
    //alert(alertInvalidCharFoundInEmailAddr);
    return false;
  }

  var invalidChars = invalidEmailChars;
  for (var i = 0; i < invalidChars.length; i++) {
    if (email.indexOf(invalidChars.charAt(i)) != -1) {
      //alert(alertInvalidCharFoundInEmailAddr);
      return false;
    }
  }

  if (email == ""){
	  //alert(alertEmailAddrNotEntered);
		return false;
  }
  
  if (email.indexOf("@") == -1){
    //alert(alertAtSignMissingInEmailAddr);
    return false;
  }

  if (email.indexOf(" ") != -1){
    //alert(alertBlankSpaceFoundInEmailAddr);
    return false;
  }

  if (window.RegExp) {
    var reg1str = "(@.*@)|(\\.\\.)|(@\\.)|(\\.@)|(^\\.)";
    var reg2str = "^.+\\@(\\[?)[a-zA-Z0-9\\-\\.]+\\.([a-zA-Z]{2,3}|[0-9]{1,3})(\\]?)$";

    var reg1 = new RegExp (reg1str);
    var reg2 = new RegExp (reg2str);

    if (reg1.test(email) || !reg2.test(email)) {
      //alert(alertInvalidCharFoundInEmailAddr);
      return false;
    }
  }
	
	return true;
}

function gjfValidateAsciiData(urstr) {
	//use by gjfValidEmail
	var i;
	var result;

  for (i=0; i<urstr.length; i++) {
    if ((urstr.charAt(i) < " ") || (urstr.charAt(i) > "~"))
      return false;
  }
  
  return true;
}

function gjfIsHKID(str) {
	//chk pos numeric whole numbers
	//alert(str.charAt(0));
	if (str.length < 7){
		return false;
	}else{
		if (isChar(str.charAt(0)) && gjfIsNum(str.substring(1, str.length))) 
			return true;
		else
			return false;
	}
}

function isChar(c) {
	return "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".indexOf(c) != -1;
}

function gjfIsNum(str) {
//chk pos numeric whole numbers
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!((temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9") )){
			return false;
			break;
		}
	}
	
	return true;
}

function gjfIsFloat(str) {
//chk pos numeric numbers (float)
	var count=0;
	
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!((temp==".") || (temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9") )){
			return false;
			break;
		}
		
		if (temp==".")
			count+=1;
	}
		
	if (str.charAt(str.length-1) == ".")
		return false;
	
	return (count<=1);
}

var daysOfMonth = new Object();
daysOfMonth ['Jan'] = daysOfMonth ['January']  = daysOfMonth [1]  = 31;
daysOfMonth ['Feb'] = daysOfMonth ['February']  =  daysOfMonth [2] = 28;
daysOfMonth ['Mar'] = daysOfMonth ['March']  = daysOfMonth [3] = 31;
daysOfMonth ['Apr'] = daysOfMonth ['April']  = daysOfMonth [4] = 30;
daysOfMonth ['May'] = daysOfMonth ['May']  = daysOfMonth [5] = 31;
daysOfMonth ['Jun'] = daysOfMonth ['June']  = daysOfMonth [6] = 30;
daysOfMonth ['Jul'] = daysOfMonth ['July']  = daysOfMonth [7] = 31;
daysOfMonth ['Aug'] = daysOfMonth ['August']  = daysOfMonth [8] = 31;
daysOfMonth ['Sep'] = daysOfMonth ['September'] = daysOfMonth [9] = 30;
daysOfMonth ['Oct'] = daysOfMonth ['October']  = daysOfMonth [10] = 31;
daysOfMonth ['Nov'] = daysOfMonth ['November']  = daysOfMonth [11] = 30;
daysOfMonth ['Dec'] = daysOfMonth ['December']  = daysOfMonth [12] = 31;

//-----------------------------------------------------------------------------------------
// Validate the date when the inputs are from the Textfields
// (Where the syear, smonth, sday are in document.form_name.field_name.value !!)
//-----------------------------------------------------------------------------------------
function gjfValidTextDate(syear, smonth, sday) {
	var year = parseInt(syear,10);
	var month = parseInt(smonth,10);
	var day = parseInt(sday,10);

	return gjfvalidDate(year, month, day);
}

//-----------------------------------------------------------------------------------------
// Validate the date (Generic function)
// (Where the syear, smonth, sday are in values !!)
//-----------------------------------------------------------------------------------------
function gjfValidDate(syear, smonth, sday) {
	var year = syear * 1;
	var month = smonth * 1;
	var day = sday * 1;

	if (isNaN(year))
		return false;
	if (isNaN(month))
		return false;
	if (isNaN(day))
		return false;
	if (month == 0)
		return false;
	if (day == 0)
		return false;
	if (year == 0)
		return false;
	if (year < 1900)
		return false;
	if (month < 1 || month > 12)
		return false;
	if (day < 1)
		return false;
	if (month == 2 && gjfIsLeapYear(year))
		var dayLimit = 29;
	else
		var dayLimit = daysOfMonth[month];

	if (day > dayLimit)
		return false;

	return true;
}

//-----------------------------------------------------------------------------------------
// Check for leap year
//-----------------------------------------------------------------------------------------
function gjfIsLeapYear(y) {
	return (y % 4 == 0  && (y % 400 == 0 || y % 100 != 0))
}

function gjfValidfulldate(testdate)
{
	if (testdate.length != 10) {
		return false;
	}
	
	if (!((testdate.charAt(2) == "/") && (testdate.charAt(5) == "/"))) {
		return false;
	}
	else {
		var datearray = testdate.split("/");
		
		if ((!gjfIsNum(datearray[2])) || (!gjfIsNum(datearray[1])) || (!gjfIsNum(datearray[0]))) {
			return false;
		};
		
		return gjfValidDate(parseInt(datearray[2],10),parseInt(datearray[1],10),parseInt(datearray[0],10));				
	}
	
	return true;
}

function gjfRepeat(chars, NoOfOccurence) {
	var tmpString = '';

	for (var i=0; i < NoOfOccurence; i ++) {
		tmpString = tmpString + chars
	}
	
	return tmpString;
}

function gjfCeilingFloat(objvalue, Place) {
	//ceiling the float up to the value of Place
	var power = Math.pow(10, Place);
	var tmp = objvalue * power;
	var intPart = parseInt(tmp, 10);
	var result;

	if (tmp != intPart) {
		intPart ++;
	}
	result = intPart/power;

	return result;
}
   
function gjfRoundFloat(objvalue, Place)	{
	//round the objvalue by the value of Place
	var power = Math.pow(10, Place);
	var neg = false;

	if (objvalue < 0)	{
		neg = true;
		objvalue = objvalue * -1;
	};
	
	var tmp = objvalue * power;
	var intPart = parseInt(tmp, 10);
	var result;
	var tmp2 = (tmp - intPart) * 10;

	if (tmp2 >= 5) {
		intPart ++;
	}
			
	result = intPart / power;	
	
	if (neg) {
		result = result * -1;
	};

	return result;
}

function gjfNewCeilingFloat(objvalue, Place)        {
	// set the -ve input to +ve, ceiling it and then change it to be -ve
	var IsNeg = false
	if (objvalue < 0) {
		IsNeg = true;
		objvalue *= -1;
	}
  
	var power = Math.pow(10, Place);
	var tmp = objvalue * power;
	var intPart = parseInt(tmp, 10);
	var result;

	if (tmp != intPart) {
		intPart ++;
	}

	result = intPart/power;

	if (IsNeg == true) {
		result *= -1;
	}

	return result;
}

function gjsChkDateNotOverToday(Today, TargetDate) {
	//if pass date > today, then return false
	//i_errfound = false;

	var dtarr = TargetDate.value.split("/");
	var TodayArr = Today.value.split("/");
	var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
	var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));
	
	if (dtTarget > dtToday) {
		return false;
	}
	
	return true;
}

function gjsChkDateNotOverToday2(Today, TargetDate) {
	//if pass date > today, then return false

	var dtarr = TargetDate.value.split("/");
	var TodayArr = Today.value.split("/");
	var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
	var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));
	
	if (dtTarget >= dtToday) {
		return false;
	}
	
	return true;
}

function gjsChkDateOverToday(Today, TargetDate) {
	//if pass date > today, then return true

	var dtarr = TargetDate.value.split("/");
	var TodayArr = Today.value.split("/");
	var dtTarget = new Date(parseInt(dtarr[2], 10), parseInt(dtarr[1], 10), parseInt(dtarr[0], 10));
	var dtToday = new Date(parseInt(TodayArr[2], 10), parseInt(TodayArr[1], 10), parseInt(TodayArr[0], 10));

	if (dtTarget < dtToday) {
		return false;
	}

	return true;
}

function gjfIsLetterOrDigit(c) {
	return (gjfIsLetter(c) || gjfIsNum(c))
}

function gjfIsLetter(c) {
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
}

function gjfIsName(str) {
	var isNotName = false;
	var hasLetter = false;
	
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);	

		if (!gjfIsLetter(temp)) {
			if ((temp!=" ") && (temp!="'") && (temp!=",") && (temp!="-") && (temp!="(") && (temp!=")")) {
				isNotName = true;
				break;
			}
		}
		else {
			hasLetter = true;
		}
	}
	
	if (!hasLetter)
		return false;
	
	return !isNotName;
}
 
function gjfIsNotEnglishChar(c){
	return (((c >= " ") && (c <= "~")) || (escape(c) == "%0D")  || (escape(c) == "%0A"));
}
 
function gjfIsEnglish(str) {
	var hasNonEnglish = false;
     
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!(gjfIsNotEnglishChar(temp)) ){
			hasNonEnglish = true;
			break;
		}
	}
    
	return !hasNonEnglish;
}

function gjfIsAlphaNumericNoSpa(str){
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!(gjfIsLetterOrDigit(temp)) ){
			return false;
			break;
		}
		
		// if j = last term, it means true - all char are ok!! Great
		if(j == str.length-1)
			return true;
	}
}

function wordcount(string) {
	var a = string.split(/\s+/g); // split the sentence into an array of words
	return a.length;
}

function checkfieldword(textArea,fieldsize) {
	if (wordcount(textArea.value) > fieldsize) {
		return false;
	}		
	
	return true;
}
	
function gjfIsTelephone(str) {
	if (gjftrim(str) == "") { 
		return false;
	}

	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!((temp=="0") || (temp=="1") || (temp=="2") || (temp=="3") || (temp=="4") || (temp=="5") || (temp=="6") || (temp=="7") || (temp=="8") || (temp=="9") || (temp=="(") || (temp==")") || (temp=="+") || (temp=="-") || (temp==" "))) {
			return false;
			break;
		}
		
		if(j == str.length-1)
			return true;
	}
}

function gjfIsNotEnglishChar(c){
	return (((c >= " ") && (c <= "~")) || (escape(c) == "%0D")  || (escape(c) == "%0A"));
}
 
function gjfIsEnglish(str) {
	var hasNonEnglish = false;
     
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		
		if (!(gjfIsNotEnglishChar(temp)) ){
			hasNonEnglish = true;
			break;
		}
	}
    
	return !hasNonEnglish;
}

function Compare2Days(testdate1, testdate2){
	//testdate1 should be the earlier date
	datearray1 = testdate1.split("-");
	datearray2 = testdate2.split("-");
    targetDate1 = new Date(parseInt(datearray1[0],10),parseInt(datearray1[1]-1,10),parseInt(datearray1[2],10));
    targetDate2 = new Date(parseInt(datearray2[0],10),parseInt(datearray2[1]-1,10),parseInt(datearray2[2],10));	    	    
    
   
    if ((targetDate1 - targetDate2) == 0) {
		return 0;
	}else if ((targetDate1 - targetDate2)> 0) {	
		return -1;
    }else{
		return 1;
    }
	
}

function isSpace(c) {
	return (c == " ");
}

function isLetter(c) {
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) );
}

function isNumber(c) {
	return ((c >= "0") && (c <= "9"));
}

function isAlphabetNumeric(str){
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		if (!(isLetter(temp)) && !(isSpace(temp)) && !(isNumber(temp))){
			return false;
			break;
		}

		// if j = last term, it means true - all char are ok!! Great
		if(j == str.length-1)
			return true;
	}
}

function isAlphabetAndNumeric2(obj) {
	var pattern=new RegExp("^[A-Za-z0-9]+$");
	if(!pattern.test(obj.value)){
		//alert(obj.value.length);
		obj.value=obj.value.substr(0,obj.value.length-1);
	}
}

function isAlphabetAndNumeric(value)
{
	var len=value.length;
	var pattern=new RegExp("^[A-Za-z0-9]+$");
	var patternNum=new RegExp("[0-9]");
	var patternChar=new RegExp("[A-Za-z]");
	if(pattern.test(value)){
		if(patternNum.test(value) && patternChar.test(value)) 
			return true;
		else 
			return false;
	}else
		return false;
}

function isAlphabet(str){
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		if (!(isLetter(temp)) && !(isSpace(temp))){
			return false;
			break;
		}

		// if j = last term, it means true - all char are ok!! Great
		if(j == str.length-1)
			return true;
	}
}

function isAlphabet2(str){
	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		if (!(isLetter(temp)) && !(isSpace(temp)) && (temp != "/")){
			return false;
			break;
		}

		// if j = last term, it means true - all char are ok!! Great
		if(j == str.length-1)
			return true;
	}
}

function validChinaMobile(item) {
	var phonereg = /^13[0-9]{9}$|^14[0-9]{9}$|^15[0-9]{9}$|^18[0-9]{9}$/
	
	if (phonereg.test(item) == false)
		return false;

	return true;
}

function validHongKongMobile(item) {
        var phonereg = /^5[0-9]{7}$|^6[0-9]{7}$|^9[0-9]{7}$/
        
        if (phonereg.test(item) == false)
                return false;
            
        return true;
}

function validMacauMobile(item) {
    var phonereg = /^62[0-9]{6}$|^63[0-9]{6}$|^66[0-9]{6}$/
    
    if (phonereg.test(item) == false)
        return false;
    
    return true;
}

function containSlash(str) {
	var noOfSlash;
	noOfSlash = 0;

	for (var j=0; j<str.length; j++) {
		var temp = str.charAt(j);
		if (temp == "/") {
			noOfSlash++;
		}
	}
	
	return noOfSlash;
}

function charOnKeyboard(str) {
	var charlist = '`1234567890-=qwertyuiop[]\asdfghjkl;\'zxcvbnm,./~!@#$%^&*()_+QWERTYUIOP{}|ASDFGHJKL:"ZXCVBNM<>? ';

	for (var j=0; j<str.length; j++) {
		if (charlist.indexOf(str.charAt(j)) != -1) {
			return true;
			break;
		}
	}

	return false;
}

var xmlHttp;
var typestr;

function createXMLHttpRequest(){
	if(window.ActiveXObject){
		xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
	}else if(window.XMLHttpRequest){
		xmlHttp=new XMLHttpRequest();
	}
}

String.prototype.getElementsByName = function(name){
	var re = new RegExp("[\w\W]*<" + name + ">[^<]*</" + name + ">[\w\W]*","ig"),
	r,
	re2 = new RegExp("<" + name + ">"),
	re3 = new RegExp("</" + name + ">");
	if(r=this.match(re)){
  		return unescape((r[0].trin(re2)).trin(re3));
 	}
 	return null;
};

String.prototype.trin = function(re){ 
  return this.replace(re, "");
};

function doTripLoad(root,type){
	typestr=type
	var url=root+"tripInfomation.php";
	$.ajax({
	 type: "GET",
	 url: url,	 
	 success: function(msg){ doTripStatusChange(msg)}
	}); 
}

function doTripStatusChange(xmlDoc){

			var departCity=xmlDoc.getElementsByName("DepartCity");			
			document.getElementById("departCity").innerHTML=departCity;
			var returnCity=xmlDoc.getElementsByName("ReturnCity");
			document.getElementById("returnCity").innerHTML=returnCity;
			var departDate=xmlDoc.getElementsByName("DepartDate");
			document.getElementById("departDate").innerHTML=departDate;			
			if (typestr== "RT"){
				var returnDate=xmlDoc.getElementsByName("ReturnDate");
				document.getElementById("returnDate").innerHTML=returnDate;
			}
			var language=xmlDoc.getElementsByName("Language");
			var totalAmount=xmlDoc.getElementsByName("TotalAmount");
			var currency=xmlDoc.getElementsByName("Currency");
			//if(language == "sc"){
				//var totalAdult=xmlDoc.getElementsByName("TotalAdult");
				//document.getElementById("totalAdult").innerHTML=totalAdult+document.getElementById("totalAdult").innerHTML;
				//var totalCost_adult=xmlDoc.getElementsByName("TotalCostAdult");
				
				//document.getElementById("totalCost_adult").innerHTML=currency+" "+totalCost_adult;
				//var totalTax_adult=xmlDoc.getElementsByName("TotalTaxAdult");
				//document.getElementById("totalTax_adult").innerHTML=currency+" "+totalTax_adult;
				
				//var totalChild=xmlDoc.getElementsByName("TotalChild");
				//if (totalChild.length){
				//	document.getElementById("child").style.display='block';
				//	document.getElementById("tax_child").style.display='block';
				//	document.getElementById("totalChild").innerHTML=totalChild+document.getElementById("totalChild").innerHTML;
				//	var totalCost_child=xmlDoc.getElementsByName("TotalCostChild");
				//	document.getElementById("totalCost_child").innerHTML=currency+" "+totalCost_child;
				//	var totalTax_child=xmlDoc.getElementsByName("TotalTaxChild");
				//	document.getElementById("totalTax_child").innerHTML=currency+" "+totalTax_child;
				//}else{
				//	document.getElementById("child").style.display='none';	
				//	document.getElementById("tax_child").style.display='none';
				//}
			//}else if(language == "en"){
				document.getElementById("total_Amount").innerHTML=currency+" "+totalAmount;
			//}	
			
			document.getElementById("totalAmount").innerHTML=currency+" "+totalAmount;
			document.getElementById("next").style.display="block";
			document.getElementById("startover").style.display="block";
}

function isIE(){ 
	if (window.navigator.userAgent.toString().toLowerCase().indexOf("msie") >=1)
		return true;
	else
		return false;
}

if(!isIE()){ //firefox innerText define
	HTMLElement.prototype.__defineGetter__("innerText",
		function(){
			var anyString = "";
			var childS = this.childNodes;
			for(var i=0; i <childS.length; i++) {
				if(childS[i].nodeType==1)
					anyString += childS[i].tagName=="BR" ? '\n' : childS[i].innerText;
				else if(childS[i].nodeType==3)
					anyString += childS[i].nodeValue;
			}
			return anyString;
		}
	);
	HTMLElement.prototype.__defineSetter__("innerText",
		function(sText){this.textContent=sText;}
	);
}

function openFAQwindow(target)
{
	window.open(target,"","menubar=1,resizable=1,location=1,status=1,scrollbars=1,width=1010,height=600");
}

function formatNumber (tmpnum) {
     //decimal  - the number of decimals after the digit from 0 to 3
     //-- Returns the passed number as a string in the xxx,xxx.xx format.
       anynum=eval(tmpnum);
       divider =10;
       decimal = 3 ;
       switch(decimal){
            case 0:
                divider =1;
                break;
            case 1:
                divider =10;
                break;
            case 2:
                divider =100;
                break;
            default:       //for 3 decimal places
                divider =1000;
        } 

       workNum=Math.abs((Math.round(anynum*divider)/divider)); 

       workStr=""+workNum 

       if (workStr.indexOf(".")==-1){workStr+="."} 

       dStr=workStr.substr(0,workStr.indexOf("."));dNum=dStr-0
       //pStr=workStr.substr(workStr.indexOf(".")) 

       //while (pStr.length-1< decimal){pStr+="0"} 

       //if(pStr =='.') pStr =''; 

       //--- Adds a comma in the thousands place.    
       if (dNum>=1000) {
          dLen=dStr.length
          dStr=parseInt(""+(dNum/1000))+","+dStr.substring(dLen-3,dLen)
       } 

       //-- Adds a comma in the millions place.
       if (dNum>=1000000) {
          dLen=dStr.length
          dStr=parseInt(""+(dNum/1000000))+","+dStr.substring(dLen-7,dLen)
       }
       retval = dStr ; //+ pStr
       //-- Put numbers in parentheses if negative.
       if (anynum<0) {retval="("+retval+")";} 

    //You could include a dollar sign in the return value.
      //retval =  "$"+retval
      //obj.value = retval;
      return retval;
}

