﻿var sNormalRowDisplay = (hoob.ie) ? "block" : "table-row";
var iLatestRow;
var iLatestId;
var iLatestListId;
var elmAltFrame;
var helpTextTimer;
var bLaddaCommentsOnLoad = false;

function init() {
	initHelpTexts();
}

function visaInfo(oXml) {
	//var sHtml = hoob.serializeXml(oXml.documentElement.firstChild);
	if (!oXml || !oXml.documentElement) {
		var elmTd = hoob.getObj("betyg-" + iLatestRow + "-" + iLatestListId);
		if (elmTd && elmTd.innerHTML.indexOf("Laddar") > -1)
			elmTd.innerHTML = "";
		return;
	}
	var sHtml = oXml.documentElement.firstChild.nodeValue;
	var iRow = oXml.documentElement.getAttribute("row");
	var sListId = oXml.documentElement.getAttribute("listId");
	var elmTd = hoob.getObj("betyg-" + iRow + "-" + sListId);
	elmTd.innerHTML = sHtml;

	if (bLaddaCommentsOnLoad)
		iCommentsTimer = setInterval("laddaOnLoadComments()", 500);
}

function laddaOnLoadComments() {
	if (!hoob.getObj("commentMasterBox"))
		return;
	clearInterval(iCommentsTimer);
	bLaddaCommentsOnLoad = false;
	var sBetyg = hoob.getQS("betygId");
	if (sBetyg) {
		var elmCommentsLink = hoob.getObj("showCommentsLink" + sBetyg);
		if (elmCommentsLink && elmCommentsLink.onclick)
			elmCommentsLink.onclick.call();
	}	
}

function laddaInfo(iRow, iId, sTyp, sListId, sKlockTyp, iKlock1, iKlock2, iKlock3) {
	var elmInfoRow1 = hoob.getObj("vinInfo" + iRow + "-1-" + sListId);
	var elmInfoRow2 = hoob.getObj("vinInfo" + iRow + "-2-" + sListId);
	var elmBetygTd = hoob.getObj("betyg-" + iRow + "-" + sListId);
	var elmNamnRow = hoob.getObj("vinNamn" + iRow + "-" + sListId);
	if (elmInfoRow1.getAttribute("visas") && elmInfoRow1.getAttribute("visas") == "true") {
		var sClass = (elmNamnRow.className.indexOf("col2") > -1) ? "vinNamn col2" : "vinNamn";
		var sDisplay = "none";
		elmInfoRow1.setAttribute("visas", "false");
	}
	else {
		var sClass = (elmNamnRow.className.indexOf("col2") > -1) ? "vinNamn col2 vinNamn-" + sTyp : "vinNamn vinNamn-" + sTyp;
		var sDisplay = sNormalRowDisplay;
		elmInfoRow1.setAttribute("visas", "true");
		if (elmBetygTd.innerHTML.toLowerCase().indexOf("laddar") > -1)
			hoob.createXmlObj("/visabetyg.aspx?row=" + iRow + "&id=" + iId + "&listId=" + sListId, visaInfo);
			
		if (sKlockTyp) {
			var sKlockorId = "vinKlockor" + iRow + "-" + sListId;
			var so = new SWFObject("/swf/klockor.swf", "mymovie", "170", "45", "6", "#F5F3E8");
			so.addVariable("v1", iKlock1);
			so.addVariable("v2", iKlock2);
			so.addVariable("v3", iKlock3);
			so.addVariable("sTyp", sKlockTyp);
			so.write(sKlockorId);
		}
	}
	elmInfoRow1.style.display = sDisplay;
	elmInfoRow2.style.display = sDisplay;
	elmNamnRow.className = sClass;
	
	iLatestRow = iRow;
	iLatestId = iId;
	iLatestListId = sListId;
}

function visaBedomForm(elmLink, iRow, iVinId, sListId) {
	elmLink.style.display = "none";
	var elmBox = hoob.getParentNode(elmLink, "td");
	var elmBedom = hoob.getObj("bedomBox").cloneNode(true);
	elmBox.appendChild(elmBedom);
	initHelpTexts();
	elmBedom.style.display = "block";
	elmBedom.setAttribute("rownr", iRow);
	elmBedom.setAttribute("vinid", iVinId);
	elmBedom.setAttribute("listId", sListId);
}

