function initViewer() {
	//document["viewer_Flash"].setReadOnly(true);
	document["viewer"].onImportClick = function(){showReadyMessages();};
	document["viewer_Flash"].setLinkImportVisible(false);
	document["viewer"].onComposerClick = function(){composerClick();};
}

function composerClick() {
	//document["viewer_Flash"].setReadOnly(false);
	//document["viewer_Flash"].clear();
	clicked = true;
	
	if(securityAlerts && msisdn == "" && loginAlerted == false) {
		loginAlerted = true;
		alert(widgetLocale["loginError1"]);
	}
	
	pageTracker._trackPageview("/composerWidget/interact?LinkInID=" + varLinkInID);
	pageTracker._trackPageview("/composerWidget/composer?LinkInID=" + varLinkInID);
}

function clearInfo() {
	document.getElementById("to").value = "";
	document.getElementById("message").value = widgetLocale["defaultTitle"];
	document.getElementById("fromName").value = "";
	document.getElementById("fromEmail").value = "";
}

function showWidgetSend() {
	document.getElementById("widgetSend").style.display = "";
	document.getElementById("actionsBar").style.display = "none";
	
	pageTracker._trackPageview("/composerWidget/sendDetails?LinkInID=" + varLinkInID);
}

function preShowWidgetEmbed() {
	document["widgetStatus"].stepNumber = 2;
	if(prepareWidgetStatement()) {
		setMinimizedMode();
		showWidgetEmbed();
	}
}

function preShowWidgetSend() {
	
	if(securityAlerts && msisdn == "") {
		alert(widgetLocale["loginError2"]);
		return false;
	}
	
	document["widgetStatus"].stepNumber = 2;
	if(prepareWidgetStatement()) {
		setMinimizedMode();
		showWidgetSend();
	}
}

function onPostProfileHandler(data){
	//handle statistics	
	pageTracker._trackPageview("/composerWidget/postPage?LinkInID=" + varLinkInID);
}

function showWidgetEmbed() {
	var serverPath = getServerPath();
	var pconf = { defaultContent : "postContent", cssURL: serverPath + "/gui/viewer/widgetGigyaPost.css", domainForCallback : "zlango.com"};
	pconf['CID'] = "Composer widget";
	if(language == "it-it") {
		pconf['lang'] = "it";
	} else if (language == "es-es") {
		pconf['lang'] = "es";
	}
	Wildfire.initPost("Zlango", "divWildfirePost", 340, 120,pconf);
	Wildfire.onPostProfile = onPostProfileHandler;
	
	document.getElementById("widgetEmbed").style.display = "";
	document.getElementById("actionsBar").style.display = "none";
}

