//***********************************
//********* JS error handler ********
//***********************************
window.onerror = myOnError;
function myOnError(msg, url, lno)
{   
    if (document == null) return true;
    if (document.images == null) return true;
    if (document.images["jsErrorPixel"] == null) return true;
    document.images["jsErrorPixel"].src = "jserrorpixel.aspx?url=" + escape(url) + "&lno=" + escape(lno) + "&msg=" + escape(msg);
    return true;
}

/*************************************
********* money formatting ***********
*************************************/
function formatCurrency(num, decsep, milsep)
{
    num = num.toString().replace(/\$|\,/g, '');
    if (isNaN(num)) num = "0";
    sign = (num == (num = Math.abs(num)));
    num = Math.floor(num * 100 + 0.50000000001);
    cents = num % 100;
    num = Math.floor(num / 100).toString();
    if (cents < 10) cents = "0" + cents;
    for (var i = 0; i < Math.floor((num.length - (1 + i)) / 3); i++)
    {
        num = num.substring(0, num.length - (4 * i + 3)) + milsep + num.substring(num.length - (4 * i + 3));
    }
    return (((sign) ? '' : '-') + num + decsep + cents);
}

//***********************************
//**** scrolling teaser handler *****
//***********************************
function getPosition(e)
{
    e = e || window.event;
    var cursor = { x: 0, y: 0 };
    if (e.pageX || e.pageY)
    {
        cursor.x = e.pageX;
        cursor.y = e.pageY;
    }
    else
    {
        var de = document.documentElement;
        var b = document.body;
        cursor.x = e.clientX + (de.scrollLeft || b.scrollLeft) - (de.clientLeft || 0);
        cursor.y = e.clientY + (de.scrollTop || b.scrollTop) - (de.clientTop || 0);
    }
    return cursor;
}

//***********************************
//********* change language *********
//***********************************
function changeLang(pLang)
{
    if (document.location.search != null && document.location.search.length > 1)
    {
        newUrl = "?";
        if (document.location.search.indexOf("?") == 0)
        {
            params = document.location.search.substring(1).split("&");
        }
        else params = document.location.search.split("&");
        
        for (var i = 0; i < params.length; i++)
        {
            param = params[i].split("=");
            if (i > 0)
            {
                newUrl += "&";
            }
            if (param[0] == "lang")
            {
                newUrl += "lang=" + pLang;
            }
            else newUrl += param[0] + "=" + param[1]; //already escaped!
        }
    }
    else newUrl = "?lang=" + pLang;
    
    if (newUrl.indexOf("lang=") == -1)
    {
        if (newUrl.indexOf("?") == -1)
        {
            newUrl += "?";
        }
        
        newUrl += "&lang=" + pLang;
    }

    try
    {
        _gaq.push(['_trackEvent', 'Language', 'Language selection']);
    }
    catch (e)
    {
    }
    
    document.location.href = newUrl;
}

//***********************************
//********* wait div handler ********
//***********************************
function andGo(_url,_div)
{
    if (document.getElementById(_div) != null)
    {
        document.getElementById(_div).style.display = 'block';
    }
    
    document.location.href = _url;
}

//***********************************
//********* ow / rt handler *********
//***********************************
function enableDisable()
{
    if (document.getElementById('rbIsOneway').checked)
    {
        document.getElementById('tbReturnDate').disabled = true;
    }
    else
    {
        document.getElementById('tbReturnDate').disabled = false;
        document.getElementById('tbReturnDate').value = document.getElementById('tbDepartureDate').value;
    }

    try
    {
        _gaq.push(['_trackEvent', 'Radiobutton Homepage', 'Roundtrip / Oneway']);
    }
    catch (e)
    {
    }
}

//***********************************
//********* array shuffle ***********
//***********************************
function arrayShuffle()
{
    var tmp, rand;
    for (var i = 0; i < this.length; i++)
    {
        rand = Math.floor(Math.random() * this.length);
        tmp = this[i];
        this[i] = this[rand];
        this[rand] = tmp;
    }
}

Array.prototype.shuffle = arrayShuffle;

//***********************************
//********* google events ***********
//***********************************
function trackEvent(evtName, siteName)
{
    try
    {
        _gaq.push(['_trackEvent', evtName, siteName]);
    }
    catch (e)
    {
    }
}