﻿/* http://www.dustindiaz.com/getelementsbyclass/ */
function getElementsByClass(searchClass, node, tag) {
    var classElements = new Array();
    if (node == null)
        node = document;
    if (tag == null)
        tag = '*';
    var els = node.getElementsByTagName(tag);
    var elsLen = els.length;
    var pattern = new RegExp("(^|\\s)" + searchClass + "(\\s|$)");
    for (i = 0, j = 0; i < elsLen; i++) {
        if (pattern.test(els[i].className)) {
            classElements[j] = els[i];
            j++;
        }
    }
    return classElements;
}

/* by Jeremy Keith */
function insertAfter(newElement, targetElement) {
    var parent = targetElement.parentNode;
    if (parent.lastChild == targetElement) {
        parent.appendChild(newElement);
    }
    else {
        parent.insertBefore(newElement, targetElement.nextSibling);
    }
}

/*
* Add a printer call to an object when it is clicked
* @param sender the object to have the printing function
* @return True if the printing function was added else false
* @version 21sep2009
*/
function addPrint(sender) {
    if (sender != null) {
        sender.onclick = function() {
            window.print();
        }
        return true;
    }
    else {
        return false;
    }
}

/* General show and hide scripts scripts */

/*
* Show validation image if validator is valid
* @param image Image to show if the validator is valid
* @return true if the image is visible else false
* @version 13aug2009
*/
function showValidation(image) {
    var visible = false;
    if (image != null) {
        image.className = "inline";
        visible = true;
    }

    return visible;
}

/*
* Hide the validation image
* @param image Image to be hidden
* @return true if the image is visible else false
* @version 13aug2009
*/
function hideValidation(image) {
    var visible = true;
    if (image != null) {
        image.className = "hidden";
        visible = false;
    }

    return visible;
}

/*
* Show validation image if input is valid
* @param inputField Input field to check if image should be shown
* @param image Image to show if the validator is valid
* @return true if validator is valid else false
* @version 13aug2009
*/
function showDropDownValidation(inputField, image) {
    var visible = false;
    if (inputField != null) {
        if (inputField.value != "") {
            visible = showValidation(image);
        }
        else {
            visible = hideValidation(image);
        }
    }

    return visible;
}

/*
* Set validation image visible or not
* @param sender TextBox to validate
* @version 12oct2009
*/
function CheckValidation(sender) {
    if (sender != null) {
        if (sender.value != null && sender.value != "" && sender.value != " ") {
            var image = GetPaymentValidationImage(sender);
            if (image != null) {
                showValidation(image);
            }
        }
        else {
            var image = GetPaymentValidationImage(sender);
            if (image != null) {
                hideValidation(image);
            }
        }
    }
}


/*
* Get a validation image next to a text field
* @param sender TextBox to validate
* @version 12oct2009
*/
function GetPaymentValidationImage(sender) {
    var image = sender.nextSibling;
    if (image != null) {
        var img = image.nextSibling;
        if (img != null) {
            return img;
        }
    }
}



function validateEmail(sender) {
    var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
    var address = sender.value;
    if (sender != null) {
        if (reg.test(address) == false) {
            var image = GetPaymentValidationImage(sender);
            if (image != null) {

                hideValidation(image);

            }
        }
        else {
            var image = GetPaymentValidationImage(sender);

            if (image != null) {
                showValidation(image);
            }
        }
    }
}


/*ButtonTransformer.js */

/*
* Load button images when page is finnished loading
* @version 21jul2009
*/
$(document).ready(function() {
    addButtonWrappers();
    buttonEndings();
    buttonImages();
});

/*
* Set classes of buttons when mouse hover
* @version 21jul2009
*/
function onMouseHoverClasses(sender) {
    if (sender != null) {
        var buttonEnd = sender.nextSibling;
        sender.className = "buttonImageHover"
        buttonEnd.className = "buttonEndingHover";
    }
}

/*
* Set classes of buttons when mouse pressed
* @version 21jul2009
*/
function onMouseDownClasses(sender) {
    if (sender != null) {
        var buttonEnd = sender.nextSibling;
        sender.className = "buttonImageActive"
        buttonEnd.className = "buttonEndingActive";
    }
}

