/**
 * Enabling regular based searching in Jquery selector 
 * http://james.padolsey.com/javascript/regex-selector-for-jquery/
 */
jQuery.expr[':'].regex = function(elem, index, match) {
    var matchParams = match[3].split(','),
        validLabels = /^(data|css):/,
        attr = {
            method: matchParams[0].match(validLabels) ? 
                        matchParams[0].split(':')[0] : 'attr',
            property: matchParams.shift().replace(validLabels,'')
        },
        regexFlags = 'ig',
        regex = new RegExp(matchParams.join('').replace(/^\s+|\s+$/g,''), regexFlags);
    return regex.test(jQuery(elem)[attr.method](attr.property));
}

/**
* Tabbed form utilities.
*
* @author Lukas Bruha
*/
tab_form = {
	tabbed_request_divs : null,
	start : null,
	tab_hidden_active : null,
	
	on_click : function(div) {
		$(tab_form.tabbed_request_divs).hide();
		$(div).show();

		// active class setting
		$('UL.tabs LI').removeClass('active');
		$('UL.tabs LI[class=' + $(div).attr('id') + ']').addClass('active');
		$('INPUT#tab_form_active').val($(div).attr('id'));
	},

	register : function() {
		tab_form.tab_hidden_active = $('INPUT#tab_form_active');
		$('FORM DIV.tab-form').each(function(i, n) {
			if ($(n).find("UL.tabs").size() == 0) {
				tab_form.start = $(n).find('DIV#head');
				tab_form.tabbed_request_divs = $(tab_form.start).siblings('DIV[id!=tail]');
				var tabs_ul = $.create('ul').addClass('tabs');
			
				// pick up the information about divs, register on click and hide
				if ($(tab_form.tabbed_request_divs).size() > 0) {
					$(tab_form.tabbed_request_divs).each(function(j, o) {
						var div = $(o).get();
						
						// tab title
						var h3 = $(div).find('h3');
						var id = $(div).attr('id');
						var li_a = $.create('a')
									.attr('href', '')
									.attr('title', $(h3).text())
									.attr('onclick', 'return false;')
									.text($(h3).text())
									.click(function() { 
										tab_form.on_click(div);
										return false;
									});
						var tab_li = $.create('li').attr('class', id);
						$(tab_li).append(li_a);
						$(tabs_ul).append(tab_li);
						$(h3).remove();
	
						$(div).addClass('group');
						$(div).hide();
					
						
						// or if any is active, lets check it
						if (tab_form.tab_hidden_active && $(div).attr('id') == $(tab_form.tab_hidden_active).val()) {
								tab_form.on_click($(div));
						}
						// set active first if not active any other
						if (!$(tab_form.tab_hidden_active).val() && j == 0 ) {
							tab_form.on_click($(div));
							$(tab_li).addClass('active');
						}
					});
			
					// insert ul list
					$(tab_form.start).after($(tabs_ul));
					$(tabs_ul).after($.create('div').addClass('clear'));
				}
			}
		});
		
		// ajax hack to set an active tab
		if (tab_form.tab_hidden_active) {
			$('DIV.tab-form UL.tabs LI[class=' + tab_form.tab_hidden_active.val() + ']').addClass('active');
		}
		
		if ($("FORM DIV.tab-form UL.tabs").size() > 0) {		
			$('FORM DIV.tab-form DIV.group').each(function(i, n) {
				if ($(n).find("P.frm-error-message").size() > 0) {
					
					$('FORM DIV.tab-form UL.tabs LI').each(function(j, m) {
						if ($(m).hasClass($(n).attr('id'))) {
							$(m).find('A').addClass('errors-inside').click(function() {
								$(this).css('text-decoration', 'none');
							});
							 
	}
					});
}
			});	
		}

	}
}

