﻿(function($){  
	$.fn.orangoForm = function() {  

		return this.each(function() {  
			var formObj = $(this);

			jQuery.each($(formObj).find('input[type=text]'), function() {
			
				var $inputObj = $(this);
				var replaceObj = $("<div class='oForm input typeText'></div>");
				if($inputObj.attr('readonly')) $(replaceObj).addClass('readonly');
				$inputObj.wrap($(replaceObj));
			
			});
			
			
			jQuery.each($(formObj).find('textarea'), function() {
			
				var $inputObj = $(this);
				var replaceObj = $("<div class='oForm input typeTextarea'></div>");
				if($inputObj.attr('readonly')) $(replaceObj).addClass('readonly');
				$inputObj.wrap($(replaceObj));
			
			});			
			

			jQuery.each($(formObj).find('input[type=checkbox]'), function() {
			
				var $inputObj = $(this);
				var replaceObj = $("<div class='oForm input checkbox'><input type='hidden' name='" + $inputObj.attr('name') + "' id='" + $inputObj.attr('id') + "' value='" + $inputObj.val() + "' /></div>");
				if($inputObj.attr('readonly')) $(replaceObj).addClass('readonly');
				if($inputObj.val()=='1') $(replaceObj).addClass('checked');
				$inputObj.after($(replaceObj)).remove();
			
			});

			var selectCounter = 0;
			jQuery.each($(formObj).find('select'), function() {
			
				var $inputObj = $(this);
				// generate divs for options
				var $options = $("<div class='oForm select items' rel='" + selectCounter + "'></div>");
				jQuery.each($inputObj.find('option'), function() {
					var $newObj = $("<div rel='" + $(this).val() + "' class='noSelect'>" + $(this).html() + "</div>");
					if($(this).attr('selected')) $newObj.addClass('selected');
					$options.append($newObj);					
				});
				var selectedVal = $inputObj.find('option[selected=true]').val();
				var selectedTxt = $inputObj.find('option[selected=true]').html();
				var replaceObj = $("" +
					"<div class='oForm input select' rel='" + selectCounter + "'>" +
						"<input type='hidden' name='" + $inputObj.attr('name') + "' id='" + $inputObj.attr('id') + "' value='" + selectedVal + "' />" +
						"<div class='selectedTxt noSelect'>" + selectedTxt + "</div>" +
					"</div>" +
				"");
				if($inputObj.attr('readonly')) $(replaceObj).addClass('readonly');

				$inputObj.after($(replaceObj)).remove();
				$(replaceObj).after($options);
	
				
				selectCounter++;
			
			});			
			
			
			
			
			// INIT EFFECTS
			
			// textareas and input type text
			$(".oForm.input input, .oForm.input textarea").bind('focus',function() { $(this).parent('div.oForm').addClass('focus'); });
			$(".oForm.input input, .oForm.input textarea").bind('blur',function() { $(this).parent('div.oForm').removeClass('focus'); });

			
			// checkbox
			$(".oForm.input.checkbox").hover(
				function() { 
					$(this).addClass('focus'); 
				},
				function() { 
					$(this).removeClass('focus'); 
				}
			)
			.bind('click', function() {
				if($(this).hasClass('readonly')==false) {
					var $inputObj = $(this).find('input[type=hidden]');
					if($inputObj.val().length>0) {
						if(isNaN($inputObj.val())==false) {
							if(parseInt($inputObj.val())==1) {
								// uncheck it
								$(this).removeClass('checked');
								$inputObj.val('0');
							} else {
								// check it
								$(this).addClass('checked');
								$inputObj.val('1');
							}
						}
					}
				}
			});
			
			
			// select
			$(".oForm.input.select").hover(
				function() { 
					$(this).addClass('focus'); 
				},
				function() { 
					$(this).removeClass('focus'); 
				}
			)
			.bind('click', function() {
				if($(this).hasClass('readonly')==false) {
					// show items
					var $currObj = $(this);
					var $itemsObj = $('div.oForm.select.items[rel=' + $currObj.attr('rel') + ']');
					$itemsObj.css({
						'top' : $currObj.offset().top+50 + 'px',
						'left' : $currObj.offset().left+17 + 'px'
					}).fadeIn('normal');						
				}
			});
			// select items
			$(".oForm.select.items div").hover(
				function() { 
					$(this).addClass('focus'); 
				},
				function() { 
					$(this).removeClass('focus'); 
				}
			)
			.bind('click', function() {
				// select item
				var $currObj = $(this);
				$currObj.parent('div.oForm.select.items').hide();				
				var newVal = $currObj.attr('rel');
				var newTxt = $currObj.html();
				$('div.oForm.input.select[rel=' + $currObj.parent('div.oForm.select.items').attr('rel') + '] div.selectedTxt').html(newTxt);
				$('div.oForm.input.select[rel=' + $currObj.parent('div.oForm.select.items').attr('rel') + '] input[type=hidden]').val(newVal);
				$currObj.parent('div.oForm.select.items').find('div[class*=selected]').removeClass('selected');
				$currObj.addClass('selected');
			});			
			
			
			// show form
			$(this).show();
				
				
		});  
	};  
})(jQuery); 
