$.fn.jForms = 
function(options)
{
    var lastKeypress = 0;
    var keyBuffer = '';
    var self = this;
    var defaults = {
    imagePath : '../images/css/',
    listSize:20
    }   
    // if($.browser.safari){return false;}

    var opts = $.extend(defaults, options);
    var imagePath = opts.imagePath  
    
    //preload images
    var images = [imagePath + "button_left_xon.gif", imagePath + "button_right_xon.gif", 
    imagePath + "input_left_xon.gif", imagePath + "input_right_xon.gif",
    imagePath + "txtarea_bl_xon.gif", imagePath + "txtarea_br_xon.gif", 
    imagePath + "txtarea_cntr_xon.gif", imagePath + "txtarea_l_xon.gif", imagePath + "txtarea_tl_xon.gif", imagePath + "txtarea_tr_xon.gif"]
    var imgs = new Array();
    for(var i = 0; i<images.length; i++)
    {
        imgs[i] = $("<img>").attr("src", images[i]);
    }

    $(self).attr('autocomplete','off').addClass('niceforms');
    

        //select boxes
$('select',self).each(function ()
{
    $('#'+this.id+'_fake_list').remove();
    $('body').append('<ul id = "'+this.id+'_fake_list" class="fake_list"></ul>');
    $(this).children().each(function()
    {
        $('#'+$(this).parent().attr('id')+'_fake_list').append('<li>'+$(this).text()+'</li>');
    });
    var VersNav = parseFloat(navigator.appVersion);
    
    if (navigator.appName == 'Microsoft Internet Explorer' && VersNav <= 6) {
            $('#'+this.id+'_fake_list').css('width',$(this).width()+23).toggle();
        }
    else {
    $('#'+this.id+'_fake_list').css('width',$(this).width()+28).toggle();
    }
    $('#'+this.id+'_fake_list > li').hover(function(){$(this).addClass('selected')},function(){$(this).removeClass('selected');}).each(function(i)
    {
        $(this).click(function(){
        var id = $(this).parent().attr('id');
        $('#'+id).toggle();
        $('#'+id.replace('_list','')).attr('value',$(this).text());
        $('#'+id.replace('_fake_list','')).attr('selectedIndex',i).change();
        $('#'+id+' >  li').removeClass('selected');
        $(this).addClass('selected');   
    });
    });
    if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
    
        var $id_searched_ie = this.id;
        
        if($id_searched_ie.toString() == "Award_Type")
        {
            $(this).before('<div class="selectArea" style="float:left;width:'+($(this).width()+51)+'px"><div class="left"></div><div class="right"><a class="selectButton" href="javascript:;" onclick="$(\'#'+this.id+'_fake\').focus().click()"></a></div><input type="text" size="3"class="center" style="width:'+(parseInt($(this).width())+parseInt(34))+'px;cursor:default" id="'+this.id+'_fake"  value="'+this[this.selectedIndex].text+'"  /></div>').css('position','absolute').css('left','-6000px');
        }
        else
        {
            $(this).before('<div class="selectArea" style="float:left;width:'+($(this).width()+31)+'px"><div class="left"></div><div class="right"><a class="selectButton" href="javascript:;" onclick="$(\'#'+this.id+'_fake\').focus().click()"></a></div><input type="text" size="3"class="center" style="width:'+(parseInt($(this).width())-parseInt(20))+'px;cursor:default" id="'+this.id+'_fake"  value="'+this[this.selectedIndex].text+'"  /></div>').css('position','absolute').css('left','-6000px');
        }
    }
    else
    {
        var $id_searched = this.id;
        if($id_searched.toString() == "Award_Type")
        {
            $(this).before('<div class="selectArea" style="float:left;width:'+($(this).width()+parseInt(51))+'px"><div class="left"></div><div class="right"><a class="selectButton" href="javascript:;" onclick="$(\'#'+this.id+'_fake\').focus().click()"></a></div><input type="text" class="center" style="width:'+(parseInt($(this).width())+parseInt(34))+'px;cursor:default" id="'+this.id+'_fake"  value="'+this[this.selectedIndex].text+'"  /></div>').css('position','absolute').css('left','-6000px').css('display' , 'none');
        }
        else
        {
            var widthLinux = 0;
            if (navigator.platform.indexOf('Linux') != -1 && navigator.appName == 'Netscape')
                widthLinux = 20;
            $(this).before('<div class="selectArea" style="float:left;width:'+($(this).width()+31+widthLinux)+'px"><div class="left"></div><div class="right"><a class="selectButton" href="javascript:;" onclick="$(\'#'+this.id+'_fake\').focus().click()"></a></div><input type="text" class="center" style="width:'+(parseInt($(this).width())+parseInt(4)+widthLinux)+'px;cursor:default" id="'+this.id+'_fake"  value="'+this[this.selectedIndex].text+'"  /></div>').css('position','absolute').css('left','-6000px').css('display' , 'none');
        }
    }

  var selObj = $(this).prev('div[class="selectArea"]');
  
  
  $(selObj).width( $(selObj).find('div[class="left"]').width() + $(selObj).find('div[class="right"]').width() +  $(selObj).find('input').width() + 2);
  
  
  
  if (typeof document.body.style.maxHeight === "undefined") {//if IE 6
      $('.new_inscription div[class="selectArea"]').css({ marginRight : '40px' });
  }
  
  var cssObj = {'padding' : '2px 0px 2px 2px'};
  if( $.browser.version == '8.0' )
  {
      cssObj = {'padding' : '0px 0px 2px 2px','margin-top' : '2px'};
  }
  
      $('#'+this.id+'_fake').click(function(){
        $('#'+this.id+'_list').focus();
        $('#'+this.id+'_list').css('left',$(this).offset().left-5);
        
        if(($('#'+this.id+'_list').height()+$(this).offset().top -document.documentElement.scrollTop) > $(window).height())
        {
            $('#'+this.id+'_list').css('top',$(this).offset().top-$('#'+this.id+'_list').height());
        }
        else
        {
            $('#'+this.id+'_list').css('top',$(this).offset().top+$(this).height()+0);
        }
        $('#'+this.id+'_list > li').removeClass('selected');
        $('#'+this.id+'_list > li').get($('#'+this.id.replace('_fake','')).attr('selectedIndex')).className='selected';

        
              
        $('.fake_list:visible:not(#'+this.id+'_list)').toggle();
        $list = $('#'+this.id+'_list'); 
        $list.toggle();
        $list.css({ width: parseInt($(this).width()) +'px' } );
        var offSet = (($('.selected', $list).length>0? $('.selected', $list).offset().top:0)- $list.offset().top);
        $list.animate({scrollTop: offSet});
        }).css(cssObj).keyup(function(e)
        {
            var pressedKey = e.charCode || e.keyCode || -1;
            var $dd = $('#'+this.id.replace('_fake',''));
            $('#'+this.id+'_list > li').removeClass('selected');
            switch(pressedKey)
            {
                //down
                case 40:                        
                    var curr = ($dd.attr('selectedIndex')+1>=$('option',$dd).length?0:$dd.attr('selectedIndex')+1);
                break;
                case 38:                        
                    var curr = ($dd.attr('selectedIndex')-1<0?$('option',$dd).length-1:$dd.attr('selectedIndex')-1);                        
                break;
                case 13:
                    $('#'+this.id+'_list').toggle();
                    return false;
                break;
                default:
                var t = new Date();
                if(t.getTime()-lastKeypress>1000)
                {
                    lastKeypress=t.getTime();
                    keyBuffer ='';
                }
                    keyBuffer +=String.fromCharCode(pressedKey).toLowerCase();
                    curr=-1;
                    $('#'+this.id+'_list > li').each(function(i)
                    {
                        if($(this).text().toLowerCase().indexOf(keyBuffer)==0&&curr==-1)
                        {
                            curr = i;
                            return;
                        }
                    });
                    break;
            }
            if(curr==-1)
            {
                curr=0;
            }
            $($('#'+this.id+'_list > li').get(curr)).addClass('selected').focus();
            $list = $('#'+this.id+'_list');
            var offSet = (($('.selected', $list).length>0? $('.selected', $list).offset().top:0)- $list.offset().top);
            $list.attr('scrollTop',offSet);
            $dd.attr('selectedIndex',curr).change();
            $(this).attr('value', $($('#'+this.id+'_list > li').get(curr)).text());
            return false;
                        
        }).focus(function()
        {
            $(document).keypress(function(e)
            {
                var pressedKey = e.charCode || e.keyCode || -1;
                if(pressedKey==13)
                {
                    return false;
                }
            });
        }).blur(function()
        {
            $(document).unbind('keypress').unbind('click');
        });
});

    
}

