	var ajaxStarted=false;
	function ajaxCall(){
	
		if (ajaxStarted) {
			//Lets warn a message
			//alert("ddd")
			$('ajxLoaderMsg').style.display='';
		}else{
			ajaxStarted=true
			var qs = '?'+Form.serialize(document['searchBoxForm']);
			new Ajax.Updater('tableBody', '/admin/ajax/'+$('searchURL').value+'.asp'+qs,{
				postBody : qs,
				onCreate:	function(){createAjax()},
				onComplete: function(){searchBoxComplete()}, 
				evalScripts:true,method:'post'}
			);	 
		}
	 }

	function searchBoxComplete() {
		ajaxStarted=false;
		init_ibox();
	}
	 
	function returnResults(inPageCount,inCurrentPage, inItemCount){
	
		ajaxCall();
	}
	
	function updateNavigation(inPageCount,inCurrentPage, inItemCount){
		
		
		//we need add validation to check if isInteger, else make them 0		
		//whether or not we should show the no records message
		//if itemCount = 0 then we must display no records message.
		
		var backLink
		var nextLink
		
		//repopulate the drop down box
		var curentPageOptions = $('currentPage')
		//remove all options
		curentPageOptions.options.length = 0;
		for (var x=1; x<= inPageCount; x++){
			curentPageOptions[x-1] = new Option(x,x,false,false)
		}
		document.searchBoxForm.currentPage.selectedIndex = currentPage-1

		//lets create [back]/[next] links
		if($('searchBoxBackNav')){
		
		}
		if($('searchBoxNextNav')){
		
		}
		
		if (currentPage > 1){
			backLink = Builder.node('span', {id:'searchBoxBackNav'},[Builder.node('a', {href:'javascript:searchBoxNavigation('+(currentPage-1)+')', title:'Previous Page'},'Back')]);
			$('searchBoxBackNav').parentNode.replaceChild(backLink,$('searchBoxBackNav'))		
		}else{
			backLink = Builder.node('span', {id:'searchBoxBackNav'},'Back');
			$('searchBoxBackNav').parentNode.replaceChild(backLink,$('searchBoxBackNav'))		
		}
		if (currentPage < inPageCount){	
			nextLink = Builder.node('span', {id:'searchBoxNextNav'},[Builder.node('a', {href:'javascript:searchBoxNavigation('+(currentPage+1)+')', title:'Next Page'},'Next')]);
			$('searchBoxNextNav').parentNode.replaceChild(nextLink,$('searchBoxNextNav'))
		}else{
			nextLink = Builder.node('span', {id:'searchBoxNextNav'},'Next');
			$('searchBoxNextNav').parentNode.replaceChild(nextLink,$('searchBoxNextNav'))
		}
	}
	
	function searchBoxNavigation(inPageGoTo){	
		//document.searchBoxForm.currentPage.selectedIndex = isInteger(inPageGoTo)-1
		currentPage =  isInteger(inPageGoTo)
		$('currentPage').value=currentPage;
		ajaxCall();
	}
	
	function repopulateSelectBox(inItems,selectedIndex){
		
		var curentPageOptions = $('currentPage')
		var isSelectedIndex = false;
		//remove all options
		curentPageOptions.options.length = 0;
		for (var x=1; x<= inItems; x++){
			curentPageOptions[x-1] = new Option(x,x,false,false)
		}
		document.searchBoxForm.currentPage.selectedIndex = selectedIndex-1
	}
	
	function createAjax(){$('tableBody').style.display='none';$('ajxLoader').toggle();}
	function updateSearchBox(inPageCount, inCurrentPage, inItemCount){
	
		pageCount 	= parseInt(isInteger(inPageCount))
		currentPage	= parseInt(isInteger(inCurrentPage))
		itemCount 	= parseInt(isInteger(inItemCount))
	
	
		$('ajxLoader').style.display='none';
		$('tableBody').toggle();
		$('ajxLoaderMsg').style.display='none';
	
		//Lets update all the rords and paging
		if (inItemCount == 0){
			 $('noRecords').style.display = '';
		}else{
			 $('noRecords').setStyle("display:none")
		}
		
		if ($('itemCount')){
			$('itemCount').innerHTML = itemCount;		
		}
		if ($('pageCount')){
			$('pageCount').innerHTML = pageCount;
		}
		if ($('pageCount2')){
			$('pageCount2').innerHTML = pageCount		
		}	
		updateNavigation(pageCount,currentPage,itemCount)		
	}
	
	//Event.observe('clicker', 'click', function(event){ alert(Event.element(event));}); 
	 //Event.observe(window, 'load', function() {Event.observe(document.getElementById('st45367'), 'click', function(event) {   var element = $(Event.element(event));   alert(element.id);});})	
	 
    /*===============   Used for Admin - Advertisement List  =================*/
    function getUpdatedCampaignDetails(CampID)
    {
    	document.getElementById("searchField").value = "CampID";
    	document.getElementById("searchCriteria").value = CampID;
    	document.searchBoxForm.submit();
    }

	function isInteger(sText)
	{
	   var ValidChars = "0123456789";
	   var isInteger=true;
	   var Char;
	
	 
	   for (i = 0; i < sText.length && isInteger == true; i++) 
	      { 
	      Char = sText.charAt(i); 
	      if (ValidChars.indexOf(Char) == -1) 
	         {
	         isInteger = 0;
	         }
	      }
	   return sText;
	   
	}
	
	
