var cached_content = '';
var last_modified = "Thu, 01 Jun 1970 00:00:00 GMT";

var raterURL = '/site/rater/'
//var raterURL = 'http://test.illuststudio.net/site/rater/'
//var raterURL = 'http://illuststudio.net/site/rater/'

function createHttpRequest()
{
	var x = null;

    //IE7,Firefox, Safari
    if (window.XMLHttpRequest) {
        return new XMLHttpRequest();
    }

    //IE
	var progIDs = [
        "Msxml2.ServerXMLHTTP.6.0",
        "Msxml2.ServerXMLHTTP.5.0",
        "Msxml2.ServerXMLHTTP.4.0",
	    "Msxml2.ServerXMLHTTP.3.0",
	    "Msxml2.ServerXMLHTTP",
	    "Microsoft.ServerXMLHTTP",
	    "Msxml2.XMLHTTP.6.0",
	    "Msxml2.XMLHTTP.5.0",
	    "Msxml2.XMLHTTP.4.0",
	    "Msxml2.XMLHTTP.3.0",
	    "Msxml2.XMLHTTP",
	    "Microsoft.XMLHTTP" // カンマなし
	];
		
	var i;
	for (i = 0; i < progIDs.length; ++i)
	{
	    try
		{
	    	return new ActiveXObject(progIDs[i]);
	    }
		catch(e)
		{
	    	if (i == progIDs.length - 1)
	        	x = null;
	    }
	}

	return x;
}

function requestRater(id, mode, maxvalue, readonly)
{
	var	raterObj = document.getElementById(id);
	if(!raterObj)
		return;
		
	if(0 == readonly)
	{
		var idDisp  = id + '_Disp';
		var infoObj = document.getElementById(idDisp);
	    if(infoObj)
	    	infoObj.innerHTML = "<p>" + "この記事は役に立ちましたか？" + "<br>" + "よりよい情報をお届けするために評価にご協力ください。" + "</p>";
	    
	    var call = '#' + id;
				
		// スタイル
		var	style = 'basic';
		switch(mode)
		{
			case 0: style = 'basic';break;	// basic
			case 1: style = 'small';break;	// small
			case 2: style = 'inline';break;	// inline
			case 3: style = 'middle';break;	// middle
		}
				
	    var servletURL = raterURL + 'php/rater.php';
	    $(call).rater(servletURL, id, idDisp, {maxvalue:maxvalue, style: style, curvalue:0, readonly:readonly});
    }
    else
    {
	    var filename   = raterURL + 'logs/' + id + '.xml';
		var xmlHttpReq = createHttpRequest();
	    xmlHttpReq.open("GET", filename, true);
	        
	    xmlHttpReq.onreadystatechange = function()
		{
			var idDisp = id + '_Disp';
	        if(xmlHttpReq.readyState==4) 
			{
				var call = '#' + id;
				
				// スタイル
				var	style = 'basic';
				switch(mode)
				{
					case 0: style = 'basic';break;	// basic
					case 1: style = 'small';break;	// small
					case 2: style = 'inline';break;	// inline
					case 3: style = 'middle';break;	// middle 追加この行のみ
				}

				// 現状ブラウザ更新以外で呼ばれることが無いが、イベントで呼ばれる場合は304も考慮する必要あり
	            if(xmlHttpReq.status == 200)
				{
					var xmlData = xmlHttpReq.responseXML;				
					if(xmlHttpReq.getAllResponseHeaders().match("Last-Modified"))
	　　				last_modified = xmlHttpReq.getResponseHeader("Last-Modified");

					if(xmlHttpReq.responseXML.length == 0)
	　　				xmlData = cached_content;
	　				else
	　　				cached_content = xmlHttpReq.responseXML;

					var count_data;
					var	count;
		            var total_data;
					var	total;
					var Average = 0;
					
					count_data = xmlData.getElementsByTagName("count");
					count      = count_data[0].childNodes[0].nodeValue;
					if(1 == readonly)
					{
					   	total_data = xmlData.getElementsByTagName("total");
						total      = total_data[0].childNodes[0].nodeValue;
						Average    = total / count;	// 平均
		           	}
		           	
		           	var infoObj = document.getElementById(idDisp);
		            if(infoObj)
		            {
		            	if(0 == readonly)
		            		infoObj.innerHTML = "<p>" + "この記事は役に立ちましたか？" + "<br>" + "よりよい情報をお届けするために評価にご協力ください。" + "</p>";//count + "件の評価";
		            	else
		            		infoObj.innerHTML = "（" + count + "）";
		            }
		            
		            var servletURL = raterURL + 'php/rater.php';
		            $(call).rater(servletURL, id, idDisp, {maxvalue:maxvalue, style: style, curvalue:Average, readonly:readonly});
				}
				else
				{				
					var infoObj = document.getElementById(idDisp);
					if(infoObj)
		            {
		            	if(0 == readonly)
		            		infoObj.innerHTML = "<p>" + "この記事は役に立ちましたか？" + "<br>" + "よりよい情報をお届けするために評価にご協力ください。" + "</p>";//0 + "件の評価";
		            	else
		            		infoObj.innerHTML = "(0)";
		            }
		            
		            var servletURL = raterURL + 'php/rater.php';
					$(call).rater(servletURL, id, idDisp, {maxvalue:maxvalue, style: style, curvalue:0, readonly:readonly});
				}
	 		}
			else
			{
				var infoObj = document.getElementById(idDisp);
				if(infoObj)
					infoObj.innerHTML = "Loading...";
			}
	    }

		if(last_modified)
	　　	xmlHttpReq.setRequestHeader("If-Modified-Since", last_modified);
		xmlHttpReq.send(null);
	}
}