function printYears(iSelectedYear, bReturnValue) {
	var sHtml = '<select name="betyg_argang">';
	sHtml += '<option value="">-</option>';
	var iYear = iCurYear;
	while (iYear >= 1940) {
		var sSelected = (iSelectedYear && iSelectedYear == iYear) ? ' selected="selected"' : "";
		sHtml += '<option value="' + iYear + '"' + sSelected + '>' + iYear + '</option>';
		iYear--;
	}
	sHtml += '</select>';
	if (bReturnValue)
		return sHtml;
	else
		document.write(sHtml);
}

var elmCurButton;
var bSendOk = true;
function skickaOmdome(elmButton, bIsUpdate) {
	if (!bSendOk)
		return;
	var elmBetygBox = hoob.getParentNode(elmButton, "div");
	var iVinId = elmBetygBox.getAttribute("vinid");
	var iBetygId = elmBetygBox.getAttribute("betygid");
	var iRow = elmBetygBox.getAttribute("rownr");
	var sListId = elmBetygBox.getAttribute("listId");
	var arValues = ["betyg_pris", "betyg_kvalitet", "betyg_argang", "betyg_omdome", "betyg_passar", "betyg_email", "betyg_password"];
	var sIsUpdate = bIsUpdate ? "true" : "false";
	var oXml = hoob.createXmlObj('<omdome vinid="' + iVinId + '" row="' + iRow + '" listid="' + sListId + '" isupdate="' + sIsUpdate + '" betygid="' + iBetygId + '"></omdome>');
	for (var i=0; i<arValues.length; i++) {
		var oParam = oXml.createElement("param");
		oXml.documentElement.appendChild(oParam);
		var arElmBetygVarde = hoob.getElementsByAttribute("name", arValues[i], elmBetygBox);
		if (arElmBetygVarde.length == 1) {
			var sValue = (arElmBetygVarde[0].nodeName.toLowerCase() == "select") ? arElmBetygVarde[0].options[arElmBetygVarde[0].selectedIndex].value : arElmBetygVarde[0].value;
			if ((arValues[i] == "betyg_pris" || arValues[i] == "betyg_kvalitet") && sValue.length < 1) {
				alert("Var vänlig ange Prisvärdhet och Kvalitet innan du skickar ditt omdöme.");
				return;
			}
			if (sValue && sValue.length > 0 && sValue != "-") {
				var oValue = oXml.createTextNode(sValue);
				oParam.appendChild(oValue);
			}
		}
	}
	elmCurButton = elmButton;
	elmButton.innerHTML = "Skickar omdöme...";	
	var oXmlSend;
	if (window.ActiveXObject)
		oXmlSend = new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest)
		oXmlSend = new XMLHttpRequest();
	if (oXmlSend) {
		hoob.arXmlObjects.push(oXmlSend);
		hoob.arXmlOnloadFunctions.push(null); // Måste göras för att objekten inte skall hamna i ofas
		oXmlSend.onreadystatechange = new Function("omdomeInlagt(" + (hoob.arXmlObjects.length-1) + ")");
		oXmlSend.open("POST", "/bedom.aspx", true);
		oXmlSend.send(hoob.serializeXml(oXml));
		bSendOk = false;
	}
}