/*
* Set classes of buttons when mouse leaves
* @version 21jul2009
*/
function onMouseOutClasses(sender) {
    if (sender != null) {
        var buttonEnd = sender.nextSibling;
        sender.className = "buttonImage";
        buttonEnd.className = "buttonEnding";
    }
}

/*
* Create button endings pictures
* @version 21jul2009
*/
function buttonEndings() {
    if (!document.getElementsByTagName) {
        return false;
    }

    var buttons = getElementsByClass("button");
    /* loop through all buttons and attach a child div */
    for (i = 0; i < buttons.length; i++) {
        var div = document.createElement("div");
        div.className = "buttonEnding";
        insertAfter(div, buttons[i]);
    }
}

/*
* Wraps buttons with another div class to be able to move it around by floating.
* @version 7oct2009
*/
function addButtonWrappers() {
    if (!document.getElementsByTagName) {
        return false;
    }

    var buttons = getElementsByClass("button");
    /* loop through all buttons and attach a child div */
    for (i = 0; i < buttons.length; i++) {
        var button = buttons[i].cloneNode(true);
        var wrapper = document.createElement("div");
        wrapper.className = "buttonWrapper";
        wrapper.appendChild(button);

        var parent = buttons[i].parentNode;
        parent.replaceChild(wrapper, buttons[i]);
    }
}


/*
* Set images and events of buttons
* @version 21jul2009
*/
function buttonImages() {
    if (!document.getElementsByTagName) {
        return false;
    }

    var buttons = getElementsByClass("button");
    /* loop through all buttons and attach a child div */
    for (i = 0; i < buttons.length; i++) {
        buttons[i].className = "buttonImage";
        buttons[i].onmouseover = function() {
            onMouseHoverClasses(this);
        }
        buttons[i].onmousedown = function() {
            onMouseDownClasses(this);
        }
        buttons[i].onmouseout = function() {
            onMouseOutClasses(this);
        }
    }
    //    buttons = [];
    //    $(".button").each(
    //        function(i) {
    //            buttons[i].className = "buttonImage";
    //            buttons[i].onmouseover = function() {
    //                onMouseHoverClasses(this);
    //            }
    //            buttons[i].onmousedown = function() {
    //                onMouseDownClasses(this);
    //            }
    //            buttons[i].onmouseout = function() {
    //                onMouseOutClasses(this);
    //            }
    //        })

}


/*end of buttontransformer.js*/

/*CarItemTransformer.js*/
/*
* Load hover classes when page is finnished loading
* @version 10sep2009
*/
$(document).ready(function() {
    setCarHoverClasses();
});

/*
* Set hover class of car items
* @version 10sep2009
*/
function setCarHoverClasses() {
    if (!document.getElementsByTagName) {
        return false;
    }

    var cars = getElementsByClass("CarHover");
    for (i = 0; i < cars.length; i++) {
        cars[i].onmouseover = function() {
            onCarOverClasses(this);
        }
        cars[i].onmouseout = function() {
            onCarOutClasses(this);
        }
    }
}

/*
* Set on mouse over class of car item
* @version 10sep2009
*/
function onCarOverClasses(sender) {
    if (sender != null) {
        sender.className = "CarHovered"
    }
}

/*
* Set on mouse out class of car item
* @version 10sep2009
*/
function onCarOutClasses(sender) {
    if (sender != null) {
        sender.className = "CarHover"
    }
}

/*end of carItemTransformer.js*/

function HideUnder25(sender, args) {
try
{
    var cityDropdownObject = $get(cityDropdownClientId);
    var pickupDateObject = $get(pickupDateClientId);
    var under25Object = $get(under25ClientId + '_2');
    var checkDate = new Date(2012, 3, 1);
    var temp = pickupDateObject.value.split('-');
    var selectedDate = new Date(temp[0], temp[1] - 1, temp[2]);

    if (citiesInAlaska.indexOf(cityDropdownObject.value) != -1 && selectedDate >= checkDate && under25Object != null) {
        under25Object.checked = false;
        under25Object.disabled = true;
        $get(under25ClientId + '_0').checked = true;
    }
    else {
        if (under25Object != null)
            under25Object.disabled = false;
    }
}
catch(e)
{}
}
