﻿function showDropDown(id) {
    document.getElementById(id).style.display = 'block';
}

function hideDropDown(id) {
    document.getElementById(id).style.display = 'none';
}


function hideFormElement(id) {

    if (document.getElementById(id)) {
        if (document.getElementById(id).style.display == 'block') {
            document.getElementById(id).style.display = 'none';
        } else {
            document.getElementById(id).style.display = 'block';
        }
    }
}


var getElemsByRel = function(rel) {
    aElements = document.getElementsByTagName('a');
    relElems = [];
    for (i = 0; i < aElements.length; i++) {
        if (aElements[i].rel == 'rel') {
            relElems.push(aElements[i]);
        }
    }

    return relElems;
}

var preLoadImageNames = new Array();
var preLoadImageUrls = new Array();
var preLoadImageTxt = new Array();
var interval = 5500;
var random_display = 0;
var imageNum = 0;
var imageUrlsNum = 0;
var imageTxtNum = 0;
var timerID;
var imageArray = new Array();
var imageUrlsArray = new Array();
var imageTxtArray = new Array();

/* Preloading Images, Text and URLS  */
function preLoadImages(imageNames, imageTxt, urls) {
    preLoadImageNames = imageNames;
    preLoadImageTxt = imageTxt;
    if (urls != null) {
        preLoadImageUrls = urls;
    }

    preLoadCurrentImages();

}

/* Preload main images, text and urls and fade them  */
function preLoadCurrentImages() {

    imageArray = new Array();
    imageUrlsArray = new Array();
    imageTxtArray = new Array();

    for (var i = 0; i < 4;  i++) {
        imageArray[imageNum++] = new imageItem('/golf-holidays/images/main/big/' + preLoadImageNames[i] + '.jpg');
        imageTxtArray[imageTxtNum++] = preLoadImageTxt[i];
        if (preLoadImageUrls.length > 0) {
            imageUrlsArray[imageUrlsNum++] = preLoadImageUrls[i] + '.aspx';
        }
    }
    
    FadeInImage();
}

function imageItem(image_location) {
    this.image_item = new Image();
    this.image_item.src = image_location;
}

function get_ImageItemLocation(imageObj) {
    return (imageObj.image_item.src)
}

function randNum(x, y) {
    var range = y - x + 1;
    return Math.floor(Math.random() * range) + x;
}

function getNextImage() {

    var totalImages;
    var golfName = document.getElementById('imgtxt');
    var imageurl = document.getElementById('imageurl');

    totalImages = imageArray.length;

    if (random_display) {
        imageNum = randNum(0, totalImages - 1);
    }
    else {
        imageNum = (imageNum + 1) % totalImages;
    }

    golfName.innerHTML = preLoadImageTxt[imageNum];
    if (imageUrlsArray.length > 0) {
        document.getElementById('mainimage').alt = imageTxtArray[imageNum];
    }


    var new_image = get_ImageItemLocation(imageArray[imageNum]);
    return (new_image);
}


function SetOpacity(object, opacityPct) {
    // IE.
    object.style.filter = 'alpha(opacity=' + opacityPct + ')';
    // Old mozilla and firefox
    object.style.MozOpacity = opacityPct / 100;
    // Everything else.
    object.style.opacity = opacityPct / 100;
}

function ChangeOpacity(id, msDuration, msStart, fromO, toO) {
    var element = document.getElementById(id);
    var opacity = element.style.opacity * 100;
    var msNow = (new Date()).getTime();

    opacity = fromO + (toO - fromO) * (msNow - msStart) / msDuration;

    if (opacity < 0)
        SetOpacity(element, 0)
    else if (opacity > 100)
        SetOpacity(element, 100)
    else {
        SetOpacity(element, opacity);
        element.timer = window.setTimeout("ChangeOpacity('" + id + "'," + msDuration + "," + msStart + "," + fromO + "," + toO + ")", 1);
    }
}

