﻿////////////////////
// XMLHttpRequest //
////////////////////

function addURLParam(sURL, sParamName, sParamValue) {
	sURL += (sURL.indexOf("?") == -1 ? "?" : "&");
	sURL += sParamName + "=" + encodeURIComponent(sParamValue);
	return sURL;
}

var req;

function processReqChange() {
	if (req.readyState == 4) {
		if (req.status == 200) {
			//alert(req.responseText);
			eval(req.responseText);
		} else {
			alert("Error connecting to server. Please try again later.");
			// alert(req.responseText);
		}
	}
}

function loadXMLDoc(url) {
	
	// branch for native XMLHttpRequest object
	if (window.XMLHttpRequest) {
		req = new XMLHttpRequest();
		req.onreadystatechange = processReqChange;
		req.open("GET", url, true);
		req.send(null);
		
	// branch for IE/Windows ActiveX version
	} else if (window.ActiveXObject) {
		req = new ActiveXObject("Microsoft.XMLHTTP");
		if (req) {
			req.onreadystatechange = processReqChange;
			req.open("GET", url, true);
			req.send();
		}
	} else {
		alert("Your browser doesn't support XMLHttpRequest");
	}
}

function removeAllOptions(dropDownID) {
	var dropDown = document.getElementById(dropDownID);

	optionNum = dropDown.childNodes.length;
	for (var i=0; i < optionNum; i++) {
		var oOption = dropDown.childNodes[0];
		dropDown.removeChild(oOption);
	}
}

function fillDropDown_Request(dropDownID, type) {

	var url = "AjaxProcessor.aspx";
	url += type;
	removeAllOptions(dropDownID);
	var dropDown = document.getElementById(dropDownID);
	var oOption = document.createElement("option");
	oOption.setAttribute("value", "-1");
	oOption.innerHTML = "Loading...";
	dropDown.appendChild(oOption);	
	//alert('ok');
		
	loadXMLDoc(url);
}

function fillDropDown_Response(dropDownID, arrTexts, arrValues) {

	removeAllOptions(dropDownID);
	var dropDown = document.getElementById(dropDownID);

	for (var i=0; i < arrTexts.length; i++) {
		var oOption = document.createElement("option");
		oOption.setAttribute("value", arrValues[i]);
		oOption.innerHTML = arrTexts[i]
		dropDown.appendChild(oOption);
	}
}

