/*
Carmil 1
(c) 2006-2008
polls_list.js
*/

function PageListPolls ()
{
this.mydebugger= new DebugHelper("PageListPolls");
this.strtbl= new StringTable (getDocs() + "/polls/xml/strtbl_en.xml", "polls_list", null);
this.xmldoc= null;
this.stylesheetdoc= null;
this.idNodeTarget= null;
this.filter= "";
this.lang= "";

this.setLang = function (lang)
{
this.lang= nssy.getPreferredLang(lang);
this.strtbl= new StringTable (getDocs() + "/polls/xml/strtbl_en.xml", "polls_list", this.lang);
}

this.setBusy = function(isBusy)
{
document.body.style.cursor= (isBusy ? "wait" : "auto");
showHtmlElement("idSyPleaseWait", isBusy);
};

this.showQuestionnaireItem = function (
idPoll,
status,
population,
whoResultsOpen,
whoResultsClosed,
authorid,
idLinkResults,
idLinkEdit,
idLinkEditErrata,
idImgResults
)
{
var who= "none";
if ((status == "open") || (status == "closed"))
{
who= whoResultsOpen;
}
else if ((status == "concluded") || (status == "archived"))
{
who= whoResultsClosed;
}

var curuser= new CurrentUser();

var isSingedIn= curuser.isSignedIn();
var uid= curuser.getUid();
var isVoted= isVoteCookie(idPoll, "anonymous") || (isSingedIn && isVoteCookie(idPoll, "user"));

var isAuthor= ((isSingedIn) && (authorid == uid));
var isManager= curuser.isManager();

var isShowLinkResults=
(who == "visitors") ||
((who == "participants") && (isVoted) ) ||
((who == "members") && (isSingedIn) ) ||
((who == "author") && (isAuthor) ) ||
(isManager)
;

if ((idImgResults != null) && (idImgResults != ""))
{
if (! isShowLinkResults)
{
var nodeImg= document.getElementById(idImgResults);
if (nodeImg != null)
{
nodeImg.src= getDocs() + "/polls/images/results_na.png" ;
}
}
showHtmlElement(idLinkResults, true);
}
else
{
showHtmlElement(idLinkResults, isShowLinkResults);
}

var isShowLinkEdit= (((status == "construction") && (isAuthor)) || isManager);
showHtmlElement(idLinkEdit, isShowLinkEdit);

var isShowLinkEditErrata= (((status == "pending_open") || (status == "open") || (status == "paused")) && (isAuthor || isManager));
showHtmlElement(idLinkEditErrata, isShowLinkEditErrata);
};

this.setExtraListInfo = function (xmldoc)
{
var nodeAction= null;
var nodesAction= xmldoc.getElementsByTagName("list-info");
if ((nodesAction != null) && (nodesAction.length > 0))
{
nodeAction= nodesAction.item(0);
}
if (nodeAction == null)
{
nodeAction= xmldoc.createElement("list-info");
xmldoc.documentElement.appendChild(nodeAction);
}

var curuser= new CurrentUser();
nodeAction.setAttribute("uid", curuser.getUid() );
nodeAction.setAttribute("manager", curuser.isManager() ? "1" : "0");

nodeAction.setAttribute("lang-ui", this.lang );

 
return nodeAction;
};

this.showTransformed = function ()
{

this.setExtraListInfo(this.xmldoc);

var transformer= new XsltTransformer();
transformer.setTarget( document.getElementById(this.idNodeTarget) );
transformer.setXmlDocument( this.xmldoc );
transformer.setStylesheetDocument( this.stylesheetdoc );
 
var err= transformer.transform();

if (err != null)
{
this.mydebugger.warn(convertErrObjToStr(err));
if (confirm( this.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(err));
}
}
}

this.ListPollXmlCallback = function (parent)
{
this.parent= parent;

this.onXmlLoaded = function (xmlreq)
{
this.parent.xmldoc= xmlreq.req.responseXML;

 
this.parent.setBusy(false);
this.parent.showTransformed();
};

this.onError = function (xmlreq, err)
{
this.parent.mydebugger.warn(convertErrObjToStr(err));
this.parent.setBusy(false);
if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(err));
}
};
};

this.ListPollStylesheetCallback = function (parent)
{
this.parent= parent;

this.onXmlLoaded = function (xmlreq)
{
this.parent.stylesheetdoc= xmlreq.req.responseXML;

var urlxml= getCgibin() + "/ap_polls_list.pl?filter=" + encodeURIComponent(this.parent.filter) +
"&lang=" + encodeURIComponent(this.parent.lang);
var loader= new XmlRequest();
loader.loadAsync(urlxml, new this.parent.ListPollXmlCallback(this.parent), null, null);
};

this.onError = function (xmlreq, err)
{
this.parent.mydebugger.warn(convertErrObjToStr(err));
this.parent.setBusy(false);
if (confirm( this.parent.strtbl.get("idErrGeneralOperationFailed") ))
{
alert(convertErrObjToStr(err) );
}
};
};

 
this.load = function (filter, idNode)
{
this.mydebugger.trace("Filter:" + filter);
this.setBusy(true);

this.lang= nssy.getPreferredLang(this.lang);
this.filter= filter;
this.idNodeTarget= idNode;
var urlxsl= getDocs() + "/polls/xsl/polls_list.xsl" ;

var loader= new XmlRequest();
loader.loadAsync(urlxsl, new this.ListPollStylesheetCallback(this), null, null);
};
}

 
function getExportedFunctions ()
{
return [ 'PageListPolls' ];
}

 
