(function( $ ){
	$.fn.pandaSelect = function( options ) {  
		var settings = {
				width: null
		};

		return this.each(function() {        
			if ( options ) { 
				$.extend( settings, options );
			}

    	 
    	 var $select = $(this);
    	 var selectID = $select.attr('id');
    	 //if($select.hasClass('panda-select-cluster').le)
    	 if($select.hasClass('panda-select-cluster')){
    		 if($select.parent().hasClass('select-cluster')){
        		 
        	 }else{
        		 $select.wrap('<div class="select-cluster"></div>');
        	 }
    	 }
    	 
    	//CHECKS IF DISABLED IS SET TO TRUE
    	 var $disabled = 0;
    	 if ($select.attr('disabled')) {
    		 var $disableValue = $select.attr('disabled');
    		 if ($disableValue == 'disabled' || $disableValue == true){
    			 $disabled = 1;
    		 };
    	 };
    	 
    	 //AN ARRAY TO HOLD THE SELECT OPTIONS
    	 var options = new Array();
    	 
    	 //DEFINING THE OPTIONS
    	 var $selectOptions = $('option', this);
    	 var $selectOptionsText = $selectOptions.text();
    	 var $selectOptionsValue = $selectOptions.val();
    	 var $selectOptionsSize = $selectOptions.size();
    	 var $selectedOption = $('option:selected', this);
//    	 $('option', this).each(function(){
//    		 if ($(this).attr('selected')){
//    			 alert($(this).text());
//    			 $selectedOption = $(this);
//    		 }
//    	 });
    	 
    	 var $defaultValue = $selectedOption.text();
    	 
    	 var docHeight = $(document).height();
    	 
    	 //GRABS THE PARENT DIV AND FORMATS IT
    	 var $wrapper = $select.parent();
    	 
    	 if ($('div', $wrapper).hasClass('panda-select-input')) {
    		 //alert('yes');
    		 $('.panda-select-dropdown', $wrapper).html('');
    		 makeSelect();
//    		 if ($disabled == 0){
//    			 makeSelect();
//    		 }else{
//     			detroySelect(); 
//     		 }
    	 }else{
    		 //alert('nope');
    		 $wrapper.addClass('panda-select');
	    	 $wrapper.append('<div class="panda-select-input"><div class="panda-select-fakeinput-wrapper"><p class="panda-select-fakeinput"></p></div><p class="select-elipse">...</p><div class="panda-select-arrow"></div><div class="panda-select-sensor"></div><div class="panda-select-dropdown"></div></div>');
	    	 makeSelect();
//	    	 if ($disabled == 0){
//    			 makeSelect();
//    		 }else{
//    			detroySelect(); 
//    		 }
    	 }
    	 
    	 function makeSelect(){
	    	 var $pandaInput = $('.panda-select-input', $wrapper);
	    	 var $pandaFakeInput = $('.panda-select-fakeinput', $wrapper);
	    	 var $pandaFakeInputWrapper = $('.panda-select-fakeinput-wrapper', $wrapper);
	    	 var $pandaFakeInputElipse = $('.select-elipse', $wrapper);
	    	 var $pandaArrow = $('.panda-select-arrow', $wrapper);
	    	 var $pandaSensor = $('.panda-select-sensor', $wrapper);
	    	 var $pandaDropdown = $('.panda-select-dropdown', $wrapper);
	    	 
//	    	 $pandaSensor.css({'height' : '30px', 'width' : $pandaInput.parent().width(), 'position' : 'relative', 'display' : 'block', 'z-index' : parseInt($pandaDropdown.css('z-index'))-1});
	    	 $pandaSensor.css({'height' : '30px', 'position' : 'relative', 'display' : 'block', 'z-index' : parseInt($pandaDropdown.css('z-index'))-1});
	    	 
	    	 if ($disabled == 1){
				 $('.panda-select-sensor', $wrapper).css('z-index', '-20000');
    		 }
	    	 
	    	 //ADDS THE OPTIONS TO THE OPTION ARRAY AND ADDS THEM TO THE FAKE OPTIONS
	    	 for (var i = 0; i <= $selectOptionsSize; i++){
	    		 options[i] = $selectOptions.eq(i);
	    		 $pandaDropdown.append('<p class="panda-select-dropdown-option" value="'+options[i].val()+'">'+options[i].text()+'</p>');
	    	 };
	    	 var $pandaDropdownOption = $('.panda-select-dropdown-option', $wrapper);
	 	 
	    	 //SETS INPUT TEXT LIMIT
	    	 //var limit = 40;
//	    	 var limit = Math.round(($pandaInput.width() - 35) / 6.5);
	    	 //alert(limit)
//	    	 var $trimmedValue = $defaultValue.substr(0,limit);
	    	 $pandaFakeInput.html($defaultValue);
	    	 
	    	 $pandaFakeInputWrapper.css({'width' : $pandaInput.width() - 50});
	    	 
//	    	 $pandaFakeInput.css({'width' : $pandaInput.width() - 35});
	    	 
	    	 if($pandaFakeInput.height() > 16){
	    		 $pandaFakeInputElipse.show();
	    	 }else{
	    		 $pandaFakeInputElipse.hide();
	    	 }
	    	 //alert($fakeInputWidth);
	    	 //CHECKS IF THAT LIMIT HAS BEEN SURPASSED BY THE WIDTH OF THE DIV
//	    	 if ($pandaFakeInput.width() > 250){
//	    	 if ($pandaFakeInput.width() > $pandaInput.width() - 35){
////	    		 $pandaFakeInput.html($trimmedValue+'...');
//			 };
			 
			 //BINDINGS
			 $pandaDropdownOption.mouseover(function(){
				 $(this).css('background', '#f3f3f3');
			 });
			 
			 $pandaDropdownOption.mouseleave(function(){
				 $(this).css('background', '#ffffff');
			 });
			 
			 $('.panda-select-sensor').live('click', function selectClick(){
				 $(this).siblings('.panda-select-dropdown:hidden').css('display', 'block');
			 });
			 
//			 var $i = 0;
			 $('.panda-select-dropdown-option').live('click', function(){
				 var pandaSelectedOptionText = $(this).text();
				 $pandaInput = $(this).parent().parent('.panda-select-input');
				 $pandaFakeInputWrapper = $(this).parent().siblings('.panda-select-fakeinput-wrapper');
				 $pandaFakeInput = $('.panda-select-fakeinput', $pandaFakeInputWrapper);
				 $pandaFakeInputElipse = $(this).parent().siblings('.select-elipse');
				 
				 $pandaFakeInput.html(pandaSelectedOptionText);
				 $pandaFakeInputWrapper.css({'width' : $pandaInput.width() - 50});
//		    	 $pandaFakeInput.css({'width' : $pandaInput.width() - 35});
		    	 
		    	 if($pandaFakeInput.height() > 16){
		    		 $pandaFakeInputElipse.show();
		    	 }else{
		    		 $pandaFakeInputElipse.hide();
		    	 }
				 var pandaSelectedOptionValue = $(this).attr('value');
				 $select = $(this).parent().parent().siblings('select');
				 $select.val(pandaSelectedOptionValue);
				 $select.change();
				 $(this).parent().css('display', 'none');
			 });
	
			 $('.panda-select-input').live('mouseleave', function(){
				 $('.panda-select-dropdown:visible', this).hide()
			 });
			 
			 $(window).resize(function() {
				 $pandaInput.each(function(){
					 $pandaSensor = $('.panda-select-sensor', this);
					 $pandaFakeInputWrapper = $('.panda-select-fakeinput-wrapper', this);
					 $pandaFakeInput = $('.panda-select-fakeinput', this);
					 $pandaFakeInputElipse = $('.select-elipse', this);
					 
					 $pandaSensor.css({'width' : $(this).width()});
					 $pandaFakeInputWrapper.css({'width' : $(this).width() - 50});
			    	 
			    	 if($pandaFakeInput.height() > 16){
			    		 $pandaFakeInputElipse.show();
			    	 }else{
			    		 $pandaFakeInputElipse.hide();
			    	 } 
				 });
			 });
    	 }
    	 
    	 $select.change(function(){
    		 $('.panda-select-dropdown:visible', this).hide();
    	 });
     });
   };
 })(jQuery);

/*

MARKUP:
add $('input-id').pandaSelect() to the js/view/ file where "input-id" is the select's id
*/