/**
* Class encapsulating all the methods for adding an item to cart. 
*
* @author Lukas Bruha
*/
cart = {
	cart_address_id : 0,

	// sets drag and drop to products and cart
	load_drag_and_drop : function() {
		// setting of draggable items and cloning them 
		$(".drag").draggable({
			helper:'clone', 
			zIndex: 5000, 
			opacity: 0.5,
			cursorAt: {cursor: 'crosshair', top: 15, left:15}
		    }),
		
		// box that accepts draggable items 
		$(".drop").droppable({
			accept: ".drag",
			activeClass: 'droppable-active',
			hoverClass: 'droppable-hover',
			tolerance: 'pointer',
			drop: function(ev, ui) {
				// not defined where to drop the dragged item, 
				// just popup form calling
				var elem = $(ui.draggable).parents('.product');
				
				cart.cart_address_id = $(this).find('INPUT[name=address_id]').val();
				cart.add_to_cart($(elem));
			}
		});
	},
	
	//enable cart items colapsing 
	cart_toggle: function (elem,classes){
		//set expiration for week - for cookie
		var date = new Date();
        date.setTime(date.getTime() + (7 * 24 * 60 * 60 * 1000)); 
        
		if ($(classes).is(':hidden')) { //check for current state
			///TODO - deleting cookie not work on all viewers
			$.cookie('SPO_CART_'+classes, '0', { path: '/', expires: date }); //set not hidden state as pernament
			$(classes).show(); //show subitems
			$(elem).addClass('more-details-opened');
		} else {
            $.cookie('SPO_CART_'+classes, '1', { path: '/', expires: date }); //set hiden state as pernament 
			$(classes).hide();
			$(elem).removeClass('more-details-opened');
		}
		return false;
	},

	// add to cart - onclick/dragging values filling 
	fill_form : function(elem, isDestructive) {
		isDestructive = typeof(isDestructive) != 'undefined' ? isDestructive : true;
		
		var is_face_product = $(elem).find('INPUT[name=is_face_product]').val() * 1;
		$('.modal').parents('FORM').find('INPUT[name=IS_FACE_PRODUCT]').val(is_face_product);
		
		var product_code = $(elem).find('INPUT[name=product_code]').val();
		$('.modal').find('SELECT[name=P20_ARTICLE_CODE]').val(product_code);

		// it is required to copy the product's select option with face values to add form
		var orig_options = 	$(elem).find('SELECT[name=FACE_VALUES]').find('OPTION').clone();
		if (isDestructive) {
			var product_face_value = $(elem).find('SELECT[name=FACE_VALUES]').val();
		} else { 
			var product_face_value = $('.modal').find('SELECT[name=FACE_VALUES]').val();
		}
		$('.modal').find('SELECT[name=FACE_VALUES]').html(' ');
		$('.modal').find('SELECT[name=FACE_VALUES]').html(orig_options);
		
		$('.modal').find('SELECT[name=FACE_VALUES]').find('OPTION[value=' + product_face_value + ']').attr('selected', 'selected');
		
		// it is required to copy the product's select option with bounded items to add form
		var orig_options = 	$(elem).find('SELECT[name=BOUNDED]').find('OPTION').clone();
		if (isDestructive) {
			var bounded_value = $(elem).find('SELECT[name=BOUNDED]').val();
		} else {
			var bounded_value = $('.modal').find('SELECT[name=BOUNDED]').val();
		}
		$('.modal').find('SELECT[name=BOUNDED]').html(' ');
		$('.modal').find('SELECT[name=BOUNDED]').html(orig_options);
		$('.modal').find('SELECT[name=BOUNDED]').find('OPTION[value=' + bounded_value + ']').attr('selected', 'selected');
		
		// set visibility upon to product type
		if (is_face_product) {
			$('.modal').find('SELECT[name=FACE_VALUES]').parents('TR').show();
			
			// if bounded selectbox has only one or no value, it is empty and we don't show it
			// (because one value means, there is only first empty line)
			if ($('.modal').find('SELECT[name=BOUNDED]').find('OPTION').length <= 1) {
				$('.modal').find('SELECT[name=BOUNDED]').parents('TR').hide();
			}
			else {
				$('.modal').find('SELECT[name=BOUNDED]').parents('TR').show();
			}
		}
		else {
			$('.modal').find('SELECT[name=FACE_VALUES]').parents('TR').hide();
			$('.modal').find('SELECT[name=BOUNDED]').parents('TR').hide();
		}
		
		var product_name = $('.modal').find('SELECT[name=P20_ARTICLE_CODE] OPTION:selected').text();
		var cancel_a = $('.modal')
							.find('H3')
							.find('A.close')
							.clone()
							.click(function() { 
								cart.close_form();
								return false;
							});
		$('.modal').find('H3').text(product_name);
		$('.modal').find('H3').prepend(cancel_a);
		$('.modal').find('SELECT[name=P20_ARTICLE_CODE]').parents('TR').hide();

		if (isDestructive) {
			var product_price = $(elem).find('INPUT[name=pieces]').val();
			$('.modal').find('INPUT[name=ITEM_COUNT]').val(product_price);
		}
		
		// get if of only address in the cart
		var only_address_id = $('DIV#cart').find('INPUT[name=only_address_id]').val() * 1;

        // Try to find address ID, if customer has only one address
        // Mantis 8767
        var deliweries = $('.modal SELECT[name=C30_ADDRESS_ID] optgroup').children();
        if ( (deliweries.length == 1) && !cart.cart_address_id ) {
            // If there id only one address and cart address is not set take it
            cart.cart_address_id = deliweries.val();
        }
		
		// address given by drag-and-drop => highest priority
		if(cart.cart_address_id) {
			$('.modal').find('SELECT[name=C30_ADDRESS_ID]').val(cart.cart_address_id);
		}
		// only address has second highest priority
		else if(only_address_id) {
			//zip error check - only with no error in popup form
			if($("form.popup-form DIV.product-add-form p.frm-error-message").length == 0) {
				$('.modal').find('SELECT[name=C30_ADDRESS_ID]').val(only_address_id);
			}
		}

		//register ENTER on select box
		$('.modal').find('SELECT').keydown(function(e) {
			if (e.which == 13) {
				if (popup_form.check()) {
					cart.send_form();
					}
				};
		});
	},
	
	show_form : function() {
		$('#overlay').show();
		$('.modal').show();
		//fix for modal dialog can't be fixed position - in ie6 use absolute and top is calulated
		if ($.browser.msie && $.browser.version < 7) {
			$.scrolledTop = Math.round($(document).scrollTop() + 200);
			$('.modal').css({top: $.scrolledTop + 'px'});
		}
		//focus on first input or submit
		$('.modal input:visible').each(function(i, n) {
				if (i == 0 )  $(n).focus(); //only first element - Jquery selector :first doesnt work correctly
		 });
		
		//fix stupid IE bug - random hide footer on closing or opening modal upper him
		if ($.browser.msie && $.browser.version < 7) {
			$('.centered-container').hide();
			$('.centered-container').show();
		}
	},

	close_form : function() {
		$('.modal').hide();
		$('#overlay').hide();
		
		//fix stupid IE bug - random hide footer on closing or opening modal upper him
		if ($.browser.msie && $.browser.version < 7) {
			$('.centered-container').hide();
			$('.centered-container').show();
		}
	},
	
	send_form : function() {
		$('.modal').parents('FORM').submit();
	},

	// checks if it is not possible to send form directly to cart
	is_form_filled : function() {
		var is_face_product = $('.modal').parents('FORM').find('INPUT[name=IS_FACE_PRODUCT]').val() * 1;
		
		if (is_face_product) {
			var modal_face_values = $('.modal').find('SELECT[name=FACE_VALUES]').val();

			if ($('.modal').find('SELECT[name=BOUNDED]').find('OPTION').length <= 1) {
				var bounded_values = true;
			}
			else {
				var bounded_values = $('.modal').find('SELECT[name=BOUNDED]').val();
			}
		}
		else {
			// products has no face values, so we hack it as face value is filled
			var modal_face_values = true;
			var bounded_values = true;
		}
		
		var modal_product_code = $('.modal').find('SELECT[name=P20_ARTICLE_CODE]').val();
		var modal_items_count = $('.modal').find('INPUT[name=ITEM_COUNT]').val();
		var modal_address_id = $('.modal').find('SELECT[name=C30_ADDRESS_ID]').val();	

        // Mantis 12360 - if there is no delivery Address, don't continue
        if ( isNaN(Number(modal_address_id)) ) {
            modal_address_id = false;
        }

		if (modal_face_values && modal_product_code && modal_items_count && modal_address_id && bounded_values && modal_items_count > 0) {
			return true;
		}
	
		return false;
	},
	
	add_to_cart : function(elem) {
		if (elem) {
			cart.fill_form(elem);
		}
		
		// we are able to send correctly filled form				
		if (cart.is_form_filled() && elem) {
			var idle = $("DIV#idle");
			
			$(idle).addClass('modal');
			$(idle).show();
			$('#overlay').show();
			
			cart.send_form($('.modal').parents('FORM'));
		}
		else {
			cart.show_form();
		}

		// address_id must be set to zero 
		// because of the next filling		
		if (elem) {
			cart.cart_address_id = 0;	
		}
	},

	// inits onclick product submit, addform cancel and moves addform to higher layer
	load_products : function() {
		$('DIV.product').each(function(i, n) {
			$(n).parents('FORM').submit(function() {
				cart.add_to_cart($(n));
				return false;
			});
			$(n).find('SELECT').keydown(function(e) {
				if (e.which == 13) {
					cart.add_to_cart($(n));
					return false;
				}
			});
		});
		
		// onclick close
		var cancel_a = $.create('a')
							.text('x')
							.attr('class', 'close')
							.attr('href', '')
							.click(function() { 
								cart.close_form();
								return false;
							});
		
		var form = $('.modal').parents('FORM').clone();
		$('.modal').parents('FORM').remove();
		$('#content').prepend(form);

		$('.modal DIV#base H3').prepend(cancel_a);	
	},
	

	// onload registering onclick function
	register : function() {
		cart.load_products();
		cart.load_drag_and_drop();
	}
}

