//Ajax Pagination Script- Author: Dynamic Drive (http://www.dynamicdrive.com)
//Created Sept 14th, 07'

var ajaxpageclass=new Object()
//1) HTML to show while requested page is being fetched:


if(document.getElementById("eTrainingPath")!=null){

lodingGif = document.getElementById("eTrainingPath").value + "/images/loading.gif";

ajaxclass.loadstatustext="<img src='"+lodingGif+"' /> \u062c\u0627\u0631\u0649 \u0627\u0644\u062a\u062d\u0645\u064a\u0644 ..."
}


//2) Bust cache when fetching pages?
ajaxpageclass.ajaxbustcache=false

ajaxpageclass.connect=function(pageurl, divId){
	
	var page_request = false
	var bustcacheparameter=""
	if (window.XMLHttpRequest){ // if Mozilla, IE7, Safari etc
		page_request = new XMLHttpRequest();
	
	}
	else if (window.ActiveXObject){ // if IE6 or below
		try {
		page_request = new ActiveXObject("Msxml2.XMLHTTP");
	
		} 
		catch (e){
			try{
			page_request = new ActiveXObject("Microsoft.XMLHTTP")
	
			}
			catch (e){}
		}
	}
	else
		return false
	page_request.onreadystatechange=function(){ajaxpageclass.loadpage(page_request, divId)}
	//alert(pageurl);
	 var timestamp = new Date();
	if(pageurl.indexOf('?')==-1)
	{
	pageurl += '?timestamp='+(timestamp*1)
	}else
	{
	pageurl += '&timestamp='+(timestamp*1)
	}
	page_request.open('POST', encodePassData(pageurl), true)
	page_request.send(null)
}

ajaxpageclass.loadpage=function(page_request, divId){
	if(this.loadstatustext!=null && document.getElementById(divId))
	{
	document.getElementById(divId).innerHTML=this.loadstatustext //Display "fetching page message"
	}
	if (page_request.readyState == 4 && (page_request.status==200 || window.location.href.indexOf("http")==-1)){
		document.getElementById(divId).innerHTML=page_request.responseText
	}
}

ajaxpageclass.bindpages=function(pageinfo, divId, paginateIds){ //Main Constructor function
	this.pageinfo=pageinfo //store object containing URLs of pages to fetch, selected page number etc

	this.divId=divId

	this.paginateIds=paginateIds //array of ids corresponding to the pagination DIVs defined for this pageinstance

	var initialpage=(pageinfo.selectedpage<pageinfo.page.length)? pageinfo.selectedpage : 0 //set initial page shown

	this.buildpagination(initialpage)
	
	this.selectpage(initialpage)

}

ajaxpageclass.bindpages.prototype={

	buildpagination:function(selectedpage){
	    if (this.pageinfo.page.length==1){
			var paginateHTML="" //Pagination HTML to show when there's only 1 page (no pagination needed)
			
		}
		else{ //construct pagimation interface
		var paginateHTML="";
			
			paginateHTML+='<table  class="pagination" dir="rtl"><tr>\n'
			paginateHTML+='<td><a href="#previous" rel="'+(selectedpage-1)+'">\u0627\u0644\u0633\u0627\u0628\u0642</a></td>\n' // prev						
			for (var i=0; i<this.pageinfo.page.length; i++){
				paginateHTML+='<td><a href="#page'+(i+1)+'" rel="'+i+'">'+(i+1)+'</a></td>\n'
			}
			paginateHTML+='<td><a href="#next" rel="'+(selectedpage+1)+'">\u0627\u0644\u062a\u0627\u0644\u0649</a></td>\n' // next			
			paginateHTML+='</tr></div>'
		}// end construction
		
		for (var i=0; i<this.paginateIds.length; i++){ //loop through # of pagination DIVs specified
			var paginatediv=document.getElementById(this.paginateIds[i]) //reference pagination DIV
			paginatediv._currentpage=selectedpage //remember current page selected (which will become previous page selected after each page turn)
			paginatediv.innerHTML=paginateHTML
			var pageinstance=this
			paginatediv.onclick=function(e){
				var targetobj=window.event? window.event.srcElement : e.target
				if (targetobj.tagName=="A" && targetobj.getAttribute("rel")!=""){
					if (!/disabled/i.test(targetobj.className)){ //if this pagination link isn't disabled (CSS classname "disabled")
						pageinstance.selectpage(parseInt(targetobj.getAttribute("rel")))
					}
				}
				return false
			}
		}
	},

	selectpage:function(selectedpage){
		//replace URL's root domain with dynamic root domain (with or without "www"), for ajax security sake:
		var modifiedurl=this.pageinfo.page[selectedpage].replace(/^http:\/\/[^\/]+\//i, "http://"+window.location.hostname+"/")
		ajaxpageclass.connect(modifiedurl, this.divId) //fetch requested page and display it inside DIV
		var prevlinkoffset=1
		
		for (var i=0; i<this.paginateIds.length; i++){ //loop through # of pagination DIVs specified
			var paginatediv=document.getElementById(this.paginateIds[i])
			var paginatelinks=paginatediv.getElementsByTagName("a")
			if(paginatelinks[0]!=null){
			paginatelinks[0].className=(selectedpage==0)? "prevnext disabled" : "prevnext" //if current page is 1st page, disable "prev" button
			paginatelinks[0].setAttribute("rel", selectedpage-1) //update rel attr of "prev" button with page # to go to when clicked on
			paginatelinks[paginatelinks.length-1].className=(selectedpage==this.pageinfo.page.length-1)? "prevnext disabled" : "prevnext"
			paginatelinks[paginatelinks.length-1].setAttribute("rel", selectedpage+1)
			paginatelinks[paginatediv._currentpage+prevlinkoffset].className="" //deselect last clicked on pagination link (previous)
			paginatelinks[selectedpage+prevlinkoffset].className="currentpage" //select current pagination link
			paginatediv._currentpage=selectedpage //Update last clicked on link
			}
		}
	
	},

	refresh:function(pageinfo){
	this.pageinfo=pageinfo
	var initialpage=(pageinfo.selectedpage<pageinfo.page.length)? pageinfo.selectedpage : 0
	this.buildpagination(initialpage)
	this.selectpage(initialpage)
	}
}

function encodePassData(passData)
{
var newPassData = "";

var splitDataString = passData.split("&");
if(splitDataString!=""){
	for(i=0;i<splitDataString.length;i++)
	{
   		
   		if(splitDataString[i].indexOf("=")!=-1){
   		temp1 = splitDataString[i].substring(0,splitDataString[i].indexOf("="));
   		temp2 = splitDataString[i].substring(splitDataString[i].indexOf("=")+1,splitDataString[i].length)
   		newPassData += temp1;
  		newPassData += "=";
   		newPassData += Url.encode(temp2);
   		newPassData += "&";	
   		}
}


}

return newPassData;
}

