﻿// JScript File

    var BrowserDetect = {
    init: function () {
	    this.browser = this.searchString(this.dataBrowser) || "An unknown browser";
	    this.version = this.searchVersion(navigator.userAgent)
		    || this.searchVersion(navigator.appVersion)
		    || "an unknown version";
	    this.OS = this.searchString(this.dataOS) || "an unknown OS";
    },
    searchString: function (data) {
	    for (var i=0;i<data.length;i++)	{
		    var dataString = data[i].string;
		    var dataProp = data[i].prop;
		    this.versionSearchString = data[i].versionSearch || data[i].identity;
		    if (dataString) {
			    if (dataString.indexOf(data[i].subString) != -1)
				    return data[i].identity;
		    }
		    else if (dataProp)
			    return data[i].identity;
	    }
    },
    searchVersion: function (dataString) {
	    var index = dataString.indexOf(this.versionSearchString);
	    if (index == -1) return;
	    return parseFloat(dataString.substring(index+this.versionSearchString.length+1));
    },
    dataBrowser: [
	    {
		    string: navigator.userAgent,
		    subString: "Chrome",
		    identity: "Chrome"
	    },
	    { 	string: navigator.userAgent,
		    subString: "OmniWeb",
		    versionSearch: "OmniWeb/",
		    identity: "OmniWeb"
	    },
	    {
		    string: navigator.vendor,
		    subString: "Apple",
		    identity: "Safari",
		    versionSearch: "Version"
	    },
	    {
		    prop: window.opera,
		    identity: "Opera"
	    },
	    {
		    string: navigator.vendor,
		    subString: "iCab",
		    identity: "iCab"
	    },
	    {
		    string: navigator.vendor,
		    subString: "KDE",
		    identity: "Konqueror"
	    },
	    {
		    string: navigator.userAgent,
		    subString: "Firefox",
		    identity: "Firefox"
	    },
	    {
		    string: navigator.vendor,
		    subString: "Camino",
		    identity: "Camino"
	    },
	    {		// for newer Netscapes (6+)
		    string: navigator.userAgent,
		    subString: "Netscape",
		    identity: "Netscape"
	    },
	    {
		    string: navigator.userAgent,
		    subString: "MSIE",
		    identity: "Explorer",
		    versionSearch: "MSIE"
	    },
	    {
		    string: navigator.userAgent,
		    subString: "Gecko",
		    identity: "Mozilla",
		    versionSearch: "rv"
	    },
	    { 		// for older Netscapes (4-)
		    string: navigator.userAgent,
		    subString: "Mozilla",
		    identity: "Netscape",
		    versionSearch: "Mozilla"
	    }
    ],
    dataOS : [
	    {
		    string: navigator.platform,
		    subString: "Win",
		    identity: "Windows"
	    },
	    {
		    string: navigator.platform,
		    subString: "Mac",
		    identity: "Mac"
	    },
	    {
		       string: navigator.userAgent,
		       subString: "iPhone",
		       identity: "iPhone/iPod"
        },
	    {
		    string: navigator.platform,
		    subString: "Linux",
		    identity: "Linux"
	    }
    ]

};
BrowserDetect.init();
    
function setforIE6() {
    document.getElementById('uplevelcss').href = 'css/ie6.css'; 
    var imgs = document.getElementsByTagName('img');
    for (var i=0;i<imgs.length;i++) {
        var imgsrc = imgs[i].src;
        if(imgsrc.match('.png')) {
            imgs[i].src = imgs[i].src+'.gif';
        }
    }
}

function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = '; expires='+date.toGMTString();
	}
	else var expires = '';
	document.cookie = name+'='+value+expires+'; path=/';
	//writeSaved();
}
function readCookie(name) {
	var nameEQ = name + '=';
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}