/**
 * Language switcher for large forms in Admin CMS 
 */
admin_cms_form = {
				
	show_language : function(key, elem, form ) {
		if (!form) {
			form =  'frmAdminCmsObjectFormControl';
		}
		//remark curent preview languages, for display preview
		$('#TempCurrentEditLang').each(function(i, n) {
			this.value = key;
			});
				
		$('.admin-cms-form-lang-switch').find('A').each(function(i, n) {
			$(n).removeClass('button-active');
		});
		 
		$(elem).addClass('button-active');

		if (key){
			//hide all
			$(':regex(id,^'+form+'-lang)').each(function(i, n) { 
				$(n).parent().parent().hide(); 
			});
			//also hide all existings documents if exists
			$(':regex(class,^cms_documents_)').each(function(i, n) { 
				$(n).parent().parent().hide(); 
			});
		}
		
		//show selected
		$(':regex(id,^'+form+'-lang' + key + ')').each(
			function(i, n) {
				$(n).parent().parent().show();
			}
		);
		//also show all existings documents for selected language
		$(':regex(class,^cms_documents_' + key + ')').each(function(i, n) { 
			$(n).parent().parent().show();
		});
		
		return false;
	}
}

spo_message_form = {
				
	show_language : function(key, elem) {
		$('.spo-message-form-lang-switch').find('A').each(function(i, n) {
			$(n).removeClass('button-active');
		});
		 
		$(elem).addClass('button-active');

		if (key){
			//hide all
			$(':regex(id,^frmSPOAdminMessagetFormControl-lang)').each(function(i, n) { 
				$(n).parent().parent().hide(); 
			});
		}
		
		//show selected
		$(':regex(id,^frmSPOAdminMessagetFormControl-lang' + key + ')').each( 
			function(i, n) { 
				$(n).parent().parent().show();
			}
		);
		
		return false;
	}
}
/**
* A class to handle onload modal window.
* Modal window is automatically visible but the transparent overlayed backround must be set on. 
*
*/
modal_visible = {
	
	close_form : function() {
		$('.modal-visible').hide();
		$('#overlay').hide();
	},
	
	show_form : function() {
		if($('.modal-visible').size() > 0) {
			// IE7 HACK - clone is not cloning selected values
			var selects_and_selected = new Array(); 
		
			// onclick close
			var cancel_a = $.create('a')
							.text('x')
							.attr('class', 'close')
							.attr('href', '')
							.click(function() { 
									modal_visible.close_form();
									return false;
							});

			// IE7 HACK - saves selected values
			if ($.browser.msie) {
				$('.modal-visible SELECT').each(function(i , n) {
					selects_and_selected.push(new Array($(n).attr('name'), $(n).val()));
				});
			}
			
			var form = $('.modal-visible').parents('FORM').clone(true);
			$('.modal-visible').parents('FORM').remove();
			$('#content').prepend(form);
	
			// IE7 HACK - select previous selected values
			if ($.browser.msie) {
				$.each(
					selects_and_selected,
					function(i, n) {
						var pair = $(n);
					
						$('SELECT[name=' + pair[0] + ']').val(pair[1]);
					}
				);
			}
	
			$('.modal-visible DIV#base H3').prepend(cancel_a);	
	
			$('.modal-visible').show();
			$('#overlay').show();
			
		}
	},
	
	register : function() {
		modal_visible.show_form();
	}
}