function requestRater2(id, idSrc, mode, maxvalue)
{
	var filename   = raterURL + 'php/average.php';
	var query      = 'id='+idSrc;
	var xmlHttpReq = createHttpRequest();
    xmlHttpReq.open("POST", filename, true);
    xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded'); 
    
    xmlHttpReq.onreadystatechange = function()
	{
		if(xmlHttpReq.readyState==4) 
		{
			var	style = 'basic';
			switch(mode)
			{
				case 0: style = 'basic';break;	// basic
				case 1: style = 'small';break;	// small
				case 2: style = 'inline';break;	// inline
				case 3: style = 'middle';break;	// middle 追加この行のみ
			}
	
			if(xmlHttpReq.status == 200)
			{
				var	result = xmlHttpReq.responseText;
				var	data   = result.split(":");
				var	count  = Number(data[0]);
				var	total  = Number(data[1]);
				
				var	raterObj = document.getElementById(id);
				var idDisp   = id + '_Disp';
				var infoObj  = document.getElementById(idDisp);
				
				var call    = '#' + id;
				var Average = total / count;
				if(infoObj)
	   				infoObj.innerHTML = "（" + count + "）";
				if(raterObj)
					$(call).rater('', id, idDisp, {maxvalue:maxvalue, style: style, curvalue:Average, readonly:1});
			}
			else
			{
				var	raterObj = document.getElementById(id);
				var idDisp   = id + '_Disp';
				var infoObj  = document.getElementById(idDisp);
				
				if(infoObj)
	   				infoObj.innerHTML = "取得できません。";
				if(raterObj)
					$(call).rater('', id, idDisp, {maxvalue:maxvalue, style: style, curvalue:0, readonly:1});
			}
		}
		else
		{
			var infoObj = document.getElementById(idDisp);
			if(infoObj)
				infoObj.innerHTML = "Loading...";
		}
	}
	
	if(last_modified)
　　	xmlHttpReq.setRequestHeader("If-Modified-Since", last_modified);
　　xmlHttpReq.send(query);
}

