﻿/*
调用方法：
<div id="voteformdiv"></div>  //定义一个要显示的层

<script type="text/javascript" src="../Javascript/VoteForm.js"></script>  // 引用JS类

<script type="text/javascript">
    var divobj = document.getElementById("voteformdiv");
    var voteformJson = [根据接口获取JSON格式数据  http://127.0.0.1:8700/WebService/VoteService.asmx];
    var voteform = new VoteForm(divobj, voteformJson);  //生成投票类对象
    voteform.Load();  //加载显示投票表单
</script>
*/


//生成投票表单的类
function VoteForm(divobj, formJson) {
    this.Load = function() {
        var form = document.createElement("form");
        form.setAttribute("id", "vote" + formJson.VgId);
        form.setAttribute("name", "vote" + formJson.VgId);
        form.setAttribute("target", "_blank");
        form.setAttribute("method", formJson.FormMethod);
        form.setAttribute("action", formJson.FormAction);
        form.onsubmit = function() {
            var formobj = this;
            var result = false;
            var rcobjname = "";  //上一个单选钮或多选钮的name值

            for (var i = 0; i < formobj.elements.length; i++) {
                var obj = formobj.elements[i];

                if (obj.type.toLowerCase() == "radio" || obj.type.toLowerCase() == "checkbox") {
                    //如果不为空则说明不是表单中第一个radio元素或checkbox元素
                    if (rcobjname != "") {
                        //如果不相等，则说明是另一组radio元素或checkbox元素开始检测
                        if (rcobjname != obj.name) {
                            //如果result=true，则说明之前一组radio元素或checkbox元素已经被用户选中，开始检测当这一组
                            if (result) {
                                rcobjname = obj.name;
                                result = obj.checked;
                            }
                            //如果result=false，则说明之前一组radio元素或checkbox元素未被用户选中，退出循环，提示用户
                            else
                                break;
                        }
                        //如果相等，则说明是同一组radio元素或checkbox元素
                        else {
                            //如果result=true，则说明该组已被选中过，不进行判断，跳过该循环进入下一循环
                            if (result)
                                continue;
                            //否则进行判断是否被用户选中
                            else
                                result = obj.checked;
                        }
                    }
                    //如果为空则说明是表单中第一个radio元素或checkbox元素
                    else {
                        rcobjname = obj.name;
                        result = obj.checked;
                    }
                }
            }

            if (!result)
                alert("提交失败！请确定每项是否都进行了选择！");

            return result;
        }

        var vmlist = formJson.VmList;
        for (var i = 0; i < vmlist.length; i++) {
            form.innerHTML += "<div class=\"voteTitle\">" + vmlist[i].VmTitle + "</div><ul class=\"voteItem\">$licont$</ul>";
            var licont = "";
            for (var j = 0; j < vmlist[i].ViList.length; j++) {
                licont += "<li>" + vmlist[i].ViList[j] + "</li>";
            }
            form.innerHTML = form.innerHTML.replace("$licont$", licont);
        }
        form.innerHTML += formJson.HiddenInput;

        //增加投票和查看按钮
        var submitdiv = document.createElement("div");
        submitdiv.className = "formbtndiv";
        var submitbtn = document.createElement("input");
        submitbtn.setAttribute("id", "Submit" + formJson.VgId);
        submitbtn.setAttribute("type", "submit");
        submitbtn.setAttribute("value", "投票");
        submitbtn.className = "voteSub";
        var inputbtn = document.createElement("input");
        inputbtn.setAttribute("id", "Button" + formJson.VgId);
        inputbtn.setAttribute("type", "button");
        inputbtn.setAttribute("value", "查看");
        inputbtn.className = "voteBtn";
        inputbtn.onclick = function() {
            //window.open('http://172.16.21.184:8700/VoteResult.aspx?gid=' + formJson.VgId, formJson.VgTitle);
            window.open(formJson.VoteResultUrl, "东方财富网投票结果");
        }
        submitdiv.appendChild(submitbtn);
        submitdiv.appendChild(inputbtn);

        form.appendChild(submitdiv);


        divobj.appendChild(form);
    }
}

