// schilling.js
//
// Don't include me directly - use liferay-portlet.xml to get me going!
//
//

// First some general jQuery extensions...

jQuery.extend(
	Liferay.Popup,
	{
		destroy: function(el) {
			var instance = this;
			var obj = el;

			if (el) {
			if (!el.jquery) {
				obj = jQuery(el);
			}
			}

			if (!obj.is('.ui-dialog-content')) {
				obj = obj.parents('.ui-dialog-content');
			}

			obj.dialog('destroy');
		},

		position: function(el, options) {
			var instance = this;
			var obj = el;

			if (el) {
			if (!el.jquery) {
				obj = jQuery(el);
			}
			}

			if (!obj.is('.ui-dialog-content')) {
				obj = obj.parents('.ui-dialog-content');
			}

			obj.dialog('position', options);
		},

		update_do: function(id, url, options) {
			var instance = this;
			var obj = jQuery(id);
			var afterupdate = options.afterupdate;
			obj.html('<div class="loading-animation"></div>');
			jQuery.ajax(
					{
						url: url,
						success: function(data) {
						obj.html(data);
						if (afterupdate) {
							if (typeof afterupdate == 'string')
								return eval(afterupdate);
							else /* TODO: Is this a function then....hmmmm */
								return afterupdate();
						}
					}
					}
			);
		},

		copyfrom: function(popid, srcid) {
			var instance = this;
			var obj = jQuery(popid);
			var data = jQuery(srcid).html();
			jQuery('#'+popid).html(data);
		}	
	}
);

