if (!dojo)
{
	alert('需要DOJO的支持！先引用DOJO');
}

//dojo.require("dojo.io.*");
//dojo.require("dojo.html.*");

dojo.addOnLoad(function (){
	//dojo.require("dojo.json");
	//dojo.require("dojo.io.*");
	dojo.require("dojo.io.IframeIO");
	dojo.require("dojo.io.ScriptSrcIO");
	dojo.require("dojo.string.extras");
	});

function formSubmit(formId, voteid, returnUrl, noSelectMsg, successMsg) {
	
	if (!dojo.byId(formId) || !dojo.byId(formId).elements['vote[]'])
	{
		alert('请为投票项增加name="vote[]"');
		return false;
	}
	
	var selected = false;
	
	if (!(dojo.byId(formId).elements['vote[]'].length)) {
		if (dojo.byId(formId).elements['vote[]'].checked == true)
		{
			selected = true;
		}
	} else {
		for (var i=0; i<dojo.byId(formId).elements['vote[]'].length; i++)
		{
			if (dojo.byId(formId).elements['vote[]'][i].checked == true)
			{
				selected = true;
			}
		}
	}

	if (selected == false)
	{
		alert((!noSelectMsg)?'请选择投票选项':noSelectMsg);
		return false;
	}
	
	//为了提交不报错
	dojo.io.IframeTransport.iframeOnload=function(){};

	var request = 
	dojo.io.bind (
		{
			url: 'http://app5.dayoo.com/vote/vote.php?id='+voteid,
			mimetype: "text/html",
			transport: "IframeTransport",
			//适应IE，FF的处理
			//transport: dojo.render.html.ie?"":"IframeTransport",
			formNode: dojo.byId(formId),
			error:function(type, error){alert('提交处理失败'+type+' ERROR:'+error);}
			//,handler: callBack
		}
	);

	function callBack(type, data, evt) {
		if (dojo.byId('vote_result')) dojo.byId('vote_result').innerHTML = data;
		//alert(type);
	}

	//成功
	if (dojo.lang.isFunction(successMsg)){
		successMsg();
	} else {
		alert((!successMsg)?'你的投票已经提交， 谢谢你的参与！':successMsg);
	}
	if(returnUrl) window.location = returnUrl;
	return false;
}

function _call(array){
	if (dojo.lang.isArray(array)){
		for(var i=0;i<array.length;i++) array[i]();
	} else if (dojo.lang.isFunction(array)) {
		array();
	} else {
		return false;
	}
}

function initResult(voteid, resultType, url, callbackArray, extendsKw){
	
	var kw = _bindKw(voteid, resultType, url, callbackArray, extendsKw);

	dojo.addOnLoad(
		function () {
			dojo.io.bind(kw);
		}
	);

}

function loadResult (voteid, resultType, url, callbackArray, extendsKw){
	var kw = _bindKw(voteid, resultType, url, callbackArray, extendsKw);
	dojo.io.bind(kw);
}

function _bindKw (voteid, resultType, url, callbackArray, extendsKw){
	var kw;
	if (resultType == 'XML')
	{
		if (!url)
		{
			//默认的url
			url = '/include/php/get_vote_xml.php';
		}

		kw = {
			url: url+'?id='+voteid+'&stamp='+(new Date()*1),
			load: function(type, data, evt){initBallotFromXML(type, data, evt);_call(callbackArray)},
			error: function(){alert('处理失败');},
			mimetype: "text/xml"
		};
	} else {
		dojo.require("dojo.io.ScriptSrcIO");
		kw = {
			url: "http://app5.dayoo.com/vote/result_json.php?id="+voteid+'&stamp='+(new Date()*1),
			transport: "ScriptSrcTransport",
			jsonParamName: "callback",
			load: function(type, json, evt){try{initBallotFromJSON(type, json, evt);_call(callbackArray)} catch(e){return;}},
			//timeout: function (){alert('timeout');},
			timeoutSeconds: 15,
			//error:function(type, error){alert('处理失败'+type+' ERROR:'+error.message);},
			mimetype: "text/javascript"
		};
	}
	
	if (!extendsKw){
		extendsKw = {};
	}
	
	dojo.lang.mixin(kw, extendsKw);
	
	return kw;
}


function initBallotFromXML(type, data, evt){

	if(data.getElementsByTagName('item').length > 0){

		for (var i=0; i<data.getElementsByTagName('item').length; i++)

		{

			var ballot = parseInt(data.getElementsByTagName('item')[i].getAttribute('item_count'));

			var objectid = data.getElementsByTagName('item')[i].getAttribute('object_id');

			_resultProcess(objectid, ballot);

		}
		
		_resultItem();

	}

}

function initBallotFromJSON(type, json, evt){

	if(json){

		for(var key in json) {
			var ballot = parseInt(json[key]);

			var objectid = key;

			_resultProcess(objectid, ballot);
		}
		
		_resultItem();

	}

}


