﻿/*
	单选按钮控件

	$.ebm.ui.radio({
		ele:'',    //原始页面jQuery对象
		ds:'',   //数据源可从staticData数组中取  name/value 对象数组
		value:'',  //值
		click:function(ele){} //点击事件  ele为当前被点击的dom对象
	})

html:	
	<div nosubmit="1" id="ebm_ui_radio_1274769570652" class="ebm-ui-radio " style="font-size: 12px;">
		<input type="hidden" value="21" id="">
		
		<div value="" class="ebm-form-radio ebm-form-radio-checked ebm-form-radio-checked-link" style="float: left;"></div>
		<div style="float: left; cursor: default;" class="ebm-form-radio-text">name1</div>
		
		<div value="" class="ebm-form-radio ebm-form-radio-unchecked ebm-form-radio-unchecked-hover" style="float: left;"></div>
		<div style="float: left; cursor: default;" class="ebm-form-radio-text">name2</div>
	</div>
e.g:
	<div id="age" class="ebm_radio" style="font-size:12px" option="{ds:'age',click:function(ele){aaa(ele)} }"></div>
	
Depends
	jquery.js         	//jQuery1.3.2包
	util.js         	//基础包
	ui.core.js        //ui核心包
*/
(function($){
	var radio = {
		radio:{
			//构建radio的基本html
			create:function(o){
				var parm = {
					ele:'',              //原始页面jQuery对象
					ds:'',             //数据源可从staticData数组中取  name/value 对象数组
					value:'',            //值
					click:function(ele){}//点击事件	
				}
				$.extend(parm,o);
				var $n = parm.ele,self = this;
				if( staticData[parm.ds] != undefined ){
					var d = staticData[parm.ds];
					createHtml(d,$n,parm.value);	
				}else{
					($).ebm.util.getData(parm.ds,function(d){
						createHtml(d,$n,parm.value);	
					});	
				}
				//生成单选框
				function createHtml(d,$n,value){
					var id = $n.attr("id"),
							random = +new Date(),
							tempStr = '<div class="ebm-ui-radio" id="ebm_ui_radio_'+random+'" nosubmit="1"><input type="hidden" id="'+id+'" value="'+value+'"  />';
					$.each(d,function(i,v){
						if( v.value == value ){
							tempStr += '<div style="float:left" class="ebm-form-radio ebm-form-radio-checked ebm-form-radio-checked-link" value="'+v.value+'"></div><div class="ebm-form-radio-text" style="float:left;cursor:default;">'+v.name+'</div>';
						}else{
							tempStr += '<div style="float:left" class="ebm-form-radio ebm-form-radio-unchecked ebm-form-radio-unchecked-link" value="'+v.value+'"></div><div class="ebm-form-radio-text" style="float:left;cursor:default;">'+v.name+'</div>';	
						}				
					})
					tempStr += '</div>';
					$n.after(tempStr);
					var radioList = $('#ebm_ui_radio_'+random);
					var c = $n.attr("class");
					c = c.replace( "ebm_radio","" );
				//	radioList.attr("style",$n.attr("style"))
									 radioList.addClass($.trim(c));
					$(".ebm-form-radio",radioList).each(function(i,v){
						self.radioCss(v);
						$(v).unbind("click")
								.bind("click",function(){
									parm.click(this);	
								})
						var n = $(v).next(".ebm-form-radio-text").eq(0);
						self.radioTextCss(n,$(v));
					})
					$n.remove();	
				}
			},
			//设置radio样式和点击事件
			radioCss:function(v){
				var self = this;
				if( $(v).hasClass("ebm-form-radio-unchecked") ){
					$(v).bind("mouseover.radio",function(){
							$(this).removeClass("ebm-form-radio-unchecked-link").addClass("ebm-form-radio-unchecked-hover");	
					});
					$(v).bind("mouseout.radio",function(){
							$(this).addClass("ebm-form-radio-unchecked-link").removeClass("ebm-form-radio-unchecked-hover");	
					});			
				}else{
					$(v).bind("mouseover.radio",function(){
							$(this).removeClass("ebm-form-radio-checked-link").addClass("ebm-form-radio-checked-hover");	
					});
					$(v).bind("mouseout.radio",function(){
							$(this).addClass("ebm-form-radio-checked-link").removeClass("ebm-form-radio-checked-hover");	
					});			
				}
				$(v).mousedown(function(){	
					if($(this).hasClass("ebm-form-radio-checked"))return;
					self.radioMouseDown($(this));	
					var t = $(this).next(".ebm-form-radio-text").eq(0);
					self.radioTextEvent( t, $(this) );
				});	
			},
			//设定radio点击事件
			radioMouseDown:function($me){
				var $ui = $me.parent(".ebm-ui-radio");
				$ui.find(".ebm-form-radio").each(function(i,v){
					$(v).attr("class","ebm-form-radio ebm-form-radio-unchecked ebm-form-radio-unchecked-hover");	
					$(v).unbind("mouseover.radio").unbind("mouseout.radio");
					$(v).bind("mouseover.radio",function(){
							$(this).removeClass("ebm-form-radio-unchecked-link").addClass("ebm-form-radio-unchecked-hover");	
					});
					$(v).bind("mouseout.radio",function(){
							$(this).addClass("ebm-form-radio-unchecked-link").removeClass("ebm-form-radio-unchecked-hover");	
					})
				});
				$ui.find("input:hidden").eq(0).val( $me.attr("value") );
				$me.attr("class","ebm-form-radio ebm-form-radio-checked ebm-form-radio-checked-hover");	
				$me.unbind("mouseover.radio").unbind("mouseout.radio");
				$me.bind("mouseover.radio",function(){
						$(this).removeClass("ebm-form-radio-checked-link").addClass("ebm-form-radio-checked-hover");	
				});
				$me.bind("mouseout.radio",function(){
						$(this).addClass("ebm-form-radio-checked-link").removeClass("ebm-form-radio-checked-hover");	
				});		
				return $me;
			},
			//设置radio文本信息联动radio
			radioTextCss:function($me,$radio){
				var self = this;
				if( $radio.hasClass("ebm-form-radio-unchecked") ){
					$me.bind("mouseover.radio",function(){
							$radio.removeClass("ebm-form-radio-unchecked-link").addClass("ebm-form-radio-unchecked-hover");	
					});
					$me.bind("mouseout.radio",function(){
							$radio.addClass("ebm-form-radio-unchecked-link").removeClass("ebm-form-radio-unchecked-hover");	
					});			
				}else{
					$me.bind("mouseover.radio",function(){
							$radio.removeClass("ebm-form-radio-checked-link").addClass("ebm-form-radio-checked-hover");	
					});
					$me.bind("mouseout.radio",function(){
							$radio.addClass("ebm-form-radio-checked-link").removeClass("ebm-form-radio-checked-hover");	
					});			
				}	
				$me.mousedown(function(){			
					var $r = $(this).prev(".ebm-form-radio").eq(0);
					if($r.hasClass("ebm-form-radio-checked"))return;
					$(this).unbind("mouseover.radio").unbind("mouseout.radio");
					$r = self.radioMouseDown($r);		
					self.radioTextEvent($(this),$r);					
				})
			},	
			//绑定radio文本信息事件
			radioTextEvent:function($me,$radio){
				var $ui = $me.parent(".ebm-ui-radio");
				$ui.find(".ebm-form-radio-text").each(function(i,v){
					var $r = $(v).prev(".ebm-form-radio").eq(0);
					$(v).unbind("mouseover.radio").unbind("mouseout.radio");
					$(v).bind("mouseover.radio",function(){
							$r.removeClass("ebm-form-radio-unchecked-link").addClass("ebm-form-radio-unchecked-hover");	
					});
					$(v).bind("mouseout.radio",function(){
							$r.addClass("ebm-form-radio-unchecked-link").removeClass("ebm-form-radio-unchecked-hover");	
					});			
				});
				$me.unbind("mouseover.radio").unbind("mouseout.radio");
				$ui.find("input:hidden").eq(0).val( $radio.attr("value") );
				$me.bind("mouseover.radio",function(){
						$radio.removeClass("ebm-form-radio-checked-link").addClass("ebm-form-radio-checked-hover");	
				});
				$me.bind("mouseout.radio",function(){
						$radio.addClass("ebm-form-radio-checked-link").removeClass("ebm-form-radio-checked-hover");	
				});	
			}
		
		}	
		
	}
	if( $.radio == undefined ){
		$.extend($, radio);
		radio = null;
	}
})(jQuery);
	