function writeSaved() {
    document.getElementById('savedobjects').innerHTML = '';
    var allcookies = document.cookie.split(';');
    var str ='';
    for (var i=0;i<allcookies.length;i++) {
        if (allcookies[i].match('saved_'))  {
            var objectid = allcookies[i].split('=')[0].split('_')[1]
            var description = allcookies[i].split('=')[1];
            str += '<div class="row"><a href="ViewObject.aspx?id='+objectid+'">'+description+'</a></div>';
            str += '<div class="btns"><a href="#" onClick="eraseCookie('+objectid+');"><img src="images/iconCancel.png" /></a></div>'; //<a href="'+url+'">A</a> | 
        }
    }
    if (str.length > 0 ) {
        document.getElementById('savedobjects').innerHTML = '<h1>Mina boenden</h1>'+str;
        document.getElementById('savedFrame').style.display = 'block';
    } else {
        document.getElementById('savedFrame').style.display = 'none';
    }
}





function validatefields() {
    var inputs = document.getElementsByTagName('input');
    var selects = document.getElementsByTagName('select');
    var validated = true;
    var validated2 = true;
    var fromdate;
    var todate;
    
    for (var j=0;j<selects.length;j++) {
        //is chosen value not avalible?
        if (selects[j].id.match('Avalible') && selects[j].value < 1) {
            validated = false;
            selects[j].style.background = '#efc5c5';
        } 
    }
    
    for (var i=0;i<inputs.length;i++) {
        //reset input appearance
        if ((inputs[i].id.match('_Required') || inputs[i].type=='text') && inputs[i].className.match('_err')) {
            if (inputs[i].className.match('200px')) { inputs[i].className = 'text_200px_req'; }
            if (inputs[i].className.match('120px')) { inputs[i].className = 'text_120px_req'; }
            if (inputs[i].className.match('75px')) { inputs[i].className = 'text_75px_req'; }
            if (inputs[i].className.match('_date_')) { inputs[i].className = 'text_date_req'; }
            if (inputs[i].className.match('_nr_')) { inputs[i].className = 'text_nr_req'; }
        }
        //is field required and not filled in?
        if (inputs[i].id.match('_Required') && inputs[i].type == 'checkbox' && (!inputs[i].checked)) {
            validated2 = false;
            alert('Du måste godkänna vilkoren');
        }
        //is field required and not filled in?
        if (inputs[i].id.match('_Required') && inputs[i].value == '') {
            validated = false;
            //inputs[i].style.background = '#f8e8e8';
            inputs[i].className = inputs[i].className+'_err'; 
        }
        //is field an email-field and has a value?
        if (inputs[i].id.match('Email') && inputs[i].value.length > 0 && isValidEmail(inputs[i].value) == false) {
            validated = false;
            inputs[i].style.background = '#f8e8e8';
        }
        //is field a date-field and has a value?
        if (inputs[i].id.match('Date') && inputs[i].value.length > 0 && isValidDate(inputs[i].value) == false) {
            validated = false;
            inputs[i].style.background = '#f8e8e8';
        }      
        //is this a from- or todate?
        if (inputs[i].id.match('FromDate')) {
            fromdate = inputs[i];
        } else if (inputs[i].id.match('ToDate')) {
            todate = inputs[i];
        }
        //is field an integer-field and has a value?
        if (inputs[i].id.match('_Integer') && inputs[i].value.length > 0 && isValidInt(inputs[i]) == false) {
            validated = false;
            inputs[i].style.background = '#f8e8e8';
        }     
    }
    
    try {
        //is there a from- and todate?
        if ((!(fromdate.value == null)) && (!(todate.value == null))) {
            //yes, compare them
            if (validateDates(fromdate.value, todate.value)== false) {
            //if (daysBetween() >= 2) {
                validated = false;
                fromdate.style.background = '#f8e8e8';
                todate.style.background = '#f8e8e8';
            }
        }
    } catch(err) {}
    
    if (validated == false) {
        alert('Det fanns ett eller flera fel i formuläret. Kontrollera de rödmarkerade fälten och försök igen!');
    } else if (validated2 == false) {
        validated = false;
    }
    return validated;
}
function isValidInt(field) {
    var number;
    try {
        number = parseInt(field.value);
        if (number >= 0 ) {
            document.getElementById(field.id).value = number;
            return true;
        } else {
            return false;
        }
    } catch (err) {
        return false;
    }
}
function isValidEmail(address) {
   var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
   if(reg.test(address) == false) {
      return false;
   } else {
      return true;  
   }
}