function prepareWidgetStatement() {
	var statementXml = document["viewer_Flash"].getStatement();
	var staCaption;
	currentXml = statementXml;
	var doc = new xmlDoc(statementXml);
	var tldData = converXmlToData(doc);
	currentTldData = tldData;
	var xmlWords = doc.getElementsByTagName("word");
	var xmlCaption = doc.getElementsByTagName("captions");
	var isCaptions = getNodeValue(xmlCaption[0]);
	
	if(isCaptions == "true") {
		isCaptions = 1;
		staCaption = true;
	} else {
		isCaptions = 0;
		staCaption = false;
	}
	
	var statement = new Object();
	statement.id = 0;
	statement.caption = staCaption;
	var words = [];
	
	if(xmlWords.length > 0 && statementXml.replace(/\n/g, "").replace(/\s/g, "") != initialStatement) {
		for(var i = 0; i < xmlWords.length; i++) {
			var word = new Object;
			word.id = 0;
			word.iconId = getNodeValue(xmlWords[i].getElementsByTagName("iconId")[0]);
			word.word = getNodeValue(xmlWords[i].getElementsByTagName("text")[0]);
			words[i] = word;
		}
		
		statement.zlWords = words;
		wordsArray = words;
		wordsLength = words.length;
		var statementId;
		//statementId = jsonrpc.daoStatement.saveStatement(words,readCookie("zlangoStatisticsId"),0,isCaptions);
		statementId = jsonrpc.daoStatement.saveStatement(words,0,0,isCaptions);
		statement.id = statementId;
		var sendData = escape(tldData);
		sendData = sendData.replace(/%u/g, "%25u");
		
		var mailHtml;
		if(language == "it-it") {
			mailHtml = createItalianStatementEmailHtml(sendData, linkInID, widgetLocale["mailHeader"], widgetLocale["mailFooter"], language, msisdn);
		} else if(language == "es-es"){
			mailHtml = createSpanishStatementEmailHtml(sendData, linkInID, widgetLocale["mailHeader"], widgetLocale["mailFooter"], language);
		} else {
			mailHtml = createWidgetStatementEmailHtml(sendData, linkInID, widgetLocale["mailHeader"], widgetLocale["mailFooter"], language);
		}
		var postHTML = createStatementPostHtml(statementId, words.length, 400, words, language);

		document.getElementById("emailContent").value = mailHtml;
		document.getElementById("postContent").value = postHTML;
		document.getElementById("embedContent").value = postHTML;
		
	} else {
		alert(widgetLocale["Error1"]);
		return false;
	}
	
	return true;
}

function validateShare() {
	var to = document.getElementById("to").value;
	var from = document.getElementById("fromEmail").value;
	var senderName = document.getElementById("fromName").value;
	if(to == null || to == "") {
		alert(widgetLocale["Error2"]);
		return false;
	} else if(from == null || from == ""){
		alert(widgetLocale["Error2"]);
		return false;
	}
	
	//handle special characters
	var re = /,/g;
	to = to.replace(re, ";");
	re = / /g;
	to = to.replace(re, ";");
	re = //r/g;
	to = to.replace(re, ";");
	re = /;;/g;
	to = to.replace(re, ";");
	
	var adresses = to.split(";");
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	for(i in adresses) {
		if(adresses[i].replace(" ", "") != "" && adresses[i] != "") {
			if (! filter.test(adresses[i].replace(" ", ""))){
				alert("<" + adresses[i] + "> " + widgetLocale["Error3"]);
				return false;
			}
		}
	}
	
	if(! filter.test(from)){
		alert(widgetLocale["Error4"]);
		return false;
	}

	var htmlMessage = document.getElementById("emailContent").value;		
	var userMessage = document.getElementById("message").value;
	htmlMessage = htmlMessage.replace("@@userMsg@@", "<BR><BR>" + senderName);
	if(senderName != "") {
		htmlMessage = htmlMessage.replace("@@FROMUSERNAME@@", widgetLocale["from"] + " " + senderName);
	} else {
		htmlMessage = htmlMessage.replace("@@FROMUSERNAME@@", "");
	}
	htmlMessage = htmlMessage.replace("@@USERNAME@@", senderName);
	
	to = cropRecipientsString(to);
	jsonrpc.eMailService.sendZlangoMail(to, from, userMessage, htmlMessage);

	//handle statistics	
	pageTracker._trackPageview("/composerWidget/send?LinkInID=" + varLinkInID);
	
	document.getElementById("to").value = "";
	
	if(typeof(onSendComplete) != "undefined"){
		onSendComplete();
	}
}

function onSendComplete() {
	document["widgetStatus"].stepNumber = 3;
	document.getElementById("congrats").style.display = "";
	document.getElementById("composer").style.display = "none";
	document.getElementById("titleBar").style.display = "none";
	document.getElementById("widgetSend").style.display = "none";
	var iframeWidth = "337px";
	var iframeHeight = "122px";
	if(isIe6) {
		iframeWidth = "340px";
		iframeHeight = "127px";
	}
	document.getElementById("bannerHolder").innerHTML = "<iframe allowTransparency=\"true\" frameborder=0 style=\"width:" + iframeWidth + ";height:" + iframeHeight + ";\" scrolling=no src=\"/get.bannerPicker?targetId=" + bannerTarget + "\"></iframe>";
	clearInfo();
}