function FadeInImage() {

    var foregroundID;
    var backgroundID;

    foregroundID = document.getElementById('mainimage');
    backgroundID = document.getElementById('imgholder');

    if (backgroundID) {
        if (backgroundID) {

            backgroundID.style.backgroundImage = 'url(' + foregroundID.src + ')';
            backgroundID.style.backgroundRepeat = 'no-repeat';
        }
    }

    SetOpacity(foregroundID, 0);

    foregroundID.src = getNextImage();


    if (foregroundID.timer) window.clearTimeout(foregroundID.timer);

    var startMS = (new Date()).getTime();

    foregroundID.timer = window.setTimeout("ChangeOpacity('" + foregroundID.id + "', 1000," + startMS + ",0,100)", 10);

    var timerID = setTimeout('FadeInImage()', interval);
}

var previousObject = null;

function toggleTabs5(show, hide1, hide2, hide3, obj) {

    if (previousObject != null) {
        previousObject.style.color = 'gray';
    }

    if (obj != undefined) {
        obj.style.color = '#65AB3E';
        previousObject = obj;
    }


    if (document.getElementById(show) && document.getElementById(hide1) && document.getElementById(hide2) && document.getElementById(hide3)) {
        document.getElementById(show).style.display = 'block';
        document.getElementById(hide1).style.display = 'none';
        document.getElementById(hide2).style.display = 'none';
        document.getElementById(hide3).style.display = 'none';
    }

}

var previousElement = null;

function changeElementColor(element) {
    element.style.color = '#65AB3E';

    if (previousElement != null && element != previousElement) {
        previousElement.style.color = 'gray';
    }

    previousElement = element;

}

var previousObj2;

function showInfo(id1, id2, id3, id4, obj) {


    if (document.getElementById('currenttab')) {
        if (id1 != 'resort') {
            document.getElementById('currenttab').innerHTML = id1 + ' at';
        } else {
            document.getElementById('currenttab').innerHTML = '';
        }
    }
    
    if (document.getElementById(id1)) {
        document.getElementById(id1).style.display = 'block';
    }

    if (document.getElementById(id2)) {
        document.getElementById(id2).style.display = 'none';
    }

    if (document.getElementById(id3)) {
        document.getElementById(id3).style.display = 'none';
    }

    if (document.getElementById(id4)) {
        document.getElementById(id4).style.display = 'none';
    }

    if (previousObj2 != null) {
        previousObj2.style.color = 'white';
    }

    if (obj == "") {
        obj = null;
    }

    if (obj != null) {
        obj.style.color = '#65AB3E';
        previousObj2 = obj;
    }

}


var preLoadedGolfCourseImageNames = new Array();
var preLoadedGolfCourseImages = new Array();
var preLoadGolfCourseTxt = new Array();

var preLoadedImageNames = new Array();
var preLoadedImages = new Array();
var preLoadTxt = new Array();

function preLoadedGolfCourseImage(imageNames, golfCourseText) {

    preLoadedGolfCourseImageNames = imageNames;
    preLoadGolfCourseTxt = golfCourseText;

    preLoadedGolfCourseImages = new Array(preLoadedGolfCourseImageNames.length);
    
    preLoadGolfCourseImage();
    
}

function preLoadGolfCourseImage() {

    var golfcourseTxtArray = new Array();

    for (var i = 0; i < preLoadedGolfCourseImages.length; i++) {
        preLoadedGolfCourseImages[i] = new Image();
        preLoadedGolfCourseImages[i].src = '/golf-holidays/images/golfcourses/big/' + preLoadedGolfCourseImageNames[i] + '.jpg';
        golfcourseTxtArray[i] = preLoadGolfCourseTxt[i];
    }

    scrollMainGolfCoursePics();

}

function swapGolfCourseImage(imgIndex) {
    if (preLoadedGolfCourseImages.length > 0 && document.getElementById('mainimage')) {
        document.getElementById('mainimage').src = preLoadedGolfCourseImages[imgIndex].src;
        document.getElementById('mainimage').alt = preLoadGolfCourseTxt[imgIndex];
    } 

    if (document.getElementById('imgtxt') != undefined && document.getElementById('imgtxt')) {
        document.getElementById('imgtxt').innerHTML = preLoadGolfCourseTxt[imgIndex];
    } else if (preLoadTxt[imgIndex] != undefined && document.getElementById('imgtxt')) {
        document.getElementById('imgtxt').innerHTML = preLoadGolfCourseTxt[imgIndex];
    }

}

