
var dat = Array();

function init_sort() {
	var re = /([0-9]+),([0-9]{2})!$/i;
	var rd = /ab (jetzt|[0-9]{2}\.[0-9]{2}\.20[0-9]{2}) bis [0-9]{2}\.[0-9]{2}\.20[0-9]{2}/i
	var el = document.getElementById('pauschalen');
	if(el && el.firstChild && el.firstChild.nextSibling && el.firstChild.nextSibling.nextSibling) {
		for(var n = el.firstChild.nextSibling; n!=null; n = n.nextSibling) {
			if(n.nodeType==1 && n.nodeName=='H2') {
				var p = n.nextSibling.getElementsByTagName('h4')[0].firstChild.nodeValue;
				var m = p.match(re);
				if(m) m = parseFloat(m[1]+'.'+m[2]); else m = 0.0;
				var p = n.nextSibling.getElementsByTagName('h5')[0].lastChild.nodeValue;
				var d = p.match(rd);
				dat.push({id: n.firstChild.name.substring(3), title: n.firstChild.firstChild.nodeValue, nights: n.firstChild.title.slice(0,1), arrival: d[1], price: m, node: n});
			}
		}
	}
}

// Sorting

function applyChange(t) {
	var p = document.getElementById('pauschalen');
	for(var i=0; i<dat.length; i++) {
//var d = document.createElement('div');
//d.appendChild(document.createTextNode(dat[i].title));
//var x = document.documentElement.lastChild;
//x.appendChild(d);
		var n = dat[i].node.nextSibling;
		p.appendChild(dat[i].node);
		p.appendChild(n);
	}
	if(t.parentNode && t.parentNode.nodeName=='DL' && t.parentNode.firstChild && t.parentNode.firstChild.nextSibling) {
		for(var n = t.parentNode.firstChild.nextSibling; n!=null; n=n.nextSibling) {
			n.className = '';
		}
		t.className = 'hook';
	}
}

function sortByTitle(a,b) {
	a = a.title.toLowerCase();
	b = b.title.toLowerCase();
	return alphabeticalStringComparison(a,b);
}

function alphabeticalStringComparison(a,b) {
	ac = a.charAt(0);
	bc = b.charAt(0);
	if(a && b) {
// if not [a-z0-9] do not count
		a = a.slice(1);
		b = b.slice(1);
		if(a && b) {
			if(ac==bc) {
				return alphabeticalStringComparison(a,b);
			} else {
				switch(ac) {
					case 'a': case 'ä':
						if(bc=='a' || bc=='ä') return alphabeticalStringComparison(a,b); break;
					case 'o': case 'ö':
						if(bc=='o' || bc=='ö') return alphabeticalStringComparison(a,b); break;
					case 'ß':
						if(bc=='s' && b.charAt(0)=='s') return alphabeticalStringComparison(a,b.slice(1)); break;
					case 's':
						if(bc=='ß' && a.charAt(0)=='s') return alphabeticalStringComparison(a.slice(1),b); break;
//					case '0': case '1': case '2': case '3': case '4': case '5': case '6': case '7': case '8': case '9':
//						if(bc.parseInt()) do numeric
				}
				if(ac>bc) return 1; else return -1;
			}
		} else if(a && !b) return 1; else return -1;
	} else return 0;
}

function sortByDuration(a,b) {
	if(a.nights==b.nights) {
		return 0;
	} else if(a.nights>b.nights) {
		return 1;
	} else return -1;
}

function sortByReversedDuration(a,b) {
	return -sortByDuration(a,b);
}

function sortByPrice(a,b) {
	if(a.price==b.price) {
		return 0;
	} else if(a.price>b.price) {
		return 1;
	} else return -1;
}

function sortByReversedPrice(a,b) {
	return -sortByPrice(a,b);
}

function sortByArrivalDate(a,b) {
	if(a.arrival==b.arrival) {
		return 0;
	} else if(a.arrival=="jetzt") {
		return -1;
	} else if(b.arrival=="jetzt") {
		return 1;
	} else {
		var re = /([0-9]{2})\.([0-9]{2})\.(20[0-9]{2})/;
		var f = a.arrival.match(re);
		var f = new Date(f[3],f[2],f[1]);
		var s = b.arrival.match(re);
		var s = new Date(s[3],s[2],s[1]);
		if(f.getTime()==s.getTime()) {
			return 0;
		} else if(f.getTime()>s.getTime()) {
			return 1;
		} else return -1;
	}
}

function sortByReversedArrivalDate(a,b) {
	return -sortByArrivalDate(a,b);
}

// Scrolling

var scrollTarget = null, scrollCounter = 0, scrollDiff = null, scrollSteps = (Math.PI/2)/20;
var scrollInterval = null;

function goToOffer(o) {
	var te;
	var el = document.getElementById('pauschalen');
	for(var i=0; i<dat.length; i++) {
		if(o==dat[i].id) {
			te = dat[i].node;
			break;
		}
	}
	var p = (document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop) + 0;
	if(!scrollInterval) {
		scrollCounter = 0;
		scrollTarget = te.offsetTop + 200;
		scrollDiff = scrollTarget - p;
		scrollInterval = setInterval("softScroll()",50);
	}	
}

function softScroll() {
	var p = (document.documentElement.scrollTop || document.body.parentNode.scrollTop || document.body.scrollTop) + 0;
	if(scrollTarget>p) {
		scrollCounter += scrollSteps; 
		var c = Math.sin(1-scrollCounter) <= 0 ? 0.0001 : Math.sin(1-scrollCounter);
		if(!p) {
			document.documentElement.scrollTop += 1;
			document.body.parentNode.scrollTop += 1;
			document.body.scrollTop += 1;
		}
		if(document.documentElement && document.documentElement.scrollTop) {
			document.documentElement.scrollTop = parseInt(scrollTarget-c*scrollDiff+5);
		} else if(document.body.parentNode.scrollTop) {
			document.body.parentNode.scrollTop = parseInt(scrollTarget-c*scrollDiff+5);
		} else if(document.body.scrollTop) {
			document.body.scrollTop = parseInt(scrollTarget-c*scrollDiff+5);
		} 
	} else {
		clearInterval(scrollInterval);
		scrollInterval = null;
	}
}

/* Martin Ekblom 2009 */
