/**
 * @description [display, print, save, export, and email selected records]
 */

//creates a list of selected UIDs
function getSelectedUIDs(idUIDs,totalOnPage)	{		
	var lstSelectedUIDs = "";

	for(i=1; i <= totalOnPage; i++){
		targetName = "#" + idUIDs + i;
		
		target = jQuery(targetName);

		// if(jQuery('target:checked').val() !== null){
		if(jQuery(targetName).is(':checked')){
			
			targetValue = jQuery(target).attr("value");
			
			if(!lstSelectedUIDs.length){
				lstSelectedUIDs = targetValue;
				
			}else{
				lstSelectedUIDs = lstSelectedUIDs + "," + targetValue;
			}
		}
	}	
	
	return lstSelectedUIDs;
}

//gets variable data and submits form for display, print, save, export ... etc
function doActionTask(fa,idForm,idLstUIDs,idUIDs)	{		
	var totalOnPage = 0;
	var lstSelectedUIDs = "";
	
	//	var lstPageUIDs = document.getElementById(idLstUIDs).value;
	var lstPageUIDs = jQuery("#" + idLstUIDs).attr("value");

	//	var arrList = document.getElementById(idLstUIDs).value.split(',');
	var arrList = lstPageUIDs.split(',');

	var winWidth = 650;
	var winHeight = 300;
	
	//get display total on page
	totalOnPage = arrList.length;	
	
	//get the list of selected UIDs
	if(idUIDs.length){
	
		lstSelectedUIDs = getSelectedUIDs(idUIDs,totalOnPage);
		jQuery("#idLstSelectedUIDs").attr("value", lstSelectedUIDs);
	}
	
	//set form variables
	jQuery("#idFa").attr("value", fa);
	jQuery("#idLstPageUIDs").attr("value", lstPageUIDs);
		
	//if the next fuseaction is the myList page, then just make it refresh itself, rather than open a new window
	if (lstSelectedUIDs.length < 1){
		alert('Oops! There are no selections made. Please try again, selecting the desired records from your search results');
	}else{
		
		if(fa == "search.myList"){
			//	document.getElementById(idForm).target="_self";
			jQuery("#" + idForm).attr("target", "_self");

			//	document.getElementById(idForm).submit();	
			jQuery("#" + idForm).submit();
		}else{
			//if the request 'email' then lengthen the form a bit to accomidate the extra form elements
			if(fa.match("search.emailFormat")){
				winHeight = 500;
			}			
			window.open(fa,"pn3CitationManagementOptions","width="+winWidth+",height="+winHeight+",resizable=yes,scrollbars=yes,toolbar=yes");
		}		
	}
}

function exportSingle(uid)	{	
	var winWidth = 600;
	var winHeight = 300;
		
	//document.getElementById('idLstSelectedUIDs').value = document.getElementById(idSrhLstUIDs).value;
				
	window.open( '/index.cfm?fa=search.exportSingle&uid=' + uid,"","width="+winWidth+",height="+winHeight+",resizable=yes,scrollbars=yes,toolbar=yes");
}

//used for record display page
function doActionTaskSingle(fa,idSrhLstUIDs)	{	
	var winWidth = 650;
	var winHeight = 300;
	
	selectedUidsValue = jQuery("#" + idSrhLstUIDs).attr("value");
	jQuery("#idLstSelectedUIDs").attr("value", selectedUidsValue);
	
	//if the request 'email' then lengthen the form a bit to accomidate the extra form elements
	if(fa.match("search.emailFormat")){
		winHeight = 500;
	}			
	window.open(fa,"","width="+winWidth+",height="+winHeight+",resizable=yes,scrollbars=yes,toolbar=yes");
}

//creates Mid Function "borrowed from 4Guys from Rolla"
function Mid(str, start, len)
	/***
    IN: str - the string we are LEFTing
        start - our string's starting position (0 based!!)
        len - how many characters from start we want to get

    RETVAL: The substring from start to start+len
	***/
	{
        // Make sure start and len are within proper bounds
        if (start < 0 || len < 0) return "";

        var iEnd, iLen = String(str).length;
        if (start + len > iLen)
                iEnd = iLen;
        else
                iEnd = start + len;

        return String(str).substring(start,iEnd);
	}