//function isValidEmail(str) {
//   return (str.indexOf(".") > 2) && (str.indexOf("@") > 0);

//}
function isValidDate(str) {
   var valid = true;
   if (!(str.length==10)) {valid = false;}
   if ((!(str.charAt(4)=='-')) || (!(str.charAt(7)=='-'))) {valid = false;}
   
   return valid;
}
function daysBetween(date1, date2) {

    // The number of milliseconds in one day
    var ONE_DAY = 1000 * 60 * 60 * 24

    // Convert both dates to milliseconds
    var date1_ms = date1.getTime()
    var date2_ms = date2.getTime()

    // Calculate the difference in milliseconds
    var difference_ms = Math.abs(date1_ms - date2_ms)
    
    // Convert back to days and return
    return Math.round(difference_ms/ONE_DAY)

}
function validateDates(startdate, enddate) {
    var start = convertDate(startdate);
    var end = convertDate(enddate);
	
	if (daysBetween(start, end) < 2 || start > end) {
		return false;
	} else {
		return true;
	}
}
function convertDate(date){
        try {
        var arrDate = date.split("-");
        var newformat = new Date(arrDate[0], arrDate[1]-1, arrDate[2])
        return newformat;
        } catch(err){}
}

function CheckDateInterval(fromElementName, toElementName)
{
	var fromDateElement = document.getElementById(fromElementName);
	var fromDate = convertDate(fromDateElement.value);
	var fromMinDate = convertDate(fromDateElement.getAttribute("originalDate"));
	if (fromDate < fromMinDate)
	{
		alert("Det tidigaste ankomstdatumet är " + fromDateElement.getAttribute("originalDate"));
		fromDateElement.value = fromDateElement.getAttribute("originalDate");
		return;
	}
	var toDateElement = document.getElementById(toElementName);
	var toDate = convertDate(toDateElement.value);
	var toMaxDate = convertDate(toDateElement.getAttribute("originalDate"));
	if (toDate > toMaxDate)
	{
		alert("Det senaste avresedatumet är " + toDateElement.getAttribute("originalDate"));
		toDateElement.value = toDateElement.getAttribute("originalDate");
		return;
	}
}

