var app = function(){
var urlPath = window.location.pathname;
var regexAdmin = /^\/admin\//i;
var regexInternal = /^\/internal\//i;
if(regexAdmin.test(urlPath)){return {name: 'Admin', path: '../'};}
else if(regexInternal.test(urlPath)){return {name: 'Internal', path: '../'};}
else{return {name: 'Service', path: './'};}}();

var volume = 0;
var xsltDoc = null;
var xmlDoc = null;
var filterXsltDoc = null;

var getXmlDoc = function(volumeID, channel, fctn){
var setXmlDoc = function(http){
xmlDoc = xml.parse(http.responseText);
if(fctn){fctn();}};
if(xmlDoc !== null){
if(volumeID !== volume){
volume = volumeID;
req.getReqExe('action=Newsletter_getNewsletter&vol=' + volumeID + '&ch=' + channel, setXmlDoc, app.path + 'QLHandler.ashx');}
else{if(fctn){fctn();}}}
else{
volume = volumeID;
req.getReqExe('action=Newsletter_getNewsletter&vol=' + volumeID + '&ch=' + channel, setXmlDoc, app.path + 'QLHandler.ashx');}};

var getFilterXsltDoc = function(){
if(app.name !== 'Service'){
setFilterXsltDoc = function(http){filterXsltDoc = xml.parse(http.responseText);};
req.getReqExe('', setFilterXsltDoc, '../NewsletterTemplates/NewsletterChannel.xslt');}}();

var getXsltDoc = function(){
var type = function(){
if(app.name === 'Service'){return 'VIEW';}
else{return 'EDIT';}}();
setXsltDoc = function(http){xsltDoc = xml.parse(http.responseText);};
req.getReqExe('action=Newsletter_getTemplate&type=' + type, setXsltDoc, app.path + 'QLHandler.ashx');}();

var setFilteredDoc = function(acct){
var filteredDoc = null;
if(window.XSLTProcessor){	// MOZILLA
var xsltProcessor = new XSLTProcessor();
xsltProcessor.importStylesheet(filterXsltDoc);
xsltProcessor.setParameter(null, 'acctID', '#' + acct);
filteredDoc = xsltProcessor.transformToDocument(xmlDoc);}
else if(window.ActiveXObject){ // IE
filteredDoc = function(){
var progIDs = ['Msxml2.DOMDocument.6.0', 'Msxml2.DOMDocument.3.0'];
for(var i=0; i<progIDs.length; i+=1){
try{
var xmlDOM = new ActiveXObject(progIDs[i]);
return xmlDOM;}
catch(ex){}}}();
filteredDoc.setProperty('SelectionLanguage', 'XPath');
filteredDoc.setProperty('AllowDocumentFunction', true);
var param = xml.getNodesByTagNameNS.apply(filterXsltDoc, ['http://www.w3.org/1999/XSL/Transform', 'xsl:param'])[0];
param.setAttribute('name', 'acctID');
param.setAttribute('select', '\'#' + acct + '\'');
xmlDoc.transformNodeToObject(filterXsltDoc, filteredDoc);}
return filteredDoc;};

var setArticles = function(){
var items = [];
var nlDivs = window.document.getElementById('newsletter').getElementsByTagName('div');
for(var i=0; i<nlDivs.length; i+=1){if(nlDivs[i].className === 'item' || nlDivs[i].className === 'widget'){items.push(nlDivs[i]);}}
return items;};

var renderWidgets = function(){
if(!document.all){
var items = window.document.getElementById('newsletter').getElementsByTagName('div');		
for(var i=0; i<items.length; i+=1){
if(items[i].className === 'widget'){
var txt = items[i].childNodes[0].data;
var d = window.document.createElement('div');
d.innerHTML = txt;
items[i].replaceChild(d, items[i].childNodes[0]);}}}};