function scrollMainGolfCoursePics(imgIndex) {

    previousImage = imageNum - 1;

    if (imgIndex !== undefined) {
        document.getElementById(imgIndex).style.border = 'none';
    }

    if (preLoadedGolfCourseImages.length > 0) {
        if (imageNum == preLoadedGolfCourseImages.length) {
            imageNum = 0;
        }
    } 

    swapGolfCourseImage(imageNum);

    imageBorder(imageNum, previousImage);

    imageNum++;

    clear = setTimeout('scrollMainGolfCoursePics()', 3500);
}


function stopMainGolfPics(imgIndex) {
    clearTimeout(clear);
    swapGolfCourseImage(imgIndex);
    imageNum = imageNum - 1;
    imageBorder(imgIndex, imageNum);
}

function preLoadedResortImage(imageNames, resortText) {

    preLoadedImageNames = imageNames;
    preLoadTxt = resortText;

    preLoadedImages = new Array(preLoadedImageNames.length);

    pageLoaded();
   
}

function pageLoaded() {

    var resortTxtArray = new Array();

    for (var i = 0; i < preLoadedImageNames.length; i++) {
        preLoadedImages[i] = new Image();
        preLoadedImages[i].src = '/golf-holidays/images/resorts/big/' + preLoadedImageNames[i] + '.jpg';
        resortTxtArray[i] = preLoadTxt[i];
    }

    scrollMainPics();

}

function swapImage(imgIndex) {
    if (preLoadedImages.length > 0 && document.getElementById('mainimage')) {
        document.getElementById('mainimage').src = preLoadedImages[imgIndex].src;
        document.getElementById('mainimage').alt = preLoadTxt[imgIndex];
    } 

    if (document.getElementById('imgtxt') != undefined) {
        document.getElementById('imgtxt').innerHTML = preLoadTxt[imgIndex];
    }

    if (preLoadTxt[imgIndex] != undefined && document.getElementById('imgtxt')) {
        document.getElementById('imgtxt').innerHTML = preLoadTxt[imgIndex];
    }
}

function scrollMainPics(imgIndex) {

    previousImage = imageNum - 1;

    if (imgIndex !== undefined) {
        document.getElementById(imgIndex).style.border = 'none';
    }

    if (preLoadedImages.length > 0) {
        if (imageNum == preLoadedImages.length) {
            imageNum = 0;
        }
    } 

    swapImage(imageNum);

    imageBorder(imageNum, previousImage);

    imageNum++;

    clear = setTimeout('scrollMainPics()', 3500);
}

function imageBorder(image, previousImage) {

    if (previousImage !== -1) {
        document.getElementById(previousImage).style.border = 'none';
    }

    if (document.getElementById(image)) {
        document.getElementById(image).style.border = 'solid 1px white';
    }
}

function stopMainPics(imgIndex) {
    clearTimeout(clear);
    swapImage(imgIndex);
    imageNum = imageNum - 1;
    imageBorder(imgIndex, imageNum);
}

var boxWidth = 0;
var scrollableArea
var currentMarginLeft = 0;
var specialTimer;
var specialTimerRight;

function imageBoxWidth(numberOfOffers) {
    boxWidth = (parseInt(numberOfOffers) * 330) + 80;
}

if (window.addEventListener) {
    window.addEventListener('load', function() { windowLoadEvents(); }, false);
} else if (window.attachEvent) {
    window.attachEvent('onload', windowLoadEvents);
} else {
    window.onload = function() { windowLoadEvents() };
}

function windowLoadEvents() {
   
    scrollableArea = document.getElementById('scrollableArea');

    if (scrollableArea) {
        scrollableArea.style.width = (boxWidth) + 'px';
        scrollSpecialOffersLeft();
    }    
}