function rateThreadResponse_Request(threadResponseId, ratingCount) {
	
	var starPanelDiv = document.getElementById("TRStarPanel" + threadResponseId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + threadResponseId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = "Saving...";
        
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = "Saving...";
	
	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ThreadResponseID=" + threadResponseId;
	url += "&RatingCount=" + ratingCount;
	url += "&Type=RateThreadResponse";
	
	loadXMLDoc(url);
}


function rateListing_Request(listingId, ratingCount) {
	
	var starPanelDiv = document.getElementById("starPanel" + listingId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + listingId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = "Saving...";
        
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = "Saving...";
	
	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ListingID=" + listingId;
	url += "&RatingCount=" + ratingCount;
	url += "&Type=RateListing";
	
	loadXMLDoc(url);
}

function rateArticle_Request(articleId, ratingCount) {
	
	var starPanelDiv = document.getElementById("starPanel" + articleId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + articleId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = "Saving...";
        
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = "Saving...";
	
	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ArticleID=" + articleId;
	url += "&RatingCount=" + ratingCount;
	url += "&Type=RateArticle";
	
	loadXMLDoc(url);
}

function flagThreadResponse_Request(threadResponseId, flagTypeId) {

    var flagListingReviewPanel = document.getElementById("flagThreadResponsePanel" + threadResponseId);
    if (flagListingReviewPanel != null) {
        flagListingReviewPanel.innerHTML = "Saving...";
    }

	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ThreadResponseID=" + threadResponseId;
	url += "&FlagTypeID=" + flagTypeId;
	url += "&Type=FlagThreadResponse";
	
	loadXMLDoc(url);
}


function flagListingReview_Request(listingReviewId, flagTypeId) {

var flagListingReviewPanel = document.getElementById("flagListingReviewPanel" + listingReviewId);
    if (flagListingReviewPanel != null) {
        flagListingReviewPanel.innerHTML = "Saving...";
    }

	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ListingReviewID=" + listingReviewId;
	url += "&FlagTypeID=" + flagTypeId;
	url += "&Type=FlagListingReview";
	
	loadXMLDoc(url);
}

function flagListing_Request(listingId, flagTypeId) {

var flagListingPanel = document.getElementById("flagListingPanel" + listingId);
    if (flagListingPanel != null) {
        flagListingPanel.innerHTML = "Saving...";
    }

	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ListingID=" + listingId;
	url += "&FlagTypeID=" + flagTypeId;
	url += "&Type=FlagListing";
	
	loadXMLDoc(url);
}

function rateListingReview_Request(listingReviewId, isHelpful) {

    var listingReviewPanel = document.getElementById("listingReviewPanel" + listingReviewId);
    if (listingReviewPanel != null) {
        listingReviewPanel.innerHTML = "Saving...";
    }

	var url = baseUrl + "/AjaxProcessor.aspx";
	url += "?ListingReviewID=" + listingReviewId;
	url += "&IsHelpful=" + isHelpful;
	url += "&Type=RateListingReview";
	loadXMLDoc(url);
}

function flagListing_Response(listingId) {
    var flagListingPanel = document.getElementById("flagListingPanel" + listingId);
    if (flagListingPanel != null) {
        flagListingPanel.innerHTML = "<b>Thanks for flagging!</b>";
    }
}

function flagThreadResponse_Response(threadResponseID) {
    var flagThreadResponsePanel = document.getElementById("flagThreadResponsePanel" + threadResponseID);
    if (flagThreadResponsePanel != null) {
        flagThreadResponsePanel.innerHTML = "<b>Thanks for flagging!</b>";
    }
}

function flagListingReview_Response(listingReviewId) {
    var flagListingReviewPanel = document.getElementById("flagListingReviewPanel" + listingReviewId);
    if (flagListingReviewPanel != null) {
        flagListingReviewPanel.innerHTML = "<b>Thanks for flagging!</b>";
    }
}

function rateListingReview_Response(listingReviewId, helpfulCount, totalCount) {
    var listingReviewPanel = document.getElementById("listingReviewPanel" + listingReviewId);
    if (listingReviewPanel != null) {
        listingReviewPanel.innerHTML = "<b>Thanks for your vote!</b>";
    }
    
    var helpfulVoteCountDiv = document.getElementById("helpfulvotecount-" + listingReviewId);
    var totalVoteCountDiv = document.getElementById("totalvotecount-" + listingReviewId);
    
    if (helpfulVoteCountDiv != null) {
        helpfulVoteCountDiv.innerHTML = helpfulCount;
    }
    
    if (totalVoteCountDiv != null) {
        totalVoteCountDiv.innerHTML = totalCount;
    }
}

function GetStars(starCount) {
    var MAX_STAR = 5;
    var starImage = "<img src='" + baseUrl + "/Images/star/yellow-star.png' height='16' width='16'>";
    var emptyStarImage = "<img src='" + baseUrl + "/Images/star/empty-star.png' height='16' width='16'>";
    
    var ret = "";
    for (var i = 1; i <= starCount; i++) {
        ret += starImage;
    }
    
    for (var i = starCount + 1; i <= MAX_STAR; i++) {
        ret += emptyStarImage;
    }
    
    return ret;
}

function rateThreadResponse_Response(threadResponseId, myRating, avgRating, avgRatingNumber, totalVotes) {

    var MAX_STAR = 5;
    var starImage = "<img src='" + baseUrl + "/Images/star/yellow-star.png' height='16' width='16'>";
    var emptyStarImage = "<img src='" + baseUrl + "/Images/star/empty-star.png' height='16' width='16'>";
    
    var starPanelDiv = document.getElementById("TRStarPanel" + threadResponseId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + threadResponseId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = GetStars(myRating);
        
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = ret;
    
    var avgRatingSpan = document.getElementById("TRAvgRating-" + threadResponseId);
    if (avgRatingSpan != null)
        avgRatingSpan.innerHTML = GetStars(avgRating);
        
     var avgRatingNumberSpan = document.getElementById("TRAvgRatingNumber-" + threadResponseId);
     if (avgRatingNumberSpan != null)
        avgRatingNumberSpan.innerHTML = "average " + avgRatingNumber;

}

function rateListing_Response(listingId, myRating, avgRating, avgRatingNumber, totalVotes) {

    var MAX_STAR = 5;
    var starImage = "<img src='" + baseUrl + "/Images/star/yellow-star.png' height='16' width='16'>";
    var emptyStarImage = "<img src='" + baseUrl + "/Images/star/empty-star.png' height='16' width='16'>";
    
    /*
    var ret = "";
    for (var i = 1; i <= myRating; i++) {
        ret += starImage;
    }
    
    for (var i = myRating + 1; i <= MAX_STAR; i++) {
        ret += emptyStarImage;
    }
    */
    
    var starPanelDiv = document.getElementById("starPanel" + listingId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + listingId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = GetStars(myRating);
        
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = ret;
    
    var avgRatingSpan = document.getElementById("AvgRating-" + listingId);
    if (avgRatingSpan != null)
        avgRatingSpan.innerHTML = GetStars(avgRating);
        
     var avgRatingNumberSpan = document.getElementById("AvgRatingNumber-" + listingId);
     if (avgRatingNumberSpan != null)
        avgRatingNumberSpan.innerHTML = "average " + avgRatingNumber;

}

function rateArticle_Response(articleId, myRating, avgRating, avgRatingNumber, totalVotes) {

    var MAX_STAR = 5;
    var starImage = "<img src='" + baseUrl + "/Images/star/yellow-star.png' height='16' width='16'>";
    var emptyStarImage = "<img src='" + baseUrl + "/Images/star/empty-star.png' height='16' width='16'>";
    
    var starPanelDiv = document.getElementById("starPanel" + articleId);
    var starPanelRvDiv = document.getElementById("starPanel-rv" + articleId);
    if (starPanelDiv != null)
        starPanelDiv.innerHTML = GetStars(myRating);
    
    /*    
    if (starPanelRvDiv != null)
        starPanelRvDiv.innerHTML = ret;
    */
    
    var avgRatingSpan = document.getElementById("AvgRating-" + articleId);
    if (avgRatingSpan != null)
        avgRatingSpan.innerHTML = GetStars(avgRating);
        
     var avgRatingNumberSpan = document.getElementById("AvgRatingNumber-" + articleId);
     if (avgRatingNumberSpan != null)
        avgRatingNumberSpan.innerHTML = "average " + avgRatingNumber;

}

function getPlaces_Request(buttonID, param) {
	var url = "AjaxProcessor.aspx";
	url += param;
	loadXMLDoc(url);
}

function getPlaces_Response(labelXmlDoc) {

    // alert(labelXmlDoc);
    // return;
    var xml = GXml.parse(labelXmlDoc);
    var labels = xml.documentElement.getElementsByTagName("Label");
    map.clearOverlays();
    if (mgr != null)
        delete mgr;
        
    mgr = new GMarkerManager(map);
    
    for (var i = 0; i < labels.length; i++) {
        var labelNode = labels[i];
        var point = labelNode.getElementsByTagName("Point")[0];
        var icon = labelNode.getElementsByTagName("Icon")[0];
        var title = labelNode.getElementsByTagName("Title")[0].firstChild.nodeValue;
        var description = labelNode.getElementsByTagName("Description")[0].firstChild.nodeValue;
        var point = new GLatLng(parseFloat(point.getAttribute("Lat")), parseFloat(point.getAttribute("Lon")));
        
        //var markerIcon = createIcon(icon.getAttribute("Value"), icon.getAttribute("Shadow"));
        //alert('ok....');
        var marker = createMarker(point, icon.getAttribute("Value"), title, description);
        
        mgr.addMarker(marker, 12, 17);
        // map.addOverlay(createMarker(point, title, description));
    }

    mgr.refresh(); 
    
    var button = document.getElementById("DisplayPlacesButton");
    button.disabled = false;  
}
