    function ChecklistCookie(document, name) {
        this.$document = document;//HTML DOCUMENT
        this.$name = name;
        this.$expiration = new Date((new Date()).getTime() + 3600000);
        
        this.load = 
            function() {
                var allCookies = this.$document.cookie;

                if (allCookies == "") return;
                
                var start = allCookies.indexOf(this.$name + '=');
                if (start == -1) return; //Cookie未設定
                start += this.$name.length + 1;
                
                var end = allCookies.indexOf(';', start);
                if (end == -1) end = allCookies.length; //予期せぬ形式
                
                var cookieval = allCookies.substring(start, end);
                
                var checklist = cookieval.split('&');
                for (var i = 0; i < checklist.length; i++) {
                    var checkElement = checklist[i].split(":");
                    
                    //cookieには「id名 :(0|1)」という形式で入っているはずなのでそれをドキュメントに戻す
                    if (checkElement.length < 2 || this.$document.getElementById(checkElement[0]) == null) {
                        //対応する要素は見つからなかった
                        continue;
                    }

                    this.$document.getElementById(checkElement[0]).checked = (checkElement[1] == 'true');
                    this[checkElement[0]] = checkElement[1];
                }
            }
            
        this.store = 
            function() {
                var cookieval = "";
                for (var prop in this) {
                    if (prop.charAt(0) == '$' || (typeof this[prop]) == 'function') {
                        //内部変数と関数は無視
                        continue;
                    }
                    
                    if (cookieval != "") {
                        cookieval += "&";
                    }
                    
                    cookieval += prop + ":" + this[prop];
                }
                
                var cookie = this.$name + '=' + cookieval;
                cookie += '; expires=' + this.$expiration.toGMTString();
                
                this.$document.cookie = cookie;
            }
        
        this.remove =
            function() {
                this.$document.cookie = this.$name + '= ; expires=Fri, 02-Jan-1970 00:00:00 GMT';
            }
    }