/**
* Structure hacks.<b> 
*
* @author Lukas Bruha
*/
structure = {
	// hides non-active sidebar submenu items 	
	hide_submenu : function() {
		// structure submenu
		$('DIV#sidebar-menu UL LI').each(function(i, n) {
			if (!$(n).hasClass('active')) {
				$(n).children('UL').hide();
			} else {
				if ($(n).children('UL').size() > 0) {
					$(n).removeClass('last');
				}
			}
		});	
	},

	// onload registering
	register : function() {
	}
}

/**
* A class for holding previous values of form fields.
* When user clicks to fill but holds up this operation and leaves this fields empty,
* this class resets default values. 
*
* @author Lukas Bruha
*/
form_fields_values = {
	forms: new Array(),
	form_values: new Array(),

	// saves default values and registers onchange function
	save_defaults : function() {
		$(form_fields_values.forms).each(function(i, n) {
			$(n).find('INPUT:text, TEXTAREA').each(function(j, m) {
				form_fields_values.form_values.push(new Array($(m).attr('name'), $(m).val()));
				form_fields_values.on_change($(m));
			});
		});
	},
	
	// applies focus and blur functions
	on_change : function(elem) {
		var elem_name = '';
		
		// when user clicks inside the field
		$(elem).focus(function() {
			elem_name = $(elem).attr('name');
		
			// searching for current element
			$.each(form_fields_values.form_values, function(i, n) {
				var pair = $(n).get();
					
				// if default value inside, we are allowed to empty it
				if ((pair[0] == elem_name) && (pair[1] == $(elem).val())) {
					$(elem).val('');
				}
			});		
		});
		
		// when user leaves the field
		$(elem).blur(function() {
			if ($(elem).val() == '') {
					
				// searching for current element
				$.each(form_fields_values.form_values, function(i, n) {
					var pair = $(n).get();
					
					// replacing empty value for default one
					if (pair[0] == elem_name) {
						$(elem).val(pair[1]);
					}
				});
			}
		});
	},

	// onload
	register : function(forms) {
		form_fields_values.forms = forms;
		form_fields_values.save_defaults();	
	}
}