var setAnchorTargets = function(acct){
var anchors = window.document.getElementById('newsletter').getElementsByTagName('a');
var anchorsLength = anchors.length;
var qStringTest = /accountID/;
var appendAcctID = function(url){
var suffix = 'accountID=' + acct;
var triUrl = /article.aspx/;
var absoluteUrl = /^(http)/;
if(triUrl.test(url) || !absoluteUrl.test(url)){
var qMark = /\?/;
anchors[i].href += (qMark.test(url)? '&': '?') + suffix;}};
for(var i=0; i<anchorsLength; i+=1){
if( !qStringTest.test(anchors[i].getAttribute('href')) ){
if(app.name === 'Admin'){appendAcctID(anchors[i].getAttribute('href'));}
else if(app.name === 'Internal'){appendAcctID(anchors[i].getAttribute('href'));}}		
anchors[i].onclick = function(){
return function(){
var articleWindow = window.open(this.href, 'article', 'width=800,height=500,scrollbars=yes,resizable=1');
articleWindow.focus();
return false;};}();}};

var setNewsletterStyle = function(acct){
	var setHeaderStyle = function(color){
	if(color !== ''){
	var nlDivs = container.getElementsByTagName('div');
	for(var i=0; i<nlDivs.length; i+=1){
	var regTest = /^title/;
	if(regTest.test(nlDivs[i].className)){nlDivs[i].style.color = '#' + color;}}}};
	
	var setBanner = function(){
	if(window.document.getElementById('firstArticleDiv')){window.document.getElementById('banner').src = '../Images/Accounts/' + acct + '/Newsletter.jpg';}
	else{window.document.getElementById('banner').src = '../Images/Accounts/' + acct + '/EFYI.jpg';}
	window.document.getElementById('banner').style.display = 'inline';};
	
	var setColors = function(styleProperties){
	window.document.getElementById('nlBody').style.backgroundColor = function(){
	if(styleProperties.bgColor === ''){}
	else{'#' + styleProperties.bgColor;}}();
	window.document.getElementById('toolBar').style.backgroundColor = function(){
	if(styleProperties.footerColor === ''){}
	else{'#' + styleProperties.footerColor;}}();
	window.document.getElementById('footer').style.backgroundColor = function(){
	if(styleProperties.footerColor === ''){}
	else{'#' + styleProperties.footerColor;}}();};

	var setStyle = function(http){
	var styleProperties = JSON.parse(http.responseText);
	if(app.name !== 'Service'){
	if(styleProperties.headlineColor === ''){window.document.getElementById('banner').style.display = 'none';}
	else{setBanner(acct);}
	setColors(styleProperties);}
	setHeaderStyle(styleProperties.headlineColor);};

	if(window.document.getElementById('firstArticleDiv')){
	var firstArticle = window.document.getElementById('firstArticleDiv').getElementsByTagName('div')[0];
	if(firstArticle.offsetHeight < 120){
	var y = (120 - firstArticle.offsetHeight) / 2;
	firstArticle.style.paddingTop = y + 'px';
	firstArticle.style.paddingBottom = y + 'px';}}
	
	req.getReqExe('action=AcctNewsletterValues_getNLStyleProperties&acctID=' + acct, setStyle, app.path + 'QLHandler.ashx');
};

var displayNewsletter = function(acct, rdfDoc, isEditMode){
var setMenu = function(http){
var xmlMenu = xml.parse(http.responseText);
var newRdfDoc = function(){
if(window.document.all){return xml.parse(rdfDoc.documentElement.xml);}
else{return rdfDoc;}}();
newRdfDoc.documentElement.appendChild(xmlMenu.firstChild);
xml.transform(newRdfDoc, xsltDoc, container);
renderWidgets();
setAnchorTargets(acct);
setNewsletterStyle(acct);
if(isEditMode){
articles = setArticles();
editor.activateEditorTool();}};
req.getReqExe('2plus2=5', setMenu, '../NewsletterTemplates/ToolBars.xml');};

var displayNewsletterView = function(rdfDoc){
xml.transform(rdfDoc, xsltDoc, container);
renderWidgets();
setNewsletterStyle(acctID);};

var refreshNewsletter = function(){
renderNewsletter(channelSet.displayedChannel);
window.document.getElementById('editor').style.display = 'none';
setEditLockOn(true);};