/*** SORTABLE TABLE Control*****/	
	
	//addEvent(window, "load", sortables_init);

Event.observe(window, 'load', function() {sortables_init();})	
	

var SORT_COLUMN_INDEX;
var TIMESTART;

var sorttemplate ='';
var sortlink='';
var sortarrow='';
var orderDirection1 = '';


function sortables_init() {
    // Find all tables with class sortable and make them sortable
    if (!document.getElementsByTagName) return;
    tbls = document.getElementsByTagName("table");
	var newNode = 	'<div id="ajxLoaderMsg" class="ajaxloader" style="display:none">Please be patience while we process your request.</div>'+
					'<div id="ajxLoader" class="ajaxloader" style="display:none"><img src="/js/ajax-loader-2.gif" title="Loading Records" alt="Loading Records"></div>'+
					'<div class="noRecords" id="noRecords" style="display:none">'+MessageStoreNoRecords+'</div>';

    for (ti=0;ti<tbls.length;ti++) {
        thisTbl = tbls[ti];
        if (((' '+thisTbl.className+' ').indexOf("sortTable") != -1) && (thisTbl.id)) {
            //initTable(thisTbl.id);
           // alert(thisTbl.id)
            ts_makeSortable(thisTbl.id);
    		$(thisTbl.id).insert({after:newNode})
    		//alert($('itemCount').innerHTML)
    		if($('itemCount') && $('itemCount').innerHTML=='0'){
    			$('noRecords').toggle();
    		}				            
        }
    }       
    
}	

function ts_makeSortable(table) {
    table = $(table)
    if (table.rows && table.rows.length > 0) {
        var firstRow = table.rows[0];
    }
    if (!firstRow) return;
    
    
    // We have a first row: assume it's the header, and make its contents clickable links
    for (var i=0;i<firstRow.cells.length;i++) {
    
    	sortlink = "";
    	sortarrow = "";	
		sorttemplate = '<table class="arrowTable">\n' + 
						'<thead>'+
						'<tr>' +
							'<th><!--sortlink--></th>' +
							'<th><!--sortarrow--></th>' +
						'</tr>' +
						'</thead>'+
					'</table>'
    	
        var cell = firstRow.cells[i];
        var orderBy1 = "'"+cell.id+"'"
         //alert(orderBy1)
        var txt = ts_getInnerText(cell);
		if (cell.id.length > 0 ){
               sortlink = '<a href="#" class="sortheader" title="Click to Sort"'+ 'onclick="ts_sortRecords(\''+table.id+'\', '+orderBy1+',\''+orderDirection1 + '\');return false;">' + txt+'</a>';		      			
               // alert(strHTML)
		}else{
				sortlink = txt;
		}
		//alert(orderField)
	    if (orderField == cell.id){
	   
        	if (orderDirection == "DESC"){
        		sortarrow +='<span class="sortarrow" sortdir="down" id ="sortarrow'+i+'"><img src="/js/sort-arrow-dwn.gif"></span>'
        	}else if(orderDirection == "ASC"){
        	 	sortarrow +='<span class="sortarrow" sortdir="up" id ="sortarrow'+i+'"><img src="/js/sort-arrow-up.gif"></span>'
        	}else{
        	 	sortarrow +='<span class="sortarrow" id ="sortarrow'+i+'"></span>'
        	}
       	}else{
        	sortarrow +='<span class="sortarrow" id ="sortarrow'+i+'"></span>'
        }
        
        sorttemplate = sorttemplate.replace('<!--sortlink-->',sortlink)
        sorttemplate = sorttemplate.replace('<!--sortarrow-->',sortarrow)
        cell.innerHTML = sorttemplate
       
    }
}
function ts_getInnerText(el) {
	if (typeof el == "string") return el;
	if (typeof el == "undefined") { return el };
	if (el.innerText) return el.innerText;	//Not needed but it is faster
	var str = "";
	
	var cs = el.childNodes;
	var l = cs.length;
	for (var i = 0; i < l; i++) {
		switch (cs[i].nodeType) {
			case 1: //ELEMENT_NODE
				str += ts_getInnerText(cs[i]);
				break;
			case 3:	//TEXT_NODE
				str += cs[i].nodeValue;
				break;
		}
	}
	return str;
}


function ts_sortRecords(inTable,clid,ss){

	if (!ajaxStarted) {
		//alert(orderField + ' = ' + clid)
		//alert(orderDirection)
		if (orderField == clid){
			if (orderDirection == "DESC"){
				orderDirection = "ASC"
			}else{
				orderDirection = "DESC"
			}
		
		}else{
			orderDirection = "DESC"
		}
		orderField = clid;
		
		$('orderField').value = clid	
		$('orderDirection').value = orderDirection
	
			ts_makeSortable(inTable)
	}
	
	ajaxCall();
}
	 
	 