/**
* IE6 hacks.
*
* @author Lukas Bruha
*/
ie6_hacks = {

	png_fix : function() {
		DD_belatedPNG.fix('.png-fix, DIV#home-page-unloged INPUT');
	},

	menu_hover : function() {
		// structure submenu
		$("DIV#menu UL LI").hover(
			function () {
				$(this).addClass('over');

				if (!$(this).hasClass('active')) {
					$(this).addClass('arrow');
				}
			}, 
			
			function () {
				$(this).removeClass('over');
				$(this).removeClass('arrow');
			}
		);
		
	},
	
	selectover_hover_fix : function() {
		// structure submenu
		$('#overlay').bgiframe();
		$('DIV#menu ul').bgiframe();
	},
	button_hover_fix: function(){
		$('INPUT.button').hover(
			function(){ $(this).addClass('ie6hover'); },
			function(){ $(this).removeClass('ie6hover'); }
		);	
	},	


	register : function() {
		if ($.browser.msie && $.browser.version < 7) {
			ie6_hacks.menu_hover();
			ie6_hacks.png_fix();
			ie6_hacks.selectover_hover_fix();
			ie6_hacks.button_hover_fix();
			
			// move footer allways on bottom when mouse clicked 
			// (because of dynamicaly expanded forms)
			/*$('DIV.body-content').click(function(){
				$('.main-footer').css('top', ($('#content').height() + $('.main-footer').height() - 49) + 'px');
			});*/
			
			// fix footer position while startup
			//$('.main-footer').css('top', ($('#content').height() + $('.main-footer').height() - 49) + 'px');
		}
	}
}