function omdomeInlagt(iXmlObj) {
	var oXml2 = hoob.arXmlObjects[iXmlObj];
	if (oXml2.readyState == 4) {
		elmCurButton.innerHTML = "Skicka!";
		var oXml = hoob.createXmlObj(oXml2.responseText);
		if (oXml.documentElement) {
			if (oXml.documentElement.nodeName == "ok") {
				var iRow = oXml.documentElement.getAttribute("row");
				var iVinId = oXml.documentElement.getAttribute("vinid");
				var sListId = oXml.documentElement.getAttribute("listId");
				var bIsUpdate = (oXml.documentElement.getAttribute("isupdate") == "true");
				var sUrl = "/visabetyg.aspx?row=" + iRow + "&id=" + iVinId + "&listId=" + sListId;
				hoob.createXmlObj(sUrl, visaInfo);
				if (!bIsUpdate) {
					var elmInfoRow2 = hoob.getObj("vinInfo" + iRow + "-2-" + sListId);
					var elmBedomBox = hoob.getElementsByAttribute("id", "bedomBox", elmInfoRow2)[0];
					elmBedomBox.style.display = "none";
					elmBedomBox.parentNode.innerHTML += "<strong>Vinet är tillagt i din lista!</strong>";
				}
				else {
					alert("Ditt betyg är ändrat.");
				}
			}
			else {
				var sErrorType = oXml.documentElement.getAttribute("type");
				if (sErrorType == "user")
					alert("Det verkar inte som om du är inloggad. Var vänlig logga in för att kunna lägga till viner i din vinlista.");
				else
					alert("Ett fel har verkar ha uppstått, prova igen om en stund.");
			}
		}
		else {
			alert("Ett fel har uppstått, prova igen om en stund.");
		}
		bSendOk = true;
	}
}

function updateOmdome(iId, iBetygId, iRow, sListId, iBetyg, elmLink) {
	hoob.hide(elmLink);
	
	var elmTdKvalitet = hoob.getObj("betyg-kvalitet-" + iRow + "-" + sListId + "-" + iBetyg);
	var elmTdPris = hoob.getObj("betyg-pris-" + iRow + "-" + sListId + "-" + iBetyg);
	var elmTdArgang = hoob.getObj("betyg-argang-" + iRow + "-" + sListId + "-" + iBetyg);
	var elmOmdome = hoob.getObj("omdome-" + iRow + "-" + sListId + "-" + iBetyg);
	var elmPassar = hoob.getObj("passar-" + iRow + "-" + sListId + "-" + iBetyg);
	
	var elmBetygBox = hoob.getParentNode(elmPassar, "div");
	elmBetygBox.setAttribute("vinid", iId);
	elmBetygBox.setAttribute("betygid", iBetygId);
	elmBetygBox.setAttribute("rownr", iRow);
	elmBetygBox.setAttribute("listId", sListId);

	createBetygDropdown(elmTdKvalitet, "kvalitet");
	createBetygDropdown(elmTdPris, "pris");
	var sArgangDropdown = printYears(elmTdArgang.innerHTML, true);
	elmTdArgang.innerHTML = sArgangDropdown;
	//createBetygDropdown(elmTdPris, "pris");
	
	var iW = hoob.getW(elmOmdome);
	createBetygTextarea(elmOmdome, "omdome", iW);
	createBetygTextarea(elmPassar, "passar", iW);
	
	elmPassar.parentNode.appendChild(document.createElement("br"));
	var elmButton = document.createElement("button");
	elmButton.className = "block";
	elmPassar.parentNode.insertBefore(elmButton, elmPassar.nextSibling.nextSibling);
	elmButton.innerHTML = "skicka!";
	elmButton.onclick = function() {
		skickaOmdome(this, true);
	}
}

function createBetygTextarea(elmBox, sName, iW) {
	elmBox.previousSibling.className = ""; // Rubriken kan vara hidden (om texten är tom), visa den
	var elmForm = document.createElement("textarea");
	try {
		elmForm.wrap = "virtual";
	}
	catch(e) {
	}
	elmForm.innerHTML = removeHtml(elmBox.innerHTML);
	elmBox.innerHTML = "";
	elmBox.appendChild(elmForm);
	elmForm.style.width = iW + "px";
	elmForm.name = "betyg_" + sName;
}

function createBetygDropdown(elmTd, sName) {
	var elmSelect = document.createElement("select");
	for (var i=0.5; i<=5; i+=.5) {
		var elmOption = document.createElement("option");
		elmSelect.appendChild(elmOption);
		elmOption.value = elmOption.innerHTML = i;
		if (parseFloat(elmTd.innerHTML.replace(",", ".")) == i)
			elmOption.selected = true;
	}
	elmSelect.name = "betyg_" + sName;
	elmTd.innerHTML = "";
	elmTd.appendChild(elmSelect);
	//return elmSelect;
}