function showComposer() {
	document["widgetStatus"].stepNumber = 1;
	if(isIe6) {
		document["viewer_Flash"].clear();
		setMaximizedMode();
	}
	document.getElementById("congrats").style.display = "none";
	document.getElementById("composer").style.display = "";
	document.getElementById("titleBar").style.display = "";
	document.getElementById("actionsBar").style.display = "";
	document.getElementById("bannerHolder").innerHTML = "";
	clicked = false;
	
	pageTracker._trackPageview("/composerWidget/composer?LinkInID=" + varLinkInID);
}

function back() {
	document["widgetStatus"].stepNumber = 1;
	document.getElementById("widgetSend").style.display = "none";
	document.getElementById("widgetEmbed").style.display = "none";
	document.getElementById("widgetReadyMessages").style.display = "none";
	document.getElementById("actionsBar").style.display = "";
	setMaximizedMode();
	clearInfo();
	pagingStartPos = 0;
}

function cancelImport() {
	document["viewer_Flash"].loadStatement(currentStatementXml);
	document.getElementById("widgetSend").style.display = "none";
	document.getElementById("widgetEmbed").style.display = "none";
	document.getElementById("widgetReadyMessages").style.display = "none";
	document.getElementById("actionsBar").style.display = "";
	setMaximizedMode();
}

function importStatement() {
	document.getElementById("widgetSend").style.display = "none";
	document.getElementById("widgetEmbed").style.display = "none";
	document.getElementById("widgetReadyMessages").style.display = "none";
	document.getElementById("actionsBar").style.display = "";
	setMaximizedMode();
}

function showReadyMessages() {
	
	readyTopics = jsonrpc.daoRdyMsg.getCategories(language).list;
	document.getElementById("actionsBar").style.display = "none";
	currentStatementXml = document["viewer_Flash"].getStatement();
	setMinimizedMode();
	buildReadyTopics();
}

function buildReadyTopics() {
	document.getElementById("widgetSend").style.display = "none";
	document.getElementById("widgetEmbed").style.display = "none";
	document.getElementById("widgetReadyMessages").style.display = "";
	var first = true;
	var firstId;
	var topicsHTML = "<TABLE><TR>";
	
	for(var t in readyTopics) {
		if(first) {
			firstId = readyTopics[t].id;
			first = false;
		}
		topicsHTML += "<TD class='WidgetReadyTopicIdle' id='ready_" + readyTopics[t].id + "' onclick='selectTopic(\"" + readyTopics[t].id + "\")'>" + readyTopics[t].name + "</TD>";
	}
	
	topicsHTML += "</TR></TABLE>";
	
	document.getElementById("widgetReadyTopics").innerHTML = topicsHTML;
	
	selectTopic(firstId);
}

function selectTopic(topicId) {

	if(selectedReadyTopic != "") {
		document.getElementById("ready_" + selectedReadyTopic).className = "WidgetReadyTopicIdle";
	}
	
	selectedReadyTopic = topicId;
	document.getElementById("ready_" + selectedReadyTopic).className = "WidgetReadyTopicSelected";
	
	pagingStartPos = 0;
	buildReadyStatement(topicId);
}

