(function($){
var defaultOptions = {preloadImg:true};
var jqTransformImgPreloaded = false;

var jqTransformPreloadHoverFocusImg = function(strImgUrl) {
//guillemets to remove for ie
strImgUrl = strImgUrl.replace(/^url\((.*)\)/,'$1').replace(/^\"(.*)\"$/,'$1');
var imgHover = new Image();
imgHover.src = strImgUrl.replace(/\.([a-zA-Z]*)$/,'-hover.$1');
var imgFocus = new Image();
imgFocus.src = strImgUrl.replace(/\.([a-zA-Z]*)$/,'-focus.$1');				
};


/***************************
Labels
***************************/
var jqTransformGetLabel = function(objfield){
var selfForm = $(objfield.get(0).form);
var oLabel = objfield.next();
if(!oLabel.is('label')) {
oLabel = objfield.prev();
if(oLabel.is('label')){
	var inputname = objfield.attr('id');
	if(inputname){
		oLabel = selfForm.find('label[for="'+inputname+'"]');
	} 
}}
if(oLabel.is('label')){return oLabel.css('cursor','pointer');}
return false;
};

var jqTransformHideSelect = function(oTarget){
var ulVisible = $('.jqTransformSelectWrapper ul:visible');
ulVisible.each(function(){
var oSelect = $(this).parents(".jqTransformSelectWrapper:first").find("select").get(0);
//do not hide if click on the label object associated to the select
if( !(oTarget && oSelect.oLabel && oSelect.oLabel.get(0) == oTarget.get(0)) ){$(this).hide();}});
};
var jqTransformCheckExternalClick = function(event) {
if ($(event.target).parents('.jqTransformSelectWrapper').length === 0) { jqTransformHideSelect($(event.target)); }};

var jqTransformAddDocumentListener = function (){
$(document).mousedown(jqTransformCheckExternalClick);
};	

var jqTransformReset = function(f){
var sel;
$('.jqTransformSelectWrapper select', f).each(function(){sel = (this.selectedIndex<0) ? 0 : this.selectedIndex; $('ul', $(this).parent()).each(function(){$('a:eq('+ sel +')', this).click();});});
$('a.jqTransformCheckbox, a.jqTransformRadio', f).removeClass('jqTransformChecked');
$('input:checkbox, input:radio', f).each(function(){
if(this.checked){
$('a', $(this).parent()).addClass('jqTransformChecked');
}});
};

/***************************
Buttons
***************************/
$.fn.jqTransInputButton = function(){
return this.each(function(){
var newBtn = $('<button title="'+this.title+'" id="'+ this.id +'" name="'+ this.name +'" type="'+ this.type +'" class="'+ this.className +' jqTransformButton"><span><span>'+ $(this).attr('value') +'</span></span>')
	.hover(function(){newBtn.addClass('jqTransformButton_hover');},function(){newBtn.removeClass('jqTransformButton_hover')})
	.mousedown(function(){newBtn.addClass('jqTransformButton_click')})
	.mouseup(function(){newBtn.removeClass('jqTransformButton_click')})
;
$(this).replaceWith(newBtn);
});
};

/***************************
Text Fields 
***************************/
$.fn.jqTransInputText = function(){
return this.each(function(){
var $input = $(this);

if($input.hasClass('jqtranformdone') || !$input.is('input')) {return;}
$input.addClass('jqtranformdone');

var oLabel = jqTransformGetLabel($(this));
oLabel && oLabel.bind('click',function(){$input.focus();});

var inputSize=$input.width();
if($input.attr('size')){
	inputSize = $input.attr('size')*10;
	$input.css('width',inputSize);
}

$input.addClass("jqTransformInput").wrap('<div class="jqTransformInputWrapper"><div class="jqTransformInputInner"><div></div></div></div>');
var $wrapper = $input.parent().parent().parent();
$input
	.focus(function(){$wrapper.addClass("jqTransformInputWrapper_focus");})
	.blur(function(){$wrapper.removeClass("jqTransformInputWrapper_focus");})
	.hover(function(){$wrapper.addClass("jqTransformInputWrapper_hover");},function(){$wrapper.removeClass("jqTransformInputWrapper_hover");})
;

$.browser.safari && $wrapper.addClass('jqTransformSafari');
$.browser.safari && $input.css('width',$wrapper.width()+16);
this.wrapper = $wrapper;

});
};

/***************************
Check Boxes 
***************************/	
$.fn.jqTransCheckBox = function(){
return this.each(function(){
if($(this).hasClass('jqTransformHidden')) {return;}

var $input = $(this);
var inputSelf = this;

var oLabel=jqTransformGetLabel($input);
oLabel && oLabel.click(function(){aLink.trigger('click');});

var aLink = $('<a href="#" class="jqTransformCheckbox"></a>');
$input.addClass('jqTransformHidden').wrap('<span class="jqTransformCheckboxWrapper"></span>').parent().prepend(aLink);
$input.change(function(){
	this.checked && aLink.addClass('jqTransformChecked') || aLink.removeClass('jqTransformChecked'); 
	return true;
});
aLink.click(function(){
					
	if($input.attr('disabled')){return false;}
	$input.trigger('click').trigger("change");	
	return false;
});

this.checked && aLink.addClass('jqTransformChecked');	
});
};
/***************************
Radio Buttons 
***************************/	
$.fn.jqTransRadio = function(){
return this.each(function(){
if($(this).hasClass('jqTransformHidden')) {return;}

var $input = $(this);
var inputSelf = this;
	
oLabel = jqTransformGetLabel($input);
oLabel && oLabel.click(function(){aLink.trigger('click');});

var aLink = $('<a href="#" class="jqTransformRadio" rel="'+ this.name +'"></a>');
$input.addClass('jqTransformHidden').wrap('<span class="jqTransformRadioWrapper"></span>').parent().prepend(aLink);

$input.change(function(){
	inputSelf.checked && aLink.addClass('jqTransformChecked') || aLink.removeClass('jqTransformChecked');
	return true;
});
aLink.click(function(){
	if($input.attr('disabled')){return false;}
	$input.trigger('click').trigger('change');
	$('input[name="'+$input.attr('name')+'"]',inputSelf.form).not($input).each(function(){
	$(this).attr('type')=='radio' && $(this).trigger('change');
	});

	return false;					
});
inputSelf.checked && aLink.addClass('jqTransformChecked');
});
};

/***************************
TextArea 
***************************/	
$.fn.jqTransTextarea = function(){
return this.each(function(){
var textarea = $(this);

if(textarea.hasClass('jqtransformdone')) {return;}
textarea.addClass('jqtransformdone');

oLabel = jqTransformGetLabel(textarea);
oLabel && oLabel.click(function(){textarea.focus();});

var strTable = '<table cellspacing="0" cellpadding="0" border="0" class="jqTransformTextarea">';
strTable +='<tr><td id="jqTransformTextarea-tl"></td><td id="jqTransformTextarea-tm"></td><td id="jqTransformTextarea-tr"></td></tr>';
strTable +='<tr><td id="jqTransformTextarea-ml">&nbsp;</td><td id="jqTransformTextarea-mm"><div></div></td><td id="jqTransformTextarea-mr">&nbsp;</td></tr>';	
strTable +='<tr><td id="jqTransformTextarea-bl"></td><td id="jqTransformTextarea-bm"></td><td id="jqTransformTextarea-br"></td></tr>';
strTable +='</table>';					
var oTable = $(strTable)
		.insertAfter(textarea)
		.hover(function(){
			!oTable.hasClass('jqTransformTextarea-focus') && oTable.addClass('jqTransformTextarea-hover');
		},function(){
			oTable.removeClass('jqTransformTextarea-hover');					
		})
	;
	
textarea
	.focus(function(){oTable.removeClass('jqTransformTextarea-hover').addClass('jqTransformTextarea-focus');})
	.blur(function(){oTable.removeClass('jqTransformTextarea-focus');})
	.appendTo($('#jqTransformTextarea-mm div',oTable))
;
this.oTable = oTable;
if($.browser.safari){
	$('#jqTransformTextarea-mm',oTable)
		.addClass('jqTransformSafariTextarea')
		.find('div')
			.css('height',textarea.height())
			.css('width',textarea.width())
	;
}});
};

/***************************
Select 
***************************/	
$.fn.jqTransSelect = function(){
return this.each(function(index){
var $select = $(this);

if($select.hasClass('jqTransformHidden')) {return;}
if($select.attr('multiple')) {return;}

var oLabel  =  jqTransformGetLabel($select);
var $wrapper = $select
	.addClass('jqTransformHidden')
	.wrap('<div class="jqTransformSelectWrapper"></div>')
	.parent()
	.css({/*zIndex: 10-index*/})
;

/*$wrapper.prepend('<div><span></span><a href="#" class="jqTransformSelectOpen"></a></div><ul></ul>');
var $ul = $('ul', $wrapper)
.hide();
$('option', this).each(function(i){
	var oLi = $('<li><a href="#" index="'+ i +'">'+ $(this).html() +'</a></li>');
	$ul.append(oLi);
});
*/

$wrapper.prepend('<div><span></span><a href="#" class="jqTransformSelectOpen"></a></div><ul></ul>');
var $ul = $('ul', $wrapper)
.hide();
$('option', this).each(function(i){
 	if(this.disabled) var oLi = $('<li><span>'+ $(this).html() +'</span></li>');
		else var oLi = $('<li><a href="#" index="'+ i +'">'+ $(this).html() +'</a></li>');
	$ul.append(oLi);
});


$ul.find('a').click(function(){
		$('a.selected', $wrapper).removeClass('selected');
		$(this).addClass('selected');	
		if ($select[0].selectedIndex != $(this).attr('index') && $select[0].onchange) { $select[0].selectedIndex = $(this).attr('index'); $select[0].onchange(); }
		$select[0].selectedIndex = $(this).attr('index');
		$('span:eq(0)', $wrapper).html($(this).html());
		$ul.hide();
		return false;
});
$('a:eq('+ this.selectedIndex +')', $ul).click();
$('span:first', $wrapper).click(function(){$("a.jqTransformSelectOpen",$wrapper).trigger('click');});
oLabel && oLabel.click(function(){$("a.jqTransformSelectOpen",$wrapper).trigger('click');});
this.oLabel = oLabel;

var oLinkOpen = $('a.jqTransformSelectOpen', $wrapper)
	.click(function(){
		if( $ul.css('display') == 'none' ) {jqTransformHideSelect();} 
		if($select.attr('disabled')){return false;}

		$ul.slideToggle('fast', function(){					
			var offSet = ($('a.selected', $ul).offset().top - $ul.offset().top);
			$ul.animate({scrollTop: offSet});
		});
		return false;
	})
;

var iSelectWidth = $select.outerWidth();
var oSpan = $('span:first',$wrapper);
var newWidth = (iSelectWidth > oSpan.innerWidth())?iSelectWidth+oLinkOpen.outerWidth():$wrapper.width();
$ul.css({display:'block',visibility:'hidden'});
var iSelectHeight = ($('li',$ul).length)*($('li:first',$ul).height());//+1 else bug ff
(iSelectHeight < $ul.height()) && $ul.css({height:iSelectHeight,'overflow':'hidden'});//hidden else bug with ff
$ul.css({display:'none',visibility:'visible'});

});
};
$.fn.jqTransform = function(options){
var opt = $.extend({},defaultOptions,options);

/* each form */
return this.each(function(){
var selfForm = $(this);
if(selfForm.hasClass('jqtransformdone')) {return;}
selfForm.addClass('jqtransformdone');

$('input:submit, input:reset, input[type="button"]', this).jqTransInputButton();			
$('input:text, input:password', this).jqTransInputText();			
$('input:checkbox', this).jqTransCheckBox();
$('input:radio', this).jqTransRadio();
$('textarea', this).jqTransTextarea();

if( $('select', this).jqTransSelect().length > 0 ){jqTransformAddDocumentListener();}
selfForm.bind('reset',function(){var action = function(){jqTransformReset(this);}; window.setTimeout(action, 10);});			

}); 
	
};/* End the Plugin */

})(jQuery);
	 

/**/
$(function(){$('.transform').jqTransform({imgPath:'/images/form/'});});
/**/
window.onload = function (){
//		document.getElementById("fre").onclick = revisar;	
}
function revisar(){
var ary = document.getElementsByTagName("input");
//alert(ary[2].type == "checkbox");
var c = 1;
var s = Number();
for(var i = 0 ; i<ary.length ; i++){
if(ary[i].type == "checkbox"){
if(ary[i].checked){
s = c++;
}}}	alert(s);}