form_hacks = {
	hidden_cancel_sent : null,
	
	// removes enter when .cancel button is first 
	register : function() {
		$('FORM').keypress(function(e) {
			if (e.which == 13) {
				if (form_hacks.hidden_cancel_sent == null) {
					form_hacks.hidden_cancel_sent = $.create('input')
													 .attr('type', 'hidden')
													 .attr('name', 'is_cancel_sent')
													 .val('0');
														
					$(this).append(form_hacks.hidden_cancel_sent);
				}
			}
		});		

		$('FORM').each(function(i, n) {
			if (($(n).find('INPUT[type=submit]').attr('name') == 'cancel') ||
		 		 $(n).find('INPUT[type=submit]').hasClass('cancel')) {
		 			$(this).find('INPUT[type=submit]:eq(0)').click(function() {
						// hidden is already in form, or not
						if (form_hacks.hidden_cancel_sent == null) {
							$(form_hacks.hidden_cancel_sent).val('1');
						}
 				});
 			}
		});
	//add default button .default for submiting form by enter
	$("form input, form select").live('keypress', function (e) {
		if ($(this).parents('form').find('button[type=submit].default, input[type=submit].default').length <= 0)
			return true;
	
		if ((e.which && e.which == 13) || (e.keyCode && e.keyCode == 13)) {
			$(this).parents('form').find('button[type=submit].default, input[type=submit].default').click();
			return false;
		} else {
			return true;
		}
	}); 
	}
}

/**
* POPUP FORM SUBMIT
*
* @author Daniel Brabec
*/
popup_form = {
	check: function (form) {
		var errors = false;
		
		$(form).find(':input').removeClass('frm-error');
		$(form).find('p.frm-error-message').remove();
		
		$(form).find(':input').each(function(i, n) {
			// IE8 hack: visible selector is not enought for IE8 :(
			if ($(n).parents('TR:first').is(':visible') && $(n).parents('TR:first').css('display') != 'none') { 
				if ($(n).parents('TR:first').hasClass('required') && !$(n).val()) {
					errors = true;
					$(n).addClass('frm-error');
					$(n).after('<p class="frm-error-message">'+ $.dpText.TEXT_INPUT_NOT_FILED +'</p>');
				}
				else if ($(n).parents('TR:first').hasClass('number') && !(/^[0-9]+$/.test($(n).val()))) {
					errors = true;
					$(n).addClass('frm-error');
					$(n).after('<p class="frm-error-message">'+ $.dpText.TEXT_INSERT_NUMBER +'</p>');
				}
				else if ($(n).parents('TR:first').hasClass('numberpositive') && !($(n).val() > 0)) {
					errors = true;
					$(n).addClass('frm-error');
					$(n).after('<p class="frm-error-message">'+ $.dpText.TEXT_INSERT_NUMBERPOSITIVE +'</p>');
				}
			}
		});
		
		return !errors;
	}
}


/* REGISTER FUNCTIONS */
$.extend({
    registerOnStart: function () {
		// structure
		structure.register();
		
		// form tabs
		tab_form.register();
		cart.register();
		
		//ie6_hacks.register();
		modal_visible.register();
		
		// form fields values
		form_fields_values.register(new Array(
										$('DIV#contact-request FORM').get(),
										$('DIV#quick-search FORM').get()
									));
	
		// submit form hack
		form_hacks.register();
	
		// enabling multiselect
		$("SELECT.multipleselect").multiSelect({ 
			oneOrMoreSelected: '*',
			selectAll: false,
			noneSelected: $.dpText.TEXT_NOT_SELECTED
		});
		
		// enabling multiselect witch SelectAll option enabled
		$("SELECT.multipleselectall").multiSelect({ 
			oneOrMoreSelected: '*',
			selectAll: true,
			noneSelected: $.dpText.TEXT_NOT_SELECTED,
			selectAllText: $.dpText.TEXT_ALL
		});
		
		if (!$.browser.msie || $.browser.version > 7) {
			$("INPUT.jcalendar").datePicker({startDate:'01.01.2009'});
		}
		
		    
	}
});