function buildReadyStatement(topicId) {
	var first = true;
	var firstStatementId;
	var statementsHtml = "<TABLE class='xMaxed' style='height:210px;'><TR><TD style='vertical-align:top;'>";
	statementsHtml += "<TABLE class='Grid xMaxed'>";
	var paging;
	var fromText = "from";
	if(language == "it-it") {
		fromText = "di";
	} else if (language == "es-es") {
		fromText = "de";
	}
	
	paging = readyCategoriePages["" + topicId + pagingStartPos];
	if(paging == undefined) {
		paging = jsonrpc.daoRdyMsg.getRdyMsgsPage(topicId, language, pagingStartPos, READY_MESSAGES_NUMBER);
		readyCategoriePages["" + topicId + pagingStartPos] = paging;
	}
	
	var statements = paging.list.list;
	
	for(var i in statements) {
		if(first) {
			firstStatementId = statements[i].id;
			first = false;
		}
		statementsHtml += "<TR id='TR_" + statements[i].id + "' onclick='selectRow(this)'>"
		statementsHtml += "<TD class='Grid_Cell'>" + statements[i].text + "</TD>"
		
		statementsHtml += "</TR>"
	}
	
	statementsHtml += "</TABLE>";
	statementsHtml += "</TD></TR><TR><TD class='RightAlign' style='padding-top:14px;vertical-align:bottom;'>";
	
	//paging	
	statementsHtml += "<TABLE>"
	statementsHtml += "<TR>";
	if(paging.prevPos != -1) {
		statementsHtml += "<TD class='PagingPrev' onclick='prevReadyMessages(" + topicId + ");'>" + widgetLocale["Prev"] + "</TD>";
	}
	statementsHtml += "<TD class='PagingStats'>(" + (paging.curPos + 1) + "-" + (paging.curPos + paging.actualSize) + " " + fromText + " " + paging.totalRows + ")</TD>";
	if(paging.nextPos != -1) {
		statementsHtml += "<TD class='PagingNext' onclick='nextReadyMessages(" + topicId + ");'>" + widgetLocale["Next"] + "</TD>";
	}
	statementsHtml += "</TR>";
	statementsHtml += "</TABLE>"
	statementsHtml += "</TD></TR></TABLE>";
	
	
	document.getElementById("widgetReadyStatements").innerHTML = statementsHtml;
	selectRow(document.getElementById("TR_" + firstStatementId));
}

function prevReadyMessages(topicId) {
	pagingStartPos -= READY_MESSAGES_NUMBER;
	buildReadyStatement(topicId);
}

function nextReadyMessages(topicId) {
	pagingStartPos += READY_MESSAGES_NUMBER;
	buildReadyStatement(topicId);
}

function selectRow(ClickedRow){
	if(selectedRow != null) {
		selectedRow.className = "";
	}
	selectedRow = ClickedRow;
	ClickedRow.className = "Grid_Selected";
	document["viewer_Flash"].loadText(ClickedRow.firstChild.innerHTML);
}

function setMinimizedMode() {
	document["viewer_Flash"].setZLPadLegendVisible(false);
	document["viewer_Flash"].setLinkCaptionsVisible(false);
	document["viewer_Flash"].setLinkImportVisible(false);
	document["viewer_Flash"].setZLPadVisible(false);
	document["viewer_Flash"].setAutoCompleteVisible(false);
	document["viewer_Flash"].setReadOnly(true);
}

function setMaximizedMode() {
	document["viewer_Flash"].setZLPadLegendVisible(true);
	document["viewer_Flash"].setLinkCaptionsVisible(true);
	document["viewer_Flash"].setLinkImportVisible(true);
	document["viewer_Flash"].setZLPadVisible(true);
	document["viewer_Flash"].setAutoCompleteVisible(true);
	document["viewer_Flash"].setReadOnly(false);
}

function generateNewEmbedCode(desiredWidth) {
	if(isNaN(desiredWidth)) {
		alert(widgetLocale["Error5"]);
		return;
	}
	if(Number(desiredWidth) < 200 || Number(desiredWidth) > 700) {
		alert(widgetLocale["Error5"]);
		return;
	}
	
	var postHTML = createStatementPostHtml(statementId, wordsLength, desiredWidth, wordsArray, language);
	document.getElementById("postContent").value = postHTML;
	document.getElementById("embedContent").value = postHTML;
	

	var serverPath = getServerPath();
	var pconf = { defaultContent : "postContent", cssURL: serverPath + "/gui/viewer/widgetGigyaPost.css", domainForCallback : "zlango.com"};
	pconf['CID'] = "Composer widget";
	if(language == "it-it") {
		pconf['lang'] = "it";
	} else if(language == "es-es") {
		pconf['lang'] = "es";
	}
	Wildfire.initPost("Zlango", "divWildfirePost", 340, 120,pconf);
	document.getElementById("divWildfirePost").style.width = "100%";	
}