var renderNewsletter = function(acct){
/*var getAcctID = function(id){
for(var i=0; i<acctVector.length; i+=1){
if(acctVector[i] === id){return acctVector[i];}}
return acctVector[0];};*/
channelSet = new ChannelGroups(acct, acctBranch);
//var acct = getAcctID(channelSet.activeChannel);
var filteredDoc = setFilteredDoc(channelSet.displayedChannel);
displayNewsletter(acct, filteredDoc, true);};

var volCtl = function(ddlCtl, isPublished){
var buildDropDown = function(http){
var buildLabel = function(){
var ddlLabel = window.document.createElement('label');
ddlLabel.htmlFor = 'publishedList';
if(isPublished){ddlLabel.innerHTML = 'Past Newsletters';}
else{ddlLabel.innerHTML = 'Upcoming Newsletters';}	
return ddlLabel;};
ddlCtl.appendChild(buildLabel());
ddlCtl.innerHTML += http.responseText;
var volumeList = ddlCtl.getElementsByTagName('select')[0];	
volumeList.id = 'publishedList';
var getNewsletter = function(opt){
var volumeID = parseInt(opt.id.match(/\d+/), 10);
var channel = opt.value.match(/\d+/);
var buildContent = function(){
if(app.name === 'Admin'){
if(opt.value !== 'default'){
var acct = opt.parentNode.id.match(/\d+/);
window.document.getElementById('acctName').innerHTML = opt.parentNode.label;
displayNewsletter(acct, xmlDoc, false);}}
else{displayNewsletterView(xmlDoc);}};
getXmlDoc(volumeID, channel, buildContent);};
if(volumeList.options[0].value !== 'empty'){
if(app.name === 'Service'){getNewsletter(volumeList.options[0]);}
else{
var optGroups = volumeList.getElementsByTagName('optgroup');
if(optGroups.length > 1){
var acctPairs = [acctVector, JSON.parse(cookies.get('anv'))];
for(var i=0; i<optGroups.length; i+=1){
if(optGroups[i].getElementsByTagName('option').length === 0){optGroups[i].style.display = 'none';}
optGroups[i].label = acctPairs[1][i];}}}
volumeList.onchange = function(){
var opt = volumeList.options[volumeList.selectedIndex];
getNewsletter(opt);};}};
var qstring = '&accountID=' + acctID + '&usage=' + app.name;	
if(querySet.volumeid){
if(isPublished){req.getReqExe('action=Newsletter_getPublishedList&vol=' + querySet.volumeid + qstring, buildDropDown, app.path + 'QLHandler.ashx');}
else{req.getReqExe('action=Newsletter_getUnpublishedList&vol=' + querySet.volumeid + qstring, buildDropDown, app.path + 'QLHandler.ashx');}}
else{
if(isPublished){req.getReqExe('action=Newsletter_getPublishedList' + qstring, buildDropDown, app.path + 'QLHandler.ashx');}
else{req.getReqExe('action=Newsletter_getUnpublishedList' + qstring, buildDropDown, app.path + 'QLHandler.ashx');}}};

var configTable = function(tableString){
var renderPage = function(thisRow){
var buildContent = function(){
if(app.name === 'Internal'){
acctID = parseInt(thisRow.cells[1].id.match(/\d+/),10);
acctBranch = [];
acctVector = function(){
var arr = [];
var channels = rss.getChannels();
for(var i=0; i<channels.length; i+=1){
if(channels[i] !== acctID){arr.push(channels[i]);}}
return arr;}();
nlCtls.acctHeader.innerHTML = 'VOLUME: ' + volume;}
renderNewsletter(acctID);
setEditLockOn(false);
acctCtls.buildLists();};
nlCtls.showAll(thisRow.cells[2].innerHTML);
var volumeID = parseInt(thisRow.cells[0].innerHTML.match(/\d+/), 10);
newItems = [];
editor.editNode.style.display = 'none';
getXmlDoc(volumeID, '0', buildContent);};
tbl.table = window.document.getElementById('resultsTable');
tbl.insertTable(tableString, false);
tbl.hideColumn(0);
tbl.initRowEvts(renderPage);
tbl.colorRows();
tbl.initSort();};