function removeHtml(sHtml) {
	return sHtml.replace(/<br>/gi, "\n").replace(/<br\/>/gi, "\n");
}

function initHelpTexts() {
	var arLinks = hoob.getElementsByAttribute("class", "helpText", document, "span", false, true);
	for (var i=0; i<arLinks.length; i++) {
		if (arLinks[i].title && arLinks[i].title.length > 0) {
			arLinks[i].setAttribute("origTitle", arLinks[i].title);
			arLinks[i].alt = "";
			arLinks[i].title = "";
		}
		hoob.addEvent(arLinks[i], "mouseover", "showHelpText", true);
		hoob.addEvent(arLinks[i], "mousemove", "showHelpText", true);
		hoob.addEvent(arLinks[i], "mouseout", "hideHelpText", true);
		hoob.addEvent(arLinks[i], "mouseover", "showHelpText");
		hoob.addEvent(arLinks[i], "mousemove", "showHelpText");
		hoob.addEvent(arLinks[i], "mouseout", "hideHelpText");
	}
	if (!elmAltFrame) {
		var elmAlt = document.createElement("iframe");
		elmAlt.frameBorder = "0";
		elmAlt.src = "/misc/altiframe.html";
		elmAlt.id = "helpTextFrame";
		elmAltFrame = elmAlt;
		document.body.appendChild(elmAlt);
	}
}

function showHelpText(evt) {
	clearTimeout(helpTextTimer);
	evt = (typeof event != "undefined") ? event : evt;
	var elmLink = hoob.getEventSrc(evt);
	var sTitle = elmLink.getAttribute("origTitle");
	elmAltFrame.contentWindow.document.body.firstChild.innerHTML = sTitle;
	var oCoords = hoob.getEventCoords(evt);
	status = oCoords.y
	var h = hoob.getH(elmAltFrame.contentWindow.document.body) + 6;
	elmAltFrame.height = h;
	hoob.moveTo(elmAltFrame, oCoords.x + hoob.getDocScroll().x + 10, oCoords.y + 20 + hoob.getDocScroll().y);
	hoob.show(elmAltFrame);
}

function hideHelpText() {
	helpTextTimer = setTimeout("hoob.hide(elmAltFrame)", 1000);
}

