//SITE RELATED FUNCTIONS
function bookmark(bookmarktitel) {
    if(bookmarktitel == '') {
        bookmarktitel = document.title;
    }
    var bookmarklink = document.location.href;

    if(document.all) {
        //MSIE
        window.external.AddFavorite(bookmarklink, "Worldticketshop - " + bookmarktitel);
    }
    else {
        // firefox
        window.sidebar.addPanel("Worldticketshop - " + bookmarktitel, bookmarklink,"");
    }
}

function goPrint() {
    window.print();
}

function timeOutOfRange(date, year, month, day, hours, minutes) {
    if(!kalenderDays.inArray(date.getDay().toString())) {
        return true;
    }

    if(date<=vandaag) {
        return true;
    }
    else if(date<kalenderdatum) {
        return true;
    }
    else if(date>kalenderEinddatum) {
        return true;
    }
    else {
        return false;
    }
}

function goSearch(formulier) {
    var searchStr = formulier.quicksearch;

    if(searchStr) {
        searchStr = searchStr.value;
        searchStr = searchStr.replace("/", "");
        if(searchStr.length > 0) {
            document.location.href = formulier.action + '?q=' + searchStr;
        }
        else {
            alert(fillSearch);
        }
    }
    return false;
}

function submitShopForm(formulier) {
    nowarning();
    formulier.submit();
}

function goToShop(formulier) {
    formulier.submit();
}

function toggleShipping(address_shipping_same) {
    var obj = document.getElementById("shipping");
    if(obj) {
        if(address_shipping_same) {
            obj.style.display = "none";
        }
        else {
            obj.style.display = "";
        }
    }
}

function checkTheatre(formulier) {
    formulier.action = shopUrl;
    formulier.submit();
}

//GENERAL FUNCTIONS
var popUpWin;

function openCentered(documentSrc, windowWidth, windowHeight,scrBars,res) {
    var resizable = (res != null) ? res : 0;

    if(popUpWin){
        if(!popUpWin.closed) popUpWin.close();
    }

    windowLeft = (window.screen.width  - windowWidth)  >> 1;
    windowTop  = (window.screen.height - windowHeight) >> 1;

    popUpWin = window.open(documentSrc, '','toolbar=0,channelmode=0,location=0,menubar=0,resizable=' + resizable + ',status=0,scrollbars=' + scrBars + ',width=' + windowWidth + ',height=' + windowHeight + ',left=' + windowLeft + ',top=' + windowTop);
    //popUpWin.focus();

    return popUpWin;
}

function popup(documentSrc) {
    openCentered(documentSrc, 500, 400, 1, 1);
}

function isArray(obj) {
   if (obj.constructor.toString().indexOf("Array") == -1) {
      return false;
   }
   else {
      return true;
   }
}

function isOdd(num) {
    return (num % 2);
}

Array.prototype.inArray = function (value)
// Returns true if the passed value is found in the
// array.  Returns false if it is not.
{
    var i;
    for (i=0; i < this.length; i++) {
        // Matches identical (===), not just similar (==).
        if (this[i] === value) {
            return true;
        }
    }
    return false;
};

//global page load functionality
var globalLoadHandlers = [];

function registerLoadHandler(eventHandler) {
    if (eventHandler && (typeof(eventHandler) == "function")) {
        var doAdd = true;
        for (var i=0; i<globalLoadHandlers.length; i++) {
            if (globalLoadHandlers[i] == eventHandler) {
                doAdd = false;
                break;
            }
        }
        if (doAdd) globalLoadHandlers.push(eventHandler);
    }
}

function globalOnLoad() {
    for (var i=0; i<globalLoadHandlers.length; i++) {
        globalLoadHandlers[i]();
    }
}

//INITS
window.onload = function() {
    if(typeof(Zapatec) == "function") {
        Zapatec.Calendar.setup({
            noHelp          : true,
            inputField      : "date_theatre",
            ifFormat        : "%d/%m/%Y",
            button          : "calendar_trigger",
            dateStatusFunc  : timeOutOfRange
        });
    }
    //urchinTracker();
    //_cltracker();

    globalOnLoad();
}
paymentLoaded = false;
function ajaxUpdate(url, params, elemId) {
    showLoading(elemId);
    new Ajax.Updater(
        elemId,
        url,
        {
            method: 'get',
            parameters: params,
            onSuccess: function(transport) {
                var response = transport.responseText;
            },
            onFailure: function() {
                alert('error: ' + url);
            }
        }
    );
}

function ajaxUpdatePayment(url, params, elemId) {
    params2 = "";
    if (paymentLoaded) {
        var paymentElement = document.getElementById('betaalwijzen_id');
        var params2 = '&betaalwijzen_id=' + paymentElement.options[paymentElement.selectedIndex].value;
    }
    new Ajax.Updater(
        elemId,
        url,
        {
            method: 'get',
            parameters: params + params2,
            onSuccess: function(transport) {
                paymentLoaded = true;
                var response = transport.responseText;
            },
            onFailure: function() {
                alert('error: ' + url);
            }
        }
    );
}

function ajaxAppend(queryString, url, elemId) {
    new Ajax.Updater(
        elemId,
        url + queryString,
        {
            method: 'get',
            insertion: Insertion.Bottom,
            onSuccess: function(transport) {
                var response = transport.responseText;
            }
        }
    );
}

function showLoading(id) {
    document.getElementById(id).innerHTML = '<img src="/images/loading3.gif" alt="loading" />';
}

function hideLoading(id) {
    document.getElementById(id).innerHTML = '';
}

var objectList = document.getElementsByTagName("object");
for (var i = 0; i < objectList.length; i++) {
    objectList[i].outerHTML = objectList[i].outerHTML;
}