/* REGISTER FUNCTIONS only once - not in ajax */
$.extend({
    registerOnceOnStart: function () {
    /*
    	// nette ajaxlink for all link with class "AJAXLINK" - and for all future links too
		$("a.ajaxlink").live("click", function () {
			$.netteAjax(this.href);
			return false;
		});
		// send ajax form by enter
	    $("FORM.ajaxform").live('submit' , function () {
	          $(this).netteAjaxSubmit();
	          return false;
	    });
	
	    // sending ajax form by submit button
	    $("FORM.ajaxform :submit").live('click', function () {
	         $(this).netteAjaxSubmit();
	         return false;
	    });
	    */
	   
	   /* - disabled
	    // ajax send by selectbox onchange action 
		$("FORM.ajaxform select").live('change', function() {
			$(this.form).netteAjaxSubmit();
			return false;
		});
		*/
		
		// JS validation of popup-form
	    $("FORM.popup-form :submit").live("click", function () {
	         return popup_form.check($(this).parents('FORM'))
	    });
	    
	    
	    //if is error on poupu form, display again
		if($("form.popup-form DIV.product-add-form p.frm-error-message").length > 0) {
				cart.add_to_cart();
				
				//try to find selected product
				var ProductId = null;
				ProductId = $("form.popup-form #frmProductAddFormControl-P20_ARTICLE_CODE").val();
				//fix for entering product throw detail 
				$("FORM div.product input.article-code").each(function (i,n) {
					if ($(n).val() == ProductId) { //find product
						//and fetch detail information
						elem = $(n).parents('form').get(0);
						cart.fill_form(elem,false);
					}
				});

				//fix for entering product by product list
				$("div#products-list div.box input[name=product_code]").each(function (i,n) {
					if ($(n).val() == ProductId) { //find product
						//and fetch detail information
						elem = $(n).parents('form.type-product').get(0);
						cart.fill_form(elem,false);
					}
				});
				
				
		}
		 
		
	}
});

/* 
 * Removes D&D functionality for nonunique DW addresses 
 */
$.extend({
    killDropsOnStart: function () {
	
	var drops = $(".drop input[name='address_id']");
	
	// Inicializuje statistiku počtů address_id v koši
	var stats = new Array();
	drops.each(function (i, n) {
		if ( undefined === stats[$(n).val()] ) {
			stats[$(n).val()] = 1;
		} else {
			stats[$(n).val()]++;
		}
	});
	
	drops.each(function(i, n) {
		if ( stats[$(n).val()] > 1 ) {
			$(n).parents("div.drop").attr("class", "nodrop");
		}
	});
	}
});

/**
* Hide description and replaces it with question mark picture
* Mantis 9456
*/
function descriptionFix()
{
    small = $('input ~ small');
    small.each(function (i, row) {
        $(row).attr("title",  $(row).html());
        $(row).html("&nbsp;");
        $(row).removeClass("hidden");
    })
}

/* GLOBAL ONLOAD FUNCTIONS */
$(document).ready(function(){
    $(function () {
        $("DIV#idle")
        	.ajaxStart(function () {
        		var idle = $("DIV#idle").clone();
        		$('#overlay').after($(idle).addClass('modal').show());
        		
        		if (isAjaxFormSubmit || isAjaxShowModalRequired) { /*global variable from jquery-ajax*/
        			//overlay div (black transparent background) is showing only if ajax post action (expect longer delay)
        			$('#overlay').show();
        		}
        		$('.modal').show();
				//fix for modal dialog can't be fixed position - in ie6 use absolute and top is calulated
				if ($.browser.msie && $.browser.version < 7) {
					$.scrolledTop = Math.round($(document).scrollTop() + 200);
					$('.modal').css({top: $.scrolledTop + 'px'});
				}
	        }).ajaxStop(function () {
	        	if (!isRedirecting) {
	    	    	$('#overlay').empty();
					$('.modal').hide();
	     			$('#overlay').hide();
	     		}
        	});
	});
    
    $.killDropsOnStart();
    $.registerOnStart();
	$.registerOnceOnStart();
	ie6_hacks.register();
    descriptionFix()
});

