var period = 1000;
//new swoosh
var flashBaseUrl = swfUrl;

var params = "";
var finalUrl = "";
var form;
var fechas;
//
var waitDiv;
var edreamsDiv;
function initSwoosh(step, tipo, formId, language) {
    waitDiv = document.getElementById("waitScreen");
    edreamsDiv = document.getElementById("edreamsScreen");
    showWaitPage();
    setSwooshStep(step, tipo, formId, language);
}
function showWaitPage() {
    waitDiv.style.display = 'block';
    edreamsDiv.style.display = 'none';
}
function hideWaitPage() {
    waitDiv.style.display = 'none';
    edreamsDiv.style.display = 'block';
}

function setSwooshStep(step, tipo, formId, language) {
    if (step == "paso1") {
        fillDynamicSwoosh(tipo, formId, language);
    } else if (step == "buscadestinos") {
        fillDynamicSwooshBuscadestinos(tipo, formId, language);
    } else if (step == "shuttle") {
        fillDynamicSwooshShuttle(tipo, formId, language);
    } else {
        params = "?pasoNum=" + step;
        switch (tipo) {
        case "vuelos":
            params += "&travelType=vuelos";
            break;
        case "trenes":
            params += "&travelType=trenes"
            break;
        case "hoteles":
            params += "&travelType=hoteles"
            break;
        case "dynpack":
            params += "&travelType=dynpack"
            break;
        }
        finalUrl = flashBaseUrl + params;
        fillflashDiv(finalUrl);
    }
}
var hasLoadedFlash = false;
function fillflashDiv(finalUrl) {

    var w = 728;
    var h = 426;
    var oDiv = document.getElementById("flashContainer");
    //alert("finalUrl: "+finalUrl);
    if (DetectFlashVer(8, 0, 0)) {
        oDiv.innerHTML = '<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="https://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0" width="' + w + '" height="' + h + '">' +
                         '<param name="allowScriptAccess" value="always" />' +
                         '<param name="movie" value="' + finalUrl + '">' +
                         '<param name="quality" value="high">' +
                         '<param name="menu" value="false">' +
                         '<embed src="' + finalUrl + '" width="' + w + '" height="' + h + '" quality="high" allowScriptAccess="always" pluginspage="https://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" menu="false"></embed>' +
                         '</object>';
    } else {
        oDiv.innerHTML = '<br><br><img src="' + staticNoFlashImage + '" width="728px" height="426px">';
    }
    hasLoadedFlash = true;
    //alert("oDiv.innerHTML: "+oDiv.innerHTML);
}
function replaceAccents(str) {
    var myStr;
    var firstWord;
    var nextWords;
    if (str.indexOf(" ") == 0) {
        str = str.substring(1, str.length);
    }
    if (str.indexOf(" ") != -1) {
        firstWord = str.substring(0, str.indexOf(" "));
        nextWords = str.substring((str.indexOf(" ")), (str.length));
    } else {
        firstWord = str;
        nextWords = "";
    }
    myStr = firstWord.charAt(0).toUpperCase() + firstWord.substr(1).toLowerCase() + nextWords;
    myStr = myStr.replace(/á/, "a").replace(/é/, "e").replace(/í/, "i").replace(/ó/, "o").replace(/ú/, "u").replace(/España/, "Esp.").replace(/Ä/, "Ae").replace(/ä/, "ae").replace(/Ö/, "Oe").replace(/ö/, "oe").replace(/Ü/, "Ue").replace(/ü/, "ue").replace(/ß/, "ss").replace(/ã/, "a").replace(/õ/, "o").replace(/ñ/, "n");
    myStr = myStr.replace(/à/, "a").replace(/è/, "e").replace(/ì/, "i").replace(/ò/, "o").replace(/ù/, "u").replace(/â/, "a").replace(/ê/, "e").replace(/î/, "i").replace(/ô/, "o").replace(/û/, "u");
    myStr = myStr.replace(/À/, "A").replace(/È/, "E").replace(/Ì/, "I").replace(/Ò/, "O").replace(/Ù/, "U").replace(/Â/, "A").replace(/Ê/, "E").replace(/Î/, "I").replace(/Ô/, "O").replace(/Û/, "U");
    return myStr;

}
function setToChoose(language, depDateField, arrDateField) {
    var aElegir;
    if (language == "de") {
        aElegir = "zur auswahl";
    } else  if (language == "en") {
        aElegir = "to choose";
    } else  if (language == "es") {
        aElegir = "a elegir";
    } else  if (language == "fr") {
        aElegir = "à choisir";
    } else  if (language == "it") {
        aElegir = "a elegir";
    } else  if (language == "pt") {
        aElegir = "a elegir";
    }
    depDateField.value = aElegir;
    arrDateField.value = aElegir;
}