function scrollSpecialOffersLeft() {
    // Scroll images 1px at a time
    if (currentMarginLeft != undefined) {
        currentMarginLeft = currentMarginLeft + 1; 
    } else {
        currentMarginLeft = 1;
    }

    if (boxWidth > 1000) { 
        if (currentMarginLeft == (boxWidth - 1100)) { //This is to reduce the white space
            clearTimeout(specialTimer);
            scrollSpecialOffersRight();
        } else {
            scrollableArea.style.marginLeft = -currentMarginLeft + 'px';
            specialTimer = setTimeout('scrollSpecialOffersLeft()', 12);
        }
        
    } else {
        if (currentMarginLeft == boxWidth - 100) {
            clearTimeout(specialTimer);
            scrollSpecialOffersRight();
        } else {
            scrollableArea.style.marginLeft = -currentMarginLeft + 'px';
            specialTimer = setTimeout('scrollSpecialOffersLeft()', 12);
        }
    }
}

function stopScrollSpecialOffer() {
    if (boxWidth > 1000) {
        if (currentMarginLeft == (boxWidth - 1100)) {
            clearTimeout(specialTimerRight);
            clearTimeout(specialTimer);
        }else {
            clearTimeout(specialTimer);
            clearTimeout(specialTimerRight);
            }
     }else {
         if (currentMarginLeft == boxWidth - 100) {
             clearTimeout(specialTimerRight);
             clearTimeout(specialTimer);
         } else {
             clearTimeout(specialTimer);
             clearTimeout(specialTimerRight);
         }
     }

     if (currentMarginLeft == 0) {
         clearTimeout(specialTimer);
         clearTimeout(specialTimerRight);
     } else {
         clearTimeout(specialTimer);
         clearTimeout(specialTimerRight);
     }
}

function reloadScrollSpecialOffer() {
        scrollSpecialOffersLeft();
}

function scrollSpecialOffersRight() {
    //Scroll images back to the start
    if (currentMarginLeft == 0) {
        clearTimeout(specialTimerRight);
        scrollSpecialOffersLeft();
    } else {
        currentMarginLeft = currentMarginLeft - 5;
        scrollableArea.style.marginLeft = -currentMarginLeft + 'px';
        specialTimerRight = setTimeout('scrollSpecialOffersRight()', 1);
    }
}


function displayPage(pagesToDispalyAndHide) {

    var idArray = new Array();

    idArray = pagesToDispalyAndHide.split(',');

    for (var i = 0; i < idArray.length; i++) {
        if (i == 0) {
            document.getElementById(idArray[i].trim()).style.display = 'block';
        } else {
            if (document.getElementById(idArray[i].trim())) {
                document.getElementById(idArray[i].trim()).style.display = 'none';
            }
        }

    }
}

/* Trim function for Javascript */
String.prototype.trim = function() {
    return this.replace(/^\s+|\s+$/g, "");
}


function validateCallback() {

    var errorMsg = null;
    
    if (document.getElementById('name') && document.getElementById('emailaddress') && document.getElementById('telephone') && document.getElementById('day') && document.getElementById('time')) {
        var name = document.getElementById('name');
        var email = document.getElementById('emailaddress');
        var telephone = document.getElementById('telephone');
        var day = document.getElementById('day');
        var time = document.getElementById('time');
        
        if (name.value.length == 0) {
            errorMsg += 'Please enter your name. <br />';
        }

        if (email.value.length > 0 && checkEmail(email)) {

        } else {
            errorMsg += 'Please enter a valid e-mail address. <br />';
        }

        if (telephone.value.length == 0) {
            errorMsg += 'Please enter a telephone number <br />';
        }

        if (day.value == '0') {
            errorMsg += 'Please select a preferred day <br />';
        }

        if (time.value == '0') {
            errorMsg += 'Please select preferred time <br />';
        }

    }

    if (errorMsg != null) {
        document.getElementById('callbackerror').innerHTML = errorMsg;
        document.getElementById('callbackerror').style.display = 'block';
        document.getElementById('callbackmsg').style.display = 'none';
        return false;
    } else {
        document.getElementById('callbackmsg').innerHTML = 'Thank you for your call back request one of our team will contact you shortly';
        document.getElementById('callbackerror').style.display = 'none';
        document.getElementById('callbackmsg').style.display = 'block';
        return true;
    }

}

