function swpArticleImage(imageSrc,caption,destElId, elId) {
	var fullImage = document.getElementById(destElId);
	var otherEl = document.getElementById(elId);
	fullImage.src=imageSrc;
	if (caption!=='') {
		otherEl.innerHTML = caption;
	}
}

function markPollComplete(pollId) {
	setCookie('poll'+pollId, 'Y', new Date(2037,0,1), '/', 'thisislondon.co.uk', null);
}
function isPollComplete(pollId) {
	if (getCookie('poll'+pollId) == 'Y') return true;
	else return false;
}
function setPollChartBar(answerId,length) {
	dwr.util.byId("pollOptBar_"+answerId).style.width = (length + "px");
}
function syncPollCompletionState(pollId,isComplete) {
	if (isComplete) {
		setPollStatusMsg(pollId,"<span class=\"votethanks\">Thank you for your vote</span>");
	} else {
		setPollStatusMsg(pollId,"<span class=\"instruction\">Vote now</span>");
	}
	var el = dwr.util.byId("pollOpts_"+pollId);
	if (isComplete) el.className = "pollbars";
	else el.className = "pollbars active";
	
}
function setPollStatusMsg(pollId,msg) {
	dwr.util.byId("pollConfirm_"+pollId).innerHTML = msg
}
function setPollStatusSending(pollId) {
	setPollStatusMsg(pollId,"<span class=\"instruction\">Sending your vote...</span>");
}
function setPollChart(pollId,pct) {
	var el = dwr.util.byId("pollChart_"+pollId);
	(el!=null)&&(el.src = "http://i.thisislondon.co.uk/i/std/siteimages/eveningstandard/poll/poll_" + pct + ".gif");
	el = dwr.util.byId("pollChart_"+pollId+"_small");
	(el!=null)&&(el.src = "http://i.thisislondon.co.uk/i/std/siteimages/eveningstandard/poll/poll-small_" + pct + ".gif");
	el = dwr.util.byId("pollChart_"+pollId+"_holder");
	(el!=null)&&(el.style.display = "none");
}
function updatePoll(data, isPie) {
	var responses = data;
	var pollId = eval("pollIdForQ"+responses[0].questionId);
	for (var idx in responses) {
		dwr.util.setValue("pollOptPct_"+responses[idx].answerId, responses[idx].percentage + "%");
		if (isPie) dwr.util.byId("pollOptPct_"+responses[idx].answerId).style.display="";
		else setPollChartBar(responses[idx].answerId,responses[idx].barLength);
	}
	setPollChart(pollId,responses[0].percentage);
	syncPollCompletionState(pollId,true);
	markPollComplete(pollId);
}
function updatePollPie(data) {
	updatePoll(data,true);
}
function updatePollBar(data) {
	updatePoll(data,false);
}
function callUpdatePoll(pollId,answerId,isBinary) {
	if (!isPollComplete(pollId)) {
		setPollStatusSending(pollId);
		try {
			if (isBinary) AjaxController.getUpdatedPollResponses(pollId,answerId,updatePollPie);
			else AjaxController.getUpdatedPollResponses(pollId,answerId,updatePollBar);
		} catch(e) {
			log('error','callUpdatePoll()',e,'');
			return false;
		}
	}
	return true;
}
function callSpecsaversPoll(competitionId) {
	if ( isCompetitionComplete(competitionId) ) {
		dwr.util.byId("thankyou-msg").style.display = "";
	} else {
		dwr.util.byId("comp-section1").style.display = "";
		dwr.util.byId("comp-section2").style.display = "";
		dwr.util.byId("comp-section3").style.display = "";
	}
	try {
		AjaxController.getCompetitionPoll(competitionId,updateSpecsaversPoll);
	} catch(e) {
		log('error','callSpecsaversPoll()',e,'');
		return false;
	}
}
function updateSpecsaversPoll(data) {
	var responses = data;
	dwr.util.setValue("optA",responses[0]);
	dwr.util.setValue("optB",responses[1]);
	dwr.util.setValue("optC",responses[2]);
	var max = 1;
	for (var idx in responses) {
		if (responses[idx]>max) max=responses[idx];
	}
	dwr.util.byId("barA").style.height=Math.floor(specsaversGraphMax*responses[0]/max) + "px";
	dwr.util.byId("barB").style.height=Math.floor(specsaversGraphMax*responses[1]/max) + "px";
	dwr.util.byId("barC").style.height=Math.floor(specsaversGraphMax*responses[2]/max) + "px";
}
function isCompetitionComplete(competitionId) {
	if (getCookie('comp'+competitionId) == 'Y') return true;
	else return false;
}
function log(level,func,e,userMessage) {
	var errStr;
	if (e!=null) {
		errStr='Error name ['+e.name+ '] - Error message ['+e.message+'] occured in javascript function ['+func+'] User message ['+userMessage+']';
	} else if (userMessage!=null) {
		errStr=userMessage;
	}	
	switch (level) {
	  case 'debug': Logger.debug(errStr);
	  break;
	  case 'info':  Logger.info(errStr);
	  break;
	  case 'warn':  Logger.warn(errStr);
	  break;
	  case 'error': Logger.error(errStr);
	  break;
	  case 'fatal': Logger.fatal(errStr);
	  break;
	}
}
