/**
All the functions pertaining to Prepare marklist for printing would be placed here.
This seems to be sort of bit complicated. The naming convetions of the tabs, records would make it more understanding
All wordcount element names would have a suffix "WC".
All page count element names would have a suffix "PG"
*/

/**
*	Create set of variables, arrays to hold all the contents related to MarkList in the Javascript variables.
*
**/

var citationWordCountArray =  new Array();
var fullTextWordCountArray = new Array();
var tabArray = new Array();
var INVALID_PAGE_RANGE = "Invalid Page Range.";
var childWindowName = "galeChildWindow";
var NO_OF_WORDS_PER_PAGE = 1200;
var calculateForAll = 'N';

function getPrintFormObj() {
	var formObj = getDynamicSearchFormObj();
	if(formObj == null) {
		formObj = document.resultsForm;
	}
	if(formObj == null) {
		formObj = document.forms[0];
	}
	return formObj;
}

function markSelectedItem(chkBox)	{
	updatePageCount();
}

function checkAll(tabId) {
	var numberOfRecords = getReturnedObj(tabId+"_REC_COUNT").value;

	for(i=0; i<numberOfRecords; i++) {
		if(getReturnedObj(tabId+"_bucket").checked) {
			getReturnedObj(tabId+"_"+i+"_REC").checked = true;
		} else {
			getReturnedObj(tabId+"_"+i+"_REC").checked = false;
		}
	}
	updateTabWordCount(getReturnedObj(tabId+"_"+0+"_REC"));
}

/** Updates the page count at the global level for the entire page, for both citation & full text. */
function updatePageCount()	 {
		getReturnedObj("totalCitationEstPages").innerHTML = 5;
		getReturnedObj("totalFullTextEstPages").innerHTML = 5;
}

function isValidPageRange(idPrefix) {
	var endId = idPrefix+"_end";
	var startId = idPrefix+"_start";
	var startObj = getReturnedObj(startId);
	if(startObj != null) {
		var endObj = getReturnedObj(endId);
		if(isNaN(startObj.value) || isNaN(endObj.value) ||
						(parseInt(startObj.value) > parseInt(endObj.value))) {
			alert(INVALID_PAGE_RANGE);
			startObj.focus();
			return false;
		}
	}
	return true;
}

function isValidPageNumber(obj, totalPagesObj) {
	if(totalPagesObj != null) {
		if(parseInt(obj.value) > parseInt(totalPagesObj.value)) {
			alert(INVALID_PAGE_RANGE + " Pages Available: " + totalPagesObj.value);
			obj.focus();
			return false;
		}
	}
	return true;
}

function validatePageRange(idPrefix) {
	if(!isValidPageRange(idPrefix)) {
		return false;
	}
	var endId = idPrefix+"_end";
	var startId = idPrefix+"_start";
	var startObj = getReturnedObj(startId);
	var endObj = getReturnedObj(endId);
	var totalPagesId = idPrefix+"_TotalPages";
	var totalPagesObj = getReturnedObj(totalPagesId);
	if(!isValidPageNumber(startObj, totalPagesObj) ||
				!isValidPageNumber(endObj, totalPagesObj)) {
		return false;
	}
	return true;
}

function updateWordCount(obj, idPrefix) {
	if(!validatePageRange(idPrefix)) {
		return;
	}
	var checkBoxId = idPrefix+"_REC";
	updateTabWordCount(getReturnedObj(checkBoxId));
}

function calculateWordCount(checkBox) {
	    var isAllchecked=true;
		var numberOfRecords = getReturnedObj(checkBox.value+"_REC_COUNT").value;
	var totalTabWordCount = 0;
	for(i=0; i< numberOfRecords; i++) {
		if(getReturnedObj(checkBox.value+"_"+i+"_REC").checked) {
			var isSingleRecord = getReturnedObj(checkBox.value+"_"+i+"_SP").value;
			if(getReturnedObj("printOptions").checked || calculateForAll == 'C') {
				printOptions = "citation";
			} else {
				printOptions = "fulltext";
			}
			if(isSingleRecord == 0) {
				//For Single Page Record
				if(printOptions == "citation" || calculateForAll == 'C') {
					totalTabWordCount += parseInt(getReturnedObj(checkBox.value+"_"+i+"_CT_WC").value);
				} else {
					totalTabWordCount += parseInt(getReturnedObj(checkBox.value+"_"+i+"_FT_WC").value);
				}
			} else {
				//For Non-Single Page Record
				if(printOptions == "citation" || calculateForAll == 'C') {
						totalTabWordCount += parseInt(getReturnedObj(checkBox.value+"_"+i+"_CT_WC").value);
				} else {
						var startValue = getReturnedObj(checkBox.value+"_"+i+"_start").value;
						var endValue = getReturnedObj(checkBox.value+"_"+i+"_end").value
						totalTabWordCount += (eval(endValue - startValue)+1) * NO_OF_WORDS_PER_PAGE;
				}
			}
		} else {
			isAllchecked=false;

		}
	}

	getReturnedObj(checkBox.value+'_bucket').checked=isAllchecked;

	return totalTabWordCount;

}

