var cartID;
var cartSz;
var remJobUnid;
var srchCrit;
var savDocID="";

function makeCart() {
   //Look for CartID in cookie first
   var cookies=document.cookie;
   cartID = getcartid("cartid", cookies, ";");
   //alert( "Cur ID: " + cartID );
   //If cookies aren't enabled, first determine if customer is coming from an external site.  
   if (cartID==null) {
      if (document.referrer.substring (0, 30).toLowerCase() != "http://World") {
         cartID=randomnum();
                      //alert( cartID );
         SetCookie( 'cartid', cartID, 30);
        }
      else {
         var URLcartid = new String(document.URL);
         cartID=getcartid("cartid", URLcartid, "&");
        }
    }
    //Append CartID to all links on the current page, regardless of whether cookies are enabled or not   
    setlinks(cartID);
    updateCartSizeDisp();
 }

function updateCartSizeDisp() {
	cartSz = readCookie( "cartSize" );
	if (cartSz == null) cartSz = "0";
    var cartStatus = document.getElementById( "cartStatus" );
    if (cartSz=="0") {
    	cartStatus.innerHTML = "Empty"
    } else {
    	cartStatus.innerHTML = ((cartSz=="1")? "One job": cartSz + " jobs") + " in basket"
    }
}
function randomnum() {
      var TodaysDate=new Date();
      var rn = Math.floor(16000*Math.random()+1)+"-"+TodaysDate.getHours()+TodaysDate.getMinutes()+TodaysDate.getSeconds(); 
      return rn;
 }
 
function LCase(str) {  // Convert string to lower case
  return(str.toLowerCase());
}

function InStr(strHaystack, strNeedle) {  
  return(strHaystack.indexOf(strNeedle));
}

function setlinks(v) {
       for (var i = 0; i < document.links.length; i++) {
              //Use the search property of the link object to append the CartID
      		var theStr = LCase( document.links[i].href )
      	//	alert( theStr )
      		if (InStr( theStr, "cart?" ) != -1) {
              			document.links[i].search=document.links[i].search + "&CartID=" +v 
              			//alert( document.links[i].search )
         		}
	}
}  

function getcartid(name, inputstring, trunc) {
        //Simply parses out CartID from either the cookie or URL passed to function
        inputstring = inputstring + trunc;
        inputstring = inputstring.toLowerCase();
        var start=inputstring.indexOf(name + "=");
        if (start>-1) {
             start=inputstring.indexOf("=", start)+1
           }
        var end = inputstring.indexOf(trunc, start);
        if (start==-1 || end==-1) {
              value=null
           } 
        else {
              var value=unescape(inputstring.substring(start,end))
           }
        return value;
 }

function SetCookie(cookieName,cookieValue,nDays) {
	var today = new Date();
	var expire = new Date();
	if (nDays==null || nDays==0) nDays=1;
	expire.setTime(today.getTime() + 3600000*24*nDays);
	document.cookie = cookieName+"="+escape(cookieValue)+ ";expires="+expire.toGMTString() + ";path=/";
}

function addSelected() {
	var docMoves="";
	var obj = document.getElementsByName("jobApp");
	var totSelected = 0;
	for (var i=0;i<obj.length;i++) {
		if (obj[i].checked) {
			docMoves = docMoves + obj[i].value + "|";
			++totSelected;
		}
	}
		
	if (docMoves=="") 
		dispBasketMsg( "No Jobs selected", true );
	else
		addSelectedToBasket(docMoves, totSelected);
}

function addSelectedToBasket(docMoves, totSelected){
	frm = window.document.forms[0];
	if (ajax == null) ajax = new Ajax();
	ajax.async = true;
	var rand = "&randkey=" + Math.random();
	dbpath = dbpath.toLowerCase();
	dbpath = dbpath.replace("uib.nsf","jpo.nsf");
	var url = "/" + dbpath + '/($basketAdd.xml)?OpenAgent&unid=' + docMoves + rand ;
	ajax.setMimeType('text/xml');
	ajax.doGet( url, postaddSelectedToBasket, "xml");
}

var postaddSelectedToBasket = function( xml) {
	var res = XMLParse.xml2ObjArray(xml, 'xml');
	if (res[0].status.code == "OK") {
		if (res[0].added == "0") {
			msg = "No new jobs added to the basket as all selected jobs were already in it.\n";
		} else {
			msg = res[0].added + " new job" + ((res[0].added > "1")?"s":"") + " added to your jobs basket";
			msg += ((res[0].notAdded > "0") ? " but " + res[0].notAdded + " job" + ((res[0].notAdded > "1")?"s were":"") + " already in it" : "");
			msg += ".\n";
		}
		if (res[0].cartSize == "0") msg += "No jobs in your basket."
		if (res[0].cartSize == "1") msg += "One job in your basket awaits submittal."
		if (res[0].cartSize > "1") msg += res[0].cartSize + " jobs in your jobs basket are awaiting submittal.";
		SetCookie( 'cartSize', res[0].cartSize, 30);
		updateCartSizeDisp();
		//alert( msg );
		dispBasketMsg( msg, false );
	} else 
		dispBasketMsg( msg, true );
		//alert( res[0].status.msg );
}
function dispBasketMsg( msg, isError ) {
	var cartMsg = document.getElementById( "basket-msgs" );
	fadeIn( "basket-msgs", msg)
}

function submitBasket( dbPath ){
	cartID = readCookie( "cartid" );
	window.location = dbPath + "/order?openForm&cartid=" + cartID + "&login" ;
}

function basketRem( dbPath, unid) {
	remJobUnid = unid;  //we'll need it later
	cartID = readCookie( "cartid" );
	frm = window.document.forms[0];
	if (ajax == null) ajax = new Ajax();
	ajax.async = true;
	var rand = "&randkey=" + Math.random();
	var url = dbPath + '/($basketDel.xml)?OpenAgent&unid=' + unid + "&cart=" + cartID + rand ;
	ajax.setMimeType('text/xml');
	ajax.doGet( url, handleBasketJobDel, "xml");
}

var handleBasketJobDel = function( xml) {
	var res = XMLParse.xml2ObjArray(xml, 'xml');
	var tmpItem;
	if (res[0].status.code == "OK") {
		SetCookie( 'cartSize', res[0].cartSize, 30);
		//now hide the job
		var jobRow = document.getElementById( remJobUnid );
		jobRow.style.display = "none";
		if (res[0].cartSize=="0") {
			tmpItem = document.getElementById( "emptyBasketNotice" );
			tmpItem.style.display = "block";
			
			tmpItem = document.getElementById( "basket-functions" );
			tmpItem.style.display = "none";
		}
	} else
		alert( res[0].msg );
}
function jobCacheNav(totJobs, itemsPP, pBreak) {
	if (pBreak==null) pBreak = 20;
	totPages = Math.ceil( totJobs / parseInt(itemsPP));
	pagePref = '<td class="pageNavPref">';
	pagePost = '</td><td style="width:4px"></td>';
	var links = '<table align="center" style="border:0px;text-align: center;"><tr><td>' + pagePost;
	var pageBreak=0;
	
	var thePath = location.pathname;
	if (thePath.indexOf("!") > -1) thePath = strLeft(thePath, "!");	
			
	for (p=1;p<=totPages;p++) {
		links += pagePref;
		links += "<a href='javascript:dispJobPage(" + p + "," + itemsPP + ")'> " + p + " </a>";

		links += pagePost;
		pageBreak++;
		if (pageBreak > pBreak) {
			pageBreak = 0;
			links += '</tr><tr><td>' + pagePost;
		}
	}
	links += "</tr></table>"
	outp = ""
	outp += '<table><tr><td width=140>' 
	outp += '<b>Pages: </b>'
	outp += '</td><td class="totCount">'
	outp += links
	outp += '</td><td width=140 style="text-align:right">'
	outp += '</td></tr></table>'
	return outp
}
function dispJobPage( pageNo, itemsPP ) {
	//alert( viewName );
	setCookie( "categ_page_" + viewName, pageNo, 1);
	var ja = new Array();
	var idList="";
	jobList = otherJobsIDs.innerHTML;
	ja = jobList.split("|");
	
	if (dispArea.innerHTML == "") dispArea.innerHTML = "Reading database. Please wait..."
	var rangeFrom = (pageNo -1 ) * itemsPP;
	var rangeTo = rangeFrom + itemsPP;
	if (rangeTo > ja.length) rangeTo = ja.length;
	for (var i = rangeFrom; i<rangeTo; i++) idList += ja[i] + ",";
	ajax.async = true;
	var url = "/" + dbpath + "/$jobPage.xml?openAgent&idlist=" + idList + "&start=" + rangeFrom;	
	ajax.setMimeType('text/xml');
	ajax.doGet( url, displayJobPage, "xml");
}

var displayJobPage = function(xml) {
	var res = XMLParse.xml2ObjArray(xml, 'xml');
	if (res[0].status == "OK") {
		dispArea.innerHTML = res[0].joblist;
	} else
		alert( res[0].msg );
}

function jobCacheNavSearch(totJobs, itemsPP, pBreak) {
	//if (itemsPP=="") itemsPP = "20";
	if (pBreak==null) pBreak = 20;
	totPages = Math.ceil( totJobs / parseInt(itemsPP));
	pagePref = '<td class="pageNavPref">';
	pagePost = '</td><td style="width:4px"></td>';
	var links = '<table align="center" style="border:0px;text-align: center;"><tr><td>' + pagePost;
	var pageBreak=0;
	
	var thePath = location.pathname;
	if (thePath.indexOf("!") > -1) thePath = strLeft(thePath, "!");	
			
	for (p=1;p<=totPages;p++) {
		links += pagePref;
		links += "<a href='javascript:dispJobPageSrch(" + p + "," + totPages + ")'> " + p + " </a>";

		links += pagePost;
		pageBreak++;
		if (pageBreak > pBreak) {
			pageBreak = 0;
			links += '</tr><tr><td>' + pagePost;
		}
	}
	links += "</tr></table>"
	outp = ""
	outp += '<table><tr><td width=140>' 
	outp += '<b>Pages: </b>'
	outp += '</td><td class="totCount">'
	outp += links
	outp += '</td><td width=140 style="text-align:right">'
	outp += '</td></tr></table>'
	return outp;
}
function dispJobPageSrch( p, totPages ) {
	for (i = 1;i<=totPages;i++) {
		var divSrch = "jobPage-" + i;
		try {
			var divItem = document.getElementById( divSrch );
			divItem.style.display = (i==p)?"block":"none";
		}
		catch (e){}
		storage.LastSearchPage = p + ""; //we expect this to be string
	}
}

var handleSaveSearch = function(xml) {
	var res = XMLParse.xml2ObjArray(xml, 'xml');
	if (res[0].status.code == "OK") {
		savDocID = res[0].docID;
		if (res[0].inremented == "Y") {
			var curSavesObj = document.getElementById( "curSaves" );
		    curSaves = parseInt(curSavesObj.innerHTML);
		    curSavesObj.innerHTML = curSaves + 1;
		}
		var saveSearchLblObj = document.getElementById( "saveSearchLbl" );
		saveSearchLblObj.innerHTML = "Update saved search";
	}
	fadeIn( "save-msgs", res[0].status.msg)
	
}

function saveSearch( dbPath, username ){
	if (username.toLowerCase() == "anonymous"){
		alert("Please login before you attemp to save a search criteria");
	} else {
		var totSearchesObj = document.getElementById( "tot-searches" );
	    totSearches = parseInt(totSearchesObj.innerHTML);
	    
	    var answer = true;
		if (savDocID == "" && totSearches > 4) answer = confirm("You are about to save a New Search and Remove an old one.");

		if (answer) {
			frm = window.document.forms[0];
			formData = formData2QueryString(frm, "","");
			if (ajax == null) ajax = new Ajax();
			ajax.async = true;
			//if (savDocID !="") alert( savDocID );
			var rand = "&__randkey=" + Math.random();
			var url = "/" + dbpath + '/($saveSearch.xml)?OpenAgent' + rand + "&user=" + username + "&" + formData + "&__savID=" + savDocID;
			ajax.setMimeType('text/xml');
			ajax.doGet( url, handleSaveSearch, "xml");
		} else
			fadeIn( "save-msgs", "Search was Not saved");
			//dispBasketMsg( "Search was Not saved"  , false );
	}
}
