/**************************************************************************/
/*    	感受投票
/*		南方新闻网 2008.11
/**************************************************************************/
document.domain="southcn.com";
/* 类定义 */
function ScMoodPoll(){
	var _this = this;		/* this 指针，私有 */
	var ObjId;				/* 本实例的编号，用于区别多个实例同时应用 */
	var prContainer;		/* 细览页面上用于放置该感受投票模板的容器ID */
	var prTitle;			/* 文档标题 */
	var prUrl;				/* 文档地址 */
	var prSkin;				/* 使用的皮肤 */
	var prTemplate;			/* 使用的模板 */
	var configUrl = "http://moodpoll.southcn.com";	/* 后台(PHP程序)部署地址(拟定) */
	var defaultSkinUrl = "http://www.southcn.com/public/ria/moodpoll/skin/default/default.css";	/* 默认皮肤地址 */
	var defaultTemplateUrl = "http://moodpoll.southcn.com/template/default.htm";	/* 默认模板地址 */

	/* 通过ajaxproxy代理返回Ajax对象,ajaxproxy部署在后台服务器上，解决ajax跨域问题 */
	var InitAjax = function(){
		var ajax = false;
		try{
			ajax = document.getElementById("ajaxproxy_" + ObjId).contentWindow.InitAjax();
		}catch(e){
			alert("无法加载感受投票部件！");
			return null;
		}
		return ajax;
	};
	
	/*  初始化函数 */
	_this.Init = function(_prObjId,_prContainer,_prTitle,_prUrl,_prSkin,_prTemplate){
		ObjId = _prObjId;
		prContainer 	=     (_prContainer == null)?"conMoodPollBox":_prContainer;
		prSkin 			=     (_prSkin == null)?defaultSkinUrl:_prSkin;
		prTemplate		=     (_prTemplate == null)?defaultTemplateUrl:_prTemplate;
		/* 如果标题未指定，自动获得本文标题 */
		if(_prTitle == null)	prTitle = document.getElementById("ScDetailTitle").innerHTML;
		else	prTitle = _prTitle;
		/* 如果文档地址未指定，自动获得本文地址 */
		if(_prUrl == null)		prUrl = location.href;
		else	prUrl = _prUrl;
		/* 加载ajax代理 */
		document.write("<iframe src='" + configUrl + "/ajaxproxy.php?objid=" + ObjId + "' width='0' height='0' frameborder='0' id='ajaxproxy_" + ObjId + "'></iframe>");
	};
	
	/* 内部初始化,在AJAX代理加载完成后由代理启动该进程 */
	_this.Init_2 = function(){
		/* 加载模板 */
		var ajax = InitAjax();
		ajax.open("GET",prTemplate,true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					/* 往容器中写入模板内容，出现页面效果 */
					document.getElementById(prContainer).innerHTML = ajax.responseText;	
					/* 修改模板的所有元素id，加后缀，以避免在多实例应用时id冲突 */
					document.getElementById("ScMoodPoll").setAttribute("id","ScMoodPoll_" + ObjId); 
					document.getElementById("ScMoodPollMenu").setAttribute("id","ScMoodPollMenu_" + ObjId); 
					document.getElementById("ScMoodPollTitle").setAttribute("id","ScMoodPollTitle_" + ObjId); 
					document.getElementById("ScMoodPollUrl").setAttribute("id","ScMoodPollUrl_" + ObjId); 
					document.getElementById("ScNewsMoodList").setAttribute("id","ScNewsMoodList_" + ObjId); 
					document.getElementById("ScMoodRankList").setAttribute("id","ScMoodRankList_" + ObjId); 
					/* 加载模板完成，继续其他初始化 */
					/* 加载皮肤 */
					_this.LoadSkin(prSkin);				
					/* 加载投票选项 */
					_this.LoadOptions();					
					/* 将Url保存在隐藏域中 */
					document.getElementById("ScMoodPollUrl_" + ObjId).value = prUrl;
					/* 将Title保存在隐藏域中 */
					document.getElementById("ScMoodPollTitle_" + ObjId).value = prTitle;
					/* 加载参与人数 */
					_this.GetMoodCount();
				}
			}
		}
		ajax.send(null);	
	};
	
	/* 加载皮肤CSS文件 */
	_this.LoadSkin = function(cssFile){
		if(window.navigator.userAgent.indexOf("MSIE")>=1){
			//如果浏览器为IE	  
			document.createStyleSheet(cssFile);
		}else if(window.navigator.userAgent.indexOf("Firefox")>=1){
			//如果浏览器为Firefox
			var objCSS = document.createElement('link');
			objCSS.rel = "stylesheet";
			objCSS.href = cssFile;
			objCSS.type = "text/css";
			document.body.appendChild(objCSS);
		}
	};
	
	/* 提交投票 */
	_this.ScMoodPollMe = function(idx){
		var url = encodeURIComponent(document.getElementById("ScMoodPollUrl_" + ObjId).value);
		var title = encodeURIComponent(document.getElementById("ScMoodPollTitle_" + ObjId).value);
		var ajax = InitAjax();
		var timestamp = Date.parse(new Date());
		ajax.open("GET",configUrl + "/ajax/submit.php?r=" + timestamp + "&id=" + idx + "&url=" + url + "&title=" + title,true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					if(ajax.responseText){
						_this.HideMoodPollMenu();
						_this.LoadMoodList();
						_this.LoadMoodRankList();
					}
				}
				
			}
		}
		ajax.send(null);
	};
	
	/* 加载当前使用的投票表情选项 */
	_this.LoadOptions = function(){
		var ajax = InitAjax();
		ajax.open("GET","ScMoodPollMenu.htm",true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					var str = ajax.responseText;
					var re = /ScMoodPollMe/g;
					var str2 = str.replace(re,"ScMoodPollObj[" + ObjId + "].ScMoodPollMe");
					var re = /ScMoodPollDesc/g;
					var str3 = str2.replace(re,"ScMoodPollDesc_" + ObjId);
					/* 显示投票选项 */
					document.getElementById("ScMoodPollMenu_" + ObjId).innerHTML = str3;
				}
			}
		}
		ajax.send(null);	
	};
	
	/* 显示投票结果，默认为隐藏 */
	_this.ShowMoodList = function(){
		var idl = eval("document.getElementById('ScNewsMoodList_" + ObjId + "')");
		idl.style.display = "block";
	};
	
	/* 显示心情排行，默认为隐藏 */
	_this.ShowMoodRankList = function(){
		var idl = eval("document.getElementById('ScMoodRankList_" + ObjId + "')");
		idl.style.display = "block";
	};
	
	/* 投票以后，隐藏选项 */
	_this.HideMoodPollMenu = function(){
		var idl = eval("document.getElementById('ScMoodPollMenu_" + ObjId + "')");
		idl.style.display = "none";
	}
	
	/* 加载投票结果 */
	_this.LoadMoodList = function(){
		var url = encodeURIComponent(document.getElementById("ScMoodPollUrl_" + ObjId).value);
		var ajax = InitAjax();
		var timestamp = Date.parse(new Date());
		ajax.open("GET",configUrl +"/ajax/load_mood_list.php?url=" + url + "&r=" + timestamp,true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					/* 显示投票结果 */
					document.getElementById("ScNewsMoodList_" + ObjId).innerHTML = ajax.responseText;	
					_this.ShowMoodList();
				}
			}
		}
		ajax.send(null);	
	};
	
	/* 取得参与投票的总人数 */
	_this.GetMoodCount = function(){
		var url = encodeURIComponent(document.getElementById("ScMoodPollUrl_" + ObjId).value);
		var ajax = InitAjax();
		var timestamp = Date.parse(new Date());
		ajax.open("GET",configUrl +"/ajax/get_mood_count.php?url=" + url + "&r=" + timestamp,true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					/* 显示参与人数 */
					document.getElementById("ScMoodPollDesc_" + ObjId).innerHTML = "<a href='http://moodpoll.southcn.com/index.php' target='_blank' title='点击查看心情排行'>请选择您看此新闻的心情( " +  ajax.responseText + "人参与)：[心情排行]</a>";	
				}
			}
		}
		ajax.send(null);	
	};
	
	/* 加载心情排行 */
	_this.LoadMoodRankList = function(){
		var url = encodeURIComponent(document.getElementById("ScMoodPollUrl_" + ObjId).value);
		var ajax = InitAjax();
		var timestamp = Date.parse(new Date());
		ajax.open("GET",configUrl +"/ajax/load_mood_rank_list.php?r=" + timestamp,true); 
		ajax.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
		ajax.onreadystatechange = function() {
			if (ajax.readyState == 4) { 
				if(ajax.status == 200){
					/* 显示心情排行 */
					document.getElementById("ScMoodRankList_" + ObjId).innerHTML = ajax.responseText;	
					_this.ShowMoodRankList();
				}
			}
		}
		ajax.send(null);	
	};
}

/* 动态数组解决一个页面应用多个实例的需要 */
var ScMoodPollCount;	/* 计数器 */
var ScMoodPollObj = new Array();	/* 实例数组(动态) */
ScMoodPollCount = 0;
function InitScMoodPollBox(_prContainer,_prTitle,_prUrl,_prSkin,_prTemplate){
	if(typeof(SCNOMOODPOLL)!='undefined'){
		if(SCNOMOODPOLL)
			return;
	}
	if(!document.getElementById(_prContainer))
		return;
	ScMoodPollObj[ScMoodPollCount] = new ScMoodPoll();
	ScMoodPollObj[ScMoodPollCount].Init(ScMoodPollCount,_prContainer,_prTitle,_prUrl,_prSkin,_prTemplate);
	ScMoodPollCount ++;
}
