(function(jq){
    jq.fn.zimmer = function() { 
        
        var list = this.find('.plugin_zimmer') ;
        return list.each( function() {
        
            var _self = jq(this) ; 
            var _open = true ; 
            var _zimmer_formular_box = _self.find('.zimmer_formular_box') ; 
            var _preisliste = jq('#zimmer_preisliste');
            var _preisliste_button = jq('.zl_preisliste a');
            
            var _form_loaded = false ; 
            
            var _zimmer_id = parseInt(_self.find('.zimmer_plugin_id').html()) ; 
            
            // inject the open close button for the main box
            
            var html = '<div class="open_close_button"><a href="javascript://"><img src="/public/media/page/images/close.png" alt="" /></a></div>' ; 
            _self.append(html) ; 
            
            var _open_close_button = _self.find(".open_close_button") ; 
            var _button_image = _open_close_button.find("img") ; 
            
            
            // OPEN CLOSE HANDLER
            _open_close_button.click(function(){
                if (_open) {
                    
                    _self.animate({
                        "left": "-472px"
                    }, 500, function() {
                        _button_image.attr("src", "/public/media/page/images/open.png") ; 
                        _open = false ; 
                    }) ; 
                    if (_zimmer_formular_box.css('display')!='none') {
                        _zimmer_formular_box.stop().hide();
                    }
                    if(_preisliste.css('display')!='none') {
                        _preisliste.stop().hide();
                    }
                    
                } else {
                    
                    _self.animate({
                        "left": "0px"
                    }, 500, function() {
                        _button_image.attr("src", "/public/media/page/images/close.png") ; 
                        _open = true ; 
                    }) ; 
                    if (_zimmer_formular_box.css('display')!='none') {
                        if (jq.browser.msie) {
                            _zimmer_formular_box.css({"display":"block"}) ; 
                        } else {
                            _zimmer_formular_box.fadeIn(500) ; 
                        }
                    }
                    
                }
            }) ;
            
            // PREISLISTE SCROLL
            _preisliste.css({'display':'block', 'visibility':'hidden'});
            var _pl = _preisliste.find('div.plugin');
            
            if(_pl.position()) {
                var _height = 333
                if (_pl.height()>_height) {
                    _pl.css({
                        'height':_height + 'px'
                    }).jScrollPane({
                        verticalGutter:22
                    });
                }
            }
            var userAgent = navigator.userAgent;
            if( userAgent.match(/Android/i) || userAgent.match(/webOS/i) || userAgent.match(/iPhone/i) || userAgent.match(/iPod/i)) {
                //alert('mobile');
            }

            _preisliste.css({'display':'none', 'visibility':'visible'});
            
            
            // PREISLISTE  OPEN CLOSE
            _preisliste.appendTo(jq('.plugin_zimmer'));
            var close_preisliste = function() {
                if (!jq.browser.msie) {
                    _preisliste.stop().fadeOut(500);
                } else {
                    _preisliste.stop().hide(0);
                }
            }
            
            var open_preisliste = function() {
                if(_zimmer_formular_box.css('display')!='none') {
                    close_anfrage_form();
                }
                if (!jq.browser.msie) {
                    _preisliste.stop().fadeIn(500);
                } else {
                    _preisliste.stop().show(0);
                }
            }
            _preisliste_button.click(function() {
                if(_preisliste.css('display')!='none') {
                    close_preisliste();
                } else {
                    open_preisliste();
                }
                return false;
            });
            
        
            // FORM OPEN CLOSE
            var open_anfrage_form = function() {
                if(_preisliste.css('display')!='none') {
                    close_preisliste()
                }
                if (jq.browser.msie) {
                    _zimmer_formular_box.show(); 
                } else {
                    _zimmer_formular_box.fadeIn(500);
                }
            } ; 

            var close_anfrage_form = function() {
                if (jq.browser.msie) {
                    _zimmer_formular_box.hide(); 
                }  else {
                    _zimmer_formular_box.fadeOut(500);
                }
            }
            
            var anfrage_link = _self.find('.zl_anfrage a') ; 
            anfrage_link.click(function(){
                if (_zimmer_formular_box.css('display')!='none') {
                    close_anfrage_form() ;
                } else {
                    open_anfrage_form() ;
                } 
                return false;
            }) ; 
            
            
            // FORM SUBMIT
            var submit_form = function() {
                var form = _self.find('.the_anfrage_form') ; 
                var form_params = form.serialize() ; 
                
                jq.getJSON("/submit_anfrage_form/?"+form_params, 
                    { zimmer_id:_zimmer_id },        
                    function(data, textStatus) {
                        if (textStatus != "success") {
                            return false; 
                        }
                        if (data['success'] == 'false') {
                            _zimmer_formular_box.html(data['form']) ; 
                            var submit_button = _zimmer_formular_box.find('.submit_button') ; 
                            submit_button.click(function(){ submit_form() ; }) ; 
                        } else {
                           _zimmer_formular_box.html(data['html_message']) ;  
                        }
                    }
                ) ;
            } ; 
            
            // FORM LOAD
            var get_anfrage_form = function() {
                jq.getJSON("/get_anfrage_form/", 
                    {},        
                    function(data, textStatus) {
                        if (textStatus != "success") {
                            //alert("Error while fetching Anfrage form. " + textStatus) ; 
                            return false; 
                        }
                        _form_loaded = true ; 
                        _zimmer_formular_box.html(data['form']) ;  
                        
                        // set the click handler for the submit button
                        var submit_button = _zimmer_formular_box.find('.submit_button') ; 
                        submit_button.click(function(){
                            submit_form() ; 
                        }) ; 
                    }
                ) ;
            } ; 
            
            get_anfrage_form() ; 
        });
        
    }
})(jQuery);
