/**
 * Radio-buttons Image Replacing
 * v.0.9.2 (2007-01-10)
 * by ZeT, © Envisionext (www.envisionext.com)
 *
 * This script automatically replaces all radio-buttons on the page with defined images.
 * No need to any changes of html-code.
 *
 * Setup:
 * Just include this rbir.js, make new object myCbir and define images.
 * Example:
 <script type="text/javascript" src="rbir.js"></script>
 <script type="text/javascript">
   window.onload = function () {myRbir = new Rbir('radio_on.gif', 'radio_off.gif',  'radio_dis.gif');}
 </script>
 * where images: checked checkbox, unchecked checkbox, disabled checkbox.
 * (disabled is not required)
 */
 
 /*
***Added png support for IE by Larkin
***Added image by class support by Larkin
Example:
myRbir = new Rbir(
		{
			def:[designPath+'/images/radio_act.gif', designPath+'/images/radio_def.gif'], //DEFAULT IMAGES
			redBtn:[designPath+'/images/radio2_act.gif', designPath+'/images/radio2_def.gif'],
			imByClass:true
		});
redBtn - it is the class name of the image you want to differ from the default one. This class should be set to the radio button.
*/

 var isIE = (navigator.appVersion.indexOf("MSIE")> -1)?true:false;
if(isIE)
{
var arVersion = navigator.appVersion.split("MSIE");
var version = parseFloat(arVersion[1]);
}

function Rbir(init) {
	this.inId = arguments[1];
	this.initObj = init;
	this.img_on = new Image();
	this.img_off = new Image();
	this.img_on.src = init.def[0];
	this.img_off.src = init.def[1];
	this.pngMode = (init.def[0].indexOf('.png')>-1 || init.def[1].indexOf('.png')>-1)?true:false;
	
	this.imByClass = (init.imByClass)?true:false;
	
	if (init.def[2]) {
		this.img_dis = new Image();
		this.img_dis.src = init.def[2];
	}

	this.labels = document.getElementsByTagName('label');
	if(this.inId ){
		try{var inputs = $(this.inId).getElementsByTagName('input');}catch(e){}
	} else {
		var inputs = document.getElementsByTagName('input');
	}
	for (var i=0; i<inputs.length; i++) {
		if (inputs[i].getAttribute('type') == 'radio') {
			if (!inputs[i].getAttribute('id')) {
				inputs[i].setAttribute('id','radio_'+i);
			}
			this.init(inputs[i]);
		}
	}
}

Rbir.prototype.init = function(radio) {
	if(this.pngMode)
		var img	= document.createElement('span');
	else
		var img	= document.createElement('img');
		
	radio.parentNode.insertBefore(img, radio.nextSibling);
	if(this.pngMode) img.style.display="inline-block";
	img.className = 'radioImg';
	img.onclick = function() { var r = this.previousSibling; r.click(); myRbir.changeMe(r);}
	this.imgCheck(radio);
	this.lblCheck(radio);
	radio.style.position = 'absolute';
	radio.style.left = '-1000em';
}
//Add by Aldegran
Rbir.prototype.imgPicture = function(type,radio) {
	var ret = new Array (this.img_on.src,this.img_on.width,this.img_on.height);
	if(this.imByClass)
	{
		var clas = new Array();
		if(radio.className !="") {
			clas = radio.className.split(" ");
			for(var m=0; m<clas.length; m++) {
				var find = false;
				for(var n in this.initObj) {
					if(n == "def") {
						continue;
					} else {
						if(clas[m] == n) {
							if(this.initObj[n][type]){
								switch(type)
								{
									case 0:{ 
										var im_on = new Image();
										im_on.src = this.initObj[n][0];
										ret = [im_on.src,im_on.width,im_on.height];
										break;
									}
									case 1:{ 
										var im_off = new Image();
										im_off.src = this.initObj[n][1];
										ret = [im_off.src,im_off.width,im_off.height];
										break;
									}
									case 2:{ 
										var im_dis = new Image();
										im_dis.src = this.initObj[n][2];
										ret = [im_dis.src,im_dis.width,im_dis.height];
										break;
									}
								}
							} else {
								switch(type)
								{
									case 1: ret = [this.img_off.src,this.img_off.width,this.img_off.height]; break;
									case 2: ret = [this.img_dis.src,this.img_dis.width,this.img_dis.height]; break;
								}
							}
							find = true;
							break;
						}
					}
				}
				if(find){
					break;
				}
			}
		} else {
			switch(type)
			{
				case 1: ret = [this.img_off.src,this.img_off.width,this.img_off.height]; break;
				case 2: ret = [this.img_dis.src,this.img_dis.width,this.img_dis.height]; break;
			}
		}
	}
	else
	{
		var clas = radio.className;
	if(clas.indexOf(' ')>0) {
		clas = clas.split(" ");
		for(var m=0; m<clas.length; m++) {
			var find = false;
			for(var n in this.initObj) {
				if(n == "def") {
					continue;
				} else {
					if(clas[m] == n) {
						if(this.initObj[n][type]){
							var im_dis = new Image();
							im_dis.src = this.initObj[n][type];
							ret = [im_dis.src,im_dis.width,im_dis.height];
						} else {
							switch(type)
							{
								case 1: ret = [this.img_off.src,this.img_off.width,this.img_off.height]; break;
								case 2: ret = [this.img_dis.src,this.img_dis.width,this.img_dis.height]; break;
							}
						}
						find = true;
						break;
					}
				}
			}
			if(find){
				break;
			}
		}
	} else {
		switch(type)
		{
			case 1: ret = [this.img_off.src,this.img_off.width,this.img_off.height]; break;
			case 2: ret = [this.img_dis.src,this.img_dis.width,this.img_dis.height]; break;
		}
	}
	}
	return ret;
}
//

