;(function(jQuery) {

	var defaults = {
		pageID: 0,
		ajaxCallTypeNum: 1500,
		ajaxCallSubPageTypeNum: 1501,
		pages: '',
		linkSetParentActive: 1,
		linkSetActive: 0,
		linkActiveClassname: 'active',
		keepPanelSize: 0,
		slideDirection: '',
		topOffset: 0, //TODO: name fixed elements and calculate the topOffset automatically
		slideSpeed: 400,
		preLoadSubPages: 1,
		onLinkClick: undefined
	};

	
	//extend the fn for the methods
	
	jQuery.fn.ifwsSinglePage = function(settings) {
		
		jQuery.extend(this,{
			//preLinkList: new Array(), //links before the active one
			//postLinkList: new Array(), //links after the active one
			//linkList: new Array(), //for scrolling to find the right coordinates
			pageOrder: new Array(), //determines the order of the pages
			pageTree: new Array(),
			flatPageOrder: new Array(),
			initPanelCSSProperties: {},
			slidePanelCSSProperties: {},
			
			initialize: function() {
				var singlePage = this;
				//initialize this panel
				var $activePanel = jQuery(jQuery(this).find('div.ifwssinglepage-slide-panel'));
				$activePanel.attr('rel',this.pageID).attr('id','ifwssinglepage-slide'+this.pageID);
				this.curPanelHeight=$activePanel.height();
				this.curPanelWidth=$activePanel.width();
				
				$activePanel.css({'height': this.curPanelHeight+'px','width': this.curPanelWidth+'px'});
				
				if (this.initPanelCSS!="") {
					var pa=this.initPanelCSS.split(',');
					for (var i=0;i<pa.length;i++) {
						if (jQuery.trim(pa[i])!="") {
							var prop=pa[i].split(':');
							this.initPanelCSSProperties[prop[0]]=prop[1];
						}
					}
				}

				if (this.slidePanelCSS!="") {
					var pa=this.slidePanelCSS.split(',');
					for (var i=0;i<pa.length;i++) {
						if (jQuery.trim(pa[i])!="") {
							var prop=pa[i].split(':');
							this.slidePanelCSSProperties[prop[0]]=prop[1];
						}
					}
				}
				
				if (this.keepPanelSize==0) {
					//get the minWidth and minHeight
					this.panelMinWidth=$activePanel.css('minWidth');
					this.panelMinHeight=$activePanel.css('minHeight');
					this.panelMinWidth=this.panelMinWidth.substring(0,this.panelMinWidth.indexOf('px'));
					this.panelMinHeight=this.panelMinHeight.substring(0,this.panelMinHeight.indexOf('px'));
				}
				
				//array of pages
				var pT=this.pages.split('|');
				//get the current page index within the array
				this.pageIndex=-1;
				for (var i=0;i<pT.length;i++) {
					this.pageOrder[i]=this.flatPageOrder[this.flatPageOrder.length]=pT[i].substring(0,pT[i].indexOf('=>'));
					var tree=jQuery.trim(pT[i].substring(pT[i].indexOf('=>')+2));
					if (tree!='') {
						this.pageTree[i]=tree.split(',');
						for (var j=0;j<this.pageTree[i].length;j++) {
							if (jQuery.trim(this.pageTree[i][j])!='') this.flatPageOrder[this.flatPageOrder.length]=parseInt(jQuery.trim(this.pageTree[i][j]));
						}
					} else {
						this.pageTree[i]='';
					}
					if (this.pageID==parseInt(this.pageOrder[i])) {
						this.pageIndex=i; //get the mainpage TODO: check if this works in any case (cause now theres given the also the subpage id)
					}
				}
				
				if (this.moveSubPagesIntoPage==0 && this.preLoadSubPages==1) { //get the pageindex from the flat pageOrder
					for (var i=0;i<this.flatPageOrder.length;i++) {
						if (this.pageID==parseInt(this.flatPageOrder[i])) this.pageIndex=i;
					}
				}
				
				//set the width only for horizontal scrolling
				if (this.slideDirection=='RIGHT_TO_LEFT') {
					var pamount=(this.moveSubPagesIntoPages==1)?this.pageOrder.length:this.flatPageOrder.length;
					jQuery(this).css({'width': (this.curPanelWidth*pamount)+'px', 'left': (this.curPanelWidth*this.pageIndex*-1)+'px'});
				} //vertical scrolling should be set automatically
				
				this.prependPanels();
				this.appendPanels();
				if (this.preLoadPageContent) this.fetchPages();
				
				//set the rel attr for every subnavigation
				jQuery('ul.subnavigation').each(function(){
					jQuery(this).attr('rel', jQuery(this).parent('li').children('a.ifwssinglepage-link').attr('rel'));
				});
				
				this.addClickEventToLinks();
				this.addClickEventToInPageLinks();
				this.addClickEventToInternalLinks();
				this.addWindowResizeEvent();
				this.unfoldSubMenus(this.pageID);
				
			},
			
			getInPageParentID: function(id) {
				//only check within the pagetree
				var i=j=0;
				var result=-1;
				while (i<this.pageTree.length && result==-1) {
					if (this.pageTree[i].length>0) {
						j=0;
						while (j<this.pageTree[i].length && result==-1) {
							if (this.pageTree[i][j]==id) result=this.pageOrder[i];
							j++;							
						}
					}
					i++;
				}
				return result;
			},
			
			prependPanels: function() {
				var style=' style="width: '+this.curPanelWidth+'px;" ';
				var prec='';
				
				if (!this.preLoadPageContent) {
					var pageloading='<div class="ajax-page-loading"></div>'; 
				} else {
					var pageloading='';
				}
				if (this.moveSubPagesIntoPage==1 || this.preLoadSubPages==0) {
					//for (i=this.pageIndex-1;i>=0;i--) { //original version TODO: check if works with old style
					for (i=0;i<this.pageIndex;i++) {
						prec+='<div id="ifwssinglepage-slide"'+this.pageOrder[i]+'" class="ifwssinglepage-slide-panel" rel="'+this.pageOrder[i]+'"'+style+'>'+pageloading+'</div>';		
						if (this.preLoadSubPages && this.pageTree[i].length > 0) {
							if (this.moveSubPagesIntoPage==1) {
								prec+='<div class="ifwssinglepage-slide-panel-subpanels" rel="'+this.pageOrder[i]+'">';
								for (var j=0;j<this.pageTree[i].length;j++) {
									prec+=(this.pageTree[i][j]!="")?'<div id="ifwssinglepage-slide'+parseInt(this.pageTree[i][j])+'" class="ifwssinglepage-slide-subpanel" rel="'+parseInt(this.pageTree[i][j])+'"></div>':'';
								}
								prec+='</div>';
							}
						}
					}	
				} else {
					//for (i=this.pageIndex-1;i>=0;i--) {
					for (i=0;i<this.pageIndex;i++) {
						prec+='<div id="ifwssinglepage-slide'+this.flatPageOrder[i]+'" class="ifwssinglepage-slide-panel" rel="'+this.flatPageOrder[i]+'"'+style+'>'+pageloading+'</div>';
					}
				}
				
				jQuery(this).prepend(prec);
			},

			appendPanels: function() {
				var style=' style="width: '+this.curPanelWidth+'px;" ';
				var postc='';
				
				if (!this.preLoadPageContent) {
					var pageloading='<div class="ajax-page-loading"></div>'; 
				} else {
					var pageloading='';
				}
				if (this.moveSubPagesIntoPage==1 || this.preLoadSubPages==0) {
					for (i=this.pageIndex+1;i<this.pageOrder.length;i++) {
						postc+='<div id="ifwssinglepage-slide'+this.pageOrder[i]+'" class="ifwssinglepage-slide-panel" rel="'+this.pageOrder[i]+'"'+style+'>'+pageloading+'</div>';
				
						if (this.moveSubPagesIntoPage==1) {
							postc+='<div id="ifwssinglepage-slide'+this.pageOrder[i]+'" class="ifwssinglepage-slide-panel-subpanels" rel="'+this.pageOrder[i]+'">';
							for (var j=0;j<this.pageTree[i].length;j++) {
								postc+=(this.pageTree[i][j]!="")?'<div id="ifwssinglepage-slide'+parseInt(this.pageTree[i][j])+'" class="ifwssinglepage-slide-subpanel" rel="'+parseInt(this.pageTree[i][j])+'"></div>':'';
							}
							postc+='</div>';
						}
					}
				} else {
					for (i=this.pageIndex+1;i<this.flatPageOrder.length;i++) {
						postc+='<div id="ifwssinglepage-slide'+this.flatPageOrder[i]+'" class="ifwssinglepage-slide-panel" rel="'+this.flatPageOrder[i]+'"'+style+'>'+pageloading+'</div>';
					}
				}
				jQuery(this).append(postc);
			},
			
			fetchPages: function() {
				//get all pages from the array
				for (i=0;i<this.pageOrder.length;i++) {
					if (this.pageID!=this.pageOrder[i]) this.ajaxLoadContent(this.pageOrder[i]);
					if (this.preLoadSubPages && this.pageTree[i].length > 0) {
						for (j=0;j<this.pageTree[i].length;j++) {
							if (this.pageTree[i][j]!="") {
								if (this.pageID!=this.pageTree[i][j]) this.ajaxLoadSubPageContent(this.pageTree[i][j]);
							}
						}
					}
				}
			},
			
			fetchPageContent: function(id) {
				var $newpage=jQuery(jQuery(this).children('.ifwssinglepage-slide-panel[rel="'+id+'"]'));
				
				if ($newpage.children('div:first') && $newpage.children('div:first').hasClass('ajax-page-loading')) {
					this.ajaxLoadContent(id);
					if (this.preLoadSubPages) {
						for (i=0;i<this.pageTree.length;i++) {
							if (this.pageTree[i]==id && this.pageTree[i].length > 0) {							
								for (j=0;j<this.pageTree[i].length;j++) {
									if (this.pageTree[i][j]!="") {
										if (this.pageID!=this.pageTree[i][j]) this.ajaxLoadSubPageContent(this.pageTree[i][j]);
									}
								}
							}
						}
					}
				}
			},
			
			addClickEventToLinks: function(el) {
				//add the click function to the links
				if (el) {
					var linkels=jQuery(el).find('a.ifwssinglepage-link');
				} else {
					var linkels=jQuery('a.ifwssinglepage-link');
				}
				var singlePage=this;
				
				linkels.each(function(i){
					//add the ifwssinglepage-slide-panels
					var link=this;
					jQuery(this).bind("click", function(e){
						if (singlePage.onLinkClick) {
							singlePage.onLinkClick();
						}
						singlePage.slideTo(e,link);
						singlePage.unfoldSubMenus(jQuery(link).attr('rel'));	
					});
				});
			},
			
			addClickEventToInPageLinks: function(el) {
				var singlePage = this;
				if (el) {
					var linkels=jQuery(el).find('a.ifwssinglepage-inpagelink');
				} else {
					var linkels=jQuery('a.ifwssinglepage-inpagelink');
				}				
				linkels.each(function(){
					var link=this;
					jQuery(this).click(function(e) {
						singlePage.loadInPage(e,link);
						e.preventDefault();
					});
				});
			},

			addClickEventToInternalLinks: function(el) {
				var singlePage = this;
				if (el) {
					var linkels=jQuery(el).find('a.ifwssinglepage-internal-link');
				} else {
					var linkels=jQuery('a.ifwssinglepage-internal-link');
				}				
				linkels.each(function(){
					var link=this;
					jQuery(this).click(function(e) {
						//check wich type the target page is
						var $np = jQuery(singlePage).find('#ifwssinglepage-slide'+jQuery(link).attr('rel'));

						if ($np.hasClass('ifwssinglepage-slide-panel')) {
							singlePage.slideTo(e,link);
							singlePage.unfoldSubMenus(jQuery(link).attr('rel'));
						} else if ($np.hasClass('inline-page-content')) {
							singlePage.loadInPage(e,link);
							e.preventDefault();
						}
					});
				});
			},
			
			addWindowResizeEvent: function() {
				if (this.keepPanelSize==0) {
					var singlePage = this;
					jQuery(window).resize(function() {
						if ((parseInt(singlePage.panelMinWidth)+jQuery('.'+singlePage.horOffsetWrapper).outerWidth()) < jQuery(this).width()) {
							singlePage.curPanelWidth=jQuery(this).width()-jQuery('.'+singlePage.horOffsetWrapper).outerWidth();
							singlePage.curPanelHeight=jQuery(this).height();
							var pamount = (singlePage.moveSubPagesIntoPage==1)?singlePage.pageOrder.length:singlePage.flatPageOrder.length;
							jQuery(singlePage).css({'width': singlePage.curPanelWidth*pamount+'px', 'left': (singlePage.curPanelWidth*singlePage.pageIndex*-1)+'px'});
							jQuery(singlePage).children('.ifwssinglepage-slide-panel').css('width', singlePage.curPanelWidth+'px');
							if (singlePage.keepSubPageWrapperSize!=1) {
								jQuery(singlePage).children('.ifwssinglepage-slide-panel').find('.with-subpages-wrapper').css('width', singlePage.curPanelWidth+'px');
							}
						}
					});
				}
			},			
			
			unfoldSubMenus: function(rel) {
				var singlePage = this;
				
				var $listelement = jQuery(jQuery('ul.mainnavigation').find('a[rel='+rel+']'));
				if ($listelement.hasClass('ifwssinglepage-submenu-link')) {
					//submenu entry clicked => menu already folded out?
					var subnavi=$listelement.closest('ul.subnavigation');
				} else {
					//mainmenu entry clicked => fold out submenu 
					var subnavi=$listelement.parent('li').children('ul.subnavigation');
				}
				
				var parRel=jQuery(subnavi).parent('li').children('a').attr('rel');
				
				jQuery('ul.subnavigation').each(function(){
					if (jQuery(this).attr('rel')!=parRel) { 
						jQuery(this).slideUp('fast').removeClass('folded-out');
					}
				});
				
				if (!jQuery(subnavi).hasClass('folded-out')) {
					jQuery(subnavi).slideDown('fast').addClass('folded-out');
				}
			},
			
			ajaxLoadContent: function(id) {
				var singlePage = this;

				jQuery.ajax({
					url: 'index.php?id='+id+'&type='+this.ajaxCallTypeNum+'&L='+this.language,
					success: function(result) {
						singlePage.insertAjaxContent(result, id);
					}
				});
			},
			
			ajaxLoadInPageContent: function(link) {
				var singlePage = this;
				var id = jQuery(link).attr('rel');
				//show loading
				jQuery(link).addClass('link-ajax-loading');
				
				jQuery.ajax({
					url: 'index.php?id='+id+'&type='+this.ajaxCallSubPageTypeNum+'&L='+this.language,
					success: function(result) {
						singlePage.insertAjaxInPageContent(result, link);
						jQuery(link).removeClass('link-ajax-loading');
					},
					error: function(xhr, errormsg, err) { jQuery(link).removeClass('link-ajax-loading'); }
				});
			},

			ajaxLoadSubPageContent: function(id) {
				var singlePage = this;
				this.newSubPageWrapperWidth = 0;
				jQuery.ajax({
					url: 'index.php?id='+id+'&type='+this.ajaxCallSubPageTypeNum+'&L='+this.language,
					success: function(result) {
						singlePage.insertAjaxSubPageContent(result, id);
					}
				});
			},
			
			insertAjaxContent: function(result, rel) {
				//alert(result);
				if (result!='')	{
					//if there's content replace the loading... with the fetched
					//find the corresponding slidepanel
					var aPanel=jQuery(this).find('div.ifwssinglepage-slide-panel[rel='+rel+']');
					
					//set css styles if wanted
					if (this.initPanelCSS!="") {
						jQuery(aPanel).css(this.initPanelCSSProperties);
					}
					
					jQuery(aPanel).empty().append(result);
					//now add the click events to all the new links
					this.addClickEventToLinks(aPanel);
					//and sublinks
					this.addClickEventToInPageLinks(aPanel);
					//and internal ones
					this.addClickEventToInternalLinks(aPanel);
					//set new offset of the current panel in vertical mode
					if (this.moveSubPagesIntoPage==1 && subPanels.children().length>0) {
						var subPanels=jQuery(this).find('div.ifwssinglepage-slide-panel-subpanels[rel='+rel+']');
						if (this.subPageContainer!='') {
							jQuery(aPanel).find('.'+this.subPageContainer).append(subPanels).addClass('with-subpages').wrap('<div class="with-subpages-wrapper">');
						} else {
							jQuery(aPanel).append(subPanels).addClass('with-subpages');
						}
					}
					if (this.slideDirection=='BOTTOM_TO_TOP') {
						var $activepage = jQuery(jQuery(this).children('.active'));						
						var newoffset = $activepage.offset().top-this.topOffset;
						//this should be very fast
						jQuery('html, body').animate({'scrollTop': (newoffset)}, {queue: false, duration: this.slideSpeed});						
					}
				}
				//alert(result);
			},
			
			insertAjaxInPageContent: function(result, link) {
				if (result!='') {
					var singlePage = this;
					if (jQuery(link).parent().is('dt')) {
						var $pagecontent = jQuery(link).parent('dt').next('dd').children('.inline-page-content');
					} else if (jQuery(link).parent().is('li')) {
						var $pagecontent = jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.inline-page-content[rel='+jQuery(link).attr('rel')+']');
						if (!$pagecontent.hasClass('inline-page-content')) {
							jQuery(link).closest('ul').next('div.all-inline-page-contents').append('<div id="ifwssinglepage-slide'+jQuery(link).attr('rel')+'" class="inline-page-content" rel="'+jQuery(link).attr('rel')+'"></div>');
							$pagecontent = jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.inline-page-content[rel='+jQuery(link).attr('rel')+']');
						}
					}
					$pagecontent.html(result);
					if (this.linkInPageBackClassname) {
						//add hidecontent action for this content
						//jQuery(link).parent('dt').next('dd').children('.page-content').find('.'+this.linkInPageBackClassname).each(function(){
						$pagecontent.find('.'+this.linkInPageBackClassname).each(function(){
							jQuery(this).click(function(e){
								jQuery(this).closest('.inline-page-content').slideUp('fast', function() {
									jQuery(this).closest('dd').children('.short-description').slideDown('slow');
								}).removeClass('slided-down');
								e.preventDefault();
							});
						}); 
					}
					//now add the click events to all the new links
					this.addClickEventToLinks($pagecontent);
					//and sublinks
					this.addClickEventToInPageLinks($pagecontent);		
					//and internal ones
					this.addClickEventToInternalLinks($pagecontent);
				}
				this.showInPage(link);
			},

			insertAjaxSubPageContent: function(result, rel) {
				if (result!='') {
					if (this.moveSubPagesIntoPage==1) {
						var aPanel = jQuery(this).find('div.ifwssinglepage-slide-subpanel[rel='+rel+']');
					} else {
						var aPanel = jQuery(this).find('div.ifwssinglepage-slide-panel[rel='+rel+']');
						//set initial css properties
						if (this.initPanelCSS!="") {
							jQuery(aPanel).css(this.initPanelCSSProperties);
						}
					}
					jQuery(aPanel).empty().append(result);
					this.addClickEventToLinks(aPanel);
					this.addClickEventToInPageLinks(aPanel);
					this.addClickEventToInternalLinks(aPanel);
					if (this.moveSubPagesIntoPage && this.keepSubPageWrapperSize!=1) this.calcSubPageWidth();
				}
			},
			
			calcSubPageWidth: function() {
				var sf=jQuery.trim(this.subPageWidthFrames); 
				if (sf!='') {
					var frames = sf.split(',');
					var newWidth = 0;
					jQuery('.with-subpages-wrapper').each(function() {
						for (var i=0;i<frames.length;i++) {
							jQuery(this).find('.'+jQuery.trim(frames[i])).each(function(){
								newWidth+=jQuery(this).outerWidth(true);
							});
						}
						jQuery(this).find('.with-subpages').css('width', (newWidth+40)+'px');
					});
				}
			},
			
			slideTo: function(e, link) {
				//slide to the correct position
				//alert(jQuery(link).attr('rel'));
				//remove activeclass
				var $oldPanel = jQuery(jQuery(this).children('.active')).removeClass('active');
				//animate to css styles
				//if (this.slide) $oldPanel.animate({opacity: "0.1"}, {queue: false, duration: this.slideSpeed});
				if (this.initPanelCSS!="") $oldPanel.animate(this.initPanelCSSProperties, {queue: false, duration: this.slideSpeed});
				
				var singlepage = this;
				
				//set the active class to the link or the parent
				if (this.linkSetParentActive==1 || this.linkSetActive==1) {
					jQuery('a.ifwssinglepage-link').each(function(){
						if (singlepage.linkSetParentActive==1) {
							jQuery(this).parent().removeClass(singlepage.linkActiveClassname);
							jQuery(link).parent().addClass(singlepage.linkActiveClassname);
							if (jQuery(link).hasClass('ifwssinglepage-submenu-link')) {
								jQuery(link).parent().parent().parent().addClass(singlepage.linkActiveClassname);
							}
						} else {
							jQuery(this).removeClass(singlepage.linkActiveClassname);
							jQuery(link).addClass(singlepage.linkActiveClassname);
						}
					});
				}
				
				var rel = (jQuery(link).attr('shortcut') && jQuery(link).attr('shortcut')!=0)?jQuery(link).attr('shortcut'):jQuery(link).attr('rel');

				//check if rel refers to rootpage => panel otherwise search for the rootpage
				//but only if subPages are moved within the mainpage
				if (this.moveSubPagesIntoPage==1 && jQuery.inArray(rel, this.pageOrder)==-1) {
					for (var i=0;i<this.pageTree.length;i++) {
						if (jQuery.inArray(rel, this.pageTree[i])!=-1) {
							rel=this.pageOrder[i];
						}
					}
				}

				//if not preLoaded fetch the content
				if (!this.preLoadPageContent) this.fetchPageContent(rel);
				
				//this can only be a mainpage - so a slide panel TODO: check this!!! whats with subpanels
				var $newpage=jQuery(jQuery(this).children('.ifwssinglepage-slide-panel[rel="'+rel+'"]'));

				var pIndex=0;
				if (this.moveSubPagesIntoPage==1) {
					while (pIndex<this.pageOrder.length && this.pageOrder[pIndex]!=rel) pIndex++;
				} else {
					while (pIndex<this.flatPageOrder.length && this.flatPageOrder[pIndex]!=rel) pIndex++;
				}
				this.pageIndex = pIndex;
				
				//set the active class
				$newpage.addClass('active');
				//animate to the new page
				if (this.slideDirection=='RIGHT_TO_LEFT') {
					//do slide css
					if (this.slidePanelCSS!="") $newpage.animate(this.slidePanelCSSProperties, {queue: false, duration: this.slideSpeed});
					jQuery(this).animate({'left': pIndex*this.curPanelWidth*-1}, {queue: false, duration: this.slideSpeed});
				} else if (this.slideDirection=='BOTTOM_TO_TOP') {
					//get the offset
					var newoffset = $newpage.offset().top-this.topOffset;
					//with scrollbars use html and body to scroll; TODO: use container overflow without scrollbars
					jQuery('html, body').animate({'scrollTop': (newoffset)}, {queue: false, duration: this.slideSpeed});
				}

				if (e) e.preventDefault();
			},
			
			loadInPage: function(e, link) {
				//check if the current panel is the right one
				var pID = this.getInPageParentID(jQuery(link).attr('rel'));
				if (pID!=-1 && jQuery(link).closest('..ifwssinglepage-slide-panel').attr('rel')!=pID) {
					//slide to the right panel with the closest singlepage-link found
					var pLink=jQuery('a.ifwssinglepage-link[rel="'+pID+'"]:first-child');
					this.slideTo(e,pLink[0]);
					this.unfoldSubMenus(jQuery(link).attr('rel'));
					//now find the link within the new active panel
					link = jQuery(this).children('.active').find('.ifwssinglepage-inpagelink[rel="'+jQuery(link).attr('rel')+'"]');
				}
				if (jQuery(link).parent().is('dt')) {
					var $pagecontent = jQuery(link).parent('dt').next('dd').children('.inline-page-content');
				} else if (jQuery(link).parent().is('li')) {
					var $pagecontent = jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.inline-page-content[rel='+jQuery(link).attr('rel')+']');
				}
				if ($pagecontent.hasClass('slided-down')) {
					this.hideInPage(link);
				} else {
					//if it's a li element $pagecontent is undefined otherwise the html is empty
					if ($pagecontent.hasClass('inline-page-content') && $pagecontent.html()) {
						this.showInPage(link);
					} else {
						this.ajaxLoadInPageContent(link);
					}
				}
			},
			
			showInPage: function(link) {
				//check which menu
				if (jQuery(link).parent().is('dt')) {
					jQuery(link).closest('dt').next('dd').children('.short-description').slideUp('fast', function(){
						jQuery(link).closest('dt').next('dd').children('.inline-page-content').slideDown('slow').addClass('slided-down');
					});
				} else if (jQuery(link).parent().is('li')) {
					var $slidedDown = jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.slided-down');
					if ($slidedDown.hasClass('inline-page-content')) {
						$slidedDown.slideUp('fast', function(){
							jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.inline-page-content[rel='+jQuery(link).attr('rel')+']').slideDown('slow').addClass('slided-down');
						}).removeClass('slided-down');
					} else {
						var $pagecontent = jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.inline-page-content[rel="'+jQuery(link).attr('rel')+'"]');
						$pagecontent.slideDown('slow').addClass('slided-down');
					}
				}
			},
			
			hideInPage: function(link) {
				if (jQuery(link).parent().is('dt')) {
					jQuery(link).closest('dt').next('dd').children('.inline-page-content').slideUp('fast', function() {
						jQuery(link).closest('dt').next('dd').children('.short-description').slideDown('slow');	
					}).removeClass('slided-down');
				} else if (jQuery(link).parent().is('li')) {
					jQuery(link).closest('ul').next('div.all-inline-page-contents').children('div.slided-down').slideUp('fast').removeClass('slided-down');
				}
			}
			
		});

		jQuery.extend(this, defaults, settings);
		
		return this;
	};
})(jQuery);