//设object_id的票数
function _resultProcess(objectid, ballot){
	if (isNaN(ballot))
	{

		ballot = 0;

	}
	
	if (document.getElementById('result_'+objectid))

	{

		var itemVote = parseInt(dojo.dom.textContent(dojo.html.getElementsByClass('result_num', document.getElementById('result_'+objectid))[0]));
		

		if (isNaN(itemVote))

		{

			itemVote = 0;

		}

		dojo.dom.textContent(dojo.html.getElementsByClass('result_num', document.getElementById('result_'+objectid))[0], (ballot+itemVote));
	}
}

//设置票数和长度条的显示
function _resultItem(){
	
	var total = 0;
	
	var elements = dojo.html.getElementsByClass('result_item', document.getElementById('result_sort_elements'));

	for (var i=0; i<elements.length; i++)

	{
		var result_element = dojo.html.getElementsByClass('result_num', elements[i]);

		var item = parseInt(dojo.dom.textContent(result_element[0]));

		if (isNaN(item))

		{

			item = 0;
		}

		total += item;

	}

	for (var i=0; i<elements.length; i++)

	{
		var result_element = dojo.html.getElementsByClass('result_num', elements[i]);

		var item = parseInt(dojo.dom.textContent(result_element[0]));

		if (isNaN(item))

		{

			item = 0;

			_setResultNum(result_element, item);
		}

		_setResultBar(dojo.html.getElementsByClass('result_bar', elements[i]), item, total);

	}
	
	//排序
	if (document.getElementById('result_sort_elements'))
	{
		elementSort(document.getElementById('result_sort_elements'));
	}
	//END 排序
}


//设置票数的显示
function _setResultNum(elements, num) {
	for (var i = 0; i < elements.length; i++)
	{
		dojo.dom.textContent(elements[i], num);
	}
}

//设置长度条的显示
function _setResultBar(elements, num, total, attribute) {
	if (!attribute)
	{
		attribute = 'width';
	}

	for (var i = 0; i < elements.length; i++)
	{
		elements[i].setAttribute(attribute, (parseInt(num/total*100))+'%');
	}
}



//排序

function elementSort(e){

	if (e.tagName.toLowerCase() == 'table')
	{
		//table下还有tbody!
		e = e.firstChild;

	}
	/*
	else if (e.tagName.toLowerCase() != 'ul')
	{
		return false;
	}
	*/

	

	var list = [];

    for(var x = e.firstChild; x != null; x = x.nextSibling) {

		if (x.nodeType == 1 /* Node.ELEMENT_NODE */) list.push(x);

	}
	
	list.sort(

		function(a, b){
			return -(parseInt(dojo.dom.textContent(dojo.html.getElementsByClass('result_num', a)[0])) - parseInt(dojo.dom.textContent(dojo.html.getElementsByClass('result_num', b)[0])));

		}

	)



	for(var i = 0; i < list.length; i++) e.appendChild(list[i]);



}



function xyUriCheckBoxTrans (elementId) {
	var object = dojo.byId(elementId);
	if (!object)
	{
		return false;
	}

	var element_a = dojo.html.getElementsByClass('vote_item_link', object);
	var element_input = dojo.html.getElementsByClass('vote_item_input', object);

	if (element_a.length != element_input.length)
	{
		alert('a与input的数目不匹配, '+element_a.length+' : '+element_input.length);
		return false;
	}

	for (var i=0; i<element_a.length; i++)
	{
		element_input[i].value = element_a[i].href.substring(element_a[i].href.indexOf("content_") + 8, element_a[i].href.lastIndexOf(".htm"));
	}
}

function xyUriResultIdTrans (elementId) {
	var object = dojo.byId(elementId);
	if (!object)
	{
		return false;
	}

	var element_a = dojo.html.getElementsByClass('vote_item_link', object);
	var element_item = dojo.html.getElementsByClass('result_item', object);

	if (element_a.length != element_item.length)
	{
		alert('a与item的数目不匹配, '+element_a.length+' : '+element_item.length);
		return false;
	}

	for (var i=0; i<element_a.length; i++)
	{
		element_item[i].id = 'result_' + element_a[i].href.substring(element_a[i].href.indexOf("content_") + 8, element_a[i].href.lastIndexOf(".htm"));
	}
}

function limitNum(formId,min,max) {
	if (!dojo.byId(formId) || !dojo.byId(formId).elements['vote[]'])
	{
		alert('请为投票项增加name="vote[]"');
		return false;
	}
	
	var selected = 0;

	for (var i=0; i<dojo.byId(formId).elements['vote[]'].length; i++)
	{
		if (dojo.byId(formId).elements['vote[]'][i].checked == true)
		{
			selected++;
		}
	}
	
	if (min > selected) {
		return -1;
	}else if (max < selected) {
		return 1;
	}else {
		return true;
	}
}

/*
根据模板替换成目标代码
%{ITEM_ID}
%{VOTE_ID}

方便扩展
*/
function vote_tpl_factory (itemid, voteid, tpl){
	return dojo.string.substituteParams(tpl, {'ITEM_ID':itemid, 'VOTE_ID':voteid});
}


/*
取得指定的投票id的组合
*/
function getVoteItem(form, name){
	var nodes = dojo.byId(form).elements[name];
	var item = [];
	dojo.lang.forEach(nodes, function(node){item.push(node.value);});
	return item;
}
