/* Dynamic js content             */
/* ------------------------------ */
/* (C) 2009 by Webside Associates */
/* ------------------------------ */
  
/*
possible step :
upload
printers 
count
print_result
*/

var step = "upload";
var upload_unid = "";
var printer_unid = "";
var selected_printer = "";

//svar upload_unid = "2B1BA0696680E7F5C1257394005CC8C9";
//var printer_unid = "91A67D7E66A1B706C125739B00551976";

//var upload_unid = "BFC15484C71A6158C125739F004D314B"; // --> wait.gif
var printers = Array();
var printerDescriptions = Array();

function getUploadForm()
{
		 $("page_count").innerHTML = "";		 
		 $("print_result").innerHTML = "";		 
		 var url = 'temp_upload?OpenForm';
		 if (upload_unid != "")
		 		 url += "&upload_unid="+upload_unid;
		 $("upload_form").innerHTML = "Getting upload form ... please wait ...<img src='+waitimg+'>";
		 var myAjax = new Ajax.Request(
		 		 url,
		 		 {
		 		 method: 'get',
		 		 parameters: '',
		 		 onComplete: showUploadForm
		 		 }
		 );
		 function showUploadForm(requete)
		 {
		 		 $("upload_form").innerHTML = requete.responseText;
		 }
}



function getPrinters(school,campus)
{
		 printers = Array();
		 printerDescriptions = Array();
		 var url = 'GetPrinters?OpenAgent&school='+school+'*'+campus;
		 $("printer_list").innerHTML = "Getting printer list ... please wait ...<img src='"+waitimg+"'>";
		 var myAjax = new Ajax.Request(
		 		 url,
		 		 {
		 		 method: 'get',
		 		 parameters: '',
		 		 onComplete: showPrinters
		 		 }
		 );
		 function showPrinters(requete)
		 {
		 		 var items = requete.responseXML;
		 		 //on recup\u00E8re l'item message
		 		 // si on est dans firefox
		 		 if (items.firstChild.nextSibling == null)
		 		 		 html = items.getElementsByTagName('printer');
		 		 else
		 		 		 html = items.firstChild.nextSibling.getElementsByTagName('printer');
		 		 var content = "";
		 		 for (var i=0 ; i<html.length ; i++)
		 		 {
		 		 		 var unid = html[i].getElementsByTagName("unid")[0].firstChild.nodeValue;
		 		 		 var nodeName = html[i].getElementsByTagName("name")[0].firstChild.nodeValue;
		 		 		 var nodePrinterPath= html[i].getElementsByTagName("printerPath")[0].firstChild.nodeValue;
		 		 		 var description = html[i].getElementsByTagName("description")[0].firstChild.nodeValue;
		 		 		 var campus = html[i].getElementsByTagName("campus")[0].firstChild.nodeValue;
		 		 		 var cost = html[i].getElementsByTagName("cost")[0].firstChild.nodeValue;
		 		 		 if (description == "")
		 		 		 		 description = nodeName;
		 		 		 printers[i] = unid;
		 		 		 printerDescriptions[i] = description;
		 		 		 content += "<div class=\"printer\" id=\"printer"+i+"\"><a href=\"javascript:choosePrinter("+i+");\" class='printer'>"+campus+", "+description+" ("+cost+" credit/page)</a></div>";
		 		 }
		 		 $("printer_list").innerHTML = content;
		 }

}

function choosePrinter(i)
{		 
		 printer_unid = printers[i];
		 selected_printer = printerDescriptions[i];
		 var content = "<img src='"+printerimg+"'>&nbsp;";
		 $("selected_printer").innerHTML = content + "Selected printer : <b>" + selected_printer + "</b>";
		 
	document.getElementsByName('printer_name')[0].value=selected_printer;
	document.getElementsByName('printer_unid')[0].value=printers[i];
		if (upload_unid == "")
		 		 return;
		 step = "count";
		 showStep();
}


function print_now()
{
	document.forms[0].submit(); 
return 
		 var url = 'PrintDocument?OpenAgent';
		 var copies = document.getElementById("copies").value;
		 var upload_unid = document.getElementsByName("upload_unid")[0].value;
		 if  (copies == "") copies = "1";
		 var parametres = 'printer=' + printer_unid + "&upload_unid="+upload_unid+"&copies="+copies;
		 $("print_result").innerHTML = "printing document ... please wait ...<img src='"+ waitimg+"'>";

		 var myAjax = new Ajax.Request(
		 		 url,
		 		 {
		 		 method: 'post',
		 		 parameters: parametres,
		 		 onComplete: showPrintResult
		 		 }
		 );
		 function showPrintResult(request)
		 {
		 		 $("print_result").innerHTML = request.responseText;
		 		 $("page_count").innerHTML = "";
		 }
}

function showStep()
{
		 $("upload_file").style.display="block";
		 $("printer_chooser").style.display="block";
		 $("page_count").style.display="block";
		 $("print_result").style.display="block";
		 
		 switch (step)
		 {
		 		 case "upload":
		 		 		 $("upload_file").style.display="block";
		 		 		 getUploadForm();
		 		 		 break;
		 		 case "count":
		 		 		 $("page_count").style.display="block";
		 		 		 countPageNumber();
		 		 		 break;
		 		 case "printers":
		 		 		 $("printer_chooser").style.display="block"
		 		 		 //getPrinters();
		 		 		 break;
		 		 case "print_result":
		 		 		 $("print_result").style.display="block";
		 		 		 print_now();
		 		 		 break;
		 }
		 
}