function updateTotalPrice()
{
	if (validateDates(document.getElementById('DPC_FromDate_Required').value, document.getElementById('DPC_ToDate_Required').value))
	{
//		if (!CheckDateInterval("DPC_FromDate_Required", "DPC_ToDate_Required")) {
//		     return;
//		}
			
        if (document.getElementById('DPC_FromDate_Required').value != '' && document.getElementById('DPC_ToDate_Required').value != '') {
            var nights = daysBetween(convertDate(document.getElementById('DPC_FromDate_Required').value), convertDate(document.getElementById('DPC_ToDate_Required').value));
            var pricepernight = parseInt(document.getElementById('lblPricePerNight_Single').innerHTML);
            if (nights > 365) {
                document.getElementById('DPC_ToDate_Required').value = '';
                alert('Boende får bokas under max 365 nätter');
            } else if (nights > 1) {
                var totalprice = pricepernight * nights;
                document.getElementById('lblTotalPrice_Single').innerHTML = totalprice+' SEK *';
            } else {
                document.getElementById('DPC_ToDate_Required').value = '';
                alert('Boende måste bokas under minst 2 nätter');
            }
        }
    } else {
        document.getElementById('DPC_ToDate_Required').value = '';
        alert('Datumet ni åker hem måste inträffa minst två dagar efter ni ankommer');
    }
}
function updateTotalPrice_Cart(nights) {
    if (validateDates(document.getElementById('DPC_FromDate_Cart_Required').value,document.getElementById('DPC_ToDate_Cart_Required').value)) {
    	if (document.getElementById('DPC_FromDate_Cart_Required').value != '' && document.getElementById('DPC_ToDate_Cart_Required').value != '')
    	{
    		if (!CheckDateInterval("DPC_FromDate_Cart_Required", "DPC_ToDate_Cart_Required"))
    			return;
        
            var nights = daysBetween(convertDate(document.getElementById('DPC_FromDate_Cart_Required').value), convertDate(document.getElementById('DPC_ToDate_Cart_Required').value));
            var pricespernight = 0;
            var prices = document.getElementById('hidPrices').value.split('|');
            for (i=1;i<prices.length;i++) {
                try {
                    pricespernight += parseInt(prices[i]);
                } catch(err) {}
            }
            
            if (nights > 365) {
                document.getElementById('DPC_ToDate_Cart_Required').value = '';
                alert('Boende får bokas under max 365 nätter');
            } else if (nights > 1) {
                var totalprice = pricespernight * nights;
                document.getElementById('lblTotalPrice_Cart').innerHTML = totalprice+' SEK *';
            } else {
                document.getElementById('DPC_ToDate_Cart_Required').value = '';
                alert('Boende måste bokas under minst 2 nätter');
            }
        }
    } else {
        document.getElementById('DPC_ToDate_Cart_Required').value = '';
        alert('Datumet ni åker hem måste inträffa minst två dagar efter ni ankommer');
    }
}


//function updateTotalPrice_Cart(nights) {
//    var pricespernight = 0;
//    var prices = document.getElementById('hidPrices').value.split('|');
//    for (i=1;i<prices.length;i++) {
//        try {
//            pricespernight += parseInt(prices[i]);
//        } catch(err) {}
//    }
//    
//    if (pricespernight > 0) {
//        if (nights > 365) {
//            document.getElementById('txtNrOfNights_Cart_Required').value = 365;
//            document.getElementById('lblTotalPrice_Cart').innerHTML = pricespernight*365+' SEK';
//            alert('Boende får bokas under max 365 nätter');
//        } else if (nights > 1) {
//            var totalprice = pricespernight * nights;
//            document.getElementById('lblTotalPrice_Cart').innerHTML = totalprice+' SEK';
//        } else  {
//            document.getElementById('txtNrOfNights_Cart_Required').value = 2;
//            document.getElementById('lblTotalPrice_Cart').innerHTML = pricespernight*2+' SEK';
//            alert('Boende måste bokas under minst 2 nätter');
//        }
//    }
//}
function orderOK() {
    var message;
    var lang = document.getElementById('selLang').value;
    if (lang=='Swe') {
        message = 'Din bokning/förfrågan kommer nu att skickas till BoPrima. Välj OK för att godkänna dina uppgifter.';
    } else {
        message = 'Your reservation / inquiry will now be sent to BoPrima. Select OK to verify your information.';
    }
    if(confirm(message)) 
     { 
        return true;
     } else {
        return false;
     }
}
function onOrder(lang) {
    var validated = validatefields();
    if (validated == true) {
        var approved = orderOK(lang);
        if (approved == true) {
            return true;
        } else {
            return false;
        }
    } else {
        return false;
    }
}