function fillDynamicSwoosh(tipo, formId, language) {
    if (parent.document.getElementById('engineIfr')) {
        var formScope;
        formScope = (parent.document.engineIfr) ? parent.document.engineIfr.document : parent.document.getElementById('engineIfr').contentDocument;
    } else {
        formScope = document;
    }
    form = formScope.getElementById(formId);
    var depCityField, arrCityField, depDateField, arrDateField;
    depCityField = form.departureLocation;
    arrCityField = form.arrivalLocation;
    depDateField = form.departureDate;
    arrDateField = form.returnDate;
    if (formId == "offerFlightsSearch" || formId == "cheapFlightsSearch") {
        setToChoose(language, depDateField, arrDateField);
    }

    switch (tipo) {

    case "vuelos":
        var depCity = replaceAccents(depCityField.value.split("(")[0]);
        var arrCity = replaceAccents(arrCityField.value.split("(")[0]);
        var depDate = replaceAccents(depDateField.value.trim().toString());
        var arrDate = replaceAccents(arrDateField.value.trim().toString());
        fechas = depDate + " - " + arrDate;
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        break;
    case "trenes":
        var depCity = replaceAccents(depCityField.value.split("(")[0]);
        var arrCity = replaceAccents(arrCityField.value.split("(")[0]);
        var depDate = replaceAccents(depDateField.value.trim().toString());
        var arrDate = replaceAccents(arrDateField.value.trim().toString());
        fechas = depDate + " - " + arrDate;
        params = "?pasoNum=paso1&travelType=trenes" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        break;
    case "hoteles":
        var destCity = replaceAccents(form.city.value.split("(")[0]);
        var depDate = form.arrivalDate.value.trim().toString();
        var arrDate = form.departureDate.value.trim().toString();
        fechas = depDate + " - " + arrDate;
        params = "?pasoNum=paso1&travelType=hoteles" + "&destCity=" + destCity + "&fechas=" + fechas;

        break;
    case "dynpack":
        var destCity = replaceAccents(form.dynArrivalCity.value.split("(")[0]);
        var depDate = form.dynDepartureDate.value.trim().toString();
        var arrDate = form.dynReturnDate.value.trim().toString();
        fechas = depDate + " - " + arrDate;
        params = "?pasoNum=paso1&travelType=dynpack" + "&destCity=" + destCity + "&fechas=" + fechas;
        break;
    case "vuelosDesambiguacion":
        var depCity = replaceAccents(depCityField.value.split("(")[0]);
        var arrCity = replaceAccents(arrCityField.value.split("(")[0]);
        var depDate = replaceAccents(depDateField.value.trim().toString());
        var arrDate = replaceAccents(arrDateField.value.trim().toString());
        fechas = depDate + " - " + arrDate;
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        break;
    case "multidestino":
        setLang(language);
        break;
    }
    finalUrl = flashBaseUrl + params;

    fillflashDiv(finalUrl);
}
function setLang(language) {
    switch (language) {
    case "de":
        var depCity = "Mehrere Ziele";
        var arrCity = "Mehrere Ziele";
        fechas = "Mehrere Daten";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "en":
        var depCity = "Multiple destinations";
        var arrCity = "Multiple destinations";
        fechas = "Multiple dates";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "fr":
        var depCity = "Multi-Destinations";
        var arrCity = "Multi-Destinations";
        fechas = "Multi-Dates";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "pt":
        var depCity = "Multi-Destinos";
        var arrCity = "Multi-Destinos";
        fechas = "Multi-Datas";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "pt":
        var depCity = "Destinazioni multiple ";
        var arrCity = "Destinazioni multiple ";
        fechas = "Data multiple ";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "es":
        var depCity = "Multiples destinos";
        var arrCity = "Multiples destinos";
        fechas = "Multiples fechas";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    case "it":
        var depCity = "Destinazioni multiple";
        var arrCity = "Destinazioni multiple";
        fechas = "Date multiple";
        params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;
        return params;
        break
    }
}

var isIE = (navigator.appVersion.indexOf("MSIE") != -1) ? true : false;
var isWin = (navigator.appVersion.toLowerCase().indexOf("win") != -1) ? true : false;
var isOpera = (navigator.userAgent.indexOf("Opera") != -1) ? true : false;

function ControlVersion()
{
    var version;
    var axo;
    var e;

    // NOTE : new ActiveXObject(strFoo) throws an exception if strFoo isn't in the registry

    try {
        // version will be set for 7.X or greater players
        axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.7");
        version = axo.GetVariable("$version");
    } catch (e) {
    }

    if (!version)
    {
        try {
            // version will be set for 6.X players only
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.6");

            // installed player is some revision of 6.0
            // GetVariable("$version") crashes for versions 6.0.22 through 6.0.29,
            // so we have to be careful.

            // default to the first public version
            version = "WIN 6,0,21,0";

            // throws if AllowScripAccess does not exist (introduced in 6.0r47)
            axo.AllowScriptAccess = "always";

            // safe to call for 6.0r47 or greater
            version = axo.GetVariable("$version");

        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 4.X or 5.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = axo.GetVariable("$version");
        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 3.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash.3");
            version = "WIN 3,0,18,0";
        } catch (e) {
        }
    }

    if (!version)
    {
        try {
            // version will be set for 2.X player
            axo = new ActiveXObject("ShockwaveFlash.ShockwaveFlash");
            version = "WIN 2,0,0,11";
        } catch (e) {
            version = -1;
        }
    }

    return version;
}

