//*******************************************************************************************************************

$.widget("ui.form",{
 _init:function(){
	 var object = this;
	 var form = this.element;
	 var inputs = form.find("input , select ,textarea");

         form.find("fieldset").addClass("ui-widget-content");
	 form.find("legend").addClass("ui-widget-header ui-corner-all");
	 form.addClass("ui-widget");

	 $.each(inputs,function(){
		$(this).addClass('ui-state-default ui-corner-all');
		$(this).wrap("<label />");

		if($(this).is(":reset, :submit, :button"))
			$(this).button();//object.buttons(this);
		else if($(this).is(":checkbox"))
			object.checkboxes(this);
		else if($(this).is("input[type='text']")||$(this).is("textarea")||$(this).is("input[type='password']"))
			object.textelements(this);
		else if($(this).is(":radio"))
			object.radio(this);
		else if($(this).is("select"))
			;//object.selector(this);

		if($(this).hasClass("date"))
        		$(this).datepicker();
	});
	  var div = jQuery("<div />",{
	 	   css:{
		   width:20,height:20,
		   margin:10,textAlign:"center"
			   }
		   }).addClass("ui-state-default drag");
	  var no = Math.ceil(Math.random() * 4);
	  var holder = jQuery("<div />",{
				  id:'droppable',
				  text:"Drop the box with "+no+" here",
	                	   css:{
					 width:100,height:100,float:'right',fontWeight:'bold'}
					  }).addClass('ui-state-default');
	  $(form).find("fieldset").append(holder);
	  for(var i=1;i<5;i++)
		{
		$(form).find("fieldset").append(div.clone().html(i).attr("id",i));
		}

	$(".drag").draggable({containment: 'parent'});
	 $("#droppable").droppable({
			accept:'#'+no,
			drop: function(event, ui) {
				$(this).addClass('ui-state-highlight').html("Right One");
				form.find(":submit").removeClass('ui-state-disabled').unbind('click');
				}
	});
	 $(".hover").hover(function(){
				  $(this).addClass("ui-state-hover");
				   },function(){
				  $(this).removeClass("ui-state-hover");
				   });

	 },
	 
	 textelements:function(element){

			$(element).bind({

 			  focusin: function() {
 			   $(this).toggleClass('ui-state-focus');
 				 },
			   focusout: function() {
 			    $(this).toggleClass('ui-state-focus');
 				 }
			  });

			 },
			 
	 buttons:function(element)
		 {
			if($(element).is(":submit"))
			{
			$(element).addClass("ui-priority-primary ui-corner-all ui-state-disabled hover");
			 $(element).bind("click",function(event)
			   {
				   event.preventDefault();
			   });
			}
			else if($(element).is(":reset") || $(element).is(":button"))
				$(element).addClass("ui-priority-secondary ui-corner-all hover");
			$(element).bind('mousedown mouseup', function() {
 			   $(this).toggleClass('ui-state-active');
 			 }

			  );
		 },
		 
	 checkboxes:function(element){
		 $(element).parent("label").after("<span />");
		 var parent =  $(element).parent("label").next();
		$(element).addClass("ui-helper-hidden");
		parent.css({width:16,height:16,display:"block"});
		parent.wrap("<span class='ui-state-default ui-corner-all' style='display:inline-block;width:16px;height:16px;margin-right:5px;'/>");
		 parent.parent().addClass('hover');
		 parent.parent("span").click(function(event){
		 $(this).toggleClass("ui-state-active");
		 parent.toggleClass("ui-icon ui-icon-check");
		$(element).click();

		});

	 },
	 
	 radio:function(element){
	        $(element).parent("label").after("<span />");
		var parent =  $(element).parent("label").next();
		$(element).addClass("ui-helper-hidden");
		parent.addClass("ui-icon ui-icon-radio-off");
		parent.wrap("<span class='ui-state-default ui-corner-all' style='display:inline-block;width:16px;height:16px;margin-right:5px;'/>");
		parent.parent().addClass('hover');
		parent.parent("span").click(function(event){
				 $(this).toggleClass("ui-state-active");
				 parent.toggleClass("ui-icon-radio-off ui-icon-bullet");
				$(element).click();
				});
			 },
			 
  selector:function(element) {
    var parent = $(element).parent().first();
    parent.css({"display":"block",width:140,height:21}).addClass("ui-state-default ui-corner-all");
    $(element).addClass("ui-helper-hidden");
    parent.append("<span style='float:left;'></span><span style='float:right;display:inline-block' class='ui-icon ui-icon-triangle-1-s' ></span>");
    parent.after("<ul class=' ui-helper-reset ui-widget-content ui-helper-hidden' style='position:absolute;z-index:50;width:140px;' ></ul>");
    $.each($(element).find("option"), function() {

      $(parent).next("ul").append("<li class='hover' style='cursor: pointer'>" + $(this).html() + "</li>");

    });
    $(parent).next("ul").find("li").click(function() {
      $(parent).children('span').first().html($(this).html());
      $(element).val($(this).html());
      $(parent).next().slideToggle('fast');
    });

    $(parent).click(function(event) {
      $(this).next().slideToggle('fast');
      event.preventDefault();
    });
  }
  
});

//*******************************************************************************************************************