function updateobjects(object) {
    var url = 'getCorrespondingObjects.aspx?' + window.location.href.split('?')[1] + '&beds=' + object.value + '&fairid=' + document.getElementById('ddlFairList').options[document.getElementById('ddlFairList').selectedIndex].value;

    var objects = 'objectcolumn_'+object.id.split('_')[1];
    var objectcontainer = document.getElementById('numberframe');
    var inputfields = objectcontainer.getElementsByTagName('input');
    var totalbeds = 0;
    for(var i = 0; i < inputfields.length; i++) {
        var thisvalue = inputfields[i].value;
        if (thisvalue != '' && thisvalue != null) {
            totalbeds += parseInt(thisvalue);
        }
    }
    //ajaxpagefetcher.load(objects, url, true);
    document.getElementById('objectiframe_' + object.id.split('_')[1]).src=url;
    document.getElementById('iframerow_' + object.id.split('_')[1]).style.display = 'block';
    document.getElementById('hidTotalBeds').value = totalbeds;
    //document.getElementById('totalnumberofbeds').innerHTML = totalbeds + ' bäddar';
    //document.getElementById('totalnumberofbeds').innerHTML = 'Du har valt boenden med totalt <span class="numberofbeds">' + totalbeds + '</span> bäddar';
    //ajaxpage(url, objects);
}


function numbersonly(myfield, e, dec)
{
var key;
var keychar;

if (window.event)
   key = window.event.keyCode;
else if (e)
   key = e.which;
else
   return true;
keychar = String.fromCharCode(key);

// control keys
if ((key==null) || (key==0) || (key==8) || 
    (key==9) || (key==13) || (key==27) )
   return true;

// numbers
else if ((("0123456789").indexOf(keychar) > -1))
   return true;

// decimal point jump
else if (dec && (keychar == "."))
   {
   myfield.form.elements[dec].focus();
   return false;
   }
else
   return false;
}


//eraseCookie('objectidlist');
var viewedobject = 1;
function AddChosenToList() {
    var chosendiv = document.getElementById('hidechosen');
    var checkbox = document.getElementById('checkbox');
    if (chosendiv.style.display == 'none') {
        if (AddToListArray() == true) {
            chosendiv.style.display = 'block';
            checkbox.checked = true;
            parent.document.getElementById('totalframe').style.display = 'block';
            //parent.document.getElementById('totalnumberofbeds').innerHTML = parent.document.getElementById('hidTotalBeds').value + ' bäddar har valts';
        } else {
            checkbox.checked = false;
            alert('Boendet är redan tillagt!');
        }
    } else {
        RemoveFromListArray();
        chosendiv.style.display = 'none';
        checkbox.checked = false;
    }
}

function AddToListArray() {
    var thisid = document.getElementById('objectidlist').value.split('|')[viewedobject - 1];
    if (readCookie('objectidlist')) {
        var objects = readCookie('objectidlist');
        if (!(objects.match(thisid))) {
            objects += thisid + '|';
            createCookie('objectidlist',objects,2);
            return true
        } else {
            return false
        }
    } else {
        var objects = '|';
        if (!(objects.match(thisid))) {
            objects += thisid + '|';
            createCookie('objectidlist',objects,2);
            return true
        } 
    }
}
function RemoveFromListArray() {
    var toremove = document.getElementById('objectidlist').value.split('|')[viewedobject - 1];
    var currentobjects = readCookie('objectidlist').split('|');
    var newobjects = '|';
    for (var i = 0; i<currentobjects.length;i++) {
        if (currentobjects[i].length > 0 && currentobjects[i] != toremove) {
            newobjects += currentobjects[i] + '|';
        }
    }
    createCookie('objectidlist',newobjects,2);
}
function setViewedObject(nr) {
    var totalobjects = document.getElementById('objectidlist').value.split('|').length;
    if ((nr == -1 && viewedobject > 1) || (nr == 1 && viewedobject < totalobjects)) {
        viewedobject = viewedobject + nr;
    }
}

function orderall() {
    var ids = readCookie('objectidlist');
    eraseCookie('objectidlist');
    window.location.href = 'ListObjects.aspx?action=adseveraltocart&fairid=' + document.getElementById('ddlFairList').options[document.getElementById('ddlFairList').selectedIndex].value + '&ids=' + ids;
}