Rbir.prototype.imgCheck = function(radio) {
	var img = radio.nextSibling;
	
	if(this.pngMode)
	{
		if (this.img_dis && radio.disabled) {
			
			if(isIE && version < 7)
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.imgPicture(2,radio)[0]+ "', sizingMethod='image')";
			else
			img.style.backgroundImage = "url('"+this.imgPicture(2,radio)[0]+"')";//this.img_dis.src;
			
			img.style.width = this.imgPicture(2,radio)[1]+" px";
			img.style.height = this.imgPicture(2,radio)[2]+" px";
		} else {
			if (radio.checked) {
				
			if(isIE && version < 7)
				img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.imgPicture(0,radio)[0]+ "', sizingMethod='image')";
			else
				img.style.backgroundImage = "url('"+this.imgPicture(0,radio)[0]+"')";
			
			img.style.width = this.imgPicture(0,radio)[1]+"px";
			img.style.height = this.imgPicture(0,radio)[2]+"px";
			} else {
			if(isIE && version < 7)
			img.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + this.imgPicture(1,radio)[0]+ "', sizingMethod='image')";
			else
			img.style.backgroundImage = "url('"+this.imgPicture(1,radio)[0]+"')";
			img.style.width = this.imgPicture(1,radio)[1]+"px";
			img.style.height = this.imgPicture(1,radio)[2]+"px";
			}
		}
	}
	else
	{
		if (this.img_dis && radio.disabled) {
		img.src = this.imgPicture(2,radio)[0];//this.img_dis.src;
	} else {
		if (radio.checked) {
			img.src = this.imgPicture(0,radio)[0];//this.img_on.src;
		} else {
			img.src = this.imgPicture(1,radio)[0];//this.img_off.src
		}
		}
	}
}


Rbir.prototype.lblCheck = function(radio) {
	if (radio.disabled) return;
  var id = radio.getAttribute('id');

  var parent = radio.parentNode;
  if (parent.tagName.toLowerCase() == 'label') {
    if (navigator.appVersion.indexOf('MSIE 7.0')==-1) {
      radio.nextSibling.onclick = function() {};
    }
    parent.setAttribute('id', 'label_' + id);
    parent.onclick = function() {
			var id = this.getAttribute('id').replace('label_','');
			var r = document.getElementById(id);
			if (document.all && navigator.appVersion.indexOf('MSIE 7.0')==-1 && !window.opera) r.click(); // for IE<7
			myRbir.changeMe(r);
		}
    // return true;
  }
  for (var i=0; i<this.labels.length; i++) {
    lbl = this.labels[i];
    if (lbl.htmlFor == id) {
    	lbl.onclick = function() {
				var r = document.getElementById(this.htmlFor);
				r.click();
				myRbir.changeMe(r);
				return false;
			}
    }
  }
  return false;
}

Rbir.prototype.changeMe = function(radio) {
	var inputs = radio.form.getElementsByTagName('input');
	for (var i=0; i<inputs.length; i++) {
		if (inputs[i].getAttribute('type') == 'radio') {
			this.imgCheck(inputs[i]);
		}
	}
}