var checkboxHeight = "12";
var radioHeight    = "12";
var selectWidth    = "190";
var form           = null;
var listGroups     = null;


document.write('<style type="text/css">input.styled { display: none; } select.styled { position: relative; width: ' + selectWidth + 'px; opacity: 0; filter: alpha(opacity=0); z-index: 5;} .disabled { opacity: 0.5; filter: alpha(opacity=50); }</style>');

var Custom = {  
	
   // alert("alert");
	init: function() {
		var inputs = document.getElementsByTagName("input"), span = Array(), textnode, option, active;    
		
		
		for(a = 0; a < inputs.length; a++) {
			if((inputs[a].type == "checkbox")/* || inputs[a].type == "radio") && inputs[a].className == "styled"*/) {
				span[a] = document.createElement("span");
				span[a].className = "custom-" + inputs[a].type;
                 //alert("alert");  
				if(inputs[a].checked == true) {
					if(inputs[a].type == "checkbox") {
						position = "0 -" + (checkboxHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					} else {
						position = "0 -" + (radioHeight*2) + "px";
						span[a].style.backgroundPosition = position;
					}
				}

				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				inputs[a].onchange = Custom.clear;
				if(!inputs[a].getAttribute("disabled")) {
					span[a].onmousedown = Custom.pushed;
					span[a].onmouseup = Custom.check;
				} else {
					span[a].className = span[a].className += " disabled";
				}
			}
		}
		/*inputs = document.getElementsByTagName("select");
		for(a = 0; a < inputs.length; a++) {
			if(inputs[a].className == "styled" || true) {
				option = inputs[a].getElementsByTagName("option");
				active = option[0].childNodes[0].nodeValue;
				textnode = document.createTextNode(active);
				for(b = 0; b < option.length; b++) {
					if(option[b].selected == true) {
						textnode = document.createTextNode(option[b].childNodes[0].nodeValue);
					}
				}
				span[a] = document.createElement("span");
				span[a].className = "select";
				span[a].id = "select" + inputs[a].name;
				span[a].appendChild(textnode);
				inputs[a].parentNode.insertBefore(span[a], inputs[a]);
				if(!inputs[a].getAttribute("disabled")) {
					inputs[a].onchange = Custom.choose;
				} else {
					inputs[a].previousSibling.className = inputs[a].previousSibling.className += " disabled";
				}
			}
		}*/
		document.onmouseup = Custom.clear;
	},
	pushed: function() {
		element = this.nextSibling; 
	   // alert(element);
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight*3 + "px";
		} else if(element.checked == true && element.type == "radio") {
			this.style.backgroundPosition = "0 -" + radioHeight*3 + "px";
		} else if(element.checked != true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 -" + checkboxHeight + "px";
		} else {
			this.style.backgroundPosition = "0 -" + radioHeight + "px";
		}

		updateFilter(element);  
	},
	check: function() {
		if(element.checked == true && element.type == "checkbox") {
			this.style.backgroundPosition = "0 0";
			element.checked = false;
			form.submit();
		} else {
			if(element.type == "checkbox") {
				this.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else {
				this.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
				group = this.nextSibling.name;
				inputs = document.getElementsByTagName("input");
				for(a = 0; a < inputs.length; a++) {
					if(inputs[a].name == group && inputs[a] != this.nextSibling) {
						inputs[a].previousSibling.style.backgroundPosition = "0 0";
					}
				}
			}    
			
			element.checked = true;
			updateFilter(element);
		}
	},
	clear: function() {
		inputs = document.getElementsByTagName("input");
		for(var b = 0; b < inputs.length; b++) {
			if(inputs[b].type == "checkbox" && inputs[b].checked == true/* && inputs[b].className == "styled"*/) {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";
			} else if(inputs[b].type == "checkbox" && inputs[b].className == "styled") {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			} else if(inputs[b].type == "radio" && inputs[b].checked == true/* && inputs[b].className == "styled"*/) {
				inputs[b].previousSibling.style.backgroundPosition = "0 -" + radioHeight*2 + "px";
			} else if(inputs[b].type == "radio"/* && inputs[b].className == "styled"*/) {
				inputs[b].previousSibling.style.backgroundPosition = "0 0";
			}
		}
	},
	choose: function() {
		option = this.getElementsByTagName("option");
		for(d = 0; d < option.length; d++) {
			if(option[d].selected == true) {   
				//  alert("click");  
				document.getElementById("select" + this.name).childNodes[0].nodeValue = option[d].childNodes[0].nodeValue;
			}
		}
	}
}

var Cookie = {
  data: {},
  options: {expires: 1, domain: "", path: "", secure: false},

init: function(options, data) {
  Cookie.options = Object.extend(Cookie.options, options || {});

  var payload = Cookie.retrieve();
        if(payload) {
            Cookie.data = payload.evalJSON();
        }
        else {
            Cookie.data = data || {};
        }
        Cookie.store();
    },
    getData: function(key) {
        return Cookie.data[key];
    },
    setData: function(key, value) {
        Cookie.data[key] = value;
        Cookie.store();
    },
    removeData: function(key) {
        delete Cookie.data[key];
        Cookie.store();
    },
    retrieve: function() {
        var start = document.cookie.indexOf(Cookie.options.name + "=");

        if(start == -1) {
            return null;
        }
        if(Cookie.options.name != document.cookie.substr(start, Cookie.options.name.length)) {
            return null;
        }

        var len = start + Cookie.options.name.length + 1;
        var end = document.cookie.indexOf(';', len);

        if(end == -1) {
            end = document.cookie.length;
        }
        return unescape(document.cookie.substring(len, end));
    },
    store: function() {
        var expires = '';

        if (Cookie.options.expires) {
            var today = new Date();
            expires = Cookie.options.expires * 86400000;
            expires = ';expires=' + new Date(today.getTime() + expires);
        }

        document.cookie = Cookie.options.name + '=' + escape(Object.toJSON(Cookie.data)) + Cookie.getOptions() + expires;
    },
    erase: function() {
        document.cookie = Cookie.options.name + '=' + Cookie.getOptions() + ';expires=Thu, 01-Jan-1970 00:00:01 GMT';
    },
    getOptions: function() {
        return (Cookie.options.path ? ';path=' + Cookie.options.path : '') + (Cookie.options.domain ? ';domain=' + Cookie.options.domain : '') + (Cookie.options.secure ? ';secure' : '');
    }
};

function getEventSource(e)
{
	if (!e) e = window.event;

	if (e.originalTarget)

		return e.originalTarget;

	else if (e.srcElement)

	return e.srcElement;
}

Event.observe(window, "load", function () {   
	
 	form = $("filter-form");

	if (form) {
 		var inputs = form.getElementsByTagName("input");
 
	 	for (var i = 0; input = inputs.item(i); i ++) {
	 		if (input.getAttribute("type") == "checkbox") { 			
	 			Event.observe(input, "click", function () { 
				    
	 	            if (this.checked) { 
	 					this.addClassName("checked");
	 				}
 	
					updateFilter(this);
	 			});
 	 		}
	 	}
 		
	 	// var elems = document.getElementsByTagName("img"); 
	 	//   //   alert("oh");   
	 	// 
	 	// for( var e = 0; elem = elems.item(e); e++) {    
	 	// 	
	 	// 	// elem.fade({ duration: 1, from: 0, to: 1 });
	 	// 	
	 	// 	//if( elem)
	 	//                                         // alert(e); 
	 	//    // Event.observe( elem, 'click', function() { Effect.toggle( elem, 'blind');} } ) 
	 	// }
	 	// /*for (var a = 0; elem = elems.item(a); a ++) { 
	 	// {   
	 	// 	 //alert(a);
	 	//      Event.observe( elem, 'click', function () { alert( "oh" ); } )      
	 	//  }  */
	 	// 
	 	//  
	 	// //alert(fields.item);
	 	//    // 
	 	//    // Event.observe( $('.field-row'), 'click', function () { alert( this ); } )
	 	// 
 
	 	listGroups = form.getElementsByTagName("span");

	 	for (var i = 0; group = listGroups.item(i); i ++) {
	 		var label = group.getElementsByTagName("label").item(0);
 	
	 		Event.observe(label, "click", function (e) { 
				  
	 			var label = getEventSource(e);
	 			var list  = label.parentElement.getElementsByTagName("ul").item(0);
               
	 			Effect.toggle(list, "blind", {duration: 0.5});
 	
	 			if (list.style.display == "none") {
					Cookie.setData(label.getAttribute("for"), false);
	 				$(label).removeClassName("closed");
	 			} else {
					Cookie.setData(label.getAttribute("for"), true);
	 				$(label).addClassName("closed");
	 			}
	 		});
	 	}
 	
	 	Custom.init();

		Cookie.init({name: "filter", expires: 30});

		for (var key in Cookie.data) {
			if (key.substring(0, 6) == "filter") {
				for (var i = 0; i < groups.length; i ++) {
					var group = groups[i];
					var label = group.getElementsByTagName("label").item(0);
					if (label && label.getAttribute("for") == key) {
	 					var list = group.getElementsByTagName("ul").item(0);
						if (Cookie.data[key]) {
							$(label).addClassName("closed");
							list.style.display = "none";
							list.style.overflowX = "visible";
							list.style.overflowY = "visible";
						}
					}
				}
			}
		}
	}
});

function updateFilter(element)
{
	var group = element.parentNode.parentNode.parentNode;
   // alert(listGroups.item(0));
	if (group == listGroups.item(0)) {
		var inputs = group.getElementsByTagName("input");

		for (var i = 0; input = inputs.item(i); i ++) {
			input.checked = false;
			input.previousSibling.style.backgroundPosition = "0 0";
		}

		window.setTimeout(function () {
			element.checked = true;
			element.previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";	 
			
			form.submit();  
		}, 250);
		
		 
	}
	else {   
	    	 window.setTimeout(function () {
			   // element.checked = true;
				//element.previousSibling.style.backgroundPosition = "0 -" + checkboxHeight*2 + "px";	 

				form.submit();  
			}, 250);
	   // form.submit();  
	}
}