function loadComments(sId, sListId, sVinId) {
	var elmCommentInnerBox = hoob.getObj("commentsBox-" + sId + "-" + sListId);
	var elmCommentOuterBox = hoob.getObj("comments-" + sId + "-" + sListId);

	if (elmCommentInnerBox) {
		var elmCommentList = hoob.getObj("commentList-" + sId + "-" + sListId);
		var elmCommentForm = hoob.getObj("commentForm-" + sId + "-" + sListId);
		var elmCommentTextArea = hoob.getObj("commentTextArea-" + sId + "-" + sListId);
		if (!bIsLoggedIn) {
			var elmCommentName = hoob.getObj("commentName-" + sId + "-" + sListId);
			var elmCommentMail = hoob.getObj("commentMail-" + sId + "-" + sListId);
			var elmCommentLink = hoob.getObj("commentLink-" + sId + "-" + sListId);
			var elmCommentAnonym = hoob.getObj("commentAnonym-" + sId + "-" + sListId)
		}	
	}
	else {
		var elmCommentMasterBox = hoob.getObj("commentMasterBox");
		elmCommentInnerBox = elmCommentOuterBox.appendChild(elmCommentMasterBox.cloneNode(true));
		elmCommentInnerBox.id = "commentsBox-" + sId + "-" + sListId;
		var elmCommentList = hoob.elementGetElementsById("commentList", "div", elmCommentInnerBox)[0];
		elmCommentList.id = "commentList-" + sId + "-" + sListId;
		var elmCommentForm = hoob.elementGetElementsById("commentForm", "div", elmCommentInnerBox)[0];
		elmCommentForm.id = "commentForm-" + sId + "-" + sListId;
		var elmCommentTextArea = hoob.elementGetElementsById("commentTextArea", "textarea", elmCommentInnerBox)[0];
		elmCommentTextArea.id = "commentTextArea-" + sId + "-" + sListId;
		if (!bIsLoggedIn) {
			var elmCommentName = hoob.elementGetElementsById("commentName", "input", elmCommentInnerBox)[0];
			elmCommentName.id = "commentName-" + sId + "-" + sListId;
			var elmCommentMail = hoob.elementGetElementsById("commentMail", "input", elmCommentInnerBox)[0];
			elmCommentMail.id = "commentMail-" + sId + "-" + sListId;
			var elmCommentLink = hoob.elementGetElementsById("commentLink", "input", elmCommentInnerBox)[0];
			elmCommentLink.id = "commentLink-" + sId + "-" + sListId;
			var elmCommentAnonym = hoob.elementGetElementsById("commentAnonym", "input", elmCommentInnerBox)[0];
			elmCommentAnonym.id = "commentAnonym-" + sId + "-" + sListId;
		}	
	}
	
	var sVisas = elmCommentInnerBox.getAttribute("visas");
	if (sVisas == "true") {
		elmCommentInnerBox.setAttribute("visas", "false");
		elmCommentInnerBox.style.display = "none";
		return;
	}
	else {
		elmCommentInnerBox.setAttribute("visas", "true");
		elmCommentInnerBox.style.display = "block";
	}
	
	elmCommentInnerBox.setAttribute("omdome_id", sId);
	elmCommentInnerBox.setAttribute("list_id", sListId);
	elmCommentInnerBox.setAttribute("vin_id", sVinId);
	
	//elmCommentForm.style.display = "none";
	
	//hoob.getObj("commentText").value = "";
	if (!bIsLoggedIn) {
		//elmCommentName.value = "";
		//elmCommentLink.value = "";
		elmCommentAnonym.checked = false;
	}
	
	elmCommentList.innerHTML = "<i>Laddar...</i>";

	hoob.createXmlObj("/comment.aspx?id=" + sId + "&listId=" + sListId + "&vinId=" + sVinId, showComments);
}

function showComments(oXml, bHideForm) {
	var oNode = oXml.documentElement.firstChild;
	var sHtml = (oNode && oNode.nodeValue) ? oNode.nodeValue : "";
	var sId = oXml.documentElement.getAttribute("betygId");
	var sListId = oXml.documentElement.getAttribute("listId");
	var elmCommentList = hoob.getObj("commentList-" + sId + "-" + sListId);
	elmCommentList.innerHTML = sHtml;
	var elmCommentForm = hoob.getObj("commentForm-" + sId + "-" + sListId);
	var sDisplay = bHideForm ? "none" : "block";
	elmCommentForm.style.display = sDisplay;
	var elmCommentTextArea = hoob.getObj("commentTextArea-" + sId + "-" + sListId);
	elmCommentTextArea.value = "";
}

/*function sendCommentMail(oXml) {
	var sBetygId = oXml.documentElement.getAttribute("betygId");
	var sVinId = oXml.documentElement.getAttribute("vinId");
	var sMail = oXml.documentElement.getAttribute("mail");
	var sUrl = "/comment_sendmail.asp?betygId=" + sBetygId + "&vinId=" + sVinId + "&mailComment=" + sMail;
	hoob.getObj("misc").innerHTML = '<iframe src="' + sUrl + '" width="400" height="400" border="0" frameborder="0"></iframe>';
}*/

function toggleCommentName(bChecked) {
	var elmName = hoob.getObj("commentName");
	var elmMail = hoob.getObj("commentMail");
	var elmLink = hoob.getObj("commentLink");
	elmName.readOnly = bChecked;
	elmMail.readOnly = bChecked;
	elmLink.readOnly = bChecked;
	var sClass = bChecked ? "readOnly" : "";
	elmName.className = sClass;
	elmMail.className = sClass;
	elmLink.className = sClass;	
}