/**
 *	Updates the page count at tab level
 */
function updateTabWordCount(checkBox) {
	var totalTabWordCount = calculateWordCount(checkBox);
	getReturnedObj(checkBox.value+"_WC").value = totalTabWordCount;
	var pageCount = eval(totalTabWordCount/NO_OF_WORDS_PER_PAGE);
	if(pageCount > 0) {
		pageCount++;
	}
	if(getReturnedObj(checkBox.value+"_PG") != null) {
		getReturnedObj(checkBox.value+"_PG").innerHTML = parseInt(pageCount);
	}
	updateGrandTotal();

}

function updateGrandTotal() {
	var netTotalPages1 = 0;
	var netTotalPages2 = 0;
	var netTotal1 = 0;
	var netTotal2 = 0;

	for(k=0; k < tabArray.length; k++) {
		var totalRecord = getReturnedObj(tabArray[k]+'_REC_COUNT').value;
		for(var j=0; j < totalRecord; j++) {
			if(getReturnedObj(tabArray[k]+"_"+j+"_REC").checked){
				netTotal1 = eval(netTotal1 +eval(getReturnedObj(tabArray[k]+"_"+j+"_FT_WC").value));
				netTotal2 = eval(netTotal2 +eval(getReturnedObj(tabArray[k]+"_"+j+"_CT_WC").value));
			}
		}
	}

	netTotalPages1 = Math.ceil(eval(netTotal1/NO_OF_WORDS_PER_PAGE));
	netTotalPages2 = Math.ceil(eval(netTotal2/NO_OF_WORDS_PER_PAGE));

	if(getReturnedObj("printOptions").checked || calculateForAll == 'C') {

		if(getReturnedObj("totalCitationEstPages") != null) {
			getReturnedObj("totalFullTextEstPages").innerHTML = netTotalPages1
			getReturnedObj("totalCitationEstPages").innerHTML = netTotalPages2;
			getReturnedObj("totwordCount").value=eval(netTotal2);
		}
	} else {
		if(getReturnedObj("totalFullTextEstPages") != null) {
			getReturnedObj("totalFullTextEstPages").innerHTML = netTotalPages1;
			getReturnedObj("totalCitationEstPages").innerHTML = netTotalPages2;
			getReturnedObj("totwordCount").value=eval(netTotal1);
		}
	}
}


// Function to recalculate the Total Estimated Pages
function reCalculate(printOptions) {
	updateGrandTotal();
	for(var k=0;  k< tabArray.length; k++) {
		updateTabWordCount(getReturnedObj(tabArray[k]+"_"+0+"_REC"));
	}
}

function CalculateForAllOptions() {
	calculateForAll = 'C';
	reCalculate('citation');
	calculateForAll = 'F';
	reCalculate('fulltext');
	calculateForAll = 'N';
}

function getDocLevel() {

	var docLevel = getPrintFormObj().printOptions[1].value;

	if(getPrintFormObj().printOptions[0].checked) {
		docLevel = getPrintFormObj().printOptions[0].value;
	}
	return docLevel;

}

