//+ Carlos R. L. Rodrigues
//@ http://jsfromhell.com/forms/style [v1.4]

FormStyle = function(f){
    var o = this, lb = document.getElementsByTagName("label");
    o.f = [], o.c = o.u = o.ch = o.uh = "", o.img = function(r, f, idx){
        var i = new Image, s = f.style;
        i.title = f.title, f._img = i;
        s.position = "absolute", s.left = -(screen.width + document.documentElement.scrollHeight) + "px";
		var c = o.c[idx % o.l], cc = o.cc[idx % o.l],
			uc = o.uc[idx % o.l], u = o.u[idx % o.l],
			ch = o.ch[idx % o.l], uh = o.uh[idx % o.l];
		i.src = r ? c : u;
        var md = function(e){
            (e.key == 9 && (o._c = 1)) || ((e.key == 32 || (e.button || e.key == 1)) &&
            (f._img.src = f.checked ? cc || c : uc || u));
        },
        mv = function(){f._img.src = f.checked ? ch || c : uh || u;},
        mo = function(){
            var i = f._img;
            i.src = f.checked ? i.src.indexOf(cc) > -1 && !o._c ? cc : c :
            i.src.indexOf(uc) > -1 && !o._c ? uc : u, o._c = 0;
        };
        for(var l = lb.length; l--;)
            if(f.id == lb[l].htmlFor && !(addEvent(lb[l], "mousedown", md), addEvent(lb[l], "keydown", md),
                addEvent(lb[l], "mouseover", mv), addEvent(lb[l], "mouseout", mo))) break;
        i.onclick = function(){f.click();};
        return addEvent(f, "click", function(){
            var f = this;
            if(/radio/i.test(f.type))
                for(var e = f.form[f.name], j = e.length; j--; e[j]._img.src = o.u[j % o.l]);
            return f._img.src = f.checked ? c : u;
        }), addEvent(i, "mousedown", md), i.onmouseover = mv, i.onmouseout = mo,
        addEvent(f, "focus", mv), addEvent(f, "blur", mo), addEvent(f, "keydown", md), i;
    }
    o.check = function(f, u){
        (!u && f.type == "radio" && !f.click()) || (f.checked = !u, f._img.src = this[u ? "u" : "c"][f._i % o.l]);
    }
    o.uncheck = function(f){this.check(f, true);}
    addEvent(o.form = f, "reset", function(){
        setTimeout(function(){
            for(var j, a, i = o.f.length; i--;)
                if(j = (a = o.f[i]).length)
                    while(j--) a[j]._img.src = a[j].checked ? o.c : o.u;
                else a._img.src = a.checked ? o.c : o.u;
        }, 1);
    });
};
FormStyle.prototype.checked = function(o){
    this.c = o.initial instanceof Array ? o.initial : [o.initial];
	this.ch = o.over instanceof Array ? o.over : [o.over];
	this.cc = o.click instanceof Array ? o.click : [o.click];
};
FormStyle.prototype.unchecked = function(o){
	this.u = o.initial instanceof Array ? o.initial : [o.initial];
	this.uh = o.over instanceof Array ? o.over : [o.over];
	this.uc = o.click instanceof Array ? o.click : [o.click];
};
FormStyle.prototype.apply = function(){
    var o = this, a, l = (a = arguments).length, f = o.form, i = o.img, x, j;
	this.l = this.c.length;
    if(!o.c || !o.u) return;
    while(l--){
        if(j = (o.f.push(x = f[a[l]]), x).length)
            while(j--)
				x[j].parentNode.insertBefore(i(x[j].checked, x[j], j), x[j]);
        else x.parentNode.insertBefore(i(x.checked, x, 0), x);
	}
};