function sendComment(elmBtn) {
	if (!bSendOk)
		return;
		
	var elmCommentsBox = elmBtn.parentNode.parentNode;
	var sId = elmCommentsBox.getAttribute("omdome_id");
	var sListId = elmCommentsBox.getAttribute("list_id");
	var sVinId = elmCommentsBox.getAttribute("vin_id");
	
	var sText = hoob.getObj("commentTextArea-" + sId + "-" + sListId).value.trim();
	if (sText.length < 2) {
		alert("Var vänlig fyll i en kommentar.");
		return;
	}
	var sName = "";
	var sMail = "";
	var sLink = "";
	var sAnonym = "false";
	if (!bIsLoggedIn) {
		sName = hoob.getObj("commentName-" + sId + "-" + sListId).value.trim();
		sMail = hoob.getObj("commentMail-" + sId + "-" + sListId).value.trim();
		sLink = hoob.getObj("commentLink-" + sId + "-" + sListId).value.trim();
		sAnonym = hoob.getObj("commentAnonym-" + sId + "-" + sListId).checked ? "true" : "false";
		if (sName.length < 3 && !hoob.getObj("commentAnonym-" + sId + "-" + sListId).checked) {
			alert("Var vänlig fyll i ett namn.");
			return;
		}
	}
	
	elmCurButton = elmBtn;
	elmBtn.innerHTML = "Skickar omdöme...";		
	
	var oXml = hoob.createXmlObj('<comment name="' + sName + '" mail="' + sMail + '" link="' + sLink + '" anonym="' + sAnonym + '" vin_id="' + sVinId + '" />');
	var oText = oXml.createTextNode(sText);
	oXml.documentElement.appendChild(oText);
	var oXmlSend;
	if (window.ActiveXObject)
		oXmlSend = new ActiveXObject("Microsoft.XMLHTTP");
	else if (window.XMLHttpRequest)
		oXmlSend = new XMLHttpRequest();
	if (oXmlSend) {
		hoob.arXmlObjects.push(oXmlSend);
		hoob.arXmlOnloadFunctions.push(null); // Måste göras för att objekten inte skall hamna i ofas
		oXmlSend.onreadystatechange = new Function("commentInlagd(" + (hoob.arXmlObjects.length-1) + ")");
		oXmlSend.open("POST", "/comment.aspx?write=true&id=" + sId + "&listId=" + sListId + "&vinId=" + sVinId, true);
		//alert(hoob.serializeXml(oXml))
		oXmlSend.send(hoob.serializeXml(oXml));
		bSendOk = false;
	}	
}

function commentInlagd(iXmlObj) {
	var oXml2 = hoob.arXmlObjects[iXmlObj];
	if (oXml2.readyState == 4) {
		elmCurButton.innerHTML = "Skicka!";
		var oXml = hoob.createXmlObj(oXml2.responseText);
		if (oXml.documentElement) {
			if (oXml.documentElement.nodeName == "comments") {
				showComments(oXml, true);
				//sendCommentMail(oXml);
				/*
				var iRow = oXml.documentElement.getAttribute("row");
				var iVinId = oXml.documentElement.getAttribute("vinid");
				var sListId = oXml.documentElement.getAttribute("listId");
				var bIsUpdate = (oXml.documentElement.getAttribute("isupdate") == "true");
				var sUrl = "/visabetyg.aspx?row=" + iRow + "&id=" + iVinId + "&listId=" + sListId;
				hoob.createXmlObj(sUrl, visaInfo);
				if (!bIsUpdate) {
					var elmInfoRow2 = hoob.getObj("vinInfo" + iRow + "-2-" + sListId);
					var elmBedomBox = hoob.getElementsByAttribute("id", "bedomBox", elmInfoRow2)[0];
					elmBedomBox.style.display = "none";
					elmBedomBox.parentNode.innerHTML += "<strong>Vinet är tillagt i din lista!</strong>";
				}
				else {
					alert("Ditt betyg är ändrat.");
				}*/
			}
			else {
				var sErrorType = oXml.documentElement.getAttribute("type");
				/*if (sErrorType == "user")
					alert("Det verkar inte som om du är inloggad. Var vänlig logga in för att kunna lägga till viner i din vinlista.");
				else
					alert("Ett fel har verkar ha uppstått, prova igen om en stund.");*/
			}
		}
		else {
			alert("Ett fel har uppstått, prova igen om en stund.");
		}
		bSendOk = true;
	}
}

hoob.addEvent (window, "load", "init");