
function clearTable(table, leaveRows){
		if (leaveRows == null){
			leaveRows = 1;
		}
		var countRows = table.rows.length;
		for(var i = countRows - 1; i>=leaveRows; i--){
			table.deleteRow(i);
		}
}

function IsNumeric(sText) {
   var ValidChars = "0123456789.";
   var IsNumber=true;
   var Char;
   
   for (i = 0; i < sText.length && IsNumber == true; i++) 
      { 
      Char = sText.charAt(i); 
      if (ValidChars.indexOf(Char) == -1) 
         {
         	IsNumber = false;
         }
      }
   return IsNumber;
   
}

function getAjaxObj() {
	var xmlHttp;
	try {
		xmlHttp = new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    } catch (e) {
    	// Internet Explorer
    	try {
			xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
		} catch (e) {
			try {
				xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
        	} catch (e) {
        		alert("Your browser does not support AJAX!");
        		return false;
			}
		}
	}
	return xmlHttp;
}

function getContentByAjax(element, url, funcadditional) {
    var objct = false;
	var xh = getAjaxObj();	
	if (!xh) return;
	xh.onreadystatechange=function() {
		if(xh.readyState == 4) {
            if(typeof(element)=='string'){                
                objct = document.getElementById(element);
            }else{                
	  		    objct = element;
            }
	  		if (objct){                
	  			objct.innerHTML = xh.responseText;                
	  			var scripts = getScriptsFromText(xh.responseText)	  			
	  			for(var i = 0; i < scripts.length; i++ ){
	  				try {
	  					document.eval(scripts[i]);
	  				} catch(e) {
	  					eval(scripts[i]);
	  				}
	  			}                
	  		}	
	  		  		
	  		if (funcadditional){
	  			funcadditional(xh.responseText);	  			
	  		}			
		}
	}	
	xh.open("GET", url, true);	
	xh.send(null);
}

function unique_id(length){
	length = (length == null ? 5 : length);
	return (( (1 + Math.random() )* Math.pow(10, length + 1) )|0).toString(16).substring(1);
}


function nl2br(str) {
	if (str != null) {
		return str.split("\n").join("<br>");
	} else {
		return "";
	}
}

function getScriptsFromText(tmp) {
    var scripts = [];
    try{
        while( tmp.indexOf("<script>") != -1) {
            var startindex = tmp.indexOf("<script>");
            var endindex   = tmp.indexOf("<\/script>");
            var newstartindex = startindex + "<script>".length;
            scripts[scripts.length] = tmp.substr(newstartindex, endindex - newstartindex);
            var newendindex = endindex + "<\/script>".length;
            tmp = tmp.substr(newendindex, tmp.length - newendindex);
        }
    } catch(e){}
    return scripts;
}

function newWin(source, wid, hei, additional) {
     w = screen.width;
     h = screen.height;
     pos_x = Math.round((screen.width - wid)/2);
     pos_y = Math.round((screen.height - hei)/2);   
     strFeatures="height="+hei+", width="+wid+", channelmode=0, directories=0, fullscreen=0, location=0, menubar=0, status=0, toolbar=0, Top="+pos_y+", left="+pos_x + "";
     if(additional!=null){
        retVal = window.open(source,"_blank",strFeatures+additional);
     }else{
        retVal = window.open(source,"_blank",strFeatures);
     }
}

function getArrayId(array, key, value){
	var i;		
	for(i=0; i<array.length; i++){
		if(array[i][key]==value){				
			return i;
		}
	}		
	return -1;
}
 
function innerHTMLLoading(id, image, text){    
    if(image==null){
        image = './i/ico_loading.gif';
    }
    if(text==null){
        text = 'Loading...';
    }
    document.getElementById(id).innerHTML = '<img src="'+image+'" border="" style="float: left;">&nbsp;'+text;
}


function trim(string){
    return string.replace(/(^\s+)|(\s+$)/g, "");
}