function initDefaultFormValues(fa){
	var lstSelected = jQuery("#idLstSelectedUIDs").attr("value");
	var arrList = lstSelected.split(',');
	var plural = "";
	var total = 0;
	var fromRecordDisplay = window.opener.document.getElementById('idFromRecordDisplay').value;
	var psy = 0;
	var formIdent = "";
	
	for(i=0;i<arrList.length;i++){
		var testString = arrList[i];
		if(testString.charAt(4) == "-"){
			psy = psy + 1;
		}
	}

	// FORMAT VERBAIGE
	if(arrList.length > 1){
		plural = "s";
		total = arrList.length;
	}else if (arrList.length == 1 && lstSelected.length){
		total = 1;
	}else{
		total = "There are no";
		plural = "s";	
	}
	
	switch(location.search){
		case "?fa=search.displayFormat":
			formIdent = "displayed";
			if(fromRecordDisplay == 1){ 
				document.getElementById('cmSelectRecords').style.display = "none";	
			}else{
			if(document.getElementById('cmRecordsSelected')) 
				document.getElementById('cmRecordsSelected').innerHTML = total+" record(s) to be " +formIdent;
			}
			break;
		case "?fa=search.saveFormat":
			formIdent = "saved";
			if(fromRecordDisplay == 1){ 
				document.getElementById('cmSelectRecords').style.display = "none";	
			}else{
			if(document.getElementById('cmRecordsSelected')) 
				document.getElementById('cmRecordsSelected').innerHTML = total+" record(s) to be " +formIdent;
			}
			break;
		case "?fa=search.printFormat":
			formIdent = "printed";
			if(fromRecordDisplay == 1){ 
				document.getElementById('cmSelectRecords').style.display = "none";	
			}else{
			if(document.getElementById('cmRecordsSelected')) 
				document.getElementById('cmRecordsSelected').innerHTML = total+" record(s) to be " +formIdent;
			}
			break;
		case "?fa=search.emailFormat":
			formIdent = "emailed";
			if(fromRecordDisplay == 1){ 
				document.getElementById('cmSelectRecords').style.display = "none";	
			}else{
			if(document.getElementById('cmRecordsSelected')) 
				document.getElementById('cmRecordsSelected').innerHTML = total+" record(s) to be " +formIdent;
			}
			break;
		case "?fa=search.exportFormat":
			formIdent = "exported";
			if(fromRecordDisplay == 1){ 
				document.getElementById('cmSelectRecords').style.display = "none";	
			}else{
			if(document.getElementById('cmRecordsSelected')) 
				if(psy==0)
					{
						document.getElementById('idExportFormat').disabled="true";
						document.getElementById('btnGo').disabled="true";
						//document.idExportFormat.disabled="true";
 					}
				document.getElementById('cmRecordsSelected').innerHTML =  psy+" of "+total+" record(s) to be " +formIdent;
			}
			break;
		}
		
		
		
	//document.getElementById('idLstSelectedUIDs').value = lstSelected;
	//document.getElementById('idlstUIDs').value = window.opener.document.getElementById('idLstPageUIDs').value;
	
	if(arrList.length > 1){
		plural = "s";
		total = arrList.length;
	}else if (arrList.length == 1 && lstSelected.length){
		total = 1;
	}else{
		total = "There are no";
		plural = "s";	
	}
	
	
}

function showDisplayResults(action){
	
	window.opener.document.getElementById('idPageUIDs').value = document.getElementById('idlstUIDs').value;
	window.opener.document.getElementById('idDisplayFormat').value = document.getElementById('idDisplayFormat').value;
	window.opener.document.getElementById('frmActionTaskResponse').action = action;	
	window.opener.document.getElementById('idPrintDoc').value = 0;
			
	if(document.getElementById('idPrintNextPage').value == 1){
		window.opener.document.getElementById('idPrintDoc').value = 1;
	}else{
		window.opener.document.getElementById('idPrintDoc').value = 0;
	}

	// HACK : THE PURPOSE OF THIS IS TO FAKE THE NEXT PAGE INTO THINKING WE ACTUALLY CHOSE A RADIO BUTTON	
	window.opener.document.getElementById('idRecords').value = 'records';
	
	
	window.opener.document.getElementById('frmActionTaskResponse').submit();
	window.close();
}


function showExportResults(action){
	window.opener.document.getElementById('idSelectedUIDs').value = document.getElementById('idLstSelectedUIDs').value;
	window.opener.document.getElementById('idPageUIDs').value = document.getElementById('idlstUIDs').value;
	window.opener.document.getElementById('idExportFormat').value = document.getElementById('idExportFormat').value;
	window.opener.document.getElementById('frmActionTaskResponse').action = action;	
	
	if (document.getElementById('idRecsSelected').checked){
		window.opener.document.getElementById('idRecords').value = document.getElementById('idRecsSelected').value;
	}else{
		window.opener.document.getElementById('idRecords').value = document.getElementById('idRecsOnPage').value;
	}		
	
	window.opener.document.getElementById('frmActionTaskResponse').submit();
	window.close();
}

function setToPrint(){
	printNextPageValue = jQuery("#idPrintNextPage").attr("value");
	if(printNextPageValue == 1){
		//	window.opener.document.getElementById('idPrintDoc').value = 1;
		jQuery("#idPrintDoc", window.opener.document).attr("value", 1);
	}else{
		//	window.opener.document.getElementById('idPrintDoc').value = 0;
		jQuery("#idPrintDoc", window.opener.document).attr("value", 0);
	}
}

function validateEmail(strEmail) {
	var objRegExp = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
  	
  	//check for valid email
  	return objRegExp.test(strEmail);
}

/*
TODO: delete this unused function
function checkEmail(idEmail,idWarning) {

	emailIsValid = validateEmail(document.getElementById(idEmail).value);
	warningHtml = ""Please enter a valid email address";

	if(emailIsValid){	
		return true;
	}else{
		jQuery("#" + idWarning).html(warningHtml);
		return false;
	}	
}
*/
function validateEmailForm() {
	var to = jQuery("#to").attr("value");
	var arrToEmails = to.split(";");
	var from = jQuery("#from").attr("value");
	var subject = jQuery("#subject").attr("value");
	var warningHtml = "";
	
	if(arrToEmails.length == 0){
		warningHtml = "Please enter valid email address(es); <br />  separate multiple addresses with semicolons";
		jQuery("#idWarning").html(warningHtml);
		return false;
	}
	
	for (i=0; i<arrToEmails.length;i++){
		if(!validateEmail(jQuery.trim(arrToEmails[i]))){
			warningHtml = "Please enter valid email address(es); <br />  separate multiple addresses with semicolons";
			jQuery("#idWarning").html(warningHtml);
			return false;
		}
	}
	
	if(!validateEmail(jQuery.trim(from))){
		warningHtml = "Please enter a valid 'From' email address";
		jQuery("#idWarning").html(warningHtml);
		return false;
	}
	
	if(jQuery.trim(subject) == ""){
		document.getElementById("idWarning").innerHTML = "Please enter a Subject";
		warningHtml = "Please enter a Subject";
		jQuery("#idWarning").html(warningHtml);
		return false;
	}
	
	return true;
}