function onWidgetInteract() {
	if(firstInteract) {
		firstInteract = false;
		//handle statistics	
		
	}
}

function prepareWidgetLocale(xmlPath) {
	var xml = new xmlDoc(xmlPath);
	var keys = xml.getElementsByTagName("key");
	var values = xml.getElementsByTagName("value");
	
	for(var i = 0; i < keys.length; i++) {
		var key = getNodeValue(keys[i]);
		var value = getNodeValue(values[i]);
		
		widgetLocale[key] = value;
	}
}

function changeButtonState(button, buttonName, state) 
{
	button.className = buttonName + state;
}

function useButtonInsteadLink(buttonInsteadLink)
{
	if(buttonInsteadLink)
	{
		document.getElementById('sendEmailLink1').style.display="none";
		document.getElementById('sendEmailButton1').style.display="block";
		
		document.getElementById('sendEmailLink2').style.display="none";
		document.getElementById('sendEmailButton2').style.display="block";
		
		document.getElementById('importMessageLink1').style.display="none";
		document.getElementById('importMessageButton1').style.display="block";
		
		document.getElementById('sendEmailBack1').style.display="none";
		document.getElementById('sendEmailBackButton1').style.display="block";
		
		document.getElementById('sendEmailBack2').style.display="none";
		document.getElementById('sendEmailBackButton2').style.display="block";
		
		document.getElementById('sendEmailBack3').style.display="none";
		document.getElementById('sendEmailBackButton3').style.display="block";
		
		document.getElementById('createNewMessageLink').style.display="none";
		document.getElementById('createNewMessageButton').style.display="block";										
	}
	else
	{
		document.getElementById("sendToEmailHolder").innerHTML = widgetLocale["SendToEmail"];
		document.getElementById("back1Holder").innerHTML = widgetLocale["Back"];
		document.getElementById("back2Holder").innerHTML = widgetLocale["Back"];
		document.getElementById("back3Holder").innerHTML = widgetLocale["Back"];
		document.getElementById("sendHolder").innerHTML = widgetLocale["Send"];
	}
}

function applyLocale() {
	document.getElementById("embedHolder").innerHTML = widgetLocale["Embed"];
	
	document.getElementById("getCodeHolder").innerHTML = widgetLocale["GetCode"];
	document.getElementById("changeWidthWidget").innerHTML = widgetLocale["ChangeWidth"];
	document.getElementById("generateHolder").innerHTML = widgetLocale["Generate"];
	document.getElementById("postToMySpacesHolder").innerHTML = widgetLocale["PostToMySpaces"];
	
	document.getElementById("friendsEmailHolder").innerHTML = widgetLocale["FriendsEmail"];
	document.getElementById("importContactsHolder").innerHTML = widgetLocale["ImportContacts"];
	document.getElementById("messagelHolder").innerHTML = widgetLocale["Message"];
	document.getElementById("optional1Holder").innerHTML = widgetLocale["Optional"];
	document.getElementById("myNameHolder").innerHTML = widgetLocale["MyName"];
	document.getElementById("optional2Holder").innerHTML = widgetLocale["Optional"];
	document.getElementById("myEmailHolder").innerHTML = widgetLocale["MyEmail"];
	document.getElementById("clearInfoHolder").innerHTML = widgetLocale["ClearInfo"];
	document.getElementById("createNewMessage").innerHTML = widgetLocale["CreateNewMessage"];
	
	document.getElementById("importHolder").innerHTML = widgetLocale["Import"];
}
