if(typeof Pierre != 'undefined') { //console.info("mixer v0.53"); Pierre.widgets.Mixer = function() { this.el = null; // the wrapper element; typically a DIV this.els = {}; // all of the elements of this Div this.user = null; // a user object returned from the getRequest this.els.mixer = null; // the wrapper div for all of the comment divs this.init = function(el) { this.el = (typeof el === 'string') ? plib.Dom.get(el) : el; if(this.el == null) {return false;} this.formWasBuilt = 0; this.els.mixerfaq = plib.Dom.createElement('div',{className:"mixerfaq"},this.el); this.els.mixerapp = plib.Dom.createElement('div', {id:'mixerapp'}, this.el); this.fetchRandomQuestion(); this.buildMixHeader(); this.buildHeader1(); this.fetchQuestions(); } this.fetchQuestions = function() { var config = { success: {name:'jsoncallback', scope:this, callback:this.handleQuestionsResponse} } var url = 'http://decision08.newsvine.com/_labs/politics/getQuestions?tags=issues&count=20'; plib.Ajax.getRequest(url, config); } this.handleQuestionsResponse = function(resp) { var resp = resp.response; if(!resp || !resp.user || !resp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = resp.user; this.question = resp.question; this.buildQ1Form(); var sel_q = document.getElementById('opt1'); var sel_qIndex = sel_q.selectedIndex; var q_var = sel_q.options[sel_qIndex].value; this.fetchResults(q_var); } this.fetchRandomQuestion = function() { var config = { success: {name:'jsoncallback', scope:this, callback:this.handleRandomQuestionResponse} } var url = 'http://decision08.newsvine.com/_labs/politics/getQuestions?tags=issues&count=20'; plib.Ajax.getRequest(url, config); } this.handleRandomQuestionResponse = function(resp) { var resp = resp.response; if(!resp || !resp.user || !resp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = resp.user; this.question = resp.question; this.randomquestion1qi=Math.floor(Math.random()*this.question.length); this.randomquestion1qo=Math.floor(Math.random()*5); this.randomquestion2qi=Math.floor(Math.random()*this.question.length); do { this.randomquestion2qi=Math.floor(Math.random()*this.question.length); } while (this.randomquestion1qi==this.randomquestion2qi); this.randomquestion1 = this.question[this.randomquestion1qi]; this.randomquestion1Title = this.randomquestion1.title.substr(19); this.randomquestion1Url = this.randomquestion1.url; this.randomquestion1ID = this.randomquestion1.questionId; this.randomquestion1Option = this.randomquestion1.options[this.randomquestion1qo].name; this.randomquestion1OptionID = this.randomquestion1.options[this.randomquestion1qo].id; this.randomquestion2 = this.question[this.randomquestion2qi]; this.randomquestion2ID = this.randomquestion2.questionId; this.fetchFilteredRandomResult(); } this.fetchFilteredQuestions = function(qID,oID) { this.formWasBuilt = 1; var config = { success: {name:'jsoncallback', scope:this, callback:this.handleFilteredQuestionsResponse} } this.question2BFiltered = qID; this.option2BFiltered = oID; var url = 'http://decision08.newsvine.com/_labs/politics/getQuestions?tags=issues&count=20'; plib.Ajax.getRequest(url, config); } this.handleFilteredQuestionsResponse = function(resp) { var resp = resp.response; if(!resp || !resp.user || !resp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = resp.user; this.question = resp.question; this.buildQ2Container(); this.buildHeader3(); this.buildQ2Form(); var sel_q = document.getElementById('opt1'); var sel_qIndex = sel_q.selectedIndex; var q_var = sel_q.options[sel_qIndex].value; this.fetchFilteredResults(this.option2BFiltered); } this.fetchResults = function() { var config = { success: {name:'jsoncallback', scope:this, callback:this.handleResults} } var sel_q = document.getElementById('opt1'); var sel_qIndex = sel_q.selectedIndex; this.qID = sel_q.options[sel_qIndex].value; var url = 'http://decision08.newsvine.com/_labs/politics/getQuestion?contentId='+this.qID; plib.Ajax.getRequest(url, config); } this.handleResults = function(fresp) { var fresp = fresp.response; if(!fresp || !fresp.user || !fresp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = fresp.user; this.question = fresp.question; this.buildQ1Results(); stackedChart('mixergraph1'); if($.browser.msie){ // force IE to render tabbox $("#msnbcTabs .tbx").hide(); $("#msnbcTabs .tbx").show(); } } this.fetchFilteredResults = function(oID) { var config = { success: {name:'jsoncallback', scope:this, callback:this.handleFilteredResults} } var sel_q = document.getElementById('opt1'); var sel_qIndex = sel_q.selectedIndex; this.qID = sel_q.options[sel_qIndex].value; var sel_f = document.getElementById('opt2'); var sel_fIndex = sel_f.selectedIndex; this.fID = sel_f.options[sel_fIndex].value; this.oID = oID || ""; var url = 'http://decision08.newsvine.com/_labs/politics/getQuestion?contentId='+this.fID+'&filterQId='+this.qID+'&filterOId='+this.oID; plib.Ajax.getRequest(url, config); } this.handleFilteredResults = function(fresp) { var fresp = fresp.response; if(!fresp || !fresp.user || !fresp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = fresp.user; this.question = fresp.question; this.buildQ2Results(); stackedChart('mixergraph2'); this.buildExplainer(); if($.browser.msie){ // force IE to render tabbox $("#msnbcTabs .tbx").hide(); $("#msnbcTabs .tbx").show(); } } this.fetchFilteredRandomResult = function() { var config = { success: {name:'jsoncallback', scope:this, callback:this.handleFilteredRandomResult} } var url = 'http://decision08.newsvine.com/_labs/politics/getQuestion?contentId='+this.randomquestion2ID+'&filterQId='+this.randomquestion1ID+'&filterOId='+this.randomquestion1OptionID; plib.Ajax.getRequest(url, config); } this.handleFilteredRandomResult = function(fresp) { var fresp = fresp.response; if(!fresp || !fresp.user || !fresp.question) { this.el.innerHTML = 'The initialization failed.'; return false; } this.user = fresp.user; this.question = fresp.question; this.buildFAQ(); } this.buildMixHeader = function() { var mixerHeader = plib.Dom.createElement('h3', {innerHTML:'Mix your own results'}, this.els.mixerapp); } this.buildHeader1 = function() { var mixerHeaderContainer = plib.Dom.createElement('div', {className:'filterHeaderContainer', id:'filterHeaderContainer'}, this.els.mixerapp); var mixerHeader1 = plib.Dom.createElement('div', {className:'filterHeader', id:'filterHeader1', innerHTML:'
1. Select a live vote
'}, mixerHeaderContainer); var mixerHeader2 = plib.Dom.createElement('div', {className:'filterHeader', id:'filterHeader2', innerHTML:'2. Click a response
'}, mixerHeaderContainer); } this.buildHeader3 = function() { var mixerHeader3 = plib.Dom.createElement('div', {className:'filterHeader', id:'filterHeader3', innerHTML:'3. Select a question to compare
'}, this.els.mixerQ2Body); } this.buildQ1Form = function() { this.els.mixerDiv = plib.Dom.createElement('div', {className:'menus'}, this.els.mixerapp); this.els.mixerForm = plib.Dom.createElement('form', {name: 'mixerform'}, this.els.mixerDiv); this.els.menu1Select = plib.Dom.createElement('select', {id:'opt1'}, this.els.mixerForm); for(var i=0; i < this.question.length; i++) { var question = this.question[i]; var questionId = question.questionId; var questionTitle = question.title; questionTitle = questionTitle.substr(19); plib.Dom.createElement('option', {value:questionId, innerHTML:questionTitle}, this.els.menu1Select); } plib.Event.on(this.els.menu1Select, 'change', this.refreshQ1, this, true); //this.els.submitButton = plib.Dom.createInput('button', 'mixerSubmit', {value:'Go'}, this.els.mixerForm); //plib.Event.on(this.els.submitButton, 'click', this.refreshQ1, this, true); } this.buildQ2Container = function() { this.els.mixerQ2Container = plib.Dom.createElement('div', {id: 'filterform', className:'filterContainer'}, this.els.mixerapp); this.els.mixerQ2Top = plib.Dom.createElement('div', {className:'btop'}, this.els.mixerQ2Container); this.els.mixerQ2Body = plib.Dom.createElement('div', {className:'bmid',id:'bmid'}, this.els.mixerQ2Container); this.els.mixerQ2Bottom = plib.Dom.createElement('div', {className:'bbot'}, this.els.mixerQ2Container); } this.buildQ2Form = function() { this.els.mixerDiv2 = plib.Dom.createElement('div', {className:'menus'}, this.els.mixerQ2Body); this.els.mixerForm2 = plib.Dom.createElement('form', {name: 'mixerform2'}, this.els.mixerDiv2); this.els.menu2Select = plib.Dom.createElement('select', {id:'opt2'}, this.els.mixerForm2); for(var i=0; i < this.question.length; i++) { var question = this.question[i]; var questionId = question.questionId; var questionTitle = question.title; questionTitle = questionTitle.substr(19); if(questionId != this.question2BFiltered){ plib.Dom.createElement('option', {value:questionId, innerHTML:questionTitle}, this.els.menu2Select); } } plib.Event.on(this.els.menu2Select, 'change', this.refreshQ2, this, true); //this.els.submitButton = plib.Dom.createInput('button', 'mixerSubmit', {value:'Go'}, this.els.mixerForm2); //plib.Event.on(this.els.submitButton, 'click', this.refreshQ2, this, true); } this.fetchQ2Form = function(qID,oID,oName,oOpt) { this.winner1o = oName; this.winner1i = oOpt; var delete0 = plib.Dom.get('mixerapp'); var delete1 = plib.Dom.get('bmid'); if(this.formWasBuilt==0) { var delete8 = plib.Dom.get('filterform'); if(delete8.parentNode==delete0){delete0.removeChild(delete8);} } var delete4 = plib.Dom.get('clearexp'); var delete5 = plib.Dom.get('clearexp2'); var delete6 = plib.Dom.get('mixervotes2'); var delete7 = plib.Dom.get('mixergraph2'); var delete9 = plib.Dom.get('explainer'); if(delete4.parentNode==delete1){delete1.removeChild(delete4);} if(delete5.parentNode==delete1){delete1.removeChild(delete5);} if(delete6.parentNode==delete1){delete1.removeChild(delete6);} if(delete7.parentNode==delete1){delete1.removeChild(delete7);} if(delete9.parentNode==delete1){delete1.removeChild(delete9);} if(this.formWasBuilt==1) { this.fetchFilteredResults(oID); } else { this.fetchFilteredQuestions(qID,oID); } } this.refreshQ1 = function() { var delete0 = plib.Dom.get('mixerapp'); var delete1 = plib.Dom.get('mixergraph1'); var delete2 = plib.Dom.get('mixervotes1'); var delete8 = plib.Dom.get('filterform'); if(delete1.parentNode==delete0){delete0.removeChild(delete1);} if(delete2.parentNode==delete0){delete0.removeChild(delete2);} if(delete8.parentNode==delete0){delete0.removeChild(delete8);} this.fetchResults(); this.formWasBuilt = 0; } this.refreshQ2 = function() { var delete0 = plib.Dom.get('bmid'); var delete4 = plib.Dom.get('clearexp'); var delete5 = plib.Dom.get('clearexp2'); var delete6 = plib.Dom.get('mixervotes2'); var delete7 = plib.Dom.get('mixergraph2'); var delete9 = plib.Dom.get('explainer'); if(delete4.parentNode==delete0){delete0.removeChild(delete4);} if(delete5.parentNode==delete0){delete0.removeChild(delete5);} if(delete6.parentNode==delete0){delete0.removeChild(delete6);} if(delete7.parentNode==delete0){delete0.removeChild(delete7);} if(delete9.parentNode==delete0){delete0.removeChild(delete9);} this.fetchFilteredResults(this.option2BFiltered); } this.buildQ1Results = function() { var graphDiv = plib.Dom.createElement('div', {id:'mixergraph1',className:'multi_answers'}, this.els.mixerapp); this.winner1o = null; this.winner1v = 0; for(var i=0; i < this.question.length; i++) { var question = this.question[i]; var questionId = question.questionId; var questionTitle = question.title; var questionUrl = question.url; var questionOptions = question.options; var questionVotes = question.totalVotes || 0; var graphHTML = ""; var questionPct = ""; this.winner1q = question.title.substr(19); this.winner1u = question.url; if(questionVotes>0){ graphHTML += "| Stance | Percentage |
|---|---|
| "+questionOptions[j].name+" | "; graphHTML += ""+questionPct+" | "; graphHTML += "
No votes yet.
"; var rowGraphDiv = plib.Dom.createElement('div', {innerHTML: graphHTML}, graphDiv); } } } this.buildQ2Results = function() { var graphDiv = plib.Dom.createElement('div', {id:'mixergraph2',className:'multi_answers'}, this.els.mixerQ2Body); this.winner2o = null; this.winner2v = 0; for(var i=0; i < this.question.length; i++) { var question = this.question[i]; var questionId = question.questionId; var questionTitle = question.title; var questionUrl = question.url; var questionOptions = question.options; var questionVotes = question.totalVotes || 0; var graphHTML = ""; var questionPct = ""; this.winner2q = question.title.substr(19); this.winner2u = question.url; if(questionVotes>0){ graphHTML += "| Stance | Percentage |
|---|---|
| "+questionOptions[j].name+" | "; graphHTML += ""+questionPct+" | "; graphHTML += "
No votes yet.
"; } var rowGraphDiv = plib.Dom.createElement('div', {innerHTML: graphHTML}, graphDiv); var clearExp2 = plib.Dom.createElement('div', {className:'clearer', id:'clearexp2'}, this.els.mixerQ2Body); } } this.buildExplainer = function() { var mixerExpTxt = plib.Dom.createElement('div', {className:'menus', id:'explainer'}, this.els.mixerQ2Body); if(this.winner1o=="Neutral"){this.winner1o="are neutral";} if(this.winner2o=="Neutral"){this.winner2o="are neutral";} if(this.winner2o){ mixerExpTxt.innerHTML = "Of the people who "+this.winner1o.toLowerCase()+" that \""+this.winner1q+"\", "+this.winner2p+"% also "+this.winner2o.toLowerCase()+" that \""+this.winner2q+"\".
"; } var clearExp = plib.Dom.createElement('div', {className:'clearer', id:'clearexp'}, this.els.mixerQ2Body); } this.hideOthers = function(tRow) { for(i=0;i