function getEventPageCoordinates(event){
    var result = new Array();
    result['x'] = result['y'] = 0;

    var isDOM=document.getElementById; //DOM1 browser (MSIE 5+, Netscape 6, Opera 5+)
    var isOpera=isOpera5=window.opera && isDO;M //Opera 5+
    //var isOpera6=isOpera && window.print //Opera 6+
    //var isOpera7=isOpera && document.readyState //Opera 7+
    var isMSIE=document.all && document.all.item && !isOpera; //Microsoft Internet Explorer 4+
    //var isMSIE5=isDOM && isMSIE //MSIE 5+
    //var isNetscape4=document.layers //Netscape 4.*
    //var isMozilla=isDOM && navigator.appName=="Netscape" //Mozilla или Netscape 6.*    
    
    if(isMSIE){        
        var htmlBodyElement = document.getElementsByTagName("body")[0];
        result['x'] = event.clientX + (htmlBodyElement.scrollLeft > document.documentElement.scrollLeft ? htmlBodyElement.scrollLeft : document.documentElement.scrollLeft);
        result['y'] = event.clientY + (htmlBodyElement.scrollTop > document.documentElement.scrollTop ? htmlBodyElement.scrollTop : document.documentElement.scrollTop);                
    }else{
        result['x'] = event.pageX;
        result['y'] = event.pageY;        
    }

    return result;
}

// specific function for Flat Fee Realty project

function uncover_secret_hidden_div(x, y, content, width, height){
    if(typeof(width)=='undefined'){
        width = 180;
    }
    if(typeof(length)=='undefined'){
        height = 90;
    }
    var div = document.getElementById('secret_hidden_div');
    if(div==null){
        return null;
    }
    
    div.style.width = width+'px';
    div.style.height = height+'px';
    div.style.left = x+'px';
    div.style.top = y+'px';
    div.innerHTML = content;
    div.style.display = 'block';
    
    return div;   
}

function cover_secret_hidden_div(){    
    var div = document.getElementById('secret_hidden_div');
    if(div==null){
        return null;
    }    
    div.style.display = 'none';        
    return div;   
}

function get_secret_hidden_div(){
    return document.getElementById('secret_hidden_div');
}

function secret_hidden_div_innerHTML(str){
    document.getElementById('secret_hidden_div').innerHTML = str;
}

function my_document_write(str){
    document.write(str);
} 

function AddComma(Num) {
    Num = removeCommas(Num);
    var newNum = "";
    var newNum2 = "";
    var count = 0;
    
    //check for decimal number
    if (Num.indexOf('.') != -1){  //number ends with a decimal point
        if (Num.indexOf('.') == Num.length-1){
            Num += "00";
        }
        if (Num.indexOf('.') == Num.length-2){ //number ends with a single digit
            Num += "0";
        }
        
        var a = Num.split("."); 
        Num = a[0];   //the part we will commify
        var end = a[1] //the decimal place we will ignore and add back later
    }
    else {var end = "00";}  
 
    //this loop actually adds the commas   
    for (var k = Num.length-1; k >= 0; k--){
      var oneChar = Num.charAt(k);
      if (count == 3){
        newNum += ",";
        newNum += oneChar;
        count = 1;
        continue;
      }
      else {
        newNum += oneChar;
        count ++;
      }
   }  //but now the string is reversed!
   
  //re-reverse the string
  for (var k = newNum.length-1; k >= 0; k--){
      var oneChar = newNum.charAt(k);
      newNum2 += oneChar;
  }          
   // add dollar sign and decimal ending from above
   newNum2 = newNum2;
   return newNum2;

}

function removeCommas(aNum) {        
    //remove any commas          
    aNum=aNum.replace(/,/g,"");        
    //remove any spaces                
    aNum=aNum.replace(/s/g,"");         
    return aNum;                    
} 

function allowKeys( obj, keys, el ) {
    var bAllowKey = false;
    //alert(el.keyCode);
    //var str = '';
    //for(var i in el){
    //    str+=i+' = '+el[i]+'<br />';
    //}
    //document.getElementById('test').innerHTML=str;
    
    for( var i = 0; i < keys.length; i++ ){        
        if(el.keyCode>0){            
            if( el.keyCode == 8 || el.keyCode == 9 || el.keyCode == 37 || el.keyCode == 39 || el.keyCode == 46 || keys.charAt( i ) == String.fromCharCode( el.keyCode ) ) {
                bAllowKey = true;
                break;
            }
        }else{            
            if( el.charCode == 8 || el.charCode == 9 || el.charCode == 37 || el.charCode == 39 || el.charCode == 46 || keys.charAt( i ) == String.fromCharCode( el.charCode ) ) {
                bAllowKey = true;
                break;
            }
        }
    }
    //if( !bAllowKey ) {
    //    el.cancelBubble = true;
    //    //el.keyCode = 0;    
    //}
    return bAllowKey;
}      



// end of specific functions

