﻿//*** TAKSTTABEL pr. 11. januar 2009 ***
//*** OBS 0 og 1 zone koster det samme som 2 zoner ***
var arrPrices = new Array(338, 338, 338, 476, 614, 734, 846, 964, 1086, 1206, 1320, 1420, 1520, 1620, 1720, 1820, 1920, 2020, 2120, 2220, 2320, 2420, 2520, 2620, 2720, 2820, 2920)
function showStartticket() {
var billetDocX = parseInt(document.getElementById("z").style.left,10) + 664
document.getElementById("skiftBillet").style.left = billetDocX
document.getElementById("skiftBillet").style.visibility = "visible"
}
function loadBilletFlash(DivID, path, width, height, text) {
var ih = ''
ih = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" id="example" name="example" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="' + width + '" height="' + height + '">'
ih += '<param name="movie" value="' + path + '?spar=' + text + '">'
ih += '<param name="quality" value="high">'
ih += '<param name="wmode" value="transparent">'
ih += '<embed src="' + path + '?spar=' + text + '" wmode="transparent" swliveconnect="true" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="' + width + '" height="' + height + '"></embed>'
ih += '</object>'
document.getElementById(DivID).innerHTML = ih
}
var cityTimer
function valByNavn1(felt) {
cityTimer = setTimeout("valByNavn2('" + felt + "')",200)
}
function valByNavn2(felt) {
if (document.getElementById(felt)) {
var value = document.getElementById(felt).value
if (value != '') {
var thisZip = parseInt(value.substring(value.length - 4), 10)
if (isNaN(thisZip) || thisZip < 7000 || thisZip >= 10000) {
document.getElementById(felt).value = 'Bynavn'
alert("Af hensyn til zone- og afstandsberegning\ner det vigtigt du klikker på et bynavn fra\nlisten, og ikke skriver det selv.")
}
} else {
document.getElementById(felt).value = 'Bynavn'
fraByNum = 0
}
}
}
//*** Googlemaps functions *** START ***
var myGoogleMap
var gDir
function loadMap() {
if (GBrowserIsCompatible()) {
myGoogleMap = new GMap2(document.getElementById("DIVmap"));
myGoogleMap.addControl(new GLargeMapControl());
myGoogleMap.addControl(new GMapTypeControl());
myGoogleMap.enableScrollWheelZoom()
myGoogleMap.setCenter(new GLatLng(56.418845697765136, 10.61279296875), 6);
//myGoogleMap.setMapType(G_HYBRID_TYPE);
}
}
function getDirections(strFrom, strTo) {
gDir = new GDirections(myGoogleMap);
GEvent.addListener(gDir, "load", onGDirectionsLoad);
GEvent.addListener(gDir, "error", handleErrors);
gDir.load("from: " + strFrom + " to:" + strTo)
}
function onGDirectionsLoad() {
intMeter = gDir.getDistance().meters
beregnBesparelse3()
}
function handleErrors() {
intMeter = 0
alert("Fejl ved kilometerberegning!")
beregnBesparelse3()
}
//*** Googlemaps functions *** END ***
//*** AJAX search extender *** START ***
var xmlhttp
var numSearchRows = 0
var ajaxFunction = ""
var currentTextBox = "addFra"
function activateSearchExtender(e, strSearch, curBox) {
currentTextBox = curBox
//alert(e.button)
if (e.keyCode < 37 || e.keyCode > 40 || e.button == 0) { // 37,38,39,40 = directionkeys
appendLog("searchExtender is activated")
if (strSearch.length > 0) {
appendLog("searching ajax")
if (curBox == "addFra" || curBox == "addTil") {
ajaxFunction = "soegBy"
loadXMLDoc(e, '/custom/soegSparBilen.aspx?search=' + escape(strSearch))
} else if (curBox == "dinEmail") {
ajaxFunction = "tilmeldEmail"
loadXMLDoc(e, '/custom/sparTilmelding.aspx?email=' + escape(strSearch))
}
} else {
hideSearchExtender(true)
}
}
}
var sTi
function hideSearchExtender(force) {
sTi = setTimeout("hideSearchExtender2(" + force + ")", 200)
}
function hideSearchExtender2(force) {
if (force) {
document.getElementById('searchxmldiv').style.visibility = "hidden"
document.getElementById('biltype').style.visibility = "visible"
prevSearchRow = -1
} else {
}
}
function resetSearchTimer() {
var csTi = setTimeout("resetSearchTimer2()", 100)
}
function resetSearchTimer2() {
clearTimeout(sTi)
}
function loadXMLDoc(e, url) {
//document.getElementById("emailResult").innerHTML = ajaxFunction
if (url != '' && e.keyCode != 38 && e.keyCode != 40 && e.keyCode != 13) {
xmlhttp = null
xmlhttp = (window.XMLHttpRequest) ? new XMLHttpRequest() : new ActiveXObject("Microsoft.XMLHTTP");
if (xmlhttp != null) {
xmlhttp.onreadystatechange = onSearchResponse
xmlhttp.open("GET", url, true)
xmlhttp.send(null)
} else {
alert("Your browser understøtter ikke XMLHTTP.")
}
}
}
function checkSearchReadyState() {
if (xmlhttp != null) {
if (xmlhttp.readyState == 4) {
// if "OK"
if (xmlhttp.status == 200) {
return true
} else {
return false
}
} else {
return false
}
} else {
return false
}
}
function onSearchResponse() {
var loaded = checkSearchReadyState()
if (loaded) {
var response = xmlhttp.responseXML.documentElement;
if (response != null) {
if (ajaxFunction == "soegBy") {
var txt = '<div style="background-color:#003470;padding:2px;color:#ffffff;"><b>Vælg by her:</b></div>'
txt += '<div id="searchOverflowdiv" class="searchOverflowdiv" onKeyDown="scrollSearchSelection(event)" onmousedown="resetSearchTimer()">'
txt += '<table id="tblSearch" width="181" cellpadding="0" cellspacing="2" border="0">'
var x = response.getElementsByTagName("result")
var i
for (i = 0; i < x.length; i++) {
txt += '<tr>'
var Xna = x[i].getElementsByTagName("name")
var Xpo = x[i].getElementsByTagName("postnr")
var Xnu = x[i].getElementsByTagName("number")
try {
txt += '<td style="cursor:pointer;" id="searchtd_' + i + '" onmouseover="rowOverSearch(' + i + ')" onclick="selectSearch(' + i + ')">'
txt += '<span><b>' + Xna[0].firstChild.data + '</b> <i>(' + Xpo[0].firstChild.data + ')</i></span>'
txt += '<span id="srspan_na' + i + '" style="display:none;">' + Xna[0].firstChild.data + ' ' + Xpo[0].firstChild.data + '</span></td>'
txt += '<span id="srspan_nu' + i + '" style="display:none;">' + Xnu[0].firstChild.data + '</span></td>'
}
catch (er) {
txt += '<td>&nbsp;</td>'
}
txt += '</tr>'
}
numSearchRows = i
txt += '</table></div>'
//alert(txt)
xmlhttp = null
document.getElementById('searchxmldiv').innerHTML = txt
if (currentTextBox == "addFra")
document.getElementById('searchxmldiv').style.top = "22px"
else if (currentTextBox == "addTil")
document.getElementById('searchxmldiv').style.top = "52px"
//document.getElementById('searchxmldiv').style.left = parseInt(document.getElementById("z").style.left, 10) + 419
document.getElementById('searchxmldiv').style.visibility = "visible"
document.getElementById('biltype').style.visibility = "hidden"
//rowOverSearch(0)
} else if (ajaxFunction == "soegZone") {
var x = response.getElementsByTagName("result")
var i
for (i = 0; i < x.length; i++) {
var Xzo = x[i].getElementsByTagName("zoner")
try {
intZoner = parseInt(Xzo[0].firstChild.data, 10)
}
catch (er) {
intZoner = 0
}
}
beregnBesparelse2()
} else if (ajaxFunction = "tilmeldEmail") {
var x = response.getElementsByTagName("result")
var i
var bolRes = "false"
for (i = 0; i < x.length; i++) {
var Xre = x[i].getElementsByTagName("subscription")
try {
bolRes = Xre[0].firstChild.data
}
catch (er) {
bolRes = "false"
//var Xde = x[i].getElementsByTagName("desc")
//alert("fejl: " + Xde[0].firstChild.data)
}
}
tegnResultat(bolRes)
}
} else {
hideSearchExtender(true)
}
}
}
var prevSearchRow = -1
function rowOverSearch(rowId) {
if (document.getElementById("searchtd_" + prevSearchRow)) {
document.getElementById("searchtd_" + prevSearchRow).style.backgroundColor = "";
}
if (document.getElementById("searchtd_" + rowId)) {
document.getElementById("searchtd_" + rowId).style.backgroundColor = "#CCCCCC";
}
prevSearchRow = rowId
}
function scrollSearchSelection(e) {
var tempRow = 0
//document.getElementById("alertdiv").innerHTML = numSearchRows 
var divHeight = 132
var rowHeight = 15
var sOFdiv = document.getElementById("searchOverflowdiv")
if (sOFdiv) {
if (e.keyCode == 40) {
if (prevSearchRow >= numSearchRows - 1) {
tempRow = numSearchRows - 1
} else {
tempRow = prevSearchRow + 1
if ((tempRow * rowHeight) > divHeight + document.getElementById("searchOverflowdiv").scrollTop) {
document.getElementById("searchOverflowdiv").scrollTop = (tempRow * rowHeight) - divHeight
//document.getElementById("alertdiv").innerHTML = searchxmldiv.scrollTop 
}
}
rowOverSearch(tempRow)
} else if (e.keyCode == 38) {
if (prevSearchRow > 0) {
tempRow = prevSearchRow - 1
if ((tempRow * rowHeight) < document.getElementById("searchOverflowdiv").scrollTop) {
document.getElementById("searchOverflowdiv").scrollTop = (tempRow * rowHeight)
//document.getElementById("alertdiv").innerHTML = searchxmldiv.scrollTop 
}
}
rowOverSearch(tempRow)
} else if (e.keyCode == 13) {
selectSearch(prevSearchRow)
}
}
}
function selectSearch(id) {
//alert(id + " " + document.getElementById("srspan_na" + id).innerHTML)
if (id >= 0) {
clearTimeout(cityTimer)
if (document.getElementById("srspan_na" + id)) {
if (currentTextBox == "addFra") {
fraByNavn = document.getElementById("srspan_na" + id).innerHTML
fraByNum = document.getElementById("srspan_nu" + id).innerHTML
document.getElementById('addFra').value = fraByNavn
} else if (currentTextBox == "addTil") {
tilByNavn = document.getElementById("srspan_na" + id).innerHTML
tilByNum = document.getElementById("srspan_nu" + id).innerHTML
document.getElementById('addTil').value = tilByNavn
}
hideSearchExtender(true)
}
}
}
function appendLog(str) {
if (document.getElementById("searchLog")) {
var temp = document.getElementById("searchLog").innerHTML
temp += "<br>" + str
document.getElementById("searchLog").innerHTML = temp
}
}
//*** AJAX search extender *** END ***
//*** Beregner for besparelse *** START ***
var fraByNum = 0
var fraByNavn = ""
var tilByNum = 0
var tilByNavn = ""
var intZoner = 0
var intMeter = 0
function beregnBesparelse(e) {
if (fraByNavn != "" && fraByNum > 0 && tilByNavn != "" && tilByNum > 0) {
ajaxFunction = "soegZone"
loadXMLDoc(e, '/custom/soegSparBilen.aspx?searchZone=' + parseInt(fraByNum,10) + ',' + parseInt(tilByNum,10))
//} else if (fraByNavn == tilByNavn) {
//alert("Du skal angive to forskellige bynavne!")
} else {
alert("Du mangler at udfylde hvor du kører fra og til!")
}
}
function beregnBesparelse2() {
//alert("antal zoner = " + intZoner)
if (intZoner > 0 && fraByNavn != tilByNavn) {
getDirections(fraByNavn, tilByNavn)
} else if (intZoner > 0 && fraByNavn == tilByNavn) {
intMeter = 3000
beregnBesparelse3()
}
}
var intAntalMaaneder = 11
var intPriceCarKM = 0
var intPriceCar = 0
var intPriceBus = 0
var intBesparelse = 0
function beregnBesparelse3() {
if (intMeter > 0) {
var cartype = document.getElementById("biltype")
intPriceCarKM = cartype.options[cartype.selectedIndex].value
intPriceCar = Math.ceil(((((intMeter / 1000) * 2) * 21) * intAntalMaaneder) * intPriceCarKM) //2 gange om dagen, 21 dage/mdr
intPriceBus = Math.ceil(arrPrices[intZoner] * intAntalMaaneder)
intBesparelse = intPriceCar - intPriceBus
var strText = "<H1 style='FONT-SIZE: 18px' class='h1'>DU KAN SPARE "+ FormatNumber(intBesparelse, 0, true, false, true)+" kr. om året!</H1>"
strText += "Du kører dagligt 2 gange ca. <b>" + FormatNumber(intMeter / 1000, 1, true, false, true) + " km</b>, hvilket i din biltype, "
strText += "der i følge FDM koster <b>kr. " + FormatNumber(intPriceCarKM, 2, true, false, true) + " pr. km</b>, "
strText += "samlet koster dig ca. <b>" + FormatNumber(intPriceCar, 0, true, false, true) + " kr. om året</b>.<br><br>"
strText += "Hvis du derimod vælger Nordjyske Jernbaner i kombination med den øvrige kollektive trafik mellem "
strText += "<b>" + fraByNavn.substring(0,fraByNavn.length-5) + "</b> og <b>" + tilByNavn.substring(0,tilByNavn.length-5) + "</b> kører du dagligt "
strText += "<b>" + intZoner + " zoner</b>, hvilket med et periodekort for voksne koster "
strText += intAntalMaaneder + " gange " + arrPrices[intZoner] + " kr., hvilket samlet koster dig <b>"
strText += FormatNumber(intPriceBus, 0, true, false, true) + " kr. pr. år</b>.<br><br>"
strText += "Din umiddelbare besparelse ved at tage toget, er derfor ca. <b>" + FormatNumber(intBesparelse, 0, true, false, true)
strText += " kr. om året!</b><br><br>"
strText += "Og med et erhvervskort kan det endda gøres endnu billigere!<br>"
strText += "Ring til os i dag og hør, hvordan du kommer i gang med at spare kassen!<br>"
strText += "<a href='Default.aspx?ID=3'>Eller læs mere om priser her >></a>"
document.getElementById("resultatDiv").innerHTML = strText
document.getElementById("mainA").style.display = "none"
document.getElementById("mainB").style.display = "block"
} else {
}
}
//*** Beregner for besparelse *** END ***
function FormatNumber(num, decimalNum, bolLeadingZero, bolParens, bolCommas) {
/**********************************************************************
IN:
NUM - the number to format
decimalNum - the number of decimal places to format the number to
bolLeadingZero - true / false - display a leading zero for
numbers between -1 and 1
bolParens - true / false - use parenthesis around negative numbers
bolCommas - put commas as number separators.
RETVAL:
The formatted number!
**********************************************************************/
//alert("FormatNumber")
if (isNaN(parseInt(num,10))) return "NaN";
var tmpNum = num;
var iSign = num < 0 ? -1 : 1; // Get sign of number
// Adjust number so only the specified number of numbers after
// the decimal point are shown.
tmpNum *= Math.pow(10, decimalNum);
tmpNum = Math.round(Math.abs(tmpNum))
tmpNum /= Math.pow(10, decimalNum);
tmpNum *= iSign; // Readjust for sign
// Create a string object to do our formatting on
var tmpNumStr = new String(tmpNum);
// See if we need to strip out the leading zero or not.
if (!bolLeadingZero && num < 1 && num > -1 && num != 0)
if (num > 0)
tmpNumStr = tmpNumStr.substring(1, tmpNumStr.length);
else
tmpNumStr = "-" + tmpNumStr.substring(2, tmpNumStr.length);
tmpNumStr = tmpNumStr.replace(/\./g, ",") //now danish format
// See if we need to put in the commas
if (bolCommas && (num >= 1000 || num <= -1000)) {
var iStart = tmpNumStr.indexOf(",");
if (iStart < 0)
iStart = tmpNumStr.length;
iStart -= 3;
while (iStart >= 1) {
tmpNumStr = tmpNumStr.substring(0, iStart) + "." + tmpNumStr.substring(iStart, tmpNumStr.length)
iStart -= 3;
}
}
// See if we need to use parenthesis
if (bolParens && num < 0)
tmpNumStr = "(" + tmpNumStr.substring(1, tmpNumStr.length) + ")";
// See if we need to add ,00
if (tmpNumStr.indexOf(",") < 0 && decimalNum > 0) {
tmpNumStr += ","
var intH = 0
for (intH = 0; intH < decimalNum; intH++) {
//alert(tmpNumStr)
tmpNumStr += "0"
}
//alert(tmpNumStr)
}
//alert(tmpNumStr)
return tmpNumStr; // Return our formatted string!
}
//*** tilmeldEmail funktion ***
function valEmail(e) {
if (document.getElementById("dinEmail").value != "") {
var email = document.getElementById("dinEmail").value
if (email.indexOf("@") > 1 && email.indexOf(" ") == -1) {
document.getElementById("emailResult").innerHTML = "Behandler tilmelding..."
activateSearchExtender(e, email, "dinEmail")
} else {
alert("Du skal indtaste en gyldig emailadresse.\nEksempelvis 'navn@email.dk'")
}
}
}
function tegnResultat(bolRes) {
var subT = setTimeout("tegnResultat2('" + bolRes + "')",500)
}
function tegnResultat2(bolRes) {
if (eval(bolRes)) { //true
document.getElementById("emailResult").innerHTML = "Tak for din tilmelding."
document.getElementById("imgSubmit").style.display = "none"
} else { //error
document.getElementById("emailResult").innerHTML = "Fejl ved tilmelding."
}
}

