
function grid(nRows,nPage,trans,sourceUrl,locationId,where,noRecordFoundURL,nav,navArray,navNumberOfPages,navTrans)
{
	this.nRows=nRows
	this.nPage=nPage
	this.trans=trans
	this.sourceUrl=sourceUrl
	this.locationId=locationId
	this.where=where
	this.noRecordFoundURL=noRecordFoundURL
	this.sourceDOM=''
	this.nav=nav
	this.navArray=navArray
	this.sourceNavXml=''
	this.navStart=1
	this.navNumberOfPages=navNumberOfPages
	this.navLast=0
	this.navTrans=navTrans
	
	this.render=render
	this.renderSubset=renderSubset
	this.nextPage=nextPage
	this.previousPage=previousPage
	this.renderNavigator=renderNavigator
	//this.PrepareNavigatorXml=PrepareNavigatorXml
	this.NavFirst=NavFirst
	this.NavLast=NavLast
	this.NavPrevious=NavPrevious
	this.NavNext=NavNext
	this.NavNavigate=NavNavigate
	
	function render()
	{
		
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		
		if(xmlhttp.responseText != 0)
		{
		
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		
			if (this.nav=1) { this.renderNavigator()  }
			
		}
		else
		{
			
			var xx = new ActiveXObject("Msxml2.XMLHTTP");
			xx.open("GET", this.noRecordFoundURL , false);
			xx.send();
			document.getElementById(locationId).innerHTML=xx.responseText
		}
	}
	
	
	
	
	
	function renderNavigator()
	{
		
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", MyServer +"Assets/Aspfiles/CountUsedCars.asp?" + where , false);
		xmlhttp.send();
		var h=xmlhttp.responseText
		var d=Math.ceil(h/this.nRows)
		if (d<this.navNumberOfPages)
		{
			this.navNumberOfPages=d;
		}
		
		
		this.navLast=d
	//alert(d)
		
		var k=this.navStart
		var j=(this.navStart + this.navNumberOfPages)-1
		//window.alert(k)
		var z=new ActiveXObject("MSXML2.DOMDocument")
		z.loadXML("<root></root>")
		//window.alert(z.xml)
		var n
		var a 
		var m
		var b
		
		for(i=k;i<=j;i++)
		{
				n = z.createElement("r1")
				z.documentElement.appendChild(n)
				n.text = "Hammad"
				a = z.createAttribute("n1")
				n.attributes.setNamedItem(a)
				a.text = i
		
		}
		m=z.createElement("TotalNumber")
		z.documentElement.appendChild(m)
		m.text="heba"
		b=z.createAttribute("tn")
		m.attributes.setNamedItem(b)
		b.text=this.navLast
		//var dom=new ActiveXObject("Msxml2.DOMDocument");
		//dom.loadXML(z.xml)
		//
		this.sourceNavXml=z.xml
		//window.alert(z.xml)
		
		
		//window.alert(this.sourceNavXml)
		//var h=this.sourceNavXml
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(this.sourceNavXml);
		//window.alert(dom.xml)
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.navTrans);
		//
		//
		
		var xslt = new ActiveXObject("Msxml2.XSLTemplate");
		var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
		var xslProc;
		xslDoc.async = false;
		xslDoc.resolveExternals = false;
		xslDoc.loadXML(t.xml);
		xslt.stylesheet = xslDoc;
		var xmlDoc = new ActiveXObject("Msxml2.DOMDocument");
		xmlDoc.async = false;
		xmlDoc.resolveExternals = false;
		xmlDoc.loadXML(dom.xml);
		
		/*if (xmlDoc.parseError.errorCode <> 0) {
		   var myErr = xmlDoc.parseError
		   alert("You have error " + myErr.reason)
		} else */ 
		   xslProc = xslt.createProcessor();
		   xslProc.input = xmlDoc;
		   xslProc.addParameter("ActivePage", this.nPage);
		   xslProc.transform();
		   //alert();
		   var zz=xslProc.output;
		
		for(i=0;i<this.navArray.length;i++)
		{
		document.getElementById(this.navArray[i]).innerHTML=zz;
		//alert("hi");
		//document.getElementById("b4").innerHTML=xslProc.output;
		}
		
	}
	
	function NavNavigate(y)
	{
		this.nPage=y
		
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		
		
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		
		
		
		this.renderNavigator()
		
	}
	
	function NavFirst()
	{
		//window.alert("hiiiiiiiii")
		this.navStart=1
		this.nPage=1
		
		
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		
		
		
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		
		
		this.renderNavigator()
		
	}
	
	function NavLast()
	{
		this.nPage=this.navLast
		this.navStart=(this.navLast - this.navNumberOfPages)+1
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		
		
		
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		
		
		this.renderNavigator()
	}
	
	function NavPrevious()
	{
		//var n=(this.navStart + this.navNumberOfPages)-1
		var n=this.nPage-1
		//alert(n)
		if (n!=0)
		{
				if (n<this.navStart)
				{
					
					this.navStart=this.navStart-1
					//alert(this.navStart)
				}
			this.previousPage()
			this.renderNavigator()
		
		//this.PrepareNavigatorXml()
		//this.renderNavigator()
		}
	}
	
	function NavNext()
	{
		var n=parseInt(this.nPage)+1
		//alert(n)
		
		if (n<=this.navLast)
		/*here if  not equal last*/
		{
				var o=(this.navStart + this.navNumberOfPages)-1
				if (n>o)
				{
					//alert(this.navStart)
					this.navStart=this.navStart+1
					//alert(this.navStart)
					
				}
				this.nextPage()
				this.renderNavigator()
		}
		//this.nPage=this.nPage+1
	}
		
	function nextPage()
	{	
		this.nPage=parseInt(this.nPage)+1
		//alert("nextPage")
		//alert(this.nPage)
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		if(xmlhttp.responseText != 0)
		{
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		return true
		}else
		{this.nPage=this.nPage-1
		return false }
	}
	
	function previousPage()
	{
		this.nPage=this.nPage-1
		var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
		xmlhttp.open("GET", this.sourceUrl + "?nr=" + this.nRows + "&np=" + this.nPage +"&"+ where, false);
		xmlhttp.send();
		if(xmlhttp.responseText != 0)
		{
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xmlhttp.responseText);
		
		var dom=new ActiveXObject("Msxml2.DOMDocument");
		dom.loadXML(xmlhttp.responseText)
		this.sourceDOM=dom
		
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(this.trans);
		
		document.getElementById(locationId).innerHTML=x.transformNode(t)
		return true
		}else
		{this.nPage=1
		return false }
	}
	
	function renderSubset(filter,parametesArray,localTrans)
	{
		
		var xslt = new ActiveXObject("Msxml2.XSLTemplate");
		var xslDoc = new ActiveXObject("Msxml2.FreeThreadedDOMDocument");
		var xslProc;
		xslDoc.async = false;
		xslDoc.resolveExternals = false;
		xslDoc.load(filter);
		xslt.stylesheet = xslDoc;
		var xmlDoc = this.sourceDOM
	    xslProc = xslt.createProcessor();
		xslProc.input = xmlDoc;
		for(var i=0;i<parametesArray.length;i=i+2)
		{xslProc.addParameter(parametesArray[i],parametesArray[i+1])}
		xslProc.transform();
				
		var x = new ActiveXObject("Msxml2.DOMDocument");
		x.async = false;
		x.resolveExternals = false;
		x.loadXML(xslProc.output);
						
		var t = new ActiveXObject("Msxml2.DOMDocument");
		t.async = false;
		t.resolveExternals = false;
		t.load(localTrans);
		
		return x.transformNode(t)
	}

}