function validateQuoteRequest() {

    var name = document.getElementById('holidayname').value;
    var email = document.getElementById('holidayemailaddress').value;
    var telephone = document.getElementById('holidaytelephone').value;
    var travellers = document.getElementById('travellers').value;
    var errorMsg = '';

    if (name.length == 0) {
        errorMsg += 'Please enter your name. <br />';
    }

    if (email.length > 0 && checkEmail(email)) {

    } else {
        errorMsg += 'Please enter a valid e-mail address. <br />';
    }

    if (telephone.length == 0) {
        errorMsg += 'Please enter a telephone number <br />';
    }

    if (travellers.length == 0) {
        errorMsg += 'Please enter number of travellers<br />';
    }

    if (errorMsg != '') {
        document.getElementById('errorholidayfeedback').innerHTML = errorMsg;
        document.getElementById('errorholidayfeedback').style.display = 'block';
        if (document.getElementById('ctl00_ContentPlaceHolder2_quotefeedback')) {
            document.getElementById('ctl00_ContentPlaceHolder2_quotefeedback').style.display = 'none';
        }
        document.getElementById('holidayfeedBack').style.display = 'none';
        return false;
    } else {
        document.getElementById('errorholidayfeedback').style.display = 'none';
        return true;
    }

}

/* Check email is valid */
function checkEmail(email) {
    var retVal = false;
    var str = email
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    if (str) {
        if (filter.test(str)) {
            retVal = true;
        } else {
            alert('Please enter a valid email address.');
            retVal = false;
        }
    } else {
        alert('Please enter a valid email address.');
        retVal = false;
    }
    return retVal;
}

/* Check phone number is just digits */
function isNumeric(telephone) {
    var digits = '0123456789';

    if (telephone.length > 0) {
        for (var i = 0; i < telephone.length; i++) {
            if (digits.indexOf(telephone.substr(i, 1)) == -1) {
                alert('Please Enter a valid Telephone number.')
                return false;
            }
        }

        return true
    }
    else {
        return false;
    }
}

/* Check footer email is valid */
function checkFooterEmail(elementID) {
    var retVal = false;
    var str = document.getElementById(elementID).value.trim().toLowerCase();
    var filter = /^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i;
    if (str) {
        if (filter.test(str)) {
            document.getElementById(elementID).value = str;
            retVal = true;
        } else {
            alert('Please enter a valid email address.');
            retVal = false;
        }
    } else {
        alert('Please enter a valid email address.');
        retVal = false;
    }
    return retVal;
}

function emptyTextField(elementId, defaultText) {
    var fieldText = document.getElementById('txtemail').value;
    var textDefault = defaultText;
    if (document.getElementById('txtemail').value == textDefault) {
        document.getElementById('txtemail').value = '';
    }
}

var session = 0;

function chgImage(newImgName, obj, id) {

    var imageLocation;
    var lastIndex;

    if (session == 0) {
        if (document.getElementById('ctl00_ContentPlaceHolder1_' + id)) {
            document.getElementById('ctl00_ContentPlaceHolder1_' + id).style.backgroundColor = '#FF9900';
            session = 1;
        }
    } else {
        if (document.getElementById('ctl00_ContentPlaceHolder1_' + id)) {
            document.getElementById('ctl00_ContentPlaceHolder1_' + id).style.backgroundColor = 'silver';
            session = 0;
        }

    }

    if (newImgName && obj) {
        lastIndex = obj.src.lastIndexOf('/');

        imageLocation = obj.src.substring(0, lastIndex)

        switch (imageLocation) {
            default:
                obj.src = '/ski/images/' + newImgName + '.jpg';
                break;
        }

    }

}
