function ajax(url){
	if (window.XMLHttpRequest){var xmlhttp=new XMLHttpRequest();}
	else{var xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");}
	xmlhttp.open("GET",url,false);
	xmlhttp.send(null);
	return xmlhttp.responseText;}

function loadscript(sourcepath){
	//load script dynamically 
   var oHead = document.getElementsByTagName('head').item(0);
    var oScript= document.createElement("script");
    oScript.type = "text/javascript";
    oScript.src=sourcepath;
    oHead.appendChild( oScript);
}


function makeTableTagTemplate(tableSizeInfo)
{
	//USAGE tableSizeInfo={'row':5,'col':4,'header':2,'footer':3}
	var x=tableSizeInfo;
	var thead=''
	for(var r=0; r<x.header; r++){
	    thead+='<tr>'
	    for(var c=0;c<x.col;c++){
	        thead+='<th>Header</th>'    
	    }
	    thead = thead + '</tr>'
	}
	thead = '<thead>' + thead + '</thead>'

	var tbody=''
	for(r=0; r<x['row']; r++){
	    tbody+= '<tr>'
	    for(c=0; c<x.col; c++){
	        tbody+='<td>Cell Data</td>'    
	    }
	    tbody = tbody + '</tr>'
	}
	tbody = '<tbody>' + tbody + '</tbody>'

	var tfoot=''
	for(r=0;r<x.footer;r++){
	    tfoot+= '<tr>'
	    for(c=0;c<x.col;c++){
	        tfoot+='<td>footer</td>'    
	    }
	    tfoot = tfoot + '</tr>'
	}
	tfoot='<tfoot>' + tfoot + '</tfoot>' 

	var tag = '<table border=1>' + thead + tbody + tfoot + '</table>'
	return tag;
}

function toWindow(winname, sometag){
	 //not important
	 //opens a new window and throws sometag into it

	var w=window.open ('', winname, config='height=300,width=480, toolbar=0, menubar=1, scrollbars=1, resizable=1,location=1, directories=0, status=0');
	w.focus();
	w.document.writeln('<div>' + sometag + '</div>');
	w.document.close();
}

function fixCellAlignment(){
	//Align cell data based upon content
	//Originally used in process_data.html

	var cells = document.getElementsByTagName('td');
	var k=cells.length;
	while(k){k--;
	    var c=cells[k];
	    var x=c.innerHTML;	//this should be improved to read the data--Not the innerHTML
	    if(!isNaN(x)){
	        c.setAttribute('style','text-align:right');    //number
	    }else{
	        if(x.match(/^\d/gi)){
	            c.setAttribute('style','text-align:left');    //number + text
	        }else{
	            c.setAttribute('style','text-align:center');    //text
	        }
	    }
	}
}

Date.prototype.getDateTime=function(millisec){
        //returns string like "04/29/1906 18:08" 
	var mm=this.getMonth()+1;
	 if(mm<10){mm='0'+mm;}
	var dd=this.getDate();
	if(dd<10){dd='0'+dd;}
	var yyyy=this.getFullYear();
	var hh=this.getHours();
	if(hh<10){hh='0'+hh;}
	var mn=this.getMinutes();
	if(mn<10){mn='0'+mn;}
	var s=mm+'/'+dd+'/'+yyyy+' '+hh+':'+mn;
	return s; 
}

function to_hhmmss(seconds){
 var hh=parseInt(seconds/3600);
 if(hh<10){hh = '0'+hh;}
 var mm=parseInt(seconds%3600/60);
 if(mm<10){mm = '0'+mm;}
 var ss=parseInt(seconds%60);
 if(ss<10){ss = '0'+ss;}
 return hh+':'+mm+':'+ss;
}


Array.prototype.gap=function()
{	
    var a=this;
    var p=[];var n=a.length;
    for(var k=0;k<n;k++)
    {    var x=a[k]; var y=a[k+1];
        if(y==0){
            var j=0;
            while((j<n)&&(a[k+j+1]==0)){j++;}
            p.push([x,j]);
        }else{
            p.push([x,0]);
        }
    }return p;
}

var get=function(t){
	return document.getElementsByTagName(t);
}

String.prototype.data=function(){ 
	var txt=this;
	var r=/[\+\-]?[\d]*[\.]?[\d]+/g;
	 return txt.match(r);
}

var gt=function(tag){
	return document.getElementsByTagName(tag);
}

var gd=function(id){
	return document.getElementById(id);
}

function read(t,r,c){
	var tb=get('table')[t];
	var ro=tb.rows[r];
	return ro.cells[c].innerHTML;
}

function write(t,r,c,data){
	var tb=get('table')[t];
	var ro=tb.rows[r];
	ro.cells[c].innerHTML=data;
}

function convert_col_unit(col,topOffset,bottomOffset,factor,decimal)
{
	var cnt=get('tr').length;
	var k=cnt+1-bottomOffset;


if(document.getElementById('chkComma').checked)
{
	do{ var c=new Tcell(0,k-2,col)
	    var x=addCommas((c.value()*factor).toFixed(decimal))
	    c.settext(x)
	    k--;
	}while(k-topOffset-1)
}
else
{
	do{ var c=new Tcell(0,k-2,col)
	    var x=(c.value()*factor).toFixed(decimal)
	    c.settext(x)
	    k--;
	}while(k-topOffset-1)
}
}

function Selector(id)
{
    this.index=index;
    this.value=value;
    this.text=text;
    this.reset=reset;
    function index(){
        var s=document.getElementById(id);
        return s.selectedIndex;
    }
    function value(){
        var s=document.getElementById(id);
	return s.value;
    }
    function text(){
        var s=document.getElementById(id);
	return s.options[s.selectedIndex].text;
    }
    function reset(){
        document.getElementById(id).selectedIndex=0;
    }
}

function clearChildNodes(id)
{
    var t=document.getElementById(id)
    var c=t.childNodes
    var n=c.length-1
    if(n>1){
    do{
    t.removeChild(c[n])
    n--;
    }while(n+1)
    }
}

function addCommas(nStr)
{
	nStr += '';
	var x = nStr.split('.');
	var x1 = x[0];
	var x2 = x.length > 1 ? '.' + x[1] : '';
	var rgx = /(\d+)(\d{3})/;
	while (rgx.test(x1)) {
		x1 = x1.replace(rgx, '$1' + ',' + '$2');
	}
	return x1 + x2;
}

function numOrdA(a, b){ return (a-b); }	//Prevent alphanumeric sorting
function numOrdD(a, b){ return (b-a); }	//Prevent alphanumeric sorting

Array.prototype.log = function(title){
    //logger for firefox console
    cl(title + '\t:\t' + this.map(function(x){return (x*1).toPrecision(3);}))
}

function bundle(arrays){
    //adds corresponding data of arrays
    //returns array
    var max = arrays.map(function(x){return x.length;}).max();
    var cnt = 0;
    var u = [];
    var s = 0;
    while(max){max--;
        cnt = arrays.length;
        while(cnt){cnt--;
            //if undefined use 0
            s+= arrays[cnt][max]?arrays[cnt][max]:0;
        }
        u.push(s);
        s = 0;
    }
    return u.reverse();
}

function cl(s){
	//only for firefox with firebug
	if(typeof(console)==='object'){console.log(navigator.appName + ' > ' + s)};
}