// JavaScript helper required to detect Flash Player PlugIn version information
function GetSwfVer() {
    // NS/Opera version >= 3 check for Flash plugin in plugin array
    var flashVer = -1;

    if (navigator.plugins != null && navigator.plugins.length > 0) {
        if (navigator.plugins["Shockwave Flash 2.0"] || navigator.plugins["Shockwave Flash"]) {
            var swVer2 = navigator.plugins["Shockwave Flash 2.0"] ? " 2.0" : "";
            var flashDescription = navigator.plugins["Shockwave Flash" + swVer2].description;
            var descArray = flashDescription.split(" ");
            var tempArrayMajor = descArray[2].split(".");
            var versionMajor = tempArrayMajor[0];
            var versionMinor = tempArrayMajor[1];
            var versionRevision = descArray[3];
            if (versionRevision == "") {
                versionRevision = descArray[4];
            }
            if (versionRevision[0] == "d") {
                versionRevision = versionRevision.substring(1);
            } else if (versionRevision[0] == "r") {
                versionRevision = versionRevision.substring(1);
                if (versionRevision.indexOf("d") > 0) {
                    versionRevision = versionRevision.substring(0, versionRevision.indexOf("d"));
                }
            }
            var flashVer = versionMajor + "." + versionMinor + "." + versionRevision;
            //alert("flashVer="+flashVer);
        }
    }
    // MSN/WebTV 2.6 supports Flash 4
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.6") != -1) flashVer = 4;
    // WebTV 2.5 supports Flash 3
    else if (navigator.userAgent.toLowerCase().indexOf("webtv/2.5") != -1) flashVer = 3;
        // older WebTV supports Flash 2
        else if (navigator.userAgent.toLowerCase().indexOf("webtv") != -1) flashVer = 2;
            else if (isIE && isWin && !isOpera) {
                    flashVer = ControlVersion();
                }
    return flashVer;
}
// When called with reqMajorVer, reqMinorVer, reqRevision returns true if that version or greater is available
function DetectFlashVer(reqMajorVer, reqMinorVer, reqRevision)
{
    versionStr = GetSwfVer();
    if (versionStr == -1) {
        return false;
    } else if (versionStr != 0) {
        if (isIE && isWin && !isOpera) {
            // Given "WIN 2,0,0,11"
            tempArray = versionStr.split(" "); 	// ["WIN", "2,0,0,11"]
            tempString = tempArray[1];			// "2,0,0,11"
            versionArray = tempString.split(",");	// ['2', '0', '0', '11']
        } else {
            versionArray = versionStr.split(".");
        }
        var versionMajor = versionArray[0];
        var versionMinor = versionArray[1];
        var versionRevision = versionArray[2];

        // is the major.revision >= requested major.revision AND the minor version >= requested minor
        if (versionMajor > parseFloat(reqMajorVer)) {
            return true;
        } else if (versionMajor == parseFloat(reqMajorVer)) {
            if (versionMinor > parseFloat(reqMinorVer))
                return true;
            else if (versionMinor == parseFloat(reqMinorVer)) {
                if (versionRevision >= parseFloat(reqRevision))
                    return true;
            }
        }
        return false;
    }
}

function fillDynamicSwooshBuscadestinos(tipo, formId, language) {
    form = document.getElementById(formId);
    var depCityField, depDateField, arrDateField;
    depCityField = form.departureLocation;
    depDateField = form.departureDate;
    arrDateField = form.returnDate;

    var depCity = replaceAccents(depCityField.value.split("(")[0]);
    var depDate = replaceAccents(depDateField.value.toString());
    var arrDate = replaceAccents(arrDateField.value.toString());

    fechas = depDate + " - " + arrDate;
    params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + "..." + "&depCity=" + depCity + "&fechas=" + fechas;

    setLang(language);

    finalUrl = flashBaseUrl + params;

    fillflashDiv(finalUrl);
}

function fillDynamicSwooshShuttle(tipo, formId, language) {
    form = document.getElementById(formId);

    var depCityField = form.departureLocation;
    var depDateType = form.airShuttleOutBound;
    var depDateField = form.departureDate;
    var arrCityField = form.arrivalLocation;
    var retDateType = form.airShuttleInBound;
    var retDateField = form.returnDate;

    var depCity = replaceAccents(depCityField.value.split("(")[0]);
    var arrCity = replaceAccents(arrCityField.value.split("(")[0]);

    var depDate = "";
    if (depDateType.value == NORMAL_TRIP) {
        depDate = replaceAccents(depDateField.value.toString());
    } else {
        depDate = shuttleFlight;
    }

    var retDate = "";
    if (retDateType.value == NORMAL_TRIP) {
        retDate = replaceAccents(retDateField.value.toString());
    } else {
        retDate = shuttleFlight;
    }

    fechas = depDate + " - " + retDate;
    params = "?pasoNum=paso1&travelType=vuelos" + "&arrCity=" + arrCity + "&depCity=" + depCity + "&fechas=" + fechas;

    finalUrl = flashBaseUrl + params;

    fillflashDiv(finalUrl);
}