// Function to generatePrintUrl
function generatePrintUrl(printUrl, printAll) {
	var valid = true;
	if(getCurrentCount() <= 0){
		alert(NO_RECORDS_TO_PRINT_MSG);
		return;
	}
	var prnUrl = "&docLevel="+getDocLevel()+"&printInfo=";
	var recUrl = "";
	for(var k=0; k < tabArray.length; k++) {
		recUrl = "";
		var totalRecord = getReturnedObj(tabArray[k]+'_REC_COUNT').value;
		for(var j=0; j < totalRecord; j++) {
	    	if(!printAll) {
        		if(!getReturnedObj(tabArray[k]+"_"+j+"_REC").checked) {
        			continue;
        		}
        	}
        	if(!validatePageRange(tabArray[k]+"_"+j)) {
        		valid = false;
				return;
			}
    		var isMultiPage = getReturnedObj(tabArray[k]+"_"+j+"_SP").value;
			var start="0";
			var end="0";
			if(isMultiPage == 1) {
				start = getReturnedObj(tabArray[k]+"_"+j+"_start").value;
				end = Math.ceil(getReturnedObj(tabArray[k]+"_"+j+"_end").value);
			} else {
				// Check for citation / fulltext
				var wordCount = 0;
				if(getReturnedObj("printOptions").checked) {
					// Citation

					wordCount = getReturnedObj(tabArray[k]+"_"+j+"_CT_WC").value;
				} else {
					// Full text
					wordCount = getReturnedObj(tabArray[k]+"_"+j+"_FT_WC").value;
				}
            	var pgCount = eval(wordCount/NO_OF_WORDS_PER_PAGE);
            	if(pgCount > 0) {
            		pgCount++;
            	}
            	/*start = 1;
            	end = Math.ceil(pgCount);*/
			}

				recUrl += tabArray[k]+"_"+getReturnedObj(tabArray[k]+"_"+j+"_docId").value+"_"+
    				  start+"_"+end+"^";

        }
        prnUrl += recUrl;
	}
	if(valid) {
		window.open(printUrl+prnUrl , "galeChildWindow", "toolbar=no, directories=no, status=no, location=no, resizable=yes, menubar=no, scrollbars=yes,screenX=50,screenY=50,top=50,left=50,width=750,height=550");
	}
}

// Returns the current count of number of Items marked in the particular page.
function getCurrentCount()	{
	var ml = getPrintFormObj();
	var len = ml.elements.length;
	var e;
	var curCnt = 0;
    // Check for total number of Marked & capture the status of each marked Checkboxes.
	// If it exceeds the predefined count then it break.
	for (var i = 0; i < len; i++) {
			e = ml.elements[i];
			if (e.name == "markList") {
				if (e.checked ==true) {
					curCnt += 1;
				 }
			}
	}
	return curCnt;
}



function printDocument() {
		var printURL = preparePrintURL(); 	
	 	window.open('printdoc.do?'+printURL,'galeChildWindow',"toolbar=no, directories=no, status=no, location=no, resizable=yes, menubar=yes, scrollbars=yes,screenX=50,screenY=50,top=50,left=50,width=750,height=550");
}
function printTranslatedDocument() {
		var printURL = preparePrintURL(); 	
		if(this.getPrintFormObj().transLang != null) {
			printURL += "&transLang="+this.getPrintFormObj().transLang.value;
		}
	 	window.open('printdoc.do?'+printURL,'galeChildWindow',"toolbar=no, directories=no, status=no, location=no, resizable=yes, menubar=yes, scrollbars=yes,screenX=50,screenY=50,top=50,left=50,width=750,height=550");
}
	
function preparePrintURL() {
	var curPos = this.getPrintFormObj().currentPosition.value;
	 if(curPos == ""){
	 	curPos = 1;
	 }
	 var hrefURL = "&prodId="+this.getPrintFormObj().prodId.value;
	 hrefURL += "&userGroupName="+this.getPrintFormObj().userGroupName.value;
	 hrefURL += "&docId="+this.getPrintFormObj().docId.value;
	 hrefURL += "&tabID="+this.getPrintFormObj().tabID.value;
 	 hrefURL += "&queryId="+this.getPrintFormObj().queryId.value;
	 hrefURL += "&currentPosition=" + curPos;
	 hrefURL += "&sort="+this.getPrintFormObj().sort.value;
	 hrefURL += "&resultListType="+this.getPrintFormObj().resultListType.value;
	 hrefURL += "&docType="+this.getPrintFormObj().docType.value;
	 hrefURL += "&searchId="+this.getPrintFormObj().searchId.value;
	 hrefURL += "&relatedDocId="+this.getPrintFormObj().relatedDocId.value;
	 hrefURL += "&isIllustration="+this.getPrintFormObj().isIllustration.value;
	 hrefURL += "&noOfPages="+this.getPrintFormObj().noOfPages.value;
	 


	if(this.getPrintFormObj().retrieveFormat != null) {
		hrefURL += "&retrieveFormat="+this.getPrintFormObj().retrieveFormat.value;
	}
	if(this.getPrintFormObj().scale != null) {
	    hrefURL +="&scale="+this.getPrintFormObj().scale.value;
	 }
	 if(this.getPrintFormObj().orientation != null) {
	    hrefURL +="&orientation="+this.getPrintFormObj().orientation.value;
	 }
	 if(this.getPrintFormObj().pageIndex != null) {
        hrefURL +="&pageIndex="+this.getPrintFormObj().pageIndex.value;
     }
	 if(this.getPrintFormObj().contentSet != null) {
	 	hrefURL += "&contentSet="+this.getPrintFormObj().contentSet.value;
	 }
	 if(this.getPrintFormObj().docLevel != null) {
	 	hrefURL += "&docLevel="+this.getPrintFormObj().docLevel.value;
	 }
	 return hrefURL; 
}	


function printMultipageDocument() {
	 var curPos = this.getPrintFormObj().currentPosition.value;
	 if(curPos == ""){
	 	curPos = 1;
	 }
	 var hrefURL = "&prodId="+this.getPrintFormObj().prodId.value;
	 hrefURL += "&userGroupName="+this.getPrintFormObj().userGroupName.value;
	 hrefURL += "&docId="+this.getPrintFormObj().docId.value;
	 hrefURL += "&tabID="+this.getPrintFormObj().tabID.value;
 	 hrefURL += "&queryId="+this.getPrintFormObj().queryId.value;
 	 hrefURL += "&currentPosition=" + curPos;
	 hrefURL += "&sort="+this.getPrintFormObj().sort.value;
	 hrefURL += "&resultListType="+this.getPrintFormObj().resultListType.value;
	 hrefURL += "&docType="+this.getPrintFormObj().docType.value;
	 hrefURL += "&searchId="+this.getPrintFormObj().searchId.value;
	 hrefURL += "&relatedDocId="+this.getPrintFormObj().relatedDocId.value;
	 hrefURL += "&isIllustration="+this.getPrintFormObj().isIllustration.value;
	 hrefURL += "&noOfPages="+this.getPrintFormObj().noOfPages.value;

	 if(this.getPrintFormObj().qrySerId !=null){
		 hrefURL += "&qrySerId="+this.getPrintFormObj().qrySerId.value;
	 }
	 if(this.getPrintFormObj().isETOC != null) {
		 hrefURL += "&isETOC="+this.getPrintFormObj().isETOC.value;
	 }
	 if(this.getPrintFormObj().retrieveFormat != null) {
		hrefURL += "&retrieveFormat="+this.getPrintFormObj().retrieveFormat.value;
	 }
	 if(this.getPrintFormObj().aCmnd != null) {
		hrefURL += "&aCmnd="+this.getPrintFormObj().aCmnd.value;
	 }
	 if(this.getPrintFormObj().scale != null) {
	    hrefURL +="&scale="+this.getPrintFormObj().scale.value;
	 }
	 if(this.getPrintFormObj().orientation != null) {
	    hrefURL +="&orientation="+this.getPrintFormObj().orientation.value;
	 }
	 if(this.getPrintFormObj().pageIndex != null) {
        hrefURL +="&pageIndex="+this.getPrintFormObj().pageIndex.value;
     }
	 if(this.getPrintFormObj().contentSet != null) {
	 	hrefURL += "&contentSet="+this.getPrintFormObj().contentSet.value;
	 }
	 if(this.getPrintFormObj().docLevel != null) {
	 	hrefURL += "&docLevel="+this.getPrintFormObj().docLevel.value;
	 }
	 if(this.getPrintFormObj().sceneIp != null) {
		hrefURL += "&sceneIp="+this.getPrintFormObj().sceneIp.value;
	 }
	 if(this.getPrintFormObj().firstRelScene != null) {
		hrefURL += "&firstRelScene="+this.getPrintFormObj().firstRelScene.value;
	 }
	 if(this.getPrintFormObj().workId != null) {
		hrefURL += "&workId="+this.getPrintFormObj().workId.value;
	 }
	 if(this.getPrintFormObj().reformatPage != null) {
		hrefURL += "&reformatPage="+this.getPrintFormObj().reformatPage.value;
	 }
    if(this.getPrintFormObj().ID != null) {
		hrefURL += "&ID="+this.getPrintFormObj().ID.value;
	}
	if(this.getPrintFormObj().pdfLowerLimit != null){
	 	hrefURL += "&pdfLowerLimit="+this.getPrintFormObj().pdfLowerLimit.value;
	}
	if(this.getPrintFormObj().pdfHigherLimit != null){
	 	hrefURL += "&pdfHigherLimit="+this.getPrintFormObj().pdfHigherLimit.value;
	}
	if(this.getPrintFormObj().docPDB != null){
	 	hrefURL += "&docPDB="+this.getPrintFormObj().docPDB.value;
	}
	window.open('printdoc.do?'+hrefURL,'galeChildWindow',"toolbar=no, directories=no, status=no, location=no, resizable=yes, menubar=yes, scrollbars=yes,screenX=50,screenY=50,top=50,left=50,width=750,height=550");
}