function countPageNumber()
{
		 $("print_result").innerHTML = "";
		 var url = 'PageCount?OpenAgent';
		 var copies = document.getElementById("copies").value;
		 if  (copies == "") copies = "1";
		 var parametres = "upload_unid="+upload_unid+"&printer_unid="+printer_unid+"&copies="+copies;
		 
		 $("page_count").innerHTML = "verifying credit ... please wait ...<img src=\"/"+ webdbname +"/wait.gif?OpenImageResource\">";

		 var myAjax = new Ajax.Request(
		 		 url,
		 		 {
		 		 method: 'get',
		 		 parameters: parametres,
		 		 onComplete: affichePageCount
		 		 }
		 );
		 
		 function affichePageCount(requete)
		 {
		 		 var root = requete.responseXML;
		 		 if (root.firstChild.tagName == "page_count")
		 		 		 root = root.firstChild;
		 		 else
		 		 		 root = root.firstChild.nextSibling;		 		 		 
		 		 if(root.attributes.length > 0)
		 		 {
		 		 		 var content = "The following error occured : <b>"+root.firstChild.nextSibling.firstChild.nodeValue+"</b>";
		 		 		 //content += "<p><input type=\"button\" value=\"Back\" onclick=\"step='upload';showStep();\"></p>";
		 		 		 $("page_count").innerHTML = content ;
		 		 }
		 		 else
		 		 {
		 		 		 var pageCount = root.getElementsByTagName("page_number")[0].firstChild.nodeValue;
		 		 		 var pdfName = root.getElementsByTagName("filename")[0].firstChild.nodeValue;
		 		 		 //var credit = root.getElementsByTagName("credit")[0].getAttribute("webPrintCredit");
		 		 		 var credit = root.getElementsByTagName("credit")[0].getAttribute("amount");
		 		 		 var permitPrinting = "false"; //root.getElementsByTagName("credit")[0].getAttribute("permit");
		 		 		 var creditText = "";
		 		 		 if (credit == "100000")
		 		 		 {
		 		 		 		 creditText = "You have unlimited printing credit.";
		 		 		 		 permitPrinting = "true";
		 		 		 }
		 		 		 else
		 		 		 {
		 		 		 		 if (parseInt(credit) < parseInt(pageCount))
		 		 		 		 {
		 		 		 		 		 creditText = "Your printing credit is lower than the cost of PDF document.<br>";
		 		 		 		 		 creditText += "You could not print the document \"" + pdfName + "\"";
		 		 		 		 		 permitPrinting = "false";
		 		 		 		 }
		 		 		 		 else
		 		 		 		 {
		 		 		 		 		 creditText = "You have " + credit + " remaining printing credit(s)";
		 		 		 		 		 permitPrinting = "true";
		 		 		 		 }
		 		 		 }
		 		 		 
		 		 		 var content = "The document \""+pdfName+"\" cost "+pageCount+" credit(s) on this printer.<br>";
		 		 		 content += creditText + "<br>";
		 		 		 //content += "<br><input type=\"button\" onclick=\"step=\'printers\';showStep();\" value=\"back to printers list\">";
		 		 		 if (permitPrinting == "true")
		 		 		 {
		 		 		 		 content += "<br><span class=\"button\"><a href=\"#\" onclick=\"step=\'print_result\';showStep();\"><img border=\"0\" src=\"/"+webdbname+"/printer.png\"> Print now</a></span><br><br>";
		 		 		 }
		 		 		 $("page_count").innerHTML = content;
		 		 		 
		 		 }
		 }
}


function testUploadField(fld) 
{ 
        if (fld.value == "") 
        { 
                alert("Please select a file to upload first !"); 
                fld.focus(); 
                return false; 
        } 
        var filename = fld.value; 
        if (filename.substring(filename.length-4, filename.length).toUpperCase() != ".PDF") 
        { 
                alert("Only \".PDF\" files are allowed to upload. Please select a PDF file"); 
                fld.focus(); 
                return false; 
        } 

        return true; 
}

function startCallback() {
		 // make something useful before submit (onStart)
		 upload_unid = "";
		 for (var i=0 ; i<document.forms[0].elements.length ; i++)
		 {
		 		 if (document.forms[0].elements[i].type == "file")
		 		 {
		 		 		 if (!testUploadField(document.forms[0].elements[i]))
		 		 		 		 return false;
		 		 }
		 }
		 $("upload_wait").innerHTML = "uploading file ... please wait ...<img src=\"/"+ webdbname +"/wait.gif?OpenImageResource\">";
		 return true;
}

function completeCallback(response) {
		 $("upload_form").innerHTML = "";		 
		 if(response.length>=32 && response.length<=36)
		 {
		 		 $("upload_wait").innerHTML = "";
		 		 step = "printers";
		 		 upload_unid=response.substring(response.indexOf("#")+1, response.lastIndexOf("#"));
		 		 getUploadForm();
		 		 showStep();
		 		 if (printer_unid != "")
		 		 {
		 		 		 step = "count";
		 		 		 showStep();
		 		 }
		 }
		 else
		 		 $("upload_wait").innerHTML = "Problem during upload :<br>"+response;
}




