/**
 * @author alexander.farkas
 */
(function($){
    jQuery.fn.extend({
        createLinkButton: function(s){
            s = jQuery.extend({
                innerLink: '<span><span><span>$value</span></span></span>',
				extraClass: 'button',
				defaultSubmitText: 'abschicken'
            }, s);
            return this.each(function(){
                var jElm = jQuery(this),
				classnames = this.className, 
				val = jElm.val();
				classnames = (classnames)?' class="' + classnames + '"':'';
				val = val || s.defaultSubmitText;
				
				var innerlink = s.innerLink.replace(/\$value/,val);
				
                var link = jElm.after('<a href="#"'+classnames+'>'+innerlink+'</a>').next('a').addClass(s.extraClass).attr('role', 'button');
				if(jQuery.browser.msie){
                	jElm.css({position: 'absolute', left: '-99999em', width: '0px', height: '0',overflow: 'hidden'})
						.attr({tabindex: '-1'});
				} else {
					jElm.css({display: 'none'});
				}
                link.bind('click.createLinkButton', function(){
					jElm.click();
                	return false;
				});
            });
        }
    });
})(jQuery);
jQuery.fn.rewriteSelectStore = function (opts){
	opts = jQuery.extend({
		removeSubmit: true,
		autoSubmit: true,
		changeFn: function(){}
	}, opts);
	return this.each(function(){
		var jElm = jQuery(this),
			val = jElm.val(),
			name = jElm.attr('name'), 
			width = jElm.width()+5,
			selText = jQuery('option:eq('+this.selectedIndex+')', this).text(),
			selContainer = jElm.parent(),
			selIndicator = '<span style="width: '+width+'px" class="indicator"><span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span><em>'+selText+'</em></span>',
			options = '',
			selected,
			buttonSubmit = jElm.is('.has-submit'),//
			form;
		
		form = selContainer.parents('form:first');
		if(opts.removeSubmit) {
			jQuery('input[type=submit]', form[0]).remove();
		}
		jQuery('option', this).each(function(){
			selected = (this.selected) ?
				' class="radio checked-radio"' :
				' class="radio"';
			options += '<li><span'+selected+' data-value="'+jQuery(this).val()+'">'+jQuery(this).text()+'</span></li>';
		});
		width += 2;
		var selectReplacement = jQuery('<ul><li>'+selIndicator+'<div style="width: '+width+'px" class="options"><div><ul>'+options+'</ul>' +
			'<span class="bl"></span><span class="br"></span></div></div></li></ul>').appendTo(selContainer[0]);
		jElm.remove();
		var hiddenInput = jQuery('<input type="hidden" value="'+val+'" name="'+name+'" />').appendTo(selContainer[0]);
		selIndicator = jQuery('span.indicator em', selContainer[0]);
		
		selectReplacement.menubar({
			selSubmenu: 'div',
			needToActivate: true,
			closeOnLeave: false,
			menuClass: 'ui-select',
			menuitem: 'span'
		}).bind('menuitemchange', function(e, instance){
    			if (instance.checked) {
    				var text = jQuery.trim(instance.element.text());
    				selIndicator.text(text);
    				hiddenInput.val(instance.menuitem.attr('data-value'));
				opts.changeFn();
				if(opts.autoSubmit) {
					form.submit();
				}
			}
		});
		
	});
};
jQuery.fn.rewriteSelectLanguage = function (opts){
	opts = jQuery.extend({
		removeSubmit: true,
		autoSubmit: false,
		changeFn: function(){}
	}, opts);
	return this.each(function(){
		var jElm = jQuery(this),
			val = jElm.val(),
			name = jElm.attr('name'), 
			width = jElm.width()+5,
			selText = jQuery('option:eq('+this.selectedIndex+')', this).text(),
			selContainer = jElm.parent(),
			selIndicator = '<span style="width: '+width+'px" class="indicator"><span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span><em>'+selText+'</em></span>',
			options = '',
			selected,
			buttonSubmit = jElm.is('.has-submit'),//
			form;
		
		form = selContainer.parents('form:first');
		if(opts.removeSubmit) {
			jQuery('input[type=submit]', form[0]).remove();
		}
		jQuery('option', this).each(function(){
			selected = (this.selected) ?
				' class="radio checked-radio"' :
				' class="radio"';
			options += '<li><span'+selected+' data-value="'+jQuery(this).val()+'">'+jQuery(this).text()+'</span></li>';
		});
		width += 2;
		var selectReplacement = jQuery('<ul><li>'+selIndicator+'<div style="width: '+width+'px" class="options"><div><ul>'+options+'</ul>' +
			'<span class="bl"></span><span class="br"></span></div></div></li></ul>').appendTo(selContainer[0]);
		jElm.remove();
		var hiddenInput = jQuery('<input type="hidden" value="'+val+'" name="'+name+'" />').appendTo(selContainer[0]);
		selIndicator = jQuery('span.indicator em', selContainer[0]);
		
		selectReplacement.menubar({
			selSubmenu: 'div',
			needToActivate: true,
			closeOnLeave: false,
			menuClass: 'ui-select',
			menuitem: 'span'
		}).bind('menuitemchange', function(e, instance){
    			if (instance.checked) {
    				var text = jQuery.trim(instance.element.text());
    				var url = instance.menuitem.attr('data-value');
    				selIndicator.text(text);
    				window.open(url, '_self');
    				hiddenInput.val(instance.menuitem.attr('data-value'));
				opts.changeFn();
				if(opts.autoSubmit) {
					form.submit();
				}
			}
		});
		
	});
};
(function($){
	
    function callOnDomReady(){
    	if(jQuery.fn.menubar){
			jQuery('#store-locator select').rewriteSelectStore();
			jQuery('#choose-language').rewriteSelectLanguage();
		}
		if(jQuery('body#form').length > 0) {
			jQuery('h3 a')
				.tab({animationToggle: 'slideToggle', closeOnClick: true});
		}
		jQuery('#content-submit,#search-button')
			.createLinkButton({
				innerLink: '<span class="tl"></span><span class="tr"></span><span class="bl"></span><span class="br"></span>$value'
			});
    }
	
    jQuery(callOnDomReady);
	
})(jQuery);