//author : guiyj (evan_gui@163.com) on 2008.11.29

var gImagesUrl       = "http://images.mmosite.com/comment/";						//表态界面所用到的柱状图片服务器目录路径
var gImagesSmileUrl       = "http://images.mmosite.com/bbs/smile/";						//表态界面所用到的表情图片服务器目录路径
//var gDeclareSvcUrl   = "http://tp.91.com/declare/declare_attitude.php";	//表态服务器端程序url
var gDeclareSvcUrl   = "http://comment.mmosite.com/declare/declare_attitude.php";	//表态服务器端程序url
var gMaxVoteImageUrl = gImagesUrl + "pic6.gif";
var gCurPageUrl      = window.location.href.split(',');
var gCurPageTitle = document.getElementById('titlenameDiv').innerHTML;

gCurPageUrl = gCurPageUrl[0];

//定义表态项(控件id, 表态名， 表态小猪图片url, 表态柱状条图片url)
var aFieldsDesc = new Array();

aFieldsDesc[0] = ['f1', 'Agree', gImagesSmileUrl + '3.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[1] = ['f2', 'Disagree',   gImagesSmileUrl + '4.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[2] = ['f3', 'What?', gImagesSmileUrl + '8.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[3] = ['f4', 'Boring', gImagesSmileUrl + '18.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[4] = ['f5', 'Angry', gImagesSmileUrl + '19.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[5] = ['f6', 'Sad', gImagesSmileUrl + '13.gif', gImagesUrl + 'pic7.gif'];
aFieldsDesc[6] = ['f7', 'Interesting', gImagesSmileUrl + '5.gif', gImagesUrl + 'pic7.gif'];


function requestSvc(id, url, funcName) {
	if (typeof(funcName) == 'undefined') { funcName = 'callbackFunc'; } 
	url += '&func_name=' + funcName;
	oScript = document.getElementById(id);
	var head = document.getElementsByTagName("head").item(0);
	if (oScript) {
		head.removeChild(oScript);
	}
	oScript = document.createElement("script");
	oScript.setAttribute("src", url);
	oScript.setAttribute("id",id);
	oScript.setAttribute("type","text/javascript");
	oScript.setAttribute("language","javascript");
	head.appendChild(oScript);
	return oScript;
}

/**
 * 初始化表态投票环境（从服务器获取数据，显示界面）
 */
function initDeclAttitude(url) {
	if (typeof(url) != 'undefined') { gCurPageUrl = url; }
	if (document.readyState=="complete") {
		showDeclare();
	} else {
		setTimeout('showDeclare()', 500);
	}
}

/**
* 显示表态div
*/
function showDeclare() {
	try{
		createDeclareDiv();
		url = gDeclareSvcUrl + '?url=' + gCurPageUrl+'&title='+encodeURIComponent(gCurPageTitle);
		requestSvc('declareJs', url, 'processShowDeclare');
	}catch( err ){
		alert( "vote.js:showDeclare" + " | " + err.description );
	}
}
/**
 * 处理获取到的表态数据的显示
 */
function processShowDeclare(s) {
	var sJson = s.toString();
	eval("var oJson = " + sJson + ";");
	if (oJson.result == 'success') {
		var i;
		var iTotal = 0;
		var iId;
		var maxVoteNum = maxVoteNo = 0;
        var num = 0;
		var len   = aFieldsDesc.length;
	        	
		//计算总数
		for(var i = 0; i < len; i++) {
			iId = aFieldsDesc[i][0];		//固件投票柱壮图显示控间id名
            num = parseInt(eval('oJson.' + iId));
            if (num > maxVoteNum) { 
				maxVoteNo = i;
				maxVoteNum = num;
			}
			iTotal += num; 
		}
		aFieldsDesc[maxVoteNo][3] = gMaxVoteImageUrl;

		for(i = 0; i < len; i++) {
			iId = aFieldsDesc[i][0];		
			iCurNum = eval('oJson.' + iId);
			ShowDeclareList(iId, iCurNum, iTotal, i);
		}
		ShowDeclareList('digg', eval('oJson.digg'), iTotal);	//顶部分单独显示
		document.getElementById('totalDeclare').innerHTML = iTotal;
	} else {
		alert('error occured');
	}
}


//更新表态处理
function updateDeclare(declare_field) {
	try{
		if ('digg' == declare_field) {
			if ('true' == getCookie('diggYet' + gCurPageUrl)) {
				alert('You have digged.');
				return;
			}

			url = gDeclareSvcUrl + '?url=' + gCurPageUrl + '&declare_field=' + declare_field;
			requestSvc('declareJs', url, 'processUpdateDeclare');

			var sExpDate = getExpDate(24, 0, 0);
			setCookie('diggYet' + gCurPageUrl, 'true', sExpDate, '/');
		} else {
			var hasVoted = getCookie('declareYet' + gCurPageUrl);
			if (hasVoted == 'true') {
				alert('You have voted.');
				return;
			}

			url = gDeclareSvcUrl + '?url=' + gCurPageUrl + '&declare_field=' + declare_field;
			requestSvc('declareJs', url, 'processUpdateDeclare');

			var sExpDate = getExpDate(24, 0, 0);
			setCookie('declareYet' + gCurPageUrl, 'true', sExpDate, '/');
		}

		return;
	}catch( err ){
		alert( "vote.js:updateDeclare" + " | " + err.description );
	}
}

//更新表态数据后的显示处理
function processUpdateDeclare(s) {
	var sJson = s.toString();
	eval("var oJson = " + sJson + ";");
	if (oJson.result == 'success') {
		var i;
		var iTotal = 0;
		var iId;
		
		var maxVoteNum = maxVoteNo = 0;
        var num = 0;
		var len   = aFieldsDesc.length;
	        	
		//计算总数
		for(var i = 0; i < len; i++) {
			iId = aFieldsDesc[i][0];		//固件投票柱壮图显示控间id名
            num = parseInt(eval('oJson.' + iId));
            if (num > maxVoteNum) { 
				maxVoteNo = i;
				maxVoteNum = num;
			}
			iTotal += num; 
		}
		aFieldsDesc[maxVoteNo][3] = gMaxVoteImageUrl;
	
		for(i = 0; i < len; i++) {
			iId = aFieldsDesc[i][0];		
			iCurNum = eval('oJson.' + iId);
			ShowDeclareList(iId, iCurNum, iTotal, i);
		}
		ShowDeclareList('digg', eval('oJson.digg'), iTotal);	//顶部分单独显示
		document.getElementById('totalDeclare').innerHTML = iTotal;

		alert('Vote success,thank you for your participation.');
	} else {
		alert('error occured');
	}
	
}



//生成表态投票的html（注: 柱状条和投票人数的显示不包括在其中，只预留span用id标记）
function createDeclareDiv() {
	try{
		var inner = '';
		var sTr1  = sTr2 = sTr3 = sTr4 = '<tr>';
		var len   = aFieldsDesc.length;
		
		inner += '<div class="o_digg">';
		inner += '  <div class="o_digg_title">What is your feeling after reading this? (Totally <span id="totalDeclare" style="color:#FF6600"></span> people have joined)</div>';
		inner += '  <div class="o_digg_op">';
		
		inner += 		'<table width="100%" border="0" cellspacing="0" cellpadding="0">';
		for (var i = 0; i < len; i++) {
			sTr1 += 		'<td valign="bottom"><span id="' + aFieldsDesc[i][0] + '"></spna></td>';
			sTr2 += 		'<td><img src="' + aFieldsDesc[i][2] + '" /></td>';
			sTr3 += 		'<td>' + aFieldsDesc[i][1] + '</td>';
			sTr4 += 		'<td><input type="radio" name="radio" id="radio' + i + '" value="radio" onclick="updateDeclare(\'' + aFieldsDesc[i][0] + '\')"/></td>';
		}
		sTr1 +='</tr>';
		sTr2 +='</tr>';
		sTr3 +='</tr>';
		sTr4 +='</tr>';
		
		inner += sTr1 + sTr2 + sTr3 + sTr4;
		inner += 		'</table>';
		inner += 	'</div>';
		inner += '  <div class="o_digg_info"><div class="o_digg_info_cnt" onclick="javascript: updateDeclare(\'digg\');"><p class="num" id="digg"></p><p class="wd">Digg it</p></div></div>';
		inner += 	'<div class="clear"></div>';
		inner += '</div>';
		
		document.getElementById('declareDiv').innerHTML = inner;
		
	}catch( err ){
		alert( "declare.js:createDeclareDiv" + " | " + err.description );
	}
}

//显示某一单项的柱状条和投票人数
function ShowDeclareList(component_id, num, total, i) {
	try{
		var s = '';
		var h = 0;
		if (component_id == "digg"){  //顶 单独处理
			s += '<b>'+num+'</b> ';		
		} else {
			h = Math.floor( (num/total)*100 / 2 );
			s += num + '<br>';
			if( h != null && h != 0 )
				s += '<img src="' + aFieldsDesc[i][3] + '" width="20"  height="' + h + '" />';		
		}
		document.getElementById(component_id).innerHTML = s;
	}catch( err ){
//		alert( "declare.js:ShowDeclareList" + " | " + err.description );
	}
}


function callbackFunc(s) { }


function getExpDate(days, hours, minutes) {
    var expDate = new Date( );
    if (typeof days == "number" && typeof hours == "number" &&
        typeof hours == "number") {
        expDate.setDate(expDate.getDate( ) + parseInt(days));
        expDate.setHours(expDate.getHours( ) + parseInt(hours));
        expDate.setMinutes(expDate.getMinutes( ) + parseInt(minutes));
        return expDate.toGMTString( );
    }
}
  

// utility function called by getCookie( )
function getCookieVal(offset) {
    var endstr = document.cookie.indexOf (";", offset);
    if (endstr == -1) {
        endstr = document.cookie.length;
    }
    return unescape(document.cookie.substring(offset, endstr));
}

  

// primary function to retrieve cookie by name
function getCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i = 0;
    while (i < clen) {
        var j = i + alen;
        if (document.cookie.substring(i, j) == arg) {
            return getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return "";
}


// store cookie value with optional details as needed
function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape (value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path) ? "; path=" + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        ((secure) ? "; secure" : "");
}
  

// remove the cookie by setting ancient expiration date
function deleteCookie(name,path,domain) {
    if (getCookie(name)) {
        document.cookie = name + "=" +
            ((path) ? "; path=" + path : "") +
            ((domain) ? "; domain=" + domain : "") +
            "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

window.onload=function(){
	initDeclAttitude();
}