(function($) {
	$.fn.customFadeIn = function(speed, callback) {
		$(this).fadeIn(speed, function() {
			if(!$.support.opacity)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.customFadeOut = function(speed, callback) {
		$(this).fadeOut(speed, function() {
			if(!$.support.opacity)
				$(this).get(0).style.removeAttribute('filter');
			if(callback != undefined)
				callback();
		});
	};
	$.fn.customFadeTo = function(speed,to,callback) {
		return this.animate({opacity: to}, speed, function() {
			if (to == 1 && jQuery.browser.msie)
				this.style.removeAttribute('filter');
			if (jQuery.isFunction(callback))
				callback();
		});
	};
})(jQuery);


// The Schilling DOM extension - contains minimal basket-information for use with
// Ajax-based basket updates. 
//

var Schilling = {
	Basket: {
		addPopUp: '',
		lineOrderedQuantity: 0,
		lineDeliveredQuantity: 0,
		lineDiscountPercent: 0,
		lineTotal: 0,
		lineSalesPrice: 0,
		orderDiscountAmount: 0,
		orderItemsTotalQuantity: 0,
		totalIncludingRounding: 0,
		numberOrderLines: 0,
		orderProductsTotal: 0,
		orderSubTotal: 0,
		orderVATAmount: 0,
		orderTotalIncludingRounding: 0,
		errorMessage: '',
		updateTime: 0,
		loadTime: (new Date()).getTime(),
		wprTime: 0,
		setValues:
			function(data) {
				this.lineOrderedQuantity = data.lineOrderedQuantity;
				this.lineDeliveredQuantity = data.lineDeliveredQuantity;
				this.lineDiscountPercent = data.lineDiscountPercent;
				this.lineTotal = data.lineTotal;
				this.lineSalesPrice = data.lineSalesPrice; 
				this.orderDiscountAmount = data.orderDiscountAmount;
				this.orderItemsTotalQuantity = data.orderItemsTotalQuantity;
				this.totalIncludingRounding = data.totalIncludingRounding;
				this.orderTotalIncludingRounding = data.orderTotalIncludingRounding;
				if (data.numberOrderLines) {
					this.numberOrderLines=data.numberOrderLines;
				}
				this.orderProductsTotal = data.orderProductsTotal;
				this.orderSubTotal = data.orderSubTotal;
				this.orderVATAmount = data.orderVATAmount;
				this.orderFreight = data.orderFreight;
				this.orderPostage = data.orderPostage;
				
				this.errorMessage=data.errorMessage;
				
				this.updateTime=(new Date()).getTime();
			},
		add:
			function (productNumber, quantity, productText, courseNumber, courseGroup, timeMillis) {
				var html = '<div class="sch-addbasket-product-text">'+productText+'</div><div class="loading-animation"></div>';
				var addPopUp = Liferay.Popup({
					position: "center",
					draggable: false,
					resizable: false,
					message: html,
					modal: false,
					className: "SchPopupInfo",
					title: null,
					width:220
				});
				var addquantity=1;
				if (quantity.length>0)
					addquantity=quantity;
				if (!courseNumber) {
					courseNumber = '';
					courseGroup = ''
				}
				if (productText.length > 50)
				    productText = productText.substring(1, 50);
				jQuery.ajax(
				{
					scriptCharset: 'utf-8',
					contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
					type: 'POST',
					url: '/c/schilling/products/updatebasket',
					data: {
						cmd: 'add',
						productNumber: productNumber,
						quantity: addquantity,
						productText: productText,
						courseNumber: courseNumber,
						courseGroup: courseGroup,
						timeMillis: Schilling.Basket.wprTime
					},
					success: function(data) {
								if (data != '') {
									var jsonobj = eval("("+data+")");
									Schilling.Basket.setValues(jsonobj);
									Liferay.trigger('schNotifyOnBasketChange', 'Okay Okay Boys!');
								} else {
									alert("Oooops - try again!");
								}
								if (jsonobj.errorMessage.length > 0) {
									if (Schilling.Compare.isActive) {
										jQuery('.SchPopupCompare').find('.sch-compare-message').html('<br>'+jsonobj.errorMessage);
										addPopUp.hide("fast", function () { Liferay.Popup.close(addPopUp) } );
										return;
									} 
									jQuery('.SchPopupInfo').find('.ui-dialog-content').find('div.loading-animation').hide();
									var newHtml = jQuery('.SchPopupInfo').find('.ui-dialog-content').html();
									newHtml = newHtml + '<br><div class=\'sch-ui-dialog-content\'>'+jsonobj.errorMessage+'<br><br><div class="button-holder"><input class=\'sch-popup-close\' type=\'button\' value=\''+Liferay.Language.get("close")+'\'></div></div>';
									jQuery('.SchPopupInfo').find('.ui-dialog-content').html(newHtml);
									jQuery('.sch-popup-close').click(function() {
										addPopUp.hide("fast", function () { Liferay.Popup.close(addPopUp) } );
									});
								} else {
									jQuery('.SchPopupCompare').find('.sch-compare-message').html('');
									addPopUp.hide("fast", function () { Liferay.Popup.close(addPopUp) } );
								}
							},
					failure: function() {
								addPopUp.hide("fast", Liferay.Popup.close(addPopUp));
								alert("Oooops - try again!");
							}
				}
				);
			},
		refresh:
			function () {
				jQuery.ajax(
				{
					type: 'GET',
					url: '/c/schilling/products/updatebasket?t='+(new Date()).getTime(),
					data: {
					},
					success: function(data) {
								if (data != '') {
									var jsonobj = eval("("+data+")");
									Schilling.Basket.setValues(jsonobj);
									Liferay.trigger('schNotifyOnBasketChange', 'Okay Okay Boys!');
								} else {
									alert("Oooops - try again!");
								}
							}
				}
				);
			},
		validateBuy:
			function(buyForm) {
				jQuery.ajax(
					{
					type: 'POST',
					url: '/c/schilling/products/updatebasket',
					data: 	
						{
						cmd: 'validate',
						buyForm: buyForm
						},
					success: function(data) 
						{
							if (data != '') {
								var jsonobj = eval("(" + data + ")");
								Schilling.Basket.setValues(jsonobj);
								if (Schilling.Basket.errorMessage.indexOf("sch_adr") == 0) {
									alert(Liferay.Language.get("sch-basket-submit-adr-error"));
									return false;
								} else if(Schilling.Basket.errorMessage == "sch_must_set_paymentmethod") {
									alert(Liferay.Language.get("sch_must_set_paymentmethod"));
									return false;
								} else if(Schilling.Basket.errorMessage == "sch_must_accept_terms") {
									alert(Liferay.Language.get("sch_must_accept_terms"));
									return false;
								} else if (Schilling.Basket.errorMessage.length > 0) {
									alert(Liferay.Language.get(Schilling.Basket.errorMessage));
									return false;
								} else {
									buyForm.submit();
									return true;
								}
							} else {
								alert("Technical error! Please contact site admin.");
								return false;
							}
						},
					failure: function() 
						{
							alert("Technical error! Please contact site admin.");
							return false;
						}
					}
				);
			},
		validateAndBuyDibs:
			function(amount, language, acceptURL, callbackURL) {
				var kage = document.cookie;
				Schilling.Basket.windowReference = ConfirmDibs(amount, language, acceptURL, callbackURL);
//				if (windowReference == null)
//					new Liferay.Notice( {content: "Please disable pop-up blocker first!", closeText: "OK", toggleText: false } );
				//return true;
				// Reiche: The "updatebasket" Ajax call attracts the attention of the Popup-blocker in Safari and Google Chrome.
				// So call Ajax AFTER showing pop-up.
				jQuery.ajax(
					{
					type: 'POST',
					url: '/c/schilling/products/updatebasket',
					data: 	
						{
						cmd: 'validate'
						},
					success: function(data) 
						{
//new Liferay.Notice( {content: "validateAndBuyDibs(): Done updatebasket: data="+data, closeText: "Don't touch anything!", toggleText: false } );
							if (data != '') {
								var jsonobj = eval("(" + data + ")");
								Schilling.Basket.setValues(jsonobj);
								if (Schilling.Basket.errorMessage.length > 0) {
									if (Schilling.Basket.windowReference != null)
										Schilling.Basket.windowReference.focus();
									//alert(Schilling.Basket.errorMessage);
									return false;
								} else {
//									var kage = document.cookie;
//									ConfirmDibs(amount, language, acceptURL, callbackURL);
									Schilling.Basket.windowReference.focus();
									return true;
								}
							} else {
								alert("Technical error! Please contact site admin.");
								return false;
							}
						},
					failure: function() 
						{
							alert("Technical error! Please contact site admin.");
							return false;
						}
					}
				);
			},
		saveAndAddParticipant: function(debtorNumber, invoiceDebtorNumber, attFirstName, attLastName, attEmail, productNumber, courseNumber, courseGroup) {	
			var jsonobj = 0;
			if (debtorNumber == null || debtorNumber == 0 || attFirstName == null || attFirstName.length == 0 || attLastName == null || attLastName.length == 0 || attEmail == null || attEmail.length == 0) {
				alert(Liferay.Language.get("sch-add-attention-not-filled"));	
			} else {
				jQuery.ajax(
					{
						type: 'POST',
						url: '/c/schilling/products/updatebasket',
						async: false,
						data: {
							//cmd: 'addattention',
							cmd: 'addandsaveparticipant',
							debtorNumber: debtorNumber,
							invoiceDebtorNumber: invoiceDebtorNumber,
							attFirstName: attFirstName,
							attLastName: attLastName,
							attEmail: attEmail,
							productNumber: productNumber,
							courseNumber: courseNumber,
							courseGroup: courseGroup
						},
						success: function(data) {
									jsonobj = eval("(" + data + ")");
								},
						failure: function() {
									alert(Liferay.Language.get("sch-add-attention-failed"));
								}
					}
				);
			}
			return jsonobj;
		},
		addCourseParticipant: function(debtorNumber, attentionId, productNumber, courseGroup, courseNumber) {
			var jsonobj;	
			if (debtorNumber == null || debtorNumber == 0 || attentionId == 0 || productNumber.length == 0 
				|| courseGroup.length == 0 || courseNumber.length == 0) {
				alert(Liferay.Language.get("sch-add-course-participant-failed"));	
			} else {
				jQuery.ajax(
					{
						type: 'POST',
						url: '/c/schilling/products/updatebasket',
						async: false,
						data: {
							cmd: 'addcourseparticipant',
							debtorNumber: debtorNumber,
							attentionId: attentionId,
							productNumber: productNumber,
							courseGroup: courseGroup,
							courseNumber: courseNumber
						},
						success: function(data) {
									jsonobj = eval("(" + data + ")");
									jsonobj.success = 1;
								},
						failure: function() {
									jsonobj.success = 0;
								}
					}
				);
			}
			return jsonobj;
		},
		removeCourseParticipant: function(debtorNumber, attentionId, productNumber, courseGroup, courseNumber) {
			var jsonobj;	
			if (debtorNumber == null || debtorNumber == 0 || attentionId == 0 || productNumber.length == 0 
				|| courseGroup.length == 0 || courseNumber.length == 0) {
				alert(Liferay.Language.get("sch-remove-course-participant-failed"));	
			} else {
				jQuery.ajax(
					{
						type: 'POST',
						url: '/c/schilling/products/updatebasket',
						async: false,
						data: {
							cmd: 'removecourseparticipant',
							debtorNumber: debtorNumber,
							attentionId: attentionId,
							productNumber: productNumber,
							courseGroup: courseGroup,
							courseNumber: courseNumber
						},
						success: function(data) {
									jsonobj = eval("(" + data + ")");
								},
						failure: function() {
								}
					}
				);
			}
			return jsonobj;
		},
		setDeliveryMethod:
			function (deliveryMethod) {
				var jsonobj;
				jQuery.ajax(
				{
					type: 'POST',
					url: '/c/schilling/products/updatebasket',
					async: false,
					data: {
						cmd: 'setdeliverymethod',
						deliverymethod: deliveryMethod
					},
					success: function(data) {
						jsonobj = eval("(" + data + ")");
					},
					failure: function() {
						jsonobj.success = 0;
					}
				}
				);
				return jsonobj;
			},
		setWprTime: function(_wprTime) {
			Schilling.Basket.wprTime = _wprTime; 
		}
	},
	Favorite: {
		add:
			function (productId, notifyText) {
				var html = notifyText+'<div class="loading-animation"></div>';
				var addPopUp = Liferay.Popup({
					position: 'center',
					draggable: false,
					resizable: false,
					message: html,
					modal: false,
					className: "SchPopupInfo"
				});
				jQuery.ajax(
				{
					type: 'POST',
					url: '/c/schilling/products/favorite_ajax_action',
					data: {
						cmd: 'add',
						productId: productId
					},
					success: function(data) {
								var jsonobj = eval("(" + data + ")");
								if (jsonobj.success == 'true') {
									Liferay.trigger('schNotifyOnFavorite', 'add');
								} else {
									alert("Oooops - try again!");
								}
								addPopUp.hide("fast", Liferay.Popup.close(addPopUp));
							},
					failure: function() {
								addPopUp.hide("fast", Liferay.Popup.close(addPopUp));
								alert("Oooops - try again!");
							}
				}
				);
			},
		remove:
			function (productNumber, productText) {
				var html = productText+'<div class="loading-animation"></div>';
				var addPopUp = Liferay.Popup({
					position: 'center',
					draggable: false,
					resizable: false,
					message: html,
					modal: false,
					className: "SchPopupInfo",
					width:200
				});
				jQuery.ajax(
				{
					type: 'POST',
					url: '/c/schilling/products/favorite_ajax_action',
					data: {
						cmd: 'delete',
						productNumber: productNumber
					},
					success: function(data) {
								var jsonobj = eval("(" + data + ")");
								if (jsonobj.success == 'true') {
									return true;
								} else {
									alert("Oooops - try again!");
								}
								addPopUp.hide("fast", Liferay.Popup.close(addPopUp));
							},
					failure: function() {
								addPopUp.hide("fast", Liferay.Popup.close(addPopUp));
								alert("Oooops - try again!");
							}
				}
				);
			}
	},
	Compare: {
		isActive: false,
		position: '[20,20]',
		toggle:
			function (productItemId, item, colname, productUrl) {
				if (colname) {
					cmd = 'delete';
					jQuery("."+colname).hide();
					jQuery(".sch-comparecheck-"+productItemId).each(function() {
						jQuery(this).removeAttr("checked");
					});
				} else {
					if (item.checked)
						cmd = 'add'
					else
						cmd = 'delete';
				}
				jelem = jQuery(item);
				jelem.hide();
				jQuery.ajax(
				{
					type: 'POST',
					url: '/c/schilling/products/compare_ajax_action',
					data: {
						cmd: cmd,
						productItemId: productItemId,
						productUrl: productUrl
					},
					success: function(data) {
								jelem.show("fast");
							},
					failure: function() {
								jelem.show("fast");
								if (item.checked)
									jelem.removeAttr("checked")
								else
									jelem.addAttr("checked");
							}
				}
				);
			},
		view:
			function(data) {
				var html = '<div id=sch-comparelist><div class="loading-animation"></div></div>';
				var position = '';
				if (data.position)
					position = data.position;
				else
					position = Schilling.Compare.position;
				var cmpPopUp = Liferay.Popup({
					title: Liferay.Language.get('compare'),
					draggable: true,
					resizable: true,
					message: html,
					modal: true,
					width: "auto",
					className: "SchPopupCompare",
					position: position
				});
				var url = '/web/guest/shop?p_p_id=SCH_PRODUCTCOMPARE&compare_type=popup&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view&struts_action=/schilling/products/compare';
				jQuery.ajax(
				{
					type: 'POST',
					url: url,
					data: {
						target: data.target,
						prod_struts_action: data.prod_struts_action
					},
					success: function(html) {
								var mydiv = jQuery('#sch-comparelist')[0];
								mydiv.innerHTML = html;
								Schilling.Compare.isActive = true;
								//jQuery('#sch-comparelist')[0].center( { vertical: false } );
							},
					failure: function() {
								cmpPopUp.hide("fast", Liferay.Popup.close(cmpPopUp));
								Schilling.Compare.isActive = false;
								alert("Oooops - try again!");
							}
				}
				);
			}
	},
	Demo: {
		Book:
			function (productId, productDesc, email, location, bookdate, note) {
				jQuery.ajax(
				{
					type: 'POST',
					url: '/c/schilling/products/bookdemo_ajax_action',
					data: {
						cmd: 'add',
						productId: productId,
						productDesc: productDesc,
						email: email,
						location: location,
						bookdate: bookdate,
						note: note
					},
					success: function(data) {
								var jsonobj = eval("(" + data + ")");
								if (jsonobj.success == 'true') {
									Liferay.trigger('schNotifyOnBookDemoSuccess');
								} else {
									Liferay.trigger('schNotifyOnBookDemoFailure');
								};
							},
					failure: function() {
								Liferay.trigger('schNotifyOnBookDemoFailure');
							}
				}
				);
		}
	},
	EditTextState: {
		Toggle:
			function (value) {
				jQuery.ajax(
				{
					url: '/c/schilling/language_properties/update_editstate',
					data: {
						value: value
					},
					success: function(data) {
						var jsonobj = eval("(" + data + ")");
					},
					failure: function() {
						alert("Ooops - try again!");
					}
				}
				);
			}
	},
	Content: {
		fillstars:
			function (data) {
				if (data == undefined)
					return "";
				var html = '<div class="sch-ajaxsearch-stars">';
				var score = 0;
				score = data;
				var stars = (5 * score);
				for (var s=0; s < stars; s++)
					html += '<img class="sch-ajaxstar" src="'+themeDisplay.getPathThemeImages()+'/ratings/star_on.png" alt="*">';
				html += '</div>';
				return html;
			},
		fillhits:
			function (schportlethits, sectionTemplates) {
				var $ = jQuery;
				var section = 0;
				if (schportlethits.section)
					section = schportlethits.section;
				var searchClassName = "";
				if (schportlethits.searchClassName)
					searchClassName = schportlethits.searchClassName;
				var sectionTemplate = sectionTemplates[searchClassName];
				var sectionId = 'SchAjaxSearchResult-'+(searchClassName.replace(/\./g, "-"));
				document.getElementById(sectionId).innerHTML = unescape(sectionTemplate);
				var section = $('#'+sectionId);
				section.fillTemplate(schportlethits).css('display', 'block').find("a[href='undefined']").empty();
				/* Workaround for MSIE7 bug around prepending of texts to anchors */
				if (Liferay.Browser.isIe() && Liferay.Browser.getVersion() < 8 ) {
					section.find("a").each( function () {
						var href = $(this).attr("href");
						if (href.indexOf("http://") == 0) {
							var pos = href.indexOf("//");
							if (pos > -1) {
								var tmp = href.substring(7);
								pos = tmp.indexOf("//");
								if (pos > -1) {
									href = tmp.substring(pos+1);
									$(this).attr("href", href);
								}
							}
						}
					});
				}
				var now = (new Date()).getTime()
				var searchtime = now - Number(schportlethits.reqtime);
				section.find("div.sch-searchtime-time").html(searchtime+"ms.");
			},
		search:
			function (query, event, searchclasses, maxhits, masterTemplate, sectionTemplates) {
				if (event.keyCode == 27) {
					query = "";
					if (event.target)
						event.target.value = "";
				}
				// Filter CTRL-A, TAB and function keys here later....
				if (query.length > 1) {
					var i = 0;
					for (i=0; i < searchclasses.length; i++) {
						var SchAjaxSearchResultSection = document.getElementById('SchAjaxSearchResult_'+i);
						jQuery.ajax(
						{
							scriptCharset: 'utf-8',
							contentType: 'application/x-www-form-urlencoded; charset=UTF-8',
							mode: 'abort',
							port: searchclasses[i],
							type: 'POST',
							url: '/c/schilling/products/search_ajax_action?p_p_state=exclusive&p_l_id='+themeDisplay.getPlid(),
							data: {
								q: query,
								c: searchclasses[i],
								m: maxhits,
								s: i,
								t: (new Date()).getTime()
							},
							success: function(data) {
								//SchAjaxSearchResultSection.innerHTML = '';
								var schjsonobj = eval("(" + data + ")");
								if (schjsonobj.success == true) {
									Schilling.Content.fillhits(schjsonobj, sectionTemplates);
									document.getElementById('SchAjaxSearchResult').style.display = 'block';
								} else {
									if (window.console && console.log)
										console.log("Oooops no success - try again! Data:\n"+data);
									//Schilling.Debug.popfade("Oooops no success - try again! Data:<br>"+data);
									//alert("Oooops no jsonobj.success - try again!");
								};
							},
							failure: function(data) {
								if (window.console && console.log)
									console.log("Oooops failure - try again! Data:\n"+data);
								Schilling.Debug.popfade("Oooops no success - try again! Data:<br>"+data);
								//alert("Oooops failure - try again!<br>"+data);
							}
						}
						);
					}
				} else {
					document.getElementById('SchAjaxSearchResult').style.display = 'none';
				}
			}
	},
	Category: {
		click: 
			function (catportlet, elem, categoryItemId, action, dynamicCategory, categoryDomain, categoryType) {
				var newurl = "/web/guest/shop?p_p_id="+ catportlet +"&p_p_lifecycle=1&p_p_state=normal&p_p_mode=view&p_p_col_id=column-1&p_p_col_pos=1&p_p_col_count=2&_" + catportlet + "_struts_action=%2Fschilling%2Fcategorytree%2Fviewtree&_" + catportlet + "_cmd=" + action + "&_" + catportlet + "_categoryItemId=" + categoryItemId + "&_" + catportlet + "_dynamicCategory=" + dynamicCategory +"&_" + catportlet + "_categoryDomain=" + categoryDomain;
				location.href = newurl;
			}
	},
	User: {
		addParticipant: function(debtorNumber, invoiceDebtorNumber, attFirstName, attLastName, attEmail) {	
			var attentions;
			if (debtorNumber == null || debtorNumber == 0 || attFirstName.length == 0 || attLastName.length == 0 || attEmail.length == 0) {
				alert(Liferay.Language.get("sch-add-attention-not-filled"));	
			} else {
				jQuery.ajax(
					{
						type: 'POST',
						url: '/c/schilling/products/updatebasket',
						async: false,
						data: {
							cmd: 'addattention',
							debtorNumber: debtorNumber,
							invoiceDebtorNumber: invoiceDebtorNumber,
							attFirstName: attFirstName,
							attLastName: attLastName,
							attEmail: attEmail
						},
						success: function(data) {
									var jsonobj = eval("(" + data + ")");
									attentions = jsonobj.attentions;
								},
						failure: function() {
									alert(Liferay.Language.get("sch-add-attention-failed"));
								}
					}
				);
			}
			return attentions;
		}
	},
	Login: {
		options: {},
		init: function(options) {
			var defaults = {
				target: '',
				afterlogin: '',
				afterloginkey: '',
				redirect: '',
				loginurl: themeDisplay.getLayoutURL()+'?p_p_id=SCH_LOGIN&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view'
			};
			Schilling.Login.options = jQuery.extend({}, defaults, options);
			var html = '<div id="sch-loginpopup"><div class="loading-animation"></div></div>';
			Schilling.Login.options.target = '#sch-loginpopup';
			var loginPopup = Liferay.Popup({
				title: Liferay.Language.get('javax.portlet.title.SCH_LOGIN'),
				draggable: true,
				resizable: false,
				message: html,
				modal: true,
				position: "center",
				width: "auto",
				className: "sch-popup-login"
			});
			Schilling.Login.show();
		},
		show: function() {
			jQuery.ajax(
				{
					type: 'POST',
					url: Schilling.Login.options.loginurl,
					data: {
						target: Schilling.Login.options.target,
						afterlogin: Schilling.Login.options.afterlogin,
						afterloginkey: Schilling.Login.options.afterloginkey
					},
					success: function(html) {
								var mydiv = jQuery('#sch-loginpopup')[0];
								mydiv.innerHTML = html;
								Liferay.Popup.position(jQuery(mydiv), "center");
								schSetAjaxSubmitOnLoginForm( { redirect: Schilling.Login.options.redirect } );
							},
					failure: function() {
								loginPopup.hide("fast", Liferay.Popup.close(loginPopup));
								alert("Oooops - try again!");
							}
				}
			);
		},
		showForgottenPassword: function() {
			var url = themeDisplay.getLayoutURL() + '?p_p_id=SCH_LOGIN&p_p_lifecycle=0&p_p_state=exclusive&p_p_mode=view&struts_action=/schilling/schlogin/forgot_password';
			jQuery.ajax(
				{
					type: 'POST',
					url: url,
					data: {
						target: Schilling.Login.options.target,
						afterlogin: Schilling.Login.options.afterlogin,
						afterloginkey: Schilling.Login.options.afterloginkey
					},
					success: function(html) {
								var mydiv = jQuery('#sch-loginpopup')[0];
								mydiv.innerHTML = html;
								Liferay.Popup.position(jQuery(mydiv), "center");
								schSetAjaxSubmitOnForgottenPasswordForm( { redirect: Schilling.Login.options.redirect } );
							},
					failure: function() {
								loginPopup.hide("fast", Liferay.Popup.close(loginPopup));
								alert("Oooops - try again!");
							}
				}
			);
		},
		showCreateAccount: function() {
			var url = themeDisplay.getLayoutURL() + '?p_p_id=SCH_LOGIN&p_p_lifecycle=0&p_p_state=exclusive&p_p_mode=view&struts_action=/schilling/schlogin/create_account';
			jQuery.ajax(
				{
					type: 'POST',
					url: url,
					data: {
						target: Schilling.Login.options.target
					},
					success: function(html) {
								var mydiv = jQuery('#sch-loginpopup')[0];
								mydiv.innerHTML = html;
								Liferay.Popup.position(jQuery(mydiv), "center");
								schSetAjaxSubmitOnCreateAccountForm( { redirect: Schilling.Login.options.redirect } );
							},
					failure: function() {
								loginPopup.hide("fast", Liferay.Popup.close(loginPopup));
								alert("Oooops - try again!");
							}
				}
			);
		}
	},
	PopupForm: {
		tipPopUp: '',
		wrapid: '',
		submit: function(form, options) {
			var postdata = jQuery(form).serialize();
			jQuery.ajax(
				{
					type: 'POST',
					url: form.action,
					data: postdata,
					wrapid: this.wrapid,
					success: function(html) {
								var mydiv = jQuery('#' + this.wrapid)[0];
								mydiv.innerHTML = html;
								Schilling.PopupForm.setSubmit(options);
							},
					failure: function() {
								alert("Oooops - try again!");
							}
					}
			);
		},
		setSubmit: function(options) {
			jQuery('#'+this.wrapid).find('form').each( function(tipPopUp) {
	 			jQuery(this).bind("submit", function(event) {
	 				event.preventDefault();
	 				Schilling.PopupForm.submit(this, options);
	 			});
			});
		},
		show: function(options) {
			var defaults = {
					modal: true,
					position: 'center'
			}
			this.wrapid = 'sch-exclusive-form-'+(new Date()).getTime()
			var config = jQuery.extend({}, defaults, options);
			var url = config.url;
			var className = config.className;
			var modal = config.modal; 
			jQuery.ajax(
			{
				type: 'POST',
				url: url,
				title: options.title,
				wrapid: this.wrapid,
				success: function(html) {
					Schilling.PopupForm.tipPopUp = Liferay.Popup({
						title: this.title,
						draggable: true,
						resizable: true,
						message: '<div id="' + this.wrapid + '">'+html+'</div>',
						messageId: '_'+this.wrapid,
						modal: modal,
						width: "auto",
						className: className,
						position: "center",
						animate: true
					});
					Schilling.PopupForm.setSubmit(options);
				},
				failure: function() {
							alert("Oooops - try again!");
						}
			}
		);
		},
		close: function() {
			Liferay.Popup.close(this.tipPopUp);
		}
	}
};

Schilling.Utils = new Class({
	initialize: function(options) {
		var instance = this;

		instance.options = options;
		instance._textsAreEditable = instance.options.editable;
		instance._updateURL = '/c/schilling/language_properties/update_property';
		return instance._makeTextsEditable();
	},
	_saveLanguageProperty: function(newText, span, updateElemButton) {
		var instance = this;
		var languageKey = span.attr("schlangkey")
		var data = {
			schLanguageKey: languageKey,
			schLanguageText: newText,
			cmd: 'update_text'
		};
		jQuery.ajax(
			{
				data: data,
				url: instance._updateURL,
				success: function(data) {
					var jsonobj = eval("(" + data + ")");
					if (jsonobj.success == 'true') {
						if (!updateElemButton)
							span.text(newText);
					} else {
						alert("Oooops - try again!");
					};
				},
				failure: function() {
					alert("Oooops - try again!");
				}
			}
		);
	},
	_setTextsAreEditable: function() {
		var $ = jQuery; 
		var instance = this;
	},
	_getTextsAreEditable: function() {	
		var instance = this;
		alert(instance._textsAreEditable);
	},
	_makeTextsEditable: function() {
		var $ = jQuery; 
		var instance = this;
		var resetCursor = function() {
			$(".language-property").css('cursor', 'pointer');
			$(".language-property").css('background-color', 'transparent');
		};

		$(".language-property").hover(
			function() {
				if ($(this).children().is(":input")) {
					$(this).children().css('cursor', 'text');
					$(this).css('background-color', 'yellow');
				}
				$(this).css('cursor', 'text');
				$(this).css('background-color', 'yellow');
				$(this).attr("title", Liferay.Language.get("sch-utils-edit-text-instr"));
			},
			resetCursor
		);

		$(".language-property").rightMouseDown(
			function(event) {
				if (!event.ctrlKey) {
					return false;
				}
				$(document).noContext();
				var span = $(this);
				var textBefore = span.html().replace('\n', '');
				
				var textElemType = span.children(':first').attr("type"); //use to check if it's a button
				var updateElemButton = false;
				if (textElemType == "button" ||	textElemType == "reset" || textElemType == "submit") {
					updateElemButton = true;
					textBefore = span.children(':first').attr('value');
				}
				var msgInput ='<input class="langPropInput" type="text" name="msgInput" value="'+textBefore+'" class="text" />';
				if(span.parent().is("a"))
					span.parent().after(msgInput);
				else
					span.after(msgInput);
				var inputElement = $('.langPropInput');
				span.hide();
				inputElement.focus(); 

				inputElement.blur( function() {
						var newText = $('.langPropInput').val();
						if (textBefore != newText) {
							instance._saveLanguageProperty(newText, span, updateElemButton);
							if (updateElemButton) {
								$(":input[value='"+span.children(':first').attr('value')+"']").attr("value", newText);
							}
						}
						inputElement.remove();
						span.show();
						$(document).enableContext();
				});
				return false;
			}
		);

		resetCursor();

		return false;
	}, 
	_textsAreEditable: false,
	_updateURL: ''
});

function SchAddOrderLine(productNumber, quantity, productText) {
	Schilling.Basket.add(productNumber, quantity, productText);
}

function SchCategoryTreeAction()
{

}

function SchPopImage(imageurl, imageclass)
{
}

function locateSchillingPortlets(thediv)
{
//	dummy = alert("This is an Reiche Alert!!!!\n"+getRefreshPortletList());
//	elem = document.getElementById(thediv);
//	elem.innerHTML = ""+getRefreshPortletList();
}

// Append contains function for arrays
if (!Array.contains)
Array.prototype.contains = function (element) {
	for (var i = 0; i < this.length; i++) {
		if (this[i] == element) {
			return true; 
		}
	}
	return false;
 };

// Append trim function for String... 
if (!String.trim)
	String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ""); };

if (!String.log)
	String.prototype.log = function( format ) {
		window.console && console.log(
		format || 'String length %i, value "%s"',
		this.length, this );
		return ''+this;
	};

if (!String.compare) {
    String.prototype.compare = function(parm) {
	   if (this > parm)
		  return 1;
	   else
		   if (this < parm)
			   return -1;
	   return 0;
	}
}

String.prototype.schcapitalize =
	function() {
	if (this.length>0)
		return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
	else
		return "";
	};
String.prototype.capitalize =
	function() {
		if (this.length>0)
			return this.charAt(0).toUpperCase() + this.substring(1).toLowerCase();
		else
			return "";
	};

String.prototype.schinitcap =
	function() {
		if (this.length>0)
			return this.charAt(0).toUpperCase() + this.substring(1);
		else
			return "";
}

function refreshSchillingPortlets(depends)
// depends: Commaseperated dependancylist. */
{
//	console.log("refreshSchillingPortlets(depends="+depends+")");
//	console.log("portlets: "+Liferay.Portlet.list.toString());
    var thisrefreshlist = new Array();
    thisrefreshlist.length = 0; // Ensure it is empty!!!???
    var thisdependsarray = depends.split(',');
	for (var portletId in Liferay.Portlet.list) {
//		console.log("Liferay portlet: "+portletId);
		var thisportlet = document.getElementById("p_p_id_" + portletId + "_");
		var frompos = thisportlet.innerHTML.indexOf("<!-- SCH-REFRESH-DEP:");
		if (frompos < 0)
			continue;
		frompos += 21;
		var topos = thisportlet.innerHTML.indexOf("-->", frompos);
		if (topos < 0)
			continue;
//		console.log("topos="+topos+" frag: "+thisportlet.innerHTML.substring(frompos,topos));
//		console.log("splitting: <"+thisportlet.innerHTML.substring(frompos,topos).trim()+">");
		var thisdepsa = thisportlet.innerHTML.substring(frompos,topos).trim().split(",");
//		console.log("Got "+thisdepsa.length+" deps.");
		for (var depi=0; depi < thisdepsa.length; depi++) {
			var depstr = thisdepsa[depi];
//			console.log("this depstr: "+depstr);
			if (thisdependsarray.contains(depstr)) {
//				console.log("adding: "+portletId);
				thisrefreshlist.push(portletId);
			}
		}
    }
	// thisrefreshlist now contains portletIds to be refreshed.
	// Work them ony by one?
	for (var i=0; i < thisrefreshlist.length; i++) {
//		console.log("Refreshing: "+thisrefreshlist[i]);
		var dummy = eval("_"+thisrefreshlist[i]+"_refreshPortlet()");
	}
}

/* Validate user forms */
function validateAddressForm(form) {
	var fields = getElementsByClassName("required", "INPUT", form);
    for (i=0; i < fields.length; i++) {
        field = fields[i];
        if ((form.updateShipping.value == "false") && (field.name == "shipping-firstname" || field.name ==	"shipping-lastname" || field.name == "shipping-street1"
        	|| field.name == "shipping-street2" || field.name == "shipping-zip" || field.name == "shipping-city" || field.name == "shipping-company")) {    
	  	} else {
	  		if (field.value == "") {
	            alert(unescape(Liferay.Language.get("sch-basket-edit-adr-error")));
	            field.focus();
	            return false;
	        }
		}
    }
    return true;
}

function validateAddressFormVer2(form) {
	var fields = getElementsByClassName("required", "INPUT", form);
    for (i=0; i < fields.length; i++) {
        field = fields[i];
  		if (field.value == "") {
            alert(unescape(Liferay.Language.get("sch-basket-edit-adr-error")));
            field.focus();
            return false;
        }
    }
    return true;
}

function getElementsByClassName(className, tag, elm){
    var tag = tag || "*";
    var elm = elm || document;
    var elements = (tag == "*" && elm.all)? elm.all : elm.getElementsByTagName(tag);
    var returnElements = [];
    var current;
    var length = elements.length;
    for(var i=0; i<length; i++){
        current = elements[i];
       if (current.className.indexOf(className) > -1) {
            returnElements.push(current);
        }
    }
    return returnElements;
}

function schGetUrlParamValue(url,paramName)
{
	var q = url.indexOf('?');
	if (q < 0)
		return "";
	var allParams = url.substring(q+1).split("&");
	for (var i = 0; i < allParams.length; i++ ) {
		if (allParams[i].indexOf(paramName + "=") > -1 ) {
			var aParam = allParams[i].split("=");
			return aParam[1];
			break;
		}
    }
	return "";
}

function schResizeIframeToParent(iframe)
{
/*
	var height=window.innerWidth;//Firefox
	if (document.body.clientHeight)
	{
		height=document.body.clientHeight;//IE
	}
*/
	//resize the iframe according to the size of the
	//window (all these should be on the same line)
	iframe.style.height="100%";
	iframe.style.width="100%";
}

/* Configuration url
http://10.1.225.2/web/guest/home?p_p_id=86&p_p_lifecycle=0
	&p_p_state=maximized
	&p_p_col_id=column-3
	&p_p_col_count=3
	&_86_struts_action=%2Fportlet_configuration%2Fedit_configuration
	&_86_redirect=%2Fweb%2Fguest
	&_86_returnToFullPageURL=%2Fweb%2Fguest
	&_86_portletResource=56_INSTANCE_T3tl
	&_86_resourcePrimKey=10408_LAYOUT_56_INSTANCE_T3tl&_86_
*/

/*
http://localhost:8080/web/51901/home
	?_p_p_state=pop_up
	&_86_struts_action=/portlet_configuration/edit_configuration
	&_86_portletResource=1_WAR_webformportlet_INSTANCE_k3oQ
	&p_p_id=1_WAR_webformportlet_INSTANCE_k3oQ
	&p_p_lifecycle=0
	&p_p_state=pop_up
	&p_p_col_id=
	&p_p_col_count=
	&_86_redirect=%2Fweb%2Fguest%2Fkontaktform
	&_86_returnToFullPageURL=javascript:history(-1)
	&_86_resourcePrimKey=
	&_86_&previewWidth=266
*/

function schPortletPopup(options) {
	options = options || { position: 'center'};
	var popUrl = '';
	if (options.url)
		popUrl = options.url;
	var popTitle = '';
	if (options.title)
		popTitle = options.title;
	var popWidth = "500";
	if (options.width)
		popWidth = options.width;
	var popHeight = "500";
	if (options.height)
		popHeight = options.height;
	var savetitleurl = "javascript:Liferay.Util.portletTitleEdit()";
	var p_p_id = schGetUrlParamValue(popUrl, "p_p_id");
	var column = schGetUrlParamValue(popUrl, "p_p_col_id");
	var count = schGetUrlParamValue(popUrl, "p_p_col_count");
	var resourceprimkey = schGetUrlParamValue(popUrl, "resourcePrimKey");
	var popUrlPath = popUrl.substring(0,popUrl.indexOf('?'));
	var confurl = popUrlPath +
			"?p_p_id=86" +
			"&_p_p_state=pop_up" +
			"&_86_struts_action=/portlet_configuration/edit_configuration" +
			"&_86_portletResource=" + p_p_id +
			"&p_p_lifecycle=0" +
			"&p_p_state=pop_up&" +
			"p_p_col_id=" + column +
			"&p_p_col_count=" + count +
			"&_86_redirect=" +location.href + 
			"&_86_returnToFullPageURL=" + popUrl +
			"&_86_resourcePrimKey=" + resourceprimkey +
			"&_86_&previewWidth=266";
	var html = '<div id="sch-portletpopup" style="height: '+popHeight+'px">';
	if (true)
		html += '<iframe id="sch-portletpopup-iframe" onload="schResizeIframeToParent(this)" scrolling="auto" x-width="500" x-height="500" frameborder="0" style="width: 100%; height: 90%" vspace="0" src="'+popUrl+'" hspace="0" bordercolor="#000000" border="0"></iframe></div>';
	var portletPopup = Liferay.Popup({
		title: popTitle,
		position: "top",
		draggable: true,
		resizable: true,
		message: html,
		modal: true,
		width: popWidth+"px",
		height: popHeight+"px",
		className: "sch-popup-portlet"
	});
	jQuery('.ui-dialog-title').wrap('<div class="ui-dialog-titlebar-left"></div>');
	jQuery('.ui-dialog-titlebar-close').wrap('<div id="sch-portletpopup-close" class="ui-dialog-titlebar-right"></div>');
	// Reiche 2010-09-15 Removed showing of config-button - it show whether or not you have config rights.
	// jQuery('#sch-portletpopup-close').prepend('<span class="portlet-icons"><a style="cursor: pointer" onclick="jQuery(\'#sch-portletpopup-iframe\').attr(\'src\',\''+confurl+'\')"><img class="sch-portletpopup-conf" alt="Konfiguration" src="/www-schilling-dk-theme/images/spacer.png" class="icon"></a></span>');
	//return portletPopup; // That was not a good idea....
}

/* Login dialogue in a popup */

function schLoginPopupSetFieldFunctions()
{
	jQuery('#_SCH_LOGIN_password').keypress(
		function(event) {
			Liferay.Util.showCapsLock(event, '<portlet:namespace />passwordCapsLockSpan');
		}
	);

	jQuery('#_SCH_LOGIN_rememberMeCheckbox').click(
		function() {
			var checked = 'off';

			if (this.checked) {
				checked = 'on';
			}

			jQuery('#_SCH_LOGIN_rememberMe').val(checked);
		}
	);
}

function schSetAjaxSubmitOnLoginForm(options)
{
	if (document._SCH_LOGIN_fm._SCH_LOGIN_login.value != '')
		Liferay.Util.focusFormField(document._SCH_LOGIN_fm._SCH_LOGIN_password);
	else
		Liferay.Util.focusFormField(document._SCH_LOGIN_fm._SCH_LOGIN_login);
	var form = jQuery('#_SCH_LOGIN_fm');
	var loginoptions = options;
	var ajaxoptions = {
		beforeSubmit: function() {
			jQuery('#sch-loginpopup').html('<div class="loading-animation"></div>');
		},
		success: function(data) {
			schLoginPopupSetFieldFunctions();
			if (data.indexOf("_SCH_LOGIN_fm") > -1) {
				/* Form comes back - we are not logged in */
				jQuery('#sch-loginpopup').html(data);
				schSetAjaxSubmitOnLoginForm(loginoptions)
			} else {
				/* Note: This disables "continue to page xxx after login" */
				if (loginoptions.redirect)
					window.location.href = unescape(options.redirect);
				else
					window.location.reload();
			}
		},
		dataType: 'html'
	};
	jQuery("a.ui-dialog-titlebar-close").click( function() {
		  jQuery.ajax( {
		    type: 'POST',
		    url: themeDisplay.getLayoutURL()+'?p_p_id=SCH_LOGIN&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view&struts_action=/schilling/schlogin/abortlogin'
		  });
	});
	form.submit(
		function() {
			jQuery('#_SCH_LOGIN_fm').ajaxSubmit(ajaxoptions);
			return false; // cancel conventional submit
		}
	);
}

function schSetAjaxSubmitOnForgottenPasswordForm(options)
{
	var form = jQuery('#_SCH_LOGIN_fm2');
	var loginoptions = options;
	if (loginoptions && loginoptions.emailAddress) {
		form.find("emailAddress").value=loginoptions.email;
	}
	if (loginoptions && loginoptions.screenName) {
		form.find("screenName").value=loginoptions.screenName;
	}
	if (loginoptions && loginoptions.userId) {
		form.find("userId").value=loginoptions.userId;
	}
	var ajaxoptions = {
		beforeSubmit: function() {
			jQuery('#sch-loginpopup').html('<div class="loading-animation"></div>');
		},
		success: function(data) {
			/*schLoginPopupSetFieldFunctions();*/
			if (data.indexOf("portlet-msg-error") > -1) {
				/* Form comes back - username or captcha was wrong */
				jQuery('#sch-loginpopup').html(data);
				schSetAjaxSubmitOnForgottenPasswordForm(loginoptions)
			} else {
				Liferay.Popup.update('#sch-loginpopup', themeDisplay.getLayoutURL()+'?p_p_id=SCH_LOGIN&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view&pws=true');
			}
		},
		dataType: 'html'
	};
	jQuery('#_SCH_LOGIN_fm2').submit(
		function() {
			jQuery('#_SCH_LOGIN_fm2').ajaxSubmit(ajaxoptions);
			return false; // cancel conventional submit
		}
	);
}

function schSetAjaxSubmitOnCreateAccountForm(options)
{
	var form = jQuery('#_SCH_LOGIN_fm3');
	Liferay.Util.focusFormField(document._SCH_LOGIN_fm3._SCH_LOGIN_name);
	var ajaxoptions = {
		beforeSubmit: function() {
			jQuery('#sch-loginpopup').html('<div class="loading-animation"></div>');
		},
		success: function(data) {
			if (data.indexOf("portlet-msg-error") > -1) {
				/* Form comes back - username or captcha was wrong */
				jQuery('#sch-loginpopup').html(data);
				schSetAjaxSubmitOnCreateAccountForm(options)
			} else {
				Liferay.Popup.update('#sch-loginpopup', themeDisplay.getLayoutURL()+'?p_p_id=SCH_LOGIN&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view&pws=true');
			}
		},
		dataType: 'html'
	};
	jQuery('#_SCH_LOGIN_fm3').submit(
		function() {
			jQuery('#_SCH_LOGIN_fm3').ajaxSubmit(ajaxoptions);
			return false; // cancel conventional submit
		}
	);
}
/* Deprecated! Use Schilling.Login.init( { redirect: 'myredirect' } ); */
function schLoginPopup(data) {
	var html = '<div id="sch-loginpopup"><div class="loading-animation"></div></div>';
	var loginPopup = Liferay.Popup({
		title: Liferay.Language.get('javax.portlet.title.SCH_LOGIN'),
		draggable: true,
		resizable: false,
		position: "top",
		message: html,
		modal: true,
		width: "auto",
		className: "sch-popup-login"
	});
	var url = '';
	if (data.url)
		url = data.url;
	else
		url = themeDisplay.getLayoutURL()+'?p_p_id=SCH_LOGIN&p_p_lifecycle=1&p_p_state=exclusive&p_p_mode=view';
	var afterlogin = '';
	if (data.afterlogin)
		afterlogin = data.afterlogin;
	var afterloginkey = '';
	if (data.afterloginkey)
		afterloginkey = data.afterloginkey;
	var redirect = '';
	if (data.redirect)
		redirect = data.redirect;
	jQuery.ajax(
	{
		type: 'POST',
		url: url,
		data: {
			target: data.target,
			afterlogin: afterlogin,
			afterloginkey: afterloginkey
		},
		success: function(html) {
					var mydiv = jQuery('#sch-loginpopup')[0];
					mydiv.innerHTML = html;
					schSetAjaxSubmitOnLoginForm( { redirect: redirect } );
				},
		failure: function() {
					loginPopup.hide("fast", Liferay.Popup.close(loginPopup));
					alert("Oooops - try again!");
				}
	}
	);
}

var nagBox;

function SchCloseNagBox()
{
	if (nagBox) {
		Liferay.Popup.close(nagBox);
		jQuery("#sch-field-nagbox").remove();
	}
}

function SchSubmitJsValidatingForm(form)
{
	var reqs = jQuery(".SchInvalidField");
	if (reqs.length > 0) {
		var field = jQuery(reqs[0]);
		if (field.offset) {
			var offset = field.offset();
			var scrollpos = offset.top-25;
			if (offset.top > jQuery(document).scrollTop()+jQuery(window).height() || offset.top < jQuery(document).scrollTop())
				jQuery(document).scrollTop(scrollpos);
			else {
				scrollpos = 0;
			}
			field.focus();
			var position = field.position();
			nagBox = Liferay.Popup({
				position: [ position.left+20, position.top - jQuery(document).scrollTop() - 25 ],
				draggable: false,
				resizable: false,
				message : '<div class="sch-field-warning">' + Liferay.Language.get("this-field-is-mandatory") + '</div>',
				messageId: 'sch-field-nagbox',
				modal: false,
				className: "SchPopupInfo",
				title: null,
				width:220
			});
			window.setTimeout("SchCloseNagBox()", 3000);
			return false;
		}
	}
	form.submit();
	return false;
}

jQuery(document).ready(function() {
	jQuery("FORM.SchJsValidating").each(function() {
		jQuery(this).submit(function() { return SchSubmitJsValidatingForm(this) } );
	});
	jQuery(".SchMustFill").each(function() {
		if (jQuery(this).val() == "") {
			jQuery(this).addClass("SchInvalidField");
		} else {
			jQuery(this).addClass("SchValidField");
		}

		jQuery(this).change(function() {
			if (jQuery(this).val() == "") {
				jQuery(this).addClass("SchInvalidField");
				jQuery(this).removeClass("SchValidField");
			} else {
				SchCloseNagBox();
				jQuery(this).removeClass("SchInvalidField");
				jQuery(this).addClass("SchValidField");
			}
		});
		if (jQuery(this).keyup) {
			jQuery(this).keyup(function() {
				if (jQuery(this).val() == "") {
					jQuery(this).addClass("SchInvalidField");
					jQuery(this).removeClass("SchValidField");
				} else {
					SchCloseNagBox();
					jQuery(this).removeClass("SchInvalidField");
					jQuery(this).addClass("SchValidField");
				}
			});
		}
	});
});


