/**
*@fileoverview In dieser Datei wird die TTIBE-Basisklasse definiert.
*Hier enthaltene Attribute und Methoden sind in den anderen Klassen ebenfalls
*verfgbar. Es wird beim Einbinden sieser Datei automatisch eine neue TTIBE-Instanz
*"IBE" erzeugt
*@author Guido Fnders, fuenders@traveltainment.de
*/
function twoDigit(val){
  return parseInt(val,10)<10?"0"+parseInt(val,10):parseInt(val,10);
}

/**
*Dient als Basisklasse. Hier enthaltene Attribute und Methoden
*sind in den anderen Klassen ebenfalls verfgbar.
*@constructor
*@param {String} name Name der Instanz
*@param {Int} port Engine-Port
*@param {String} formname Name des Formulars
*/
function Interface(name,port,formName){
  /**
  *Name der TTIBE Instanz
  *@type String
  */
  this.name     = typeof(name)!='undefined'?name:"IBE";
  /**
  *Engine-Port
  *@type Int
  */
  this.port     = typeof(port)!='undefined'?port:654;
  /**
  *Name des zugehrigen Formulars
  *@type String
  */
  this.formName = typeof(formName)!='undefined'?formName:"bengine";
 
}

Interface.prototype = {
  /**
  *bertrgt Objektattributen eines Quellobjekts auf ein Zielobjekt
  *@param {Object} dest Zielobjekt
  *@param {Object} src Quellobjekt
  *@return Zielobjekt
  *@type Object
  */
  Extend: function(dest,src){
    for(attr in src) dest[attr]=src[attr];
    return dest;
  },

  /**
  *Dynamisches Einbinden einer JavaScript/CSS-Datei
  *@param {String} tag Der Tagname des Includes ('script' oder 'link')
  *@param {String} pfad Der Pfad zu der einzubindenden Datei
  */
  Include: function(tag,pfad){
    var attrs = {
      link:   {rel:"stylesheet",type:"text/css",href:pfad},
      script: {type:"text/javascript",src:pfad}
    };
    
    document.getElementsByTagName("head")[0].appendChild(
      this.Extend(document.createElement(tag),attrs[tag])
    );
  },
  
  /**
  *Dynamisches Einbinden mehrer JavaScript/CSS-Dateien
  */
  IncludeFiles: function(){
    for(var i in window["cacheFiles_"+this.port]){
      if(this.req['nurflug']=='1' && (window["cacheFiles_"+this.port][i].search(/regionen.*/)!=-1)) continue;
      else if(this.req['engine']=='erde' && this.req['formular']=='2' && (window["cacheFiles_"+this.port][i].search(/regionen.*/)!=-1)) continue;
      this.Include("script",cacheurl+"booking/cache/"+KID+"/"+this.port+"/"+window["cacheFiles_"+this.port][i]);
    }
    
    for(var i in this.jsFiles) {
    	if ( typeof this.jsFiles[i] == "string" ) {
    		this.Include("script",this.jsFiles[i]);
    	}else {
    		
    	}
 	}
  },
  /**
  *bertragen von Attributen und Methoden von einer oder mehreren Klassen (Mehrfachvererbung)
  *@param {Object} Objekt mit den Klassennamen und entsprechenden Konstruktorargumenten
  */
  Inject: function(obj){
  	
    for(var ClassName in obj){
      //window[ClassName].apply(this,obj[ClassName]);
      try{
        window[ClassName].apply(this,obj[ClassName]);
      }catch(e){
        var strError = ClassName+" - type: "+typeof(window[ClassName])+"\n";
        strError += "typeof Args = "+typeof(obj[ClassName])+"\n";
        for(i=0;i<obj[ClassName].length;i++){
          strError += "arg["+i+"]="+obj[ClassName][i]+", type="+typeof(obj[ClassName][i])+"\n\n";
        }
        
        for(var i in e){
          if(i=='number'){
            strError += "number: "+(e[i] & 0xFFFF)+"\n";
            strError += "facility: "+translate_facility((e[i] & 0xFFF0000)>>16)+"\n";
          }else
            strError += i+": "+e[i]+"\n";
        }
        
        alert("Beim Laden der Seite ist ein Fehler aufgetreten ('"+ClassName+"')\n\nBitte laden Sie die Seite neu.");
      }
    }
  }
};

var TTREGS_654=["Mallorca, Ibiza, Menorca|10000|10000|10000",
"Balearen|10000|10000|10000",
"Ibiza|123|10000|32",
"Menorca|214|10000|630",
"Mallorca|205|10000|35",
"Formentera|93|10000|627",
"Kanaren|10001|10001|10001",
"Gran Canaria|106|10001|345",
"Teneriffa|351|10001|56",
"La Gomera|181|10001|50",
"Graciosa|105|10001|670",
"Lanzarote|185|10001|676",
"Fuerteventura|96|10001|832",
"La Palma|182|10001|675",
"Portugal|10002|10002|10002",
"Algarve|12|10002|637",
"Costa Verde|68|10002|494",
"Porto|281|10002|467",
"Costa do Estoril|65|10002|695",
"Costa de Prata|63|10002|457",
"Madeira|201|10002|639",
"Festland|89|10002|338",
"Costa da Caparica|61|10002|636",
"Lissabon & Umgebung|194|10002|674",
"Alentejo|11|10002|339",
"Azoren|25|10002|664",
"Spanisches Festland|10003|10003|10003",
"Costa de la Luz|62|10003|61",
"Zentral Spanien|388|10003|793",
"Costa Azahar|58|10003|2014",
"Costa Blanca|59|10003|64",
"Nordspanien - AtlantikkÃ¼ste|98|10003|505",
"Costa Dorada|66|10003|2054",
"Barcelona & Umgebung|32|10003|2068",
"Golf von Almeria|104|10003|63",
"Costa del Sol|64|10003|62",
"Costa Brava|60|10003|2013",
"Madrid & Umgebung|202|10003|794",
"TÃ¼rkei|10004|10004|10004",
"TÃ¼rkei Inland|126|10004|526",
"Istanbul & Umgebung|150|10004|373",
"Angebote rund um Istanbul|551|10004|2521",
"Dalaman - Fethiye - Oeludeniz|70|10004|646",
"Bodrum|112|10004|648",
"Side & Alanya|324|10004|643",
"Marmaris & Icmeler|207|10004|647",
"Kemer & Beldibi|168|10004|644",
"Antalya & Belek|17|10004|434",
"weitere Angebote TÃ¼rkei|414|10004|2511",
"Cesme & Izmir|53|10004|652",
"Mersin - Adana - Antakya|689|10004|542",
"Kusadasi & Didyma|178|10004|651",
"Griechische Inseln|10005|10005|10005",
"Korfu|172|10005|6",
"Skiathos & Skopelos|331|10005|13",
"Hydra, Spetses|122|10005|535",
"weitere Angebote Griechische Inseln|415|10005|2516",
"Syros|329|10005|390",
"Chios|56|10005|527",
"Paros|269|10005|392",
"Zakynthos|387|10005|14",
"Santorin|310|10005|12",
"Samos|308|10005|11",
"Ios|145|10005|552",
"Rhodos|295|10005|655",
"Mykonos|228|10005|9",
"Naxos|230|10005|393",
"Aegina|5|10005|558",
"EubÃ¶a (Evia)|672|10005|383",
"Lesbos|189|10005|8",
"Poros|280|10005|546",
"Leros|188|10005|402",
"Lefkas|187|10005|395",
"Patmos|270|10005|401",
"Kalymnos|161|10005|403",
"Karpathos|164|10005|15",
"Kefalonia|167|10005|396",
"Alonissos|14|10005|387",
"Symi|347|10005|404",
"Amorgos|15|10005|549",
"Tinos|362|10005|389",
"Andros|16|10005|391",
"Kreta|175|10005|616",
"Kos|174|10005|7",
"Tilos|361|10005|554",
"Thassos|357|10005|16",
"Ikaria|124|10005|399",
"Griechenland|10006|10006|10006",
"Epiros|87|10006|553",
"Thessaloniki|358|10006|625",
"Pilion (Festland Ost)|113|10006|734",
"Olympische Riviera (Festland)|673|10006|733",
"Chalkidiki|54|10006|534",
"Peleponnes|271|10006|382",
"Thrakien (Festland Nord-Ost)|674|10006|277",
"Athen & Umgebung|23|10006|18",
"Italien, Malta|10007|10007|10007",
"Aostatal & Piemont & Lombardei|276|10007|845",
"Marken|685|10007|296",
"Gardasee|100|10007|2048",
"SÃ¼dtirol & Norditalien|344|10007|844",
"Toscana|365|10007|537",
"Apulien|21|10007|464",
"Basilikata|683|10007|291",
"Elba|82|10007|80",
"Kalabrien|159|10007|536",
"Umbrien|369|10007|817",
"Venetien|374|10007|82",
"Neapel & Umgebung|231|10007|76",
"Emilia Romagna|85|10007|81",
"Ischia|147|10007|75",
"Rom & Umgebung|299|10007|560",
"Sardinien|311|10007|78",
"Malta|206|10007|595",
"Friaul - Julisch Venetien|686|10007|297",
"Abruzzen|0|10007|891",
"Sizilien|330|10007|77",
"Oberitalienische Seen|256|10007|2012",
"Capri|50|10007|79",
"Tunesien, Marokko|10008|10008|10008",
"Monastir|221|10008|614",
"Marokko Inland|127|10008|705",
"Marrakesch|208|10008|126",
"Hammamet|115|10008|132",
"Agadir|6|10008|125",
"Insel Djerba|133|10008|133",
"Tunesien Norden|246|10008|131",
"Oase Zarzis|254|10008|135",
"Aegypten|10010|10010|10010",
"Marsa Alam & Quseir|287|10010|330",
"Sharm el Sheikh / Nuweiba|327|10010|351",
"Hurghada & Safaga|121|10010|350",
"weitere Angebote Aegypten|420|10010|2500",
"Kairo & Gizeh & Memphis|158|10010|348",
"Luxor & Assuan|198|10010|349",
"Afrika|10011|10011|10011",
"Kenia SÃ¼dkÃ¼ste|342|10011|359",
"Northern Cape|504|10011|875",
"Kenia NordkÃ¼ste|248|10011|358",
"Free State|500|10011|878",
"Durban & Umgebung|77|10011|881",
"Namibia|229|10011|453",
"Tansania - Sansibar|349|10011|454",
"Johannesburg & Umgebung|156|10011|883",
"Santo Antao (Kap Verde)|445|10011|588",
"Kapstadt & Umgebung|163|10011|873",
"Gambia|99|10011|137",
"Santiago (Kap Verde)|309|10011|586",
"KrÃ¼ger Park|517|10011|882",
"Sal (Kap Verde)|305|10011|585",
"Kuba|10012|10012|10012",
"weitere Angebote Kuba|422|10012|2522",
"Kuba (Holguin)|118|10012|371",
"Kuba - Varadero & Havanna|373|10012|369",
"Dom. Republik|10013|10013|10013",
"Dom. Republik - Osten (Punta Cana)|401|10013|367",
"Dom. Republik - Norden (Puerto Plata & Samana)|400|10013|366",
"Dom. Republik - SÃ¼den (Santo Domingo)|75|10013|368",
"Karibik|10014|10014|10014",
"Grenada|108|10014|377",
"Jamaika|153|10014|247",
"Guadeloupe|109|10014|572",
"Puerto Rico|284|10014|251",
"Martinique|209|10014|571",
"Tobago|363|10014|378",
"Isla Margarita|148|10014|440",
"Bahamas|27|10014|566",
"Virgin Islands & Anguilla|378|10014|680",
"Antigua & Barbuda|18|10014|250",
"Niederl. Antillen|240|10014|582",
"St. Martin (frz.) & St. Martin (niederl.)|741|10014|4098",
"Barbados|31|10014|245",
"St.Lucia|337|10014|249",
"Turks & Caicos Inseln|368|10014|574",
"Cayman Inseln|52|10014|581",
"Bermuda|38|10014|437",
"USA|10015|10015|10015",
"Florida SÃ¼dspitze|343|10015|523",
"Nevada|186|10015|692",
"Kalifornien|160|10015|688",
"Rundreise USA|640|10015|2560",
"New Jersey|235|10015|782",
"New York|237|10015|697",
"Alaska|9|10015|781",
"Florida OstkÃ¼ste|263|10015|521",
"Hawaii - Insel Maui|139|10015|428",
"Orlando (Florida)|260|10015|524",
"Florida WestkÃ¼ste|384|10015|522",
"Mexiko|10016|10016|10016",
"Inland|490|10016|438",
"Yucatan / Cancun|386|10016|282",
"Mexiko|215|10016|704",
"Acapulco / Oaxaca|2|10016|701",
"Asien|10017|10017|10017",
"Thailand|356|10017|323",
"ThailÃ¤ndische Inseln|355|10017|327",
"Vietnam|376|10017|448",
"Region Cebu & Borocay|488|10017|683",
"China|55|10017|439",
"Luzon & Manila|487|10017|681",
"Usbekistan|496|10017|862",
"Goa|102|10017|360",
"Sunda-Inseln|345|10017|528",
"Insel Phuket|142|10017|322",
"Khao Lak|169|10017|846",
"Insel Ko Samui|136|10017|325",
"Philippinen|274|10017|314",
"Malaysia|203|10017|425",
"Singapur|328|10017|473",
"Taipeh & Umgebung|480|10017|489",
"Myanmar|227|10017|645",
"Region Neu Delhi & Bombay|479|10017|488",
"Insel Bintan|131|10017|871",
"Sri Lanka|334|10017|361",
"weitere Angebote Thailand|437|10017|2535",
"Indien|679|10017|197",
"Hongkong & Umgebung|119|10017|474",
"Bangkok & Umgebung|30|10017|321",
"Bali|29|10017|311",
"Zypern|10019|10019|10019",
"Zypern SÃ¼d (griech. Teil)|390|10019|620",
"Zypern Nord (tÃ¼rk. Teil)|736|10019|99",
"weitere Angebote Griechenland, Zypern|416|10019|2152",
"Dubai, Arabische Halbinsel|10020|10020|10020",
"Sharjah / Khorfakkan|323|10020|352",
"Fujairah|97|10020|722",
"Ajman|7|10020|724",
"Ras Al-Khaimah|288|10020|723",
"Umm Al Quwain|449|10020|725",
"Bahrain|28|10020|721",
"Al Ain|8|10020|884",
"Abu Dhabi|1|10020|354",
"Dubai|76|10020|353",
"Oman|258|10020|532",
"Katar|166|10020|720",
"Frankreich|10021|10021|10021",
"CÃ´te d'Azur|69|10021|2055",
"Paris & Umgebung|268|10021|495",
"Nordeuropa|10022|10022|10022",
"DÃ¤nemark|72|10022|902",
"Island|149|10022|449",
"Norwegen|251|10022|813",
"Schweden|456|10022|851",
"Finnland|91|10022|490",
"SÃ¼damerika|10023|10023|10023",
"Brasilien|660|10023|286",
"Ecuador|469|10023|783",
"KÃ¼ste & Inland|179|10023|293",
"Rio de Janeiro & Umgebung|298|10023|375",
"Argentinien|443|10023|450",
"Peru|470|10023|787",
"Recife|289|10023|374",
"Kanada|10024|10024|10024",
"Nova Scotia|252|10024|790",
"Yukon|505|10024|810",
"Alberta|10|10024|767",
"British Columbia|46|10024|768",
"Saskatchewan|312|10024|791",
"SÃ¼dsee|10025|10025|10025",
"Tahiti|511|10025|335",
"Polynesien|279|10025|336",
"Naher Osten|10026|10026|10026",
"Tel Aviv & Umgebung|350|10026|510",
"Eilat|80|10026|225",
"Totes Meer|366|10026|727",
"Jerusalem & Umgebung|155|10026|509",
"Jordanien|157|10026|515",
"Mitteleuropa|10028|10028|10028",
"London & SÃ¼dengland|391|10028|178",
"ZÃ¼rich|394|10028|936",
"Wien & Umgebung|395|10028|958",
"NiederÃ¶sterreich|406|10028|952",
"Mittel- & Nordengland|498|10028|179",
"Deutschland|10029|10029|10029",
"Bayerischer Wald|34|10029|2025",
"Rheinland-Pfalz|294|10029|118",
"Oberbayern|255|10029|2008",
"Baden-WÃ¼rttemberg|26|10029|104",
"Niedersachsen|242|10029|116",
"Hamburg|114|10029|113",
"Nordrhein-Westfalen|249|10029|117",
"Rheingau|292|10029|2022",
"Sachsen|303|10029|121",
"Harz|116|10029|2031",
"Franken|94|10029|2060",
"Berlin|37|10029|106",
"Hessen|117|10029|114",
"Erzgebirge|88|10029|2050",
"HunsrÃ¼ck / Taunus|120|10029|2061",
"Brandenburg|43|10029|107",
"Bayerische Alpen|33|10029|2058",
"Bremen|44|10029|112",
"Elbsandsteingebirge|83|10029|2051",
"Schwarzwald|317|10029|2002",
"MÃ¼nchen|656|10029|264",
"DÃ¼sseldorf & Umgebung|78|10029|2019",
"LÃ¼neburger Heide|196|10029|2024",
"KÃ¶ln & Umgebung|171|10029|2020",
"ThÃ¼ringer Wald|360|10029|2067",
"ThÃ¼ringen|359|10029|128",
"Kroatien, Bulgarien, Osteuropa|10030|10030|10030",
"Tschechien|367|10030|853",
"Ungarn|370|10030|849",
"Istrien|151|10030|483",
"Sankt Petersburg & Umgebung|499|10030|821",
"Kroatische Inseln|177|10030|504",
"Kvarner Bucht|180|10030|480",
"Bulgarien (Landesinnere)|183|10030|539",
"SÃ¼ddalmatien|339|10030|635",
"Bulgarien (Sonnenstrand)|333|10030|102",
"Norddalmatien|244|10030|2011",
"Insel Krk|137|10030|507",
"Insel Hvar|134|10030|500",
"Insel Brac|132|10030|501",
"Plattensee / Balaton|277|10030|2016",
"RumÃ¤nien|301|10030|110",
"Serbien, Montenegro|223|10030|455",
"Moskau & Umgebung|225|10030|820",
"Bulgarien (Goldstrand)|103|10030|103",
"Slowenien Inland|128|10030|497",
"Mitteldalmatien|218|10030|877",
"GlÃ¼ckshotels|10032|10032|10032",
"GlÃ¼ckshotel Kuba|419|10032|2087",
"GlÃ¼ckshotel Gardasee|290|10032|506",
"GlÃ¼ckshotel Mexiko|630|10032|2239",
"GlÃ¼ckshotel TÃ¼rkei|546|10032|947",
"GlÃ¼ckshotel Mallorca|411|10032|2107",
"GlÃ¼ckshotel TÃ¼rkische Riviera|548|10032|2153",
"GlÃ¼ckshotel Fuerteventura|553|10032|2095",
"GlÃ¼ckshotel Gran Canaria|554|10032|2098",
"GlÃ¼ckshotel Lanzarote|557|10032|2106",
"GlÃ¼ckshotel Ibiza|558|10032|2118",
"GlÃ¼ckshotel Costa del Sol|561|10032|2108",
"GlÃ¼ckshotel Costa de la Luz|563|10032|2156",
"GlÃ¼ckshotel Kalabrien|623|10032|2102",
"GlÃ¼ckshotel Tunesien|579|10032|2099",
"GlÃ¼ckshotel Aegypten|581|10032|4002",
"GlÃ¼ckshotel Italien|621|10032|2140",
"GlÃ¼ckshotel Istanbul|547|10032|2119",
"Rundreisen|10033|10033|10033",
"Rundreise China|601|10033|2128",
"Rundreise Kanada|599|10033|2548",
"Rundreise Azoren|595|10033|2246",
"Rundreise Madeira|592|10033|2244",
"Rundreise Indien|590|10033|2551",
"Rundreise Griechenland|612|10033|2214",
"Rundreise Thailand|588|10033|2257",
"Rundreise Jordanien|587|10033|2136",
"Rundreise Sizilien|615|10033|2222",
"Rundreise Malta|616|10033|2235",
"Rundreise Sardinien|617|10033|2278",
"Rundreise Italien|618|10033|2513",
"Rundreise Tansania|586|10033|2549",
"Rundreise Kalabrien|620|10033|2133",
"Rundreise Kenia|585|10033|2229",
"Rundreise SÃ¼dafrika|583|10033|2115",
"Rundreise Kreta|567|10033|2215",
"Rundreise Andalusien|564|10033|2253",
"Rundreise Mexiko|629|10033|2242",
"Rundreise TÃ¼rkei|545|10033|946",
"Rundreise Tunesien|542|10033|959",
"Rundreise Aegypten|540|10033|2204",
"Rundreise Brasilien|523|10033|2546",
"Rundreise Costa Rica|641|10033|2208",
"Rundreise Marokko|642|10033|2237",
"Rundreise Namibia|644|10033|2541",
"Rundreise Djerba|653|10033|4021",
"Rundreise Island|326|10033|2167",
"Rundreise Portugal|412|10033|2529",
"Rundreise Kuba|413|10033|2234",
"Rundreise Naher Osten|740|10033|2080",
"Rundreise Oman|455|10033|2164",
"Rundreise Syrien|454|10033|2163",
"Rundreise Sri Lanka|453|10033|948",
"Rundreise Zypern|429|10033|2276",
"Rundreise Arabische Halbinsel|430|10033|2273",
"Rundreise Russland|600|10033|2150",
"Kreuzfahrten|10034|10034|10034",
"Kreuzfahrt Region Mittelmeer|669|10034|4005",
"Kreuzfahrt & Hotel TÃ¼rkei|550|10034|2281",
"Kreuzfahrt TÃ¼rkei|544|10034|2280",
"Nilkreuzfahrten|539|10034|2202",
"weitere Kreuzfahrten|524|10034|4006",
"Kreuzfahrt Kroatien|130|10034|4010",
"Fly & Drive|10035|10035|10035",
"Fly & Drive Algarve|694|10035|4057",
"Fly & Drive Costa Blanca|697|10035|4060",
"Fly & Drive Costa de la Luz|698|10035|4061",
"Fly & Drive Costa del Sol|699|10035|4062",
"Fly & Drive Florida|700|10035|4063",
"Fly & Drive Fuerteventura|701|10035|4064",
"Fly & Drive Gran Canaria|704|10035|4067",
"Fly & Drive Kapstadt & Umgebung|706|10035|4069",
"Fly & Drive Kreta|707|10035|4070",
"Fly & Drive Lanzarote|709|10035|4072",
"Fly & Drive Lissabon & Umgebung|710|10035|4073",
"Fly & Drive Madeira|711|10035|4074",
"Fly & Drive Mallorca|712|10035|4075",
"Fly & Drive Kanada|715|10035|4078",
"Fly & Drive Namibia|716|10035|4079",
"Fly & Drive Norwegen|717|10035|4080",
"Fly & Drive Italien|721|10035|4084",
"Fly & Drive Lesbos|722|10035|4085",
"Fly & Drive USA|724|10035|4087",
"Fly & Drive Teneriffa|726|10035|4089",
"Fly & Drive Frankreich|727|10035|4090",
"Fly & Drive Kuba|730|10035|4094",
"Fly & Drive Island|732|10035|4096",
"Fly & Drive Spanien|733|10035|4093",
"Indischer Ozean|10036|10036|10036",
"Mauritius|210|10036|143",
"Malediven|204|10036|342",
"RÃ©union|291|10036|163",
"Seychellen|322|10036|719",
"Mittelamerika|10037|10037|10037",
"Costa Rica|67|10037|563",
"Panama|267|10037|446",
"Honduras|486|10037|443"];TTREGS_654.sort();
//var IBE = new Interface("IBE",port,"bengine");
var IBE = new Interface("IBE","654","bengine");
var countInitReq = 0;
IBE.jsFiles = [
	HOME_URL+'js/travel/libtt/form/formbase.js',HOME_URL+'js/travel/libtt/form/dateselector.js',
	HOME_URL+'js/travel/libtt/core/datehelper.js', HOME_URL+'js/travel/libtt/data/area_'+this.port+'.js'];
IBE.InitOnLoad = function(){
	if ( countInitReq == 100 ) return;
			
    var mustHave = ['FormBase', 'DateSelector', 'DEPARR', 'Target', 'TTREGS_'+this.port ];
    var injObj   = { IbeSearch:[], DateSelector:[] };

   	for(i=0; i < mustHave.length; i++) {
        if(typeof(window[mustHave[i]])=='undefined'){
        	countInitReq++;
        	window.setTimeout("IBE.InitOnLoad()",20); return;
        }
    }

    this.Inject(injObj); this.Init();
};

/**
*@constructor
*@extends FormBase
*@requires Terminauswahl
*@requires Zielauswahl
*@requires Reisende
*@requires Kalender
*/

function IbeSearch(){
	FormBase.apply(this);
    Target.apply(this,[]);

    this.BookingAction = function(){
        var bform=document.forms[this.formName];

      	bform.elements["ibeInput[depDate]"].value=bform.elements["ibeInput[depDay]"].value+"."+bform.elements["ibeInput[depMonth]"].value;
       	bform.elements["ibeInput[retDate]"].value=bform.elements["ibeInput[retDay]"].value+"."+bform.elements["ibeInput[retMonth]"].value;

       	if( typeof ( bform.elements["ibeInput[area]"]) !='undefined') {
       		var area = bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value.split("|");
       		bform.elements["ibeInput[area]"].options[bform.elements["ibeInput[area]"].selectedIndex].value = area[0];
       	}

       	return this.ChkFormular();
    };

    this.ChkFormular = function(){
        var bform=document.forms[this.formName];
        if(this.req['depDate']>this.req['retDate']){
            alert("Ihr RÃ¼ckreisedatum liegt vor dem Hinreisedatum");
            return false;
        }
        var tmpy=bform.zimmer2;
        if(typeof(tmpy)!='undefined'){
            if(bform.zimmer[6].checked==true && bform.zimmer2.selectedIndex==0){
                alert("Bitte wÃ¤hlen Sie ein Zimmertypen aus.");
                bform.zimmer2.focus()
                return false;
            }
        }

        return true;
    };

    /**
    *Wird nach dem Laden der Seite ausgef?hrt
    */

     this.Init = function(){
        if(!document.forms[this.formName]) {  return; }
        with( this ) {
        	this.req['ibeInput[depAirport]'] = this.req['depAirport'];
			FillSelFromArray( 'ibeInput[depAirport]', DEPARR );

			if ( this.req['target'] == 'TRUE' ) {
				valZiel = this.req['topArea'];
				if( this.req['targetArea'] ) {
					this.valReg = this.req['targetArea'].split("|")[0];
				}
        	}

			termin_hin = this.req['depDate'].split("-")[2]+'.'+this.req['depDate'].split("-")[1]+'.'+this.req['depDate'].split("-")[0];
			termin_rueck = this.req['retDate'].split("-")[2]+'.'+this.req['retDate'].split("-")[1]+'.'+this.req['retDate'].split("-")[0];

			InitDays(1);
            InitMonth(1);
            InitDays(0);
            InitMonth(0);
            UpdateDate('dep');
            UpdateDate('ret');

            if ( this.req['target'] == 'TRUE' ) {
				UpdateArea();
			}
			if( valZiel > 0 ) {
				SetToparea();
			}
			
			FillDuration();

			

           /*SetRadios(['verpflegung','zimmer','kategorie']);
            setChecks(['strand','wellness','familie_kinder']);
            if(this.req['formular']=='2'){
                fillSelFromArray('flugdauer',TTFDRZ);
                setRadios(['typ']);
                setChecks(['sportmoeglichkeiten']);
                setTexts(['shotel']);
            }
            else if(this.req['formular']=='4'){
                fillBitSels({"zimmer2":optZimmer2});
                setChecks(['typ']);
                setBitChecks(['meer','zfilter']);
                setTexts(['shotel','preis']);
                UpdateRegionen();
            }*/
        }
    };

}

/**
*@fileoverview Erweiterungen des JavaScript "Date" Objekts
*@author Guido Fï¿½nders, fuenders@traveltainment.de
*/

var monNames = new Array("Jan.","Feb.","Mï¿½rz","April","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez.");

function twoDigit(val){
  return parseInt(val,10)<10?"0"+parseInt(val,10):parseInt(val,10);
}
/**
*@param {int} month Anzahl der Monate, um die das Datum erhï¿½ht werden soll
* (optional, default=1)
*@addon
*/
Date.prototype.addMonth=function(month){
  if(typeof(month)=='undefined') month=1;
  month = parseInt(month);
  var years=Math.floor(month/12);
  this.addYear(years);
  month = month%12;
  if((this.getMonth()+month)>11){
    this.addYear();
    this.setMonth((this.getMonth()+month)%12);
  }else{
    this.setMonth(this.getMonth()+month);
  }
};
/**
*@param {int} years Anzahl der Jahre, um die das Datum erhï¿½ht werden soll
* (optional, default=1)
*@addon
*/
Date.prototype.addYear=function(years){
  if(typeof(years)=='undefined') years=1;
  years = parseInt(years);
  var aktYear = this.getFullYear();
  this.setYear(aktYear+years);
  return this;
};
/**
*@param {int} days Anzahl der Tage, um die das Datum erhï¿½ht werden soll
* (optional, default=1)
*@addon
*/
Date.prototype.addDay=function(days){
  if(typeof(days)=='undefined') days=1;
  days = parseInt(days);
  var aktTs = this.getTime();
  var addTs = days*86400000;
  this.setTime(aktTs+addTs);
  return this;
};
/**
*Setzt Die Uhrzeit eines Dateobjekts auf 00:00:00:00 (HH:MM:SS:MS)
*@addon
*/
Date.prototype.resetTime = function(){
  this.setHours(0,0,0,0);
  return this;
};
/**
*@fileoverview Definiert die Methoden zur Datumsauswahl und zur Anzeige des Kalenders
*/

/**
*@constructor
*@extends TTIBE
*@requires Date
*@requires Zeitraum
*/
function DateSelector(){
  /* default values for date initialization */
  var currDate = new Date();
  var firstDate = new Date();
  var dateOffset = 3;
  firstDate.addDay( dateOffset );
  var depDate = new Date();
  depDate.addDay( 20 );
  var retDate = new Date();
  retDate.addMonth( 1 );
  var lastDepDate = new Date();
  lastDepDate.addYear( 1 );
  var lastRetDate = new Date();
  lastRetDate.addYear( 1 );

  this.erster_termin = firstDate.getDate()+'.'+firstDate.getMonth()+'.'+firstDate.getFullYear();
  this.termin_hin = depDate.getDate()+'.'+depDate.getMonth()+'.'+depDate.getFullYear();
  this.termin_rueck = retDate.getDate()+'.'+retDate.getMonth()+'.'+retDate.getFullYear();
  this.letzter_termin_hin = lastDepDate.getDate()+'.'+lastDepDate.getMonth()+'.'+lastDepDate.getFullYear();
  this.letzter_termin_rueck = lastRetDate.getDate()+'.'+lastRetDate.getMonth()+'.'+lastRetDate.getFullYear();

  this.fieldDepDayDate = "ibeInput[depDay]";
  this.fieldDepMonthDate = "ibeInput[depMonth]";
  
  this.fieldRetDayDate = "ibeInput[retDay]";
  this.fieldRetMonthDate = "ibeInput[retMonth]";
  /**
  *Liefert die anzahl der Tage eines Monats zu einem bergebenen Datum.
  *Liegt der maximale Termin vor dem letzten Tag im Monat, wird der maximale Termin zurckgegeben
  *@param {String} strDate Datum im Format DD.MM.YYYY
  *@param {Bool} hin Kenner ob es sich um das Hin- oder Rckdatum handelt (hin=1)
  *@return {int} Anzahl Tage
  */
  this.GetTage = function(strDate,hin){
    var myDate = new Date(strDate.split(".")[2],parseInt(strDate.split(".")[1],10),1);
    myDate.setDate(0);
    var nTage = myDate.getDate();
    lts=(hin)?(this.letzter_termin_hin.split(".")):(this.letzter_termin_rueck.split("."));
    if(twoDigit(lts[1])==twoDigit(myDate.getMonth()+1) && lts[2]==myDate.getFullYear()){
      nTage=parseInt(lts[0],10);
    }
    return nTage;
  };

  /**
  *Wird aufgerufen, wenn sich der Hintermin gendert hat und ndert entsprechend
  *den Rcktermin
  */
  this.ChangeRueck = function(){
    var lts=this.letzter_termin_rueck.split(".");
    var lDate = new Date(lts[2],parseInt(lts[1]-1,10),parseInt(lts[0]),10);
    var d=this.getValue(this.fieldDepDayDate);
    var lMon=this.getValue(this.fieldDepMonthDate).split(".");
    d = new Date(lMon[1],lMon[0]-1,d);
    var nTime = d.getTime()+(22*86400000);
    if(nTime>lDate.getTime())
      d.setTime(lDate.getTime());
    else
      d.setTime(nTime);
    var nMon=twoDigit(parseInt(d.getMonth(),10)+1);
    var nDay=twoDigit(parseInt(d.getDate(),10));
    this.SetDatum(nDay+"."+nMon+"."+d.getFullYear(),"",2);
  };

  /**
  *Liest den Wert aus einer Selectbox
  *@return {Selectboxvalue}
  */
  this.getValue = function(name){
  	return document.forms[this.formName].elements[name].value;
  };

  /**
  *Setzt die RequestParameter "termin" bzw. "ruecktermin" und das Hiddenfeld
  *"termin"
  */
  this.UpdateTermine = function(kenner,y,m,d){
    var date=new Date(y,m-1,d);
    var bform = document.forms[this.formName];
    dn=date.getTime()/1000;
    if(kenner=="dep"){
      this.req['termin']=dn;
      //bform.termin.value=dn;
    }else{
      this.req['ruecktermin']=dn;
    }
  };
  
  /**
  *Selektiert ein Datum
  *@param {String} strDate das zu setzende Datum
  *@param {Bool} strKenner Kenenr  Hin- oder Rcktermin
  *@param {Int} noMon Kenner ob Monatsselectbox auch aktualisiert werden soll
  *@param {Int} noMon Kenner ob Monatsselectbox auch aktualisiert werden soll
  *@param form Unbekannte Funktion
  */
  this.SetDatum = function(strDate, strRKenner, noMon, form){
    var myDate = new Date(strDate.split(".")[2],parseInt(strDate.split(".")[1],10)-1,parseInt(strDate.split(".")[0],10));
    var nTage=this.GetTage(strDate,strRKenner!="");
    var com=(strRKenner)?document.forms[this.formName].elements[this.fieldDepDayDate]:document.forms[this.formName].elements[this.fieldRetDayDate];
    var comMon=(strRKenner)?document.forms[this.formName].elements[this.fieldDepMonthDate]:document.forms[this.formName].elements[this.fieldRetMonthDate];
    var len=com.length;
    var nMax=(len>nTage)?len:nTage;

    for(i=0;i<nMax;i++){
      if(i<nTage){
        if(i>=len){
          com.options[i]=new Option();
        }
        com.options[i].text=i+1;
        com.options[i].value=i+1;
      }else{
        com[nTage] = null;
      }
    }
    var nSel=myDate.getDate();
    if(nSel>nTage)
      nSel = nTage;

    com.value = nSel;
    this.UpdateTermine(((strRKenner!="")?"dep":""),strDate.split(".")[2],strDate.split(".")[1],nSel);

    if(noMon != 1){
      comMon.value = twoDigit(myDate.getMonth()+1)+"."+myDate.getFullYear();
    }
    if(noMon!=2 && strRKenner!="") this.ChangeRueck();

  };

  /**
  *Initiiert die Aktualisierung einer Auswahlbox
  *@param {String} Typ "k" oder "rueck"
  */
  this.UpdateDate = function(strKenner){
    var nTag = this.getValue((strKenner=="ret")?this.fieldRetDayDate:this.fieldDepDayDate);
    var strMon = this.getValue((strKenner=="ret")?this.fieldRetMonthDate:this.fieldDepMonthDate);
    this.SetDatum(nTag+"."+strMon,(strKenner=="ret")?"":"dummy",2);
  };

  /**
  *Initiiert die Aktualisierung einer "Tag"-Auswahlbox
  *@param {String} strKenner Typ "k" oder "rueck"
  */
  this.SetDay = function( strKenner ){
    var nTag=this.getValue((strKenner=="ret")?this.fieldRetDayDate:this.fieldDepDayDate);
    var cMon=document.forms[this.formName][(strKenner=="ret")?this.fieldRetMonthDate:this.fieldDepMonthDate];
    var strMon=this.getValue((strKenner=="ret")?this.fieldRetMonthDate:this.fieldDepMonthDate);
    var ets=this.erster_termin.split(".");

    if(ets[1]+"."+ets[2]==strMon && nTag < parseInt(ets[0],10)){
      cMon.selectedIndex=1;
      strMon=this.getValue((strKenner=="ret")?this.fieldRetMonthDate:this.fieldDepMonthDate);
      this.SetDatum(nTag+"."+strMon,(strKenner=="ret")?"":"dummy",1);
      nTag=this.getValue((strKenner=="ret")?this.fieldRetDayDate:this.fieldDepDayDate);
    }
    if(strKenner=="dep"){
      this.ChangeRueck();
    }
    this.UpdateTermine(strKenner,strMon.split(".")[1],strMon.split(".")[0],nTag);
  };

  /**
  *Initiiert die Aktualisierung einer "Monat"-Auswahlbox
  *@param {String} strKenner Typ "k" oder "rueck"
  */
  this.SetMonth = function(strKenner){
    var nTag=this.getValue((strKenner=="ret")?this.fieldRetDayDate:this.fieldDepDayDate);
    var strMonat=this.getValue((strKenner=="ret")?this.fieldRetMonthDate:this.fieldDepMonthDate);
    var ets=this.erster_termin.split(".");
    if(ets[1]+"."+ets[2]==strMonat && nTag<parseInt(ets[0],10)){
      nTag=ets[0];
    }
    var strDate=nTag+"."+strMonat;
    this.SetDatum(strDate,(strKenner=="ret")?"":"dummy",1);
  };

  /**
  *Fllen der "Tag" Selectbox (beim erstmaligen Laden der Seite)
  *@param {Bool} Hinkenner (hin=true)
  */
  this.InitDays = function(hin){
    if(typeof(document.forms[this.formName].elements[(hin)?this.fieldDepDayDate:this.fieldRetDayDate]) != 'undefined'){
        var nTage=this.GetTage((hin)?this.termin_hin:this.termin_rueck,hin);
        
        var SelTag=(hin)?this.termin_hin.split(".")[0]:this.termin_rueck.split(".")[0];
        
        
        var selBox = document.forms[this.formName].elements[(hin)?this.fieldDepDayDate:this.fieldRetDayDate];
        for(i=1;i<=nTage;i++){
          selBox.options[i-1] = new Option(i,i);
          if(i==SelTag) selBox.options[i-1].selected=true;
        }
    }
  };

  /**
  *Fllen der "Monat" Selectbox (beim erstmaligen Laden der Seite)
  *@param {Bool} Hinkenner (hin=true)
  */
  this.InitMonth = function(hin){
    if(typeof(document.forms[this.formName].elements[(hin)?this.fieldDepMonthDate:this.fieldRetMonthDate]) != 'undefined'){
        if (typeof(this.monNames) != 'undefined') {
          var m = this.monNames;
        } else {
          var m = ["Jan.","Feb.","M\xE4rz","April","Mai","Juni","Juli","Aug.","Sep.","Okt.","Nov.","Dez."];
        }
        var ets  = this.erster_termin.split(".");
        var lts  = (hin)?(this.letzter_termin_hin.split(".")):(this.letzter_termin_rueck.split("."));
        var sels = (hin)?(this.termin_hin.split(".")):(this.termin_rueck.split("."));
        var selBox  = document.forms[this.formName].elements[(hin)?this.fieldDepMonthDate:this.fieldRetMonthDate];
        var aktDate = new Date(ets[2],parseInt(ets[1],10)-1,1);
        var selDate = new Date(sels[2],parseInt(sels[1],10)-1,1);
        var maxDate = new Date(lts[2],parseInt(lts[1],10)-1,1);
        while(aktDate.getTime()<=maxDate.getTime()){
          var sel = aktDate.getTime()==selDate.getTime()?" selected":"";
          var val = (aktDate.getMonth()+1)<10?"0"+(aktDate.getMonth()+1):(aktDate.getMonth()+1);
          var optVal = val+'.'+aktDate.getFullYear();
          var optLbl = m[aktDate.getMonth()]+' '+String(aktDate.getFullYear()).substr(2,2);
          selBox.options[selBox.options.length] = new Option(optLbl,optVal);
          if(aktDate.getTime()==selDate.getTime())
            selBox.options[selBox.options.length-1].selected = true;
          aktDate.addMonth();
        }
    }
  };
  
  /**
  *ffnet den Kalender
  *@param {String} Typ "hin" oder "rueck"
  */
  this.showKalender = function(strTyp){
    if(strTyp=='hin' && typeof(kalender_rueck)!='undefined') kalender_rueck.close();
    else if(strTyp=='rueck' && typeof(kalender_hin)!='undefined') kalender_hin.close();
    var top=screen.height;
    var left=screen.width;
    var posx=((left/2)-100);
    var posy=((top/2)-180);
    var wndName = 'kalender_'+strTyp+'__'+this.formName+'__'+this.name;
    /* TYPO3-Strecke? */
    if(typeof(t3url)!='undefined'){
        var infowin = window.open(url+'booking/'+ordner_name+'/kalender.html',wndName,'width=200,height=230,scrollbars=no,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy);
    }
    else{
        var infowin = window.open('kalender.html',wndName,'width=200,height=230,scrollbars=no,screenX='+posx+',screenY='+posy+',left='+posx+',top='+posy);
    }
    infowin.focus();
  }
}

/**
*@fileoverview In dieser Datei werden Hilfsfunktionen für Formulare definiert
*@author Guido Fünders, fuenders@traveltainment.de
*/

/**
*Enthält Methoden für den einfacheren Umgang mit Formularen
*@constructor
*@extends TTIBE
*/
function FormBase(){
  /**
  *Füllt eine Selectbox mit den Daten eines Arrays.
  *Die Arrayelemente müssen dafür wie folgt aussehen: "label;value"
  *@param {String} selname Name der zu füllenden Selectbox
  *@param {Array} arrdata Array der die Daten enthält
  */
  this.FillSelFromArray = function(selname,arrdata){
    var sb = document.forms[this.formName].elements[selname] || 0;     
    if(!sb || sb.type!='select-one') return;
    var sel = this.req[selname]!='undefined'?this.req[selname]:'';
    
    for(var i=0;i<arrdata.length;i++){
      var lbl = arrdata[i].split(';')[0];
      var val = arrdata[i].split(';')[1];
      sb.options[sb.options.length] = new Option(lbl,val);
      if(val==sel) sb.options[sb.options.length-1].selected=true;
    }
  };
  /**
  *Füllt eine Selectbox mit den Daten eines Objekts.
  *Die Attributnamen entsprechen den Values, Die Attributwerte den Labels
  *@param {Object} boxobject Objekt mit den zu füllenden Selectbox.
  */
  this.FillSels = function(boxobject){
    for(var boxname in boxobject){
      this.FillSelFromArray(boxname,boxobject[boxname]);
    }
  };

  /**
  *Füllt eine Selectbox mit den Daten eiens Objekts anhand von Bitwerten.
  *Die Attributnamen entsprechen den Values, Die Attributwerte den Labels
  *(wird z.B. bei den erweierten Zimmertypen in LMPS benutzt)
  *@param {Object} boxobject Objekt mit den zu füllenden Selectbox.
  */
  this.FillBitSels = function(boxobject){
    for(var boxname in boxobject){
      var sb = document.forms[this.formName].elements[boxname] || 0;
      if(!sb || sb.type!='select-one') continue;
      var arrdata = boxobject[boxname];
      var sel = this.req[boxname]!='undefined'?parseInt(this.req[boxname]):0;
      sel = sel<0?0:sel;
      for(var i=0;i<arrdata.length;i++){
        var lbl = arrdata[i].split(';')[0];
        var val = arrdata[i].split(';')[1];
        sb.options[sb.options.length] = new Option(lbl,val);
        if((parseInt(val,10)&sel)!=0){
            sb.options[sb.options.length-1].selected=true;
        }
      }
    }
  };

  /**
  *Setzt Radiovalues
  *@param {Object} rnames Objekt mit den zu Namen der Radiobuttons
  */
  this.SetRadios = function(rnames){
    for(var i in rnames){
      var rb = document.forms[this.formName].elements[rnames[i]] || 0;
      if(!rb) continue;
      var val = this.req[rnames[i]]!='undefined'?this.req[rnames[i]]:'';
      for(var j=0;j<rb.length;j++)
        if(rb[j].value==val) rb[j].checked=true;
    }
  };

  /**
  *Setzt Checkboxen
  *@param {Object} cknames Objekt mit den zu Namen der Checkboxen
  */
  this.SetChecks = function(cknames){
    for(var i in cknames){
      var cb = document.forms[this.formName].elements[cknames[i]] || 0;
      if(!cb) continue;
      var val = typeof(this.req[cknames[i]])!='undefined'?this.req[cknames[i]]:'';
      if(cb && cb.value==val) cb.checked=true;
    }
  };

  /**
  *Setzt Checkboxen anhand von Bitwerten (z.B. "meer" oder "zfilter" bei LMPS)
  *@param {Object} cknames Objekt mit den zu Namen der Checkboxen
  */
  this.SetBitChecks = function(cknames){
    for(var i in cknames){
      var cb = document.forms[this.formName].elements[cknames[i]] || 0;
      if(!cb) continue;
      var val = typeof(this.req[cknames[i]])!='undefined'?parseInt(this.req[cknames[i]],10):0;
      val = val<0?0:val;
      if(cb && (parseInt(cb.value,10)&val)!=0) cb.checked=true;
    }
  };

  /**
  *Füllt Textfelder
  *@param {Array} txtnames Array mit den Namen der zu füllenden Textfelder
  */
  this.SetTexts = function(txtnames){
    for(var i in txtnames){
      var tb = document.forms[this.formName].elements[txtnames[i]] || 0;
      if(!tb) continue;
      var val = typeof(this.req[txtnames[i]])!='undefined'?this.req[txtnames[i]]:'';
      if(tb) tb.value=val;
    }
  };

  /**
  *C(hange)Rad(io): setzt einen Radiowert (erweiterte Zimmertypen)
  *@param {INT} val Kenner
  */
  this.CRad = function(val){
    if(val==1) document.forms[this.formName].zimmer[6].checked=true;
    else document.forms[this.formName].zimmer2.selectedIndex=0;
  };

  /**
  *Füllt die Selectboxen für die Reisenden (Erwachsene + 3x Kinderalter)
  */
  this.FillTravellers = function(optUsrPersLbl){
    var defPersLbl = {
      erw:["Erwachsener","Erwachsene"],  // "normal"
      erw_short:["Erw.","Erw."],         // Formular 2 / Nur Flug
      pers:["Person","Personen"],        // Fewo
      kinder:["Jah.","Jahre"]
    };
    var optPersLbl= optUsrPersLbl || defPersLbl;
    var strPers = this.Personen;
    var bform = document.forms[this.formName];
    var elems = ['alter1', 'alter2','alter3'];
    var erwSel = bform.erwachsene;
    var strErw = "25";
    var erwMax = this.req['engine']=='fewo'?8:4;
    if (typeof(bform.erwachsene) != 'undefined'){
        for(var i=1;i<=erwMax;i++){
          if(this.req['engine']=='fewo')
            var lbl = i==1?optPersLbl['pers'][0]:optPersLbl['pers'][1];
          else if(this.req['formular']=='2' || this.req['formular']=='3' ||
                  typeof(window['SucheERDEKlein'])!='undefined' ||
                  typeof(window['SucheLMPSKlein'])!='undefined')
            var lbl = i==1?optPersLbl['erw_short'][0]:optPersLbl['erw_short'][1];        
          else
            var lbl = i==1?optPersLbl['erw'][0]:optPersLbl['erw'][1];
          erwSel.options[erwSel.options.length] = new Option(i+" "+lbl,strErw);
          strErw += ";25";
        }
        erwSel.options.selectedIndex = this.AnzErwachsene-1;
    
        for(var i in elems){
          if(bform[elems[i]]){
            bform[elems[i]].options[0] = new Option(" --- ","-1");
            bform[elems[i]].options[1] = new Option("< 2 "+optPersLbl['kinder'][0],"1");
            for(var j=2;j<=16;j++)
              bform[elems[i]].options[j] = new Option(j+" "+optPersLbl['kinder'][1],j);
            if(this.AlterKinder[i] && this.AlterKinder[i]!="-1")
              bform[elems[i]].value=this.AlterKinder[i];
          }
        }
    }
  };

  /**
  *Füllt die "Dauer"-Selectbox mit Tagen (Erde/Flug)
  */
  this.dauert = function(){
    var sb = document.getElementsByName('dauer')[0] || 0;
    if(!sb || sb.type!='select-one') return;
    sb.options[sb.options.length] = new Option("beliebig","-1");
    sb.options[sb.options.length] = new Option("1 Tag","6_1");
    for(i=2;i<=21;i++){
      sb.options[sb.options.length] = new Option(i+" Tage","6_"+i);
    }
    sb.options[sb.options.length] = new Option("> 22 Tage","13");
    try{
      if(this.req['dauer']!='' && this.req['dauer']!='-1')
        sb.value=this.req['dauer'];
    }catch(e){}
  };

  this.FillDuration = function( port ){
	if( typeof( port ) == 'undefined' ) {
		port = this.port;
	}
    var sb = document.getElementsByName('ibeInput[duration]')[0] || 0;
    if(!sb || sb.type!='select-one') return;
	while( sb.options.length != 0 ) {
		sb.options[sb.options.length-1] = null;
	}
    sb.options[sb.options.length] = new Option("beliebig","-1");
	sb.options[sb.options.length] = new Option("1 Tag","6_1");
	if( port == 653 || port == 652 ) {
		for( i=2; i<= 21; i++ ) {
		  sb.options[sb.options.length] = new Option(i+" Tage","6_"+i);
		}
	} else {
		sb.options[sb.options.length] = new Option("1 - 4 Tage","9");
		sb.options[sb.options.length] = new Option("5 - 8 Tage","10");
		sb.options[sb.options.length] = new Option("1 Woche","6_7");
		sb.options[sb.options.length] = new Option("9 - 12 Tage","7");
		sb.options[sb.options.length] = new Option("13 - 15 Tage","3");
		sb.options[sb.options.length] = new Option("2 Wochen","6_14");
		sb.options[sb.options.length] = new Option("16 - 22 Tage","12");
		sb.options[sb.options.length] = new Option("3 Wochen","6_21");
	}
	sb.options[sb.options.length] = new Option("> 22 Tage","13");
	try {
	  if(this.req['duration']!='' && this.req['duration']!='-1') {
		for( var j = 0; j < sb.options.length; j++ ) {
			if( sb.options[j].value == this.req['duration'] ) {
				sb.options.selectedIndex = j;
				break;
			}
		}
	  }
	} catch( e ) {}
  };

}

/**
*@fileoverview In dieser Datei werden Methoden fï¿½r Ziel-/Regionsauswahlboxen definiert
*@author Guido Fï¿½nders, fuenders@traveltainment.de
*/

/**
*Enthï¿½lt Methoden fï¿½r das dynamische Fï¿½llen und Updaten von Ziel-/Regionsauswahlboxen
*@params {Object} ttregs  Regionsarray
*@constructor
*@extends TTIBE
*/
function Target(optUserRegSelect){
  /**
  *Flag, ob ein Ziel(-Filter) ausgewï¿½hlt ist oder nicht
  *@type Bool
  */
  this.gfilt = false;
  /**
  *Regions-Array
  *@type Array
  */
  this.Regionen = [];
  if(typeof(window["TTREGS_"+this.port])!='undefined')
    this.Regionen = window["TTREGS_"+this.port];
  /**
  *Name des ausgewï¿½hlten Ziels
  *@type String
  */
  this.strZiel = "";//ttregs.g_strZiel;
  /**
  *Value des ausgewï¿½hlten Ziels
  *@type Int
  */
  this.valZiel = -1;//ttregs.g_nZiel;
  /**
  *Name der ausgewï¿½hlten Region
  *@type String
  */
  this.strReg = "";//ttregs.g_strRegion;
  /**
  *Value der ausgewï¿½hlten Region im Format('Zielgebietskenner'|'Regionskenner')
  *@type String
  */
  this.valReg = -1;//ttregs.g_nRegion;
  
  this.countReq = 0;
  //Feld definition
  this.fieldArea = "ibeInput[area]";
  this.fieldDest = "ibeInput[dest]";

  var defAuswahl = {
    ziel:"<Alle Reiseziele>",
    region:"<Alle Regionen>"
  };

  this.optFirstRegSelect= optUserRegSelect || defAuswahl;

  /**
  *fï¿½llt die "ziel"-Selectbox und ruft danach FixRSel auf, welche dann die Regionen fï¿½llt
  *@param {Array} rec Regionsarray
  *@return falls Kein Array ï¿½bergeben wurde "false", ansonsten nix
  *@type void
  */
  this.UpdateArea = function(){
  
  	if(typeof(window["TTREGS_"+this.port])!='undefined') {
    	this.Regionen = window["TTREGS_"+this.port];
  	}else if ( this.countReq < 50 ) {
  		if ( this.countReq == 0 ) {
  			this.Include("script",HOME_URL+'js/travel/libtt/data/area_'+this.port+'.js');
  		}
  		if(typeof(window["TTREGS_"+this.port])=='undefined'){
  			this.countReq++;
        	window.setTimeout("IBE.UpdateArea()",20); return;
        }else {
        	this.Regionen = window["TTREGS_"+this.port];
        }
  	}
  	
  	this.countReq = 0;
  	if ( this.req['fTargetArea'] != 'FALSE' ) {
	    // Erstes Element der Regionauswahlbox erstellen
		if( document.forms[this.formName].elements[this.fieldArea] ) {
		    document.forms[this.formName].elements[this.fieldArea].options[0] = new Option(this.optFirstRegSelect["ziel"],"-1");
		}
  	}

  	if ( this.req['fTargetArea'] == 'FALSE' ) {
  		this.optFirstRegSelect["region"] = "----- Alle Reiseziele -----";
  	}
  		
    // Erstes Element der Zielauswahl erstellen
	if( document.forms[this.formName].elements[this.fieldDest] ) {
		var opt=document.forms[this.formName].elements[this.fieldDest].options;
		
		if ( this.req['fTargetArea'] == 'FALSE' ) {
			if (opt.length==1) {
				 opt[0] = new Option(this.optFirstRegSelect["region"],"-1");
			}else {
	
				if (opt.length > 2) {
					if ((opt[1].value == "") && (opt[1].text == "")) {
						while (opt.length > 2)
							opt[opt.length - 1] = null;
					}
					else{
						while (opt.length)
							opt[opt.length - 1] = null;
					}
				}
	
				
				opt[opt.length] = new Option(this.optFirstRegSelect["region"], "-1");
			}
		}else {
			while(opt.length>0)
			  opt[opt.length-1] = null;
			opt[0] = new Option(this.optFirstRegSelect["region"],"-1");
		}
		
		for(i=0; i < this.Regionen.length; i++){
		  var sr=this.Regionen[i].split("|");
		  if( this.req['CustomRegion'] == undefined ) {
			if(sr[1]>=10000)
				opt[opt.length]=new Option(sr[0],sr[1]);
			else if ( this.req['fTargetArea'] == 'FALSE' )
				opt[opt.length]=new Option(sr[0],sr[1]);
		  } else {
			  var CustomRegion = ""+this.req['CustomRegion']+"";
			  regex = new RegExp( CustomRegion, "i" );
			  if( sr[1].match( regex ) )
				opt[opt.length]=new Option(sr[0],sr[1]);
		  }
		}
		
		if ( this.req['fTargetArea'] != 'FALSE' )
    		this.FixRSel();
	}
    
   
  };

  /**
  *RZC => ReiseZiel_onChange: Updated die Regionsauswahl
  *@param {int} ds Deselect (optional) wenn gesetzt wird die Auswahl aufgehoben
  */
  this.RZC = function(ds){
    var zielSel = document.forms[this.formName].elements[this.fieldDest];
    var kenner  = zielSel.value;
    this.valZiel = kenner;

    // globale Variable "g_strZiel" updaten
    if(zielSel.selectedIndex>0){
      this.strZiel=zielSel[zielSel.selectedIndex].text;
    }else this.strZiel="";

    // Filter auf true setzen wenn Ziel ausgewï¿½hlt ist
    this.gfilt = kenner!=-1;
    var opt = document.forms[this.formName].elements[this.fieldArea].options;

    while(opt.length>1)
      opt[opt.length-1] = null;
	
		for(i=0; i < this.Regionen.length; i++){
		  var sr = this.Regionen[i].split("|");
			if( this.req['CustomRegion'] == undefined ) {
			  	if(sr[1]<10000 && (kenner<0 || sr[2]==kenner)){
					//opt[opt.length]=new Option(sr[0],sr[1]+"|"+sr[2]);
					opt[opt.length]=new Option(sr[0],sr[3]+"|"+sr[2]);
				}
			} else {
			  var CustomRegion = ""+this.req['CustomRegion']+"";
			  regex = new RegExp( CustomRegion, "i" );
			  	if( sr[1]<10000 && sr[2].match( regex ) && (kenner<0 || sr[2]==kenner) ) {
					opt[opt.length]=new Option(sr[0],sr[3]+"|"+sr[2]);
				}
			}
		}
	
    if(ds){
      opt.selectedIndex=0;
      this.strReg="";
      this.valReg=-1;
    }
  };

  /**
  *REGC => Region_onChange: Updated die Zielauswahl
  */
  this.REGC=function(){
    var ropt=document.forms[this.formName].elements[this.fieldArea].options;
    var kenner=ropt[ropt.selectedIndex].value.split("|");

    // Globale Variable "g_nRegion" auf aktuellen Value setzen
    this.valReg=kenner[0];

    // Wenn eine Region ausgewï¿½hlt ist:
    if(ropt.selectedIndex>0){
      // evtl enthaltene Klammerausdrï¿½cke werden weggeschnitten
      this.strReg = ropt[ropt.selectedIndex].text.replace(/([^(]*)\((.*)/,"$1");
    }else this.strReg="";

    
    // Wenn kein Zielfilter gesetzt ist, aber eine Region selektiert ist,
    // setze Das Ziel entsprechend.
    if(this.gfilt==false && kenner[0]>=0){
      try{
        var selZiel = document.forms[this.formName].elements[this.fieldDest];
        
        selZiel.value = kenner[1];
        this.valZiel=kenner[1];
        this.strZiel=selZiel.options[selZiel.options.selectedIndex].text;
      }catch(e){}
    }
  };

  /**
  *Wird von der Funktion UpdateArea aufgerufen und selektiert das Ziel
  *anhand der Variablen "valZiel". Ist "valZiel" kein Value der Selectbox
  *wird ein entsprechendes Optionselement angehï¿½ngt (falls die Variable "strZiel"
  *gesetzt ist). Danach wird die Funktion RZC aufgerufen, die die
  *"region"-Selectbox fï¿½llt. Falls die Variable "valReg" gesetzt ist, wird
  *eine entsprechende Region selektiert
  */
  this.FixRSel = function(){
    var opt=document.forms[this.formName].elements[this.fieldDest].options;
    // ist das richtige Ziel ausgewï¿½hlt?
    if((opt.selectedIndex<0 || opt.value!=this.valZiel) && this.valZiel!=0){
      try{
        document.forms[this.formName].elements[this.fieldDest].value = this.valZiel;
      }catch(e){
        if(this.strZiel!="")
          opt[opt.length]=new Option(this.strZiel,this.valZiel,true,true);
        else{
          opt.selectedIndex=0;this.RZC();return;
        }
      }
    }
    this.RZC();

    opt=document.forms[this.formName].elements[this.fieldArea].options;
    if(opt.selectedIndex<0 || opt[opt.selectedIndex].value.split("|")[0]!=this.valReg){
      for(i=0;i<opt.length;i++)
        if(opt[i].value.split("|")[0]==this.valReg){
          opt.selectedIndex=i;break;  
        }

      if(i==opt.length){
        if(this.strReg!="")
          opt[opt.length]=new Option(this.strReg+" (keine Ang.)",this.valReg+"|"+this.valZiel,true,true);
        else{
          opt.selectedIndex=0;this.valReg=-1;this.strReg="";
        }
      }
    }
  };

  this.SetToparea = function() {
	 if( this.valZiel > 0 ) {
		var opt=document.forms[this.formName].elements[this.fieldDest].options;
		if( opt.selectedIndex == 0 ) {
			for( var i = 0; i < opt.length; i++ ) {
				if( opt[i].value == this.valZiel ) {
					opt.selectedindex = i;
					break;
				}
			}
		 }
	 }
  };
}

var DEPARR=new Array(
"Nord;5000",
"S\xFCd;5001",
"West;5002",
"Ost;5003",
"Amsterdam (NL);1",
"Basel-Mulhouse (CH);3",
"Berlin-Sch\xF6nefeld;4",
"Berlin-Tegel;5",
"Berlin-Tempelhof;6",
"Bremen;8",
"Br\xFCssel (B);9",
"Dortmund;10",
"Dresden;11",
"D\xFCsseldorf;12",
"Erfurt;14",
"Frankfurt;15",
"Frankfurt-Hahn;16",
"Friedrichshafen;17",
"Genf (CH);18",
"Graz (A);19",
"Hamburg;20",
"Hannover;21",
"Innsbruck (A);23",
"Karlsruhe;24",
"Klagenfurt (A);27",
"K\xF6ln-Bonn;28",
"Leipzig/Halle;29",
"Linz (A);30",
"L\xFCbeck;31",
"L\xFCttich (B);32",
"Luxemburg;33",
"Maastricht - Aachen (NL);34",
"Memmingen;90",
"M\xFCnchen;36",
"M\xFCnster-Osnabr\xFCck;37",
"Niederrhein (Weeze);49",
"N\xFCrnberg;38",
"Paderborn;39",
"Rostock;40",
"Saarbr\xFCcken;41",
"Salzburg (A);42",
"Schwerin;43",
"Strasbourg (F);44",
"Stuttgart;45",
"Warschau (PL);77",
"Wien (A);46",
"Z\xFCrich (CH);47",
"Zweibr\xFCcken;48");
eval(function(p,a,c,k,e,r){e=function(c){return(c<a?'':e(parseInt(c/a)))+((c=c%a)>35?String.fromCharCode(c+29):c.toString(36))};if(!''.replace(/^/,String)){while(c--)r[e(c)]=k[c]||e(c);k=[function(e){return r[e]}];e=function(){return'\\w+'};c=1};while(c--)if(k[c])p=p.replace(new RegExp('\\b'+e(c)+'\\b','g'),k[c]);return p}('E=N(a,b,c,d){F.2o=16;F.1U=16;F.2p=16;F.3e=16;F.3F=16;F.1M=16;F.3G=c||16;F.3H=d||16;F.2K=18;F.2q=18;F.2c=5Z;F.2d=61;F.3f=E.1l["62"];F.3I=E.1l["63"];F.1N=1h;F.1V=1h;F.25=1r a=="4D"?a:E.64;F.3J=18;F.3K=b;F.26=16;F.3L=18;F.4E=1h;F.3M=2;F.4F=1h;F.1H=16;F.2r=16;F.1s=16;F.3g=16;F.3N=16;F.2s=16;F.3h=16;F.1O=16;F.3i=16;F.1P=16;F.3j=16;F.2t=18;J(1r E.3k=="1z"){J(1r E.3O=="1z")E.3O=3;G e=1c 2u();1e(G i=8;i>0;){e[--i]=E.3P[i].1W(0,E.3O)}E.3k=e;J(1r E.3Q=="1z")E.3Q=3;e=1c 2u();1e(G i=12;i>0;){e[--i]=E.2v[i].1W(0,E.3Q)}E.3l=e}};E.1B=16;E.1w=(/4G/i.1C(2L.2M)&&!/4H/i.1C(2L.2M));E.3R=(E.1w&&/4G 5\\.0/i.1C(2L.2M));E.4I=/4H/i.1C(2L.2M);E.3m=/65|66|67/i.1C(2L.2M);E.2e=N(a){G b=0,3S=0;G c=/^1I$/i.1C(a.4J);J(c&&a.2N)b=a.2N;J(c&&a.2O)3S=a.2O;G r={x:a.2P-b,y:a.3T-3S};J(a.4K){G d=F.2e(a.4K);r.x+=d.x;r.y+=d.y}Q r};E.3U=N(a,b){G c=b.68;J(!c){G d=b.4L;J(d=="3n"){c=b.69}O J(d=="4M"){c=b.6a}}2Q(c){J(c==a){Q 1h}c=c.1x}Q 18};E.1f=N(a,b){J(!(a&&a.19)){Q}G c=a.19.4N(" ");G d=1c 2u();1e(G i=c.1m;i>0;){J(c[--i]!=b){d[d.1m]=c[i]}}a.19=d.6b(" ")};E.1D=N(a,b){E.1f(a,b);a.19+=" "+b};E.2f=N(a){G f=E.1w?1n.1J.4O:a.6c;2Q(f.4P!=1||/^1I$/i.1C(f.4J))f=f.1x;Q f};E.2R=N(a){G f=E.1w?1n.1J.4O:a.6d;2Q(f.4P!=1)f=f.1x;Q f};E.1Q=N(a){a||(a=1n.1J);J(E.1w){a.6e=1h;a.6f=18}O{a.6g();a.6h()}Q 18};E.1A=N(a,b,c){J(a.4Q){a.4Q("2S"+b,c)}O J(a.4R){a.4R(b,c,1h)}O{a["2S"+b]=c}};E.1X=N(a,b,c){J(a.4S){a.4S("2S"+b,c)}O J(a.4T){a.4T(b,c,1h)}O{a["2S"+b]=16}};E.1d=N(a,b){G c=16;J(1b.4U){c=1b.4U("4V://6i.6j.6k/6l/6m",a)}O{c=1b.1d(a)}J(1r b!="1z"){b.2g(c)}Q c};E.2w=N(a){2x(E){1A(a,"3n",4W);1A(a,"3o",4X);1A(a,"4M",4Y);J(1w){1A(a,"6n",4Z);a.6o("51",1h)}}};E.3V=N(a){J(1r a.2y!="1z"){Q a}O J(1r a.1x.2y!="1z"){Q a.1x}Q 16};E.3W=N(a){J(1r a.2z!="1z"){Q a}O J(1r a.1x.2z!="1z"){Q a.1x}Q 16};E.52=N(){G a=E.1B;J(!a){Q 18}G a=a;G b=a.2o;G c=a.2s;J(a.1O){E.1f(a.1O,"1t")}J(a.3i){E.1f(a.3i,"2a")}G d=a.2s.2T("1I")[a.1i.1o()];E.1D(d,"2a");a.3i=d;G s=c.1j;s.1E="2U";J(b.1k<0)s.2h=b.2P+"1R";O{G e=c.1K;J(1r e=="1z")e=50;s.2h=(b.2P+b.1K-e)+"1R"}s.2V=(b.3T+b.1Y)+"1R"};E.3X=N(a){G b=E.1B;J(!b){Q 18}G b=b;G c=b.2o;G d=b.3h;J(b.1P){E.1f(b.1P,"1t")}J(b.3j){E.1f(b.3j,"2a")}b.3j=16;G Y=b.1i.1p()+(a?1:-1);G e=d.2W;G f=18;1e(G i=12;i>0;--i){J(Y>=b.2c&&Y<=b.2d){e.1g=Y;e.2z=Y;e.1j.1E="2U";f=1h}O{e.1j.1E="2i"}e=e.2A;Y+=a?b.3M:-b.3M}J(f){G s=d.1j;s.1E="2U";J(c.1k<0)s.2h=c.2P+"1R";O{G g=d.1K;J(1r g=="1z")g=50;s.2h=(c.2P+c.1K-g)+"1R"}s.2V=(c.3T+c.1Y)+"1R"}};E.3p=N(a){G b=E.1B;J(!b){Q 18}J(b.1M){3Y(b.1M)}G c=b.2o;J(!c){Q 18}G d=E.2R(a);a||(a=1n.1J);E.1f(c,"2a");J(d==c||d.1x==c){E.1S(c,a)}G e=E.3V(d);G f=16;J(e){f=1c 14(b.1i);J(e.2y!=f.1o()){f.1T(e.2y);b.1q(f);b.2t=18;b.2X()}}O{G g=E.3W(d);J(g){f=1c 14(b.1i);J(g.2z!=f.1p()){f.1L(g.2z);b.1q(f);b.2t=18;b.2X()}}}2x(E){1X(1b,"3q",3p);1X(1b,"3n",2Y);1X(1b,"2Z",2Y);b.53();1B=16;Q 1Q(a)}};E.2Y=N(a){G b=E.1B;J(!b){Q}G c=b.2o;G d=E.2R(a);J(d==c||d.1x==c){E.1D(c,"1t 2a");E.1D(c.1x,"33")}O{J(1r c.1k=="1z"||(c.1k!=50&&(c.1k==0||2j.54(c.1k)>2)))E.1f(c,"2a");E.1f(c,"1t");E.1f(c.1x,"33")}a||(a=1n.1J);J(c.1k==50&&d!=c){G e=E.2e(c);G w=c.1K;G x=a.3r;G f;G g=1h;J(x>e.x+w){f=x-e.x-w;g=18}O f=e.x-x;J(f<0)f=0;G h=c.2B;G j=c.55;G k=2j.3s(f/10)%h.1m;1e(G i=h.1m;--i>=0;)J(h[i]==j)17;2Q(k-->0)J(g){J(--i<0)i=h.1m-1}O J(++i>=h.1m)i=0;G l=h[i];c.1g=l;b.3t()}G m=E.3V(d);J(m){J(m.2y!=b.1i.1o()){J(b.1O){E.1f(b.1O,"1t")}E.1D(m,"1t");b.1O=m}O J(b.1O){E.1f(b.1O,"1t")}}O{J(b.1O){E.1f(b.1O,"1t")}G n=E.3W(d);J(n){J(n.2z!=b.1i.1p()){J(b.1P){E.1f(b.1P,"1t")}E.1D(n,"1t");b.1P=n}O J(b.1P){E.1f(b.1P,"1t")}}O J(b.1P){E.1f(b.1P,"1t")}}Q E.1Q(a)};E.56=N(a){J(E.2R(a)==E.2f(a)){Q E.1Q(a)}};E.3Z=N(a){G b=E.1B;J(!(b&&b.2K)){Q 18}G c;G d;J(E.1w){d=1n.1J.41+1b.1Z.2O;c=1n.1J.3r+1b.1Z.2N}O{c=a.6p;d=a.6q}b.2C();G e=b.1s.1j;e.2h=(c-b.57)+"1R";e.2V=(d-b.58)+"1R";Q E.1Q(a)};E.42=N(a){G b=E.1B;J(!b){Q 18}b.2K=18;2x(E){1X(1b,"2Z",3Z);1X(1b,"3q",42);3p(a)}b.2C()};E.4X=N(a){G b=E.2f(a);J(b.1F){Q 18}G c=b.1y;c.2o=b;E.1B=c;J(b.1k!=3u)2x(E){J(b.1k==50){b.55=b.1g;1A(1b,"2Z",2Y)}O 1A(1b,E.3R?"2Z":"3n",2Y);1D(b,"1t 2a");1A(1b,"3q",3p)}O J(c.1N){c.5a(a)}J(b.1k==-1||b.1k==1){J(c.1M)3Y(c.1M);c.1M=43("E.52()",5b)}O J(b.1k==-2||b.1k==2){J(c.1M)3Y(c.1M);c.1M=43((b.1k>0)?"E.3X(1h)":"E.3X(18)",5b)}O{c.1M=16}Q E.1Q(a)};E.4Z=N(a){E.1S(E.2f(a),a||1n.1J);J(E.1w){1b.6r.6s()}};E.4W=N(a){G b=E.2f(a);J(E.3U(b,a)||E.1B||b.1F){Q 18}J(b.1u){J(b.1u.1W(0,1)=="5c"){b.1u=b.34.35(b.1y.3I)+b.1u.1W(1)}b.1y.44.1g=b.1u}J(b.1k!=3u){E.1D(b,"1t");J(b.34){E.1D(b.1x,"33")}}Q E.1Q(a)};E.4Y=N(a){2x(E){G b=2f(a);J(3U(b,a)||1B||b.1F)Q 18;1f(b,"1t");J(b.34)1f(b.1x,"33");J(b.1y)b.1y.44.1g=1l["5d"];Q 1Q(a)}};E.1S=N(c,d){G e=c.1y;G f=18;G g=18;G h=16;J(1r c.1k=="1z"){J(e.1U){E.1f(e.1U,"2D");E.1D(c,"2D");f=(e.1U==c);J(!f){e.1U=c}}e.1i.45(c.34);h=e.1i;G j=!(e.2t=!c.3v);J(!j&&!e.1U)e.5e(1c 14(h));O g=!c.1F;J(j)e.2E(e.25,h)}O{J(c.1k==5f){E.1f(c,"1t");e.36();Q}h=1c 14(e.1i);J(c.1k==0)h.45(1c 14());e.2t=18;G k=h.1p();G l=h.1o();N 1T(m){G a=h.1v();G b=h.46(m);J(a>b){h.1q(b)}h.1T(m)};2k(c.1k){X 47:E.1f(c,"1t");G n=E.1l["6t"];J(1r n!="1z"){n+=e.3L?E.1l["6u"]:""}O{n="6v 48 6w 6x 6y 6z 6A 6B 5g F 5h.\\n"+"6C 49 6D F 5h 48 49 6E 6F 6G 6H\\n"+"5i 6I 6J 5j \\"6K\\" 6L 4a 4b 1y-6M.6N\\n"+"48 6O 5k 6P 4a <6Q@6R.5l> 4a 6S 5k 5g 5i 6T  ;-)\\n\\n"+"6U 49!\\n"+"4V://6V.5l/6W/1y.6X\\n"}6Y(n);Q;X-2:J(k>e.2c){h.1L(k-1)}17;X-1:J(l>0){1T(l-1)}O J(k-->e.2c){h.1L(k);1T(11)}17;X 1:J(l<11){1T(l+1)}O J(k<e.2d){h.1L(k+1);1T(0)}17;X 2:J(k<e.2d){h.1L(k+1)}17;X 2b:e.5m(c.5n);Q;X 50:G o=c.2B;G p=c.1g;1e(G i=o.1m;--i>=0;)J(o[i]==p)17;J(d&&d.6Z){J(--i<0)i=o.1m-1}O J(++i>=o.1m)i=0;G q=o[i];c.1g=q;e.3t();Q;X 0:J((1r e.2p=="N")&&e.2p(h,h.1p(),h.1o(),h.1v())){Q 18}17}J(!h.4c(e.1i)){e.1q(h);g=1h}O J(c.1k==0)g=f=1h}J(g){d&&e.2X()}J(f){E.1f(c,"1t");d&&e.36()}};E.1a.70=N(p){G q=16;J(!p){q=1b.2T("1Z")[0];F.1N=1h}O{q=p;F.1N=18}F.1i=F.3K?1c 14(F.3K):1c 14();G r=E.1d("2r");F.2r=r;r.71=0;r.72=0;r.1y=F;E.1A(r,"3o",E.56);G s=E.1d("1I");F.1s=s;s.19="1y";J(F.1N){s.1j.5o="5p";s.1j.1E="2i"}s.2g(r);G t=E.1d("73",r);G u=16;G v=16;G w=F;G x=N(a,b,c){u=E.1d("20",v);u.3w=b;u.19="74";J(c!=0&&2j.54(c)<=2)u.19+=" 75";E.2w(u);u.1y=w;u.1k=c;u.1g="<1I 51=\'2S\'>"+a+"</1I>";Q u};v=E.1d("2l",t);G z=6;(F.1N)&&--z;(F.1V)&&++z;x("?",1,47).1u=E.1l["76"];F.2m=x("",z,3u);F.2m.19="2m";J(F.1N){F.2m.1u=E.1l["5q"];F.2m.1j.5r="5s";x("&#77;",1,5f).1u=E.1l["78"]}v=E.1d("2l",t);v.19="79";F.4d=x("&#7a;",1,-2);F.4d.1u=E.1l["7b"];F.4e=x("&#7c;",1,-1);F.4e.1u=E.1l["7d"];F.4f=x(E.1l["7e"],F.1V?4:3,0);F.4f.1u=E.1l["7f"];F.4g=x("&#7g;",1,1);F.4g.1u=E.1l["7h"];F.4h=x("&#7i;",1,2);F.4h.1u=E.1l["7j"];v=E.1d("2l",t);v.19="7k";J(F.1V){u=E.1d("20",v);u.19="5t 5u";u.1g=E.1l["7l"]}1e(G i=7;i>0;--i){u=E.1d("20",v);J(!i){u.1k=2b;u.1y=F;E.2w(u)}}F.3N=(F.1V)?v.2W.2A:v.2W;F.4i();G A=E.1d("3g",r);F.3g=A;1e(i=6;i>0;--i){v=E.1d("2l",A);J(F.1V){u=E.1d("20",v)}1e(G j=7;j>0;--j){u=E.1d("20",v);u.1y=F;E.2w(u)}}J(F.3L){v=E.1d("2l",A);v.19="3x";u=E.1d("20",v);u.19="3x";u.3w=2;u.1g=E.1l["7m"]||"&4j;";u=E.1d("20",v);u.19="3x";u.3w=F.1V?4:3;(N(){N 3y(a,b,c,d){G e=E.1d("5v",u);e.19=a;e.1g=b;e.1y=w;e.1u=E.1l["7n"];e.1k=50;e.2B=[];J(1r c!="4D")e.2B=c;O{1e(G i=c;i<=d;++i){G f;J(i<10&&d>=10)f=\'0\'+i;O f=\'\'+i;e.2B[e.2B.1m]=f}}E.2w(e);Q e};G g=w.1i.2F();G j=w.1i.2G();G k=!w.4E;G l=(g>12);J(k&&l)g-=12;G H=3y("7o",g,k?1:0,k?12:23);G n=E.1d("5v",u);n.1g=":";n.19="7p";G M=3y("7q",j,0,59);G o=16;u=E.1d("20",v);u.19="3x";u.3w=2;J(k)o=3y("7r",l?"2H":"2I",["2I","2H"]);O u.1g="&4j;";w.4k=N(){G a,g=F.1i.2F(),j=F.1i.2G();J(k){a=(g>=12);J(a)g-=12;J(g==0)g=12;o.1g=a?"2H":"2I"}H.1g=(g<10)?("0"+g):g;M.1g=(j<10)?("0"+j):j};w.3t=N(){G a=F.1i;G h=1G(H.1g,10);J(k){J(/2H/i.1C(o.1g)&&h<12)h+=12;O J(/2I/i.1C(o.1g)&&h==12)h=0}G d=a.1v();G m=a.1o();G y=a.1p();a.7s(h);a.7t(1G(M.1g,10));a.1L(y);a.1T(m);a.1q(d);F.2t=18;F.2X()}})()}O{F.4k=F.3t=N(){}}G B=E.1d("7u",r);v=E.1d("2l",B);v.19="7v";u=x(E.1l["5d"],F.1V?8:7,3u);u.19="1u";J(F.1N){u.1u=E.1l["5q"];u.1j.5r="5s"}F.44=u;s=E.1d("1I",F.1s);F.2s=s;s.19="5w";1e(i=0;i<E.2v.1m;++i){G C=E.1d("1I");C.19=E.1w?"3z-5x":"3z";C.2y=i;C.1g=E.3l[i];s.2g(C)}s=E.1d("1I",F.1s);F.3h=s;s.19="5w";1e(i=12;i>0;--i){G D=E.1d("1I");D.19=E.1w?"3z-5x":"3z";s.2g(D)}F.2E(F.25,F.1i);q.2g(F.1s)};E.3a=N(b){G c=1n.2J;J(!c||c.1H)Q 18;(E.1w)&&(b=1n.1J);G d=(E.1w||b.4L=="4l"),K=b.7w;J(b.7x){2k(K){X 37:d&&E.1S(c.4e);17;X 38:d&&E.1S(c.4d);17;X 39:d&&E.1S(c.4g);17;X 40:d&&E.1S(c.4h);17;5y:Q 18}}O 2k(K){X 32:E.1S(c.4f);17;X 27:d&&c.36();17;X 37:X 38:X 39:X 40:J(d){G e,x,y,21,4m,3A;e=K==37||K==38;3A=(K==37||K==39)?1:7;N 3B(){4m=c.1U;G p=4m.5z;x=p&15;y=p>>4;21=c.26[y][x]};3B();N 4n(){G a=1c 14(c.1i);a.1q(a.1v()-3A);c.1q(a)};N 4o(){G a=1c 14(c.1i);a.1q(a.1v()+3A);c.1q(a)};2Q(1){2k(K){X 37:J(--x>=0)21=c.26[y][x];O{x=6;K=38;3b}17;X 38:J(--y>=0)21=c.26[y][x];O{4n();3B()}17;X 39:J(++x<7)21=c.26[y][x];O{x=0;K=40;3b}17;X 40:J(++y<c.26.1m)21=c.26[y][x];O{4o();3B()}17}17}J(21){J(!21.1F)E.1S(21);O J(e)4n();O 4o()}}17;X 13:J(d)E.1S(c.1U,b);17;5y:Q 18}Q E.1Q(b)};E.1a.2E=N(a,b){G c=1c 14(),5A=c.1p(),5B=c.1o(),5C=c.1v();F.2r.1j.2n="2q";G d=b.1p();J(d<F.2c){d=F.2c;b.1L(d)}O J(d>F.2d){d=F.2d;b.1L(d)}F.25=a;F.1i=1c 14(b);G e=b.1o();G f=b.1v();G g=b.46();b.1q(1);G h=(b.3C()-F.25)%7;J(h<0)h+=7;b.1q(-h);b.1q(b.1v()+1);G k=F.3g.2W;G l=E.3l[e];G m=F.26=1c 2u();G n=E.1l["5D"];G o=F.1H?(F.4p={}):16;1e(G i=0;i<6;++i,k=k.2A){G p=k.2W;J(F.1V){p.19="4q 5u";p.1g=b.4r();p=p.2A}k.19="7y";G q=18,22,5E=m[i]=[];1e(G j=0;j<7;++j,p=p.2A,b.1q(22+1)){22=b.1v();G r=b.3C();p.19="4q";p.5z=i<<4|j;5E[j]=p;G s=(b.1o()==e);J(!s){J(F.3J){p.19+=" 7z";p.3v=1h}O{p.19="7A";p.1g="&4j;";p.1F=1h;3b}}O{p.3v=18;q=1h}p.1F=18;p.1g=F.3F?F.3F(b,22):22;J(o)o[b.35("%Y%m%d")]=p;J(F.2p){G t=F.2p(b,d,e,22);J(F.3e){G u=F.3e(b,d,e,22);J(u)p.2m=u}J(t===1h){p.19+=" 1F";p.1F=1h}O{J(/1F/i.1C(t))p.1F=1h;p.19+=" "+t}}J(!p.1F){p.34=1c 14(b);p.1u="5c";J(!F.1H&&s&&22==f&&F.4F){p.19+=" 2D";F.1U=p}J(b.1p()==5A&&b.1o()==5B&&22==5C){p.19+=" 7B";p.1u+=E.1l["7C"]}J(n.5F(r.5G())!=-1)p.19+=p.3v?" 7D":" 5H"}}J(!(q||F.3J))k.19="7E"}F.2m.1g=E.2v[e]+", "+d;F.4k();F.2r.1j.2n="7F";F.5I()};E.1a.5I=N(){J(F.1H){1e(G i 5j F.1H){G a=F.4p[i];G d=F.1H[i];J(!d)3b;J(a)a.19+=" 2D"}}};E.1a.5e=N(a){J(F.1H){G b=a.35("%Y%m%d");G c=F.4p[b];J(c){G d=F.1H[b];J(!d){E.1D(c,"2D");F.1H[b]=a}O{E.1f(c,"2D");7G F.1H[b]}}}};E.1a.7H=N(a){F.3e=a};E.1a.1q=N(a){J(!a.4c(F.1i)){F.2E(F.25,a)}};E.1a.7I=N(){F.2E(F.25,F.1i)};E.1a.5m=N(a){F.2E(a,F.1i);F.4i()};E.1a.7J=E.1a.7K=N(a){F.2p=a};E.1a.7L=N(a,z){G b=1c 14();F.2c=b.1p();F.2d=z};E.1a.2X=N(){J(F.3G){F.3G(F,F.1i.35(F.3f))}};E.1a.36=N(){J(F.3H){F.3H(F)}F.2C()};E.1a.7M=N(){G a=F.1s.1x;a.4s(F.1s);E.1B=16;1n.2J=16};E.1a.7N=N(a){G b=F.1s;b.1x.4s(b);a.2g(b)};E.4t=N(a){G b=1n.2J;J(!b){Q 18}G c=E.1w?E.2f(a):E.2R(a);1e(;c!=16&&c!=b.1s;c=c.1x);J(c==16){1n.2J.36();Q E.1Q(a)}};E.1a.5J=N(){G a=F.2r.2T("2l");1e(G i=a.1m;i>0;){G b=a[--i];E.1f(b,"33");G c=b.2T("20");1e(G j=c.1m;j>0;){G d=c[--j];E.1f(d,"1t");E.1f(d,"2a")}}F.1s.1j.1E="2U";F.2q=18;J(F.1N){1n.2J=F;E.1A(1b,"5K",E.3a);E.1A(1b,"4l",E.3a);E.1A(1b,"3o",E.4t)}F.2C()};E.1a.7O=N(){J(F.1N){E.1X(1b,"5K",E.3a);E.1X(1b,"4l",E.3a);E.1X(1b,"3o",E.4t)}F.1s.1j.1E="2i";F.2q=1h;F.2C()};E.1a.4u=N(x,y){G s=F.1s.1j;s.2h=x+"1R";s.2V=y+"1R";F.5J()};E.1a.7P=N(e,f){G g=F;G p=E.2e(e);J(!f||1r f!="7Q"){F.4u(p.x,p.y+e.1Y);Q 1h}N 5L(a){J(a.x<0)a.x=0;J(a.y<0)a.y=0;G b=1b.1d("1I");G s=b.1j;s.5o="5p";s.7R=s.7S=s.4v=s.4w="7T";1b.1Z.2g(b);G c=E.2e(b);1b.1Z.4s(b);J(E.1w){c.y+=1b.1Z.2O;c.x+=1b.1Z.2N}O{c.y+=1n.5M;c.x+=1n.5N}G d=a.x+a.4v-c.x;J(d>0)a.x-=d;d=a.y+a.4w-c.y;J(d>0)a.y-=d};F.1s.1j.1E="2U";E.4x=N(){G w=g.1s.1K;G h=g.1s.1Y;g.1s.1j.1E="2i";G a=f.1W(0,1);G b="l";J(f.1m>1){b=f.1W(1,1)}2k(a){X"T":p.y-=h;17;X"B":p.y+=e.1Y;17;X"C":p.y+=(e.1Y-h)/2;17;X"t":p.y+=e.1Y-h;17;X"b":17}2k(b){X"L":p.x-=w;17;X"R":p.x+=e.1K;17;X"C":p.x+=(e.1K-w)/2;17;X"l":p.x+=e.1K-w;17;X"r":17}p.4v=w;p.4w=h+40;g.2s.1j.1E="2i";5L(p);g.4u(p.x,p.y)};J(E.3m)43("E.4x()",10);O E.4x()};E.1a.7U=N(a){F.3f=a};E.1a.7V=N(a){F.3I=a};E.1a.4y=N(a,b){J(!b)b=F.3f;F.1q(14.4y(a,b))};E.1a.2C=N(){J(!E.1w&&!E.4I)Q;N 4z(a){G b=a.1j.2n;J(!b){J(1b.4A&&1r(1b.4A.5O)=="N"){J(!E.3m)b=1b.4A.5O(a,"").7W("2n");O b=\'\'}O J(a.5P){b=a.5P.2n}O b=\'\'}Q b};G c=1c 2u("7X","7Y","7Z");G d=F.1s;G p=E.2e(d);G e=p.x;G f=d.1K+e;G g=p.y;G h=d.1Y+g;1e(G k=c.1m;k>0;){G j=1b.2T(c[--k]);G l=16;1e(G i=j.1m;i>0;){l=j[--i];p=E.2e(l);G m=p.x;G n=l.1K+m;G o=p.y;G q=l.1Y+o;J(F.2q||(m>f)||(n<e)||(o>h)||(q<g)){J(!l.3c){l.3c=4z(l)}l.1j.2n=l.3c}O{J(!l.3c){l.3c=4z(l)}l.1j.2n="2q"}}}};E.1a.4i=N(){G a=F.25;G b=F.3N;G c=E.1l["5D"];1e(G i=0;i<7;++i){b.19="4q 5t";G d=(i+a)%7;J(i){b.1u=E.1l["80"].4B("%s",E.3P[d]);b.1k=2b;b.1y=F;b.5n=d;E.2w(b)}J(c.5F(d.5G())!=-1){E.1D(b,"5H")}b.1g=E.3k[(i+a)%7];b=b.2A}};E.1a.53=N(){F.2s.1j.1E="2i";F.3h.1j.1E="2i"};E.1a.5a=N(a){J(F.2K){Q}F.2K=1h;G b;G c;J(E.1w){c=1n.1J.41+1b.1Z.2O;b=1n.1J.3r+1b.1Z.2N}O{c=a.41+1n.5M;b=a.3r+1n.5N}G d=F.1s.1j;F.57=b-1G(d.2h);F.58=c-1G(d.2V);2x(E){1A(1b,"2Z",3Z);1A(1b,"3q",42)}};14.5Q=1c 2u(31,28,31,30,31,30,31,31,30,31,30,31);14.5R=5S;14.5T=60*14.5R;14.5U=60*14.5T;14.4C=24*14.5U;14.81=7*14.4C;14.4y=N(c,e){G f=1c 14();G y=0;G m=-1;G d=0;G a=c.4N(/\\W+/);G b=e.4b(/%./g);G i=0,j=0;G g=0;G h=0;1e(i=0;i<a.1m;++i){J(!a[i])3b;2k(b[i]){X"%d":X"%e":d=1G(a[i],10);17;X"%m":m=1G(a[i],10)-1;17;X"%Y":X"%y":y=1G(a[i],10);(y<2b)&&(y+=(y>29)?5V:5W);17;X"%b":X"%B":1e(j=0;j<12;++j){J(E.2v[j].1W(0,a[i].1m).3D()==a[i].3D()){m=j;17}}17;X"%H":X"%I":X"%k":X"%l":g=1G(a[i],10);17;X"%P":X"%p":J(/2H/i.1C(a[i])&&g<12)g+=12;O J(/2I/i.1C(a[i])&&g>=12)g-=12;17;X"%M":h=1G(a[i],10);17}}J(3d(y))y=f.1p();J(3d(m))m=f.1o();J(3d(d))d=f.1v();J(3d(g))g=f.2F();J(3d(h))h=f.2G();J(y!=0&&m!=-1&&d!=0)Q 1c 14(y,m,d,g,h,0);y=0;m=-1;d=0;1e(i=0;i<a.1m;++i){J(a[i].82(/[a-83-Z]+/)!=-1){G t=-1;1e(j=0;j<12;++j){J(E.2v[j].1W(0,a[i].1m).3D()==a[i].3D()){t=j;17}}J(t!=-1){J(m!=-1){d=m+1}m=t}}O J(1G(a[i],10)<=12&&m==-1){m=a[i]-1}O J(1G(a[i],10)>31&&y==0){y=1G(a[i],10);(y<2b)&&(y+=(y>29)?5V:5W)}O J(d==0){d=a[i]}}J(y==0)y=f.1p();J(m!=-1&&d!=0)Q 1c 14(y,m,d,g,h,0);Q f};14.1a.46=N(a){G b=F.1p();J(1r a=="1z"){a=F.1o()}J(((0==(b%4))&&((0!=(b%2b))||(0==(b%47))))&&a==1){Q 29}O{Q 14.5Q[a]}};14.1a.5X=N(){G a=1c 14(F.1p(),F.1o(),F.1v(),0,0,0);G b=1c 14(F.1p(),0,0,0,0,0);G c=a-b;Q 2j.3s(c/14.4C)};14.1a.4r=N(){G d=1c 14(F.1p(),F.1o(),F.1v(),0,0,0);G a=d.3C();d.1q(d.1v()-(a+6)%7+3);G b=d.5Y();d.1T(0);d.1q(4);Q 2j.84((b-d.5Y())/(7*85))+1};14.1a.4c=N(a){Q((F.1p()==a.1p())&&(F.1o()==a.1o())&&(F.1v()==a.1v())&&(F.2F()==a.2F())&&(F.2G()==a.2G()))};14.1a.45=N(a){G b=1c 14(a);F.1q(1);F.1L(b.1p());F.1T(b.1o());F.1q(b.1v())};14.1a.35=N(b){G m=F.1o();G d=F.1v();G y=F.1p();G c=F.4r();G w=F.3C();G s={};G e=F.2F();G f=(e>=12);G g=(f)?(e-12):e;G h=F.5X();J(g==0)g=12;G j=F.2G();G k=F.86();s["%a"]=E.3k[w];s["%A"]=E.3P[w];s["%b"]=E.3l[m];s["%B"]=E.2v[m];s["%C"]=1+2j.3s(y/2b);s["%d"]=(d<10)?("0"+d):d;s["%e"]=d;s["%H"]=(e<10)?("0"+e):e;s["%I"]=(g<10)?("0"+g):g;s["%j"]=(h<2b)?((h<10)?("87"+h):("0"+h)):h;s["%k"]=e;s["%l"]=g;s["%m"]=(m<9)?("0"+(1+m)):(1+m);s["%M"]=(j<10)?("0"+j):j;s["%n"]="\\n";s["%p"]=f?"88":"89";s["%P"]=f?"2H":"2I";s["%s"]=2j.3s(F.8a()/5S);s["%S"]=(k<10)?("0"+k):k;s["%t"]="\\t";s["%U"]=s["%W"]=s["%V"]=(c<10)?("0"+c):c;s["%u"]=w+1;s["%w"]=w;s["%y"]=(\'\'+y).1W(2,2);s["%Y"]=y;s["%%"]="%";G l=/%./g;J(!E.3R&&!E.3m)Q b.4B(l,N(a){Q s[a]||a});G a=b.4b(l);1e(G i=0;i<a.1m;i++){G n=s[a[i]];J(n){l=1c 8b(a[i],\'g\');b=b.4B(l,n)}}Q b};J(!14.1a.3E){14.1a.3E=14.1a.1L;14.1a.1L=N(y){G d=1c 14(F);d.3E(y);J(d.1o()!=F.1o())F.1q(28);F.3E(y)}}1n.2J=16;',62,508,'||||||||||||||||||||||||||||||||||||||||Calendar|this|var|||if||||function|else||return|||||||case|||||||Date||null|break|false|className|prototype|document|new|createElement|for|removeClass|innerHTML|true|date|style|navtype|_TT|length|window|getMonth|getFullYear|setDate|typeof|element|hilite|ttip|getDate|is_ie|parentNode|calendar|undefined|addEvent|_C|test|addClass|display|disabled|parseInt|multiple|div|event|offsetWidth|setFullYear|timeout|isPopup|hilitedMonth|hilitedYear|stopEvent|px|cellClick|setMonth|currentDateEl|weekNumbers|substr|removeEvent|offsetHeight|body|td|ne|iday|||firstDayOfWeek|ar_days||||active|100|minYear|maxYear|getAbsolutePos|getElement|appendChild|left|none|Math|switch|tr|title|visibility|activeDiv|getDateStatus|hidden|table|monthsCombo|dateClicked|Array|_MN|_add_evs|with|month|year|nextSibling|_range|hideShowCovered|selected|_init|getHours|getMinutes|pm|am|_dynarch_popupCalendar|dragging|navigator|userAgent|scrollLeft|scrollTop|offsetLeft|while|getTargetElement|on|getElementsByTagName|block|top|firstChild|callHandler|tableMouseOver|mousemove||||rowhilite|caldate|print|callCloseHandler||||_keyEvent|continue|__msh_save_visibility|isNaN|getDateToolTip|dateFormat|tbody|yearsCombo|activeMonth|activeYear|_SDN|_SMN|is_khtml|mouseover|mousedown|tableMouseUp|mouseup|clientX|floor|onUpdateTime|300|otherMonth|colSpan|time|makeTimePart|label|step|setVars|getDay|toLowerCase|__msh_oldSetFullYear|getDateText|onSelected|onClose|ttDateFormat|showsOtherMonths|dateStr|showsTime|yearStep|firstdayname|_SDN_len|_DN|_SMN_len|is_ie5|ST|offsetTop|isRelated|findMonth|findYear|showYearsCombo|clearTimeout|calDragIt||clientY|calDragEnd|setTimeout|tooltips|setDateOnly|getMonthDays|400|and|you|to|match|equalsTo|_nav_py|_nav_pm|_nav_now|_nav_nm|_nav_ny|_displayWeekdays|nbsp|onSetTime|keypress|el|prevMonth|nextMonth|datesCells|day|getWeekNumber|removeChild|_checkCalendar|showAt|width|height|continuation_for_the_fucking_khtml_browser|parseDate|getVisib|defaultView|replace|DAY|number|time24|hiliteToday|msie|opera|is_opera|tagName|offsetParent|type|mouseout|split|srcElement|nodeType|attachEvent|addEventListener|detachEvent|removeEventListener|createElementNS|http|dayMouseOver|dayMouseDown|dayMouseOut|dayMouseDblClick||unselectable|showMonthsCombo|_hideCombos|abs|_current|tableMouseDown|xOffs|yOffs||_dragStart|250|_|SEL_DATE|_toggleMultipleDate|200|into|language|the|in|it|com|setFirstDayOfWeek|fdow|position|absolute|DRAG_TO_MOVE|cursor|move|name|wn|span|combo|IEfix|default|pos|TY|TM|TD|WEEKEND|dpos|indexOf|toString|weekend|_initMultipleDates|show|keydown|fixPosition|scrollY|scrollX|getComputedStyle|currentStyle|_MD|SECOND|1000|MINUTE|HOUR|1900|2000|getDayOfYear|valueOf|1970||2050|DEF_DATE_FORMAT|TT_DATE_FORMAT|_FD|Konqueror|Safari|KHTML|relatedTarget|fromElement|toElement|join|currentTarget|target|cancelBubble|returnValue|preventDefault|stopPropagation|www|w3|org|1999|xhtml|dblclick|setAttribute|pageX|pageY|selection|empty|ABOUT|ABOUT_TIME|Help|about|box|text|is|not|translated|If|know|feel|generous|please|update|corresponding|file|lang|subdir|en|js|send|back|mihai_bazon|yahoo|get|distribution|Thank|dynarch|mishoo|epl|alert|shiftKey|create|cellSpacing|cellPadding|thead|button|nav|INFO|x00d7|CLOSE|headrow|x00ab|PREV_YEAR|x2039|PREV_MONTH|TODAY|GO_TODAY|x203a|NEXT_MONTH|x00bb|NEXT_YEAR|daynames|WK|TIME|TIME_PART|hour|colon|minute|ampm|setHours|setMinutes|tfoot|footrow|keyCode|ctrlKey|daysrow|othermonth|emptycell|today|PART_TODAY|oweekend|emptyrow|visible|delete|setDateToolTipHandler|refresh|setDateStatusHandler|setDisabledHandler|setRange|destroy|reparent|hide|showAtElement|string|right|bottom|0px|setDateFormat|setTtDateFormat|getPropertyValue|applet|iframe|select|DAY_FIRST|WEEK|search|zA|round|864e5|getSeconds|00|PM|AM|getTime|RegExp'.split('|'),0,{}))
// ** I18N

// Calendar EN language
// Author: Mihai Bazon, <mihai_bazon@yahoo.com>
// Encoding: any
// Distributed under the same terms as the calendar itself.

// For translators: please use UTF-8 if possible.  We strongly believe that
// Unicode is the answer to a real internationalized world.  Also please
// include your contact information in the header, as can be seen above.

// full day names
Calendar._DN = new Array
("Sunday",
 "Monday",
 "Tuesday",
 "Wednesday",
 "Thursday",
 "Friday",
 "Saturday",
 "Sunday");

// Please note that the following array of short day names (and the same goes
// for short month names, _SMN) isn't absolutely necessary.  We give it here
// for exemplification on how one can customize the short day names, but if
// they are simply the first N letters of the full name you can simply say:
//
//   Calendar._SDN_len = N; // short day name length
//   Calendar._SMN_len = N; // short month name length
//
// If N = 3 then this is not needed either since we assume a value of 3 if not
// present, to be compatible with translation files that were written before
// this feature.

// short day names
Calendar._SDN = new Array
("Sun",
 "Mon",
 "Tue",
 "Wed",
 "Thu",
 "Fri",
 "Sat",
 "Sun");

// First day of the week. "0" means display Sunday first, "1" means display
// Monday first, etc.
Calendar._FD = 0;

// full month names
Calendar._MN = new Array
("January",
 "February",
 "March",
 "April",
 "May",
 "June",
 "July",
 "August",
 "September",
 "October",
 "November",
 "December");

// short month names
Calendar._SMN = new Array
("Jan",
 "Feb",
 "Mar",
 "Apr",
 "May",
 "Jun",
 "Jul",
 "Aug",
 "Sep",
 "Oct",
 "Nov",
 "Dec");

// tooltips
Calendar._TT = {};
Calendar._TT["INFO"] = "About the calendar";

Calendar._TT["ABOUT"] =
"DHTML Date/Time Selector\n" +
"(c) dynarch.com 2002-2005 / Author: Mihai Bazon\n" + // don't translate this this ;-)
"For latest version visit: http://www.dynarch.com/projects/calendar/\n" +
"Distributed under GNU LGPL.  See http://gnu.org/licenses/lgpl.html for details." +
"\n\n" +
"Date selection:\n" +
"- Use the \xab, \xbb buttons to select year\n" +
"- Use the " + String.fromCharCode(0x2039) + ", " + String.fromCharCode(0x203a) + " buttons to select month\n" +
"- Hold mouse button on any of the above buttons for faster selection.";
Calendar._TT["ABOUT_TIME"] = "\n\n" +
"Time selection:\n" +
"- Click on any of the time parts to increase it\n" +
"- or Shift-click to decrease it\n" +
"- or click and drag for faster selection.";

Calendar._TT["PREV_YEAR"] = "Prev. year (hold for menu)";
Calendar._TT["PREV_MONTH"] = "Prev. month (hold for menu)";
Calendar._TT["GO_TODAY"] = "Go Today";
Calendar._TT["NEXT_MONTH"] = "Next month (hold for menu)";
Calendar._TT["NEXT_YEAR"] = "Next year (hold for menu)";
Calendar._TT["SEL_DATE"] = "Select date";
Calendar._TT["DRAG_TO_MOVE"] = "Drag to move";
Calendar._TT["PART_TODAY"] = " (today)";

// the following is to inform that "%s" is to be the first day of week
// %s will be replaced with the day name.
Calendar._TT["DAY_FIRST"] = "Display %s first";

// This may be locale-dependent.  It specifies the week-end days, as an array
// of comma-separated numbers.  The numbers are from 0 to 6: 0 means Sunday, 1
// means Monday, etc.
Calendar._TT["WEEKEND"] = "0,6";

Calendar._TT["CLOSE"] = "Close";
Calendar._TT["TODAY"] = "Today";
Calendar._TT["TIME_PART"] = "(Shift-)Click or drag to change value";

// date formats
Calendar._TT["DEF_DATE_FORMAT"] = "%Y-%m-%d";
Calendar._TT["TT_DATE_FORMAT"] = "%a, %b %e";

Calendar._TT["WK"] = "wk";
Calendar._TT["TIME"] = "Time:";

Calendar.setup=function(params){function param_default(pname,def){if(typeof params[pname]=="undefined"){params[pname]=def;}};param_default("inputField",null);param_default("displayArea",null);param_default("button",null);param_default("eventName","click");param_default("ifFormat","%Y/%m/%d");param_default("daFormat","%Y/%m/%d");param_default("singleClick",true);param_default("disableFunc",null);param_default("dateStatusFunc",params["disableFunc"]);param_default("dateText",null);param_default("firstDay",null);param_default("align","Br");param_default("range",[1900,2999]);param_default("weekNumbers",true);param_default("flat",null);param_default("flatCallback",null);param_default("onSelect",null);param_default("onClose",null);param_default("onUpdate",null);param_default("date",null);param_default("showsTime",false);param_default("timeFormat","24");param_default("electric",true);param_default("step",2);param_default("position",null);param_default("cache",false);param_default("showOthers",false);param_default("multiple",null);var tmp=["inputField","displayArea","button"];for(var i in tmp){if(typeof params[tmp[i]]=="string"){params[tmp[i]]=document.getElementById(params[tmp[i]]);}}if(!(params.flat||params.multiple||params.inputField||params.displayArea||params.button)){alert("Calendar.setup:\n  Nothing to setup (no fields found).  Please check your code");return false;}function onSelect(cal){var p=cal.params;var update=(cal.dateClicked||p.electric);if(update&&p.inputField){p.inputField.value=cal.date.print(p.ifFormat);if(typeof p.inputField.onchange=="function")p.inputField.onchange();}if(update&&p.displayArea)p.displayArea.innerHTML=cal.date.print(p.daFormat);if(update&&typeof p.onUpdate=="function")p.onUpdate(cal);if(update&&p.flat){if(typeof p.flatCallback=="function")p.flatCallback(cal);}if(update&&p.singleClick&&cal.dateClicked)cal.callCloseHandler();};if(params.flat!=null){if(typeof params.flat=="string")params.flat=document.getElementById(params.flat);if(!params.flat){alert("Calendar.setup:\n  Flat specified but can't find parent.");return false;}var cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect);cal.showsOtherMonths=params.showOthers;cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.params=params;cal.weekNumbers=params.weekNumbers;cal.setRange(params.range[0],params.range[1]);cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;if(params.ifFormat){cal.setDateFormat(params.ifFormat);}if(params.inputField&&typeof params.inputField.value=="string"){cal.parseDate(params.inputField.value);}cal.create(params.flat);cal.show();return false;}var triggerEl=params.button||params.displayArea||params.inputField;triggerEl["on"+params.eventName]=function(){var dateEl=params.inputField||params.displayArea;var dateFmt=params.inputField?params.ifFormat:params.daFormat;var mustCreate=false;var cal=window.calendar;if(dateEl)params.date=Date.parseDate(dateEl.value||dateEl.innerHTML,dateFmt);if(!(cal&&params.cache)){window.calendar=cal=new Calendar(params.firstDay,params.date,params.onSelect||onSelect,params.onClose||function(cal){cal.hide();});cal.showsTime=params.showsTime;cal.time24=(params.timeFormat=="24");cal.weekNumbers=params.weekNumbers;mustCreate=true;}else{if(params.date)cal.setDate(params.date);cal.hide();}if(params.multiple){cal.multiple={};for(var i=params.multiple.length;--i>=0;){var d=params.multiple[i];var ds=d.print("%Y%m%d");cal.multiple[ds]=d;}}cal.showsOtherMonths=params.showOthers;cal.yearStep=params.step;cal.setRange(params.range[0],params.range[1]);cal.params=params;cal.setDateStatusHandler(params.dateStatusFunc);cal.getDateText=params.dateText;cal.setDateFormat(dateFmt);if(mustCreate)cal.create();cal.refresh();if(!params.position)cal.showAtElement(params.button||params.displayArea||params.inputField,params.align);else cal.showAt(params.position[0],params.position[1]);return false;};return cal;};
function getCountryId(){
 var country = document.getElementById("country").value;
 autocompleter.options.parameters = 'country='+country;
 autocompleter.options.defaultParams = 'country='+country;
}
function setDisplay(element, activity) {
 if(activity=="change") display = ((document.getElementById(element).style.display == 'none')?"block" : "none");
 else if (activity=="block") display = "block";
 else if (activity=="none") display = "none";
 if (document.getElementById(element) != null) {
 document.getElementById(element).style.display = display ;
 }
}
function isNumeric(sText)
{
 var ValidChars = "0123456789.";
 var IsNumber=true;
 var Char;
 for (i = 0; i < sText.length && IsNumber == true; i++) {
 Char = sText.charAt(i);
 if (ValidChars.indexOf(Char) == -1) {
 IsNumber = false;
 }
 }
 return IsNumber;
}
// wenn bereits bekannt Stadt geaendert wird -> StadtId loeschen zur Schnellsuche
function deleteCityId() {
 document.getElementById('ci').value = "";
}
function roomHandler(sum) {
 if(sum==1){
 document.getElementById('morerooms').style.display = "none";
 document.getElementById('rooms').style.display = "none"; }
 else{
 document.getElementById('morerooms').style.display = "block";
 }
}
function changeRooms() {
 var anz = document.getElementById('number_of_rooms').value;
 var erw = document.getElementById('adult').value;
 //var child1 = document.getElementById('child1').value;
 //var child2 = document.getElementById('child2').value;
 //var child3 = document.getElementById('child3').value;
 // entsprechend den Angaben Werte fuer Zimmertyp berechnen
  	if (anz != -1) {
		var quot = erw/anz;
		if ((quot % 2) == 0) {
			 if (quot == 2) 		{document.getElementById('roomtype').value = '2'; }
			 else if (quot == 4) 	{document.getElementById('roomtype').value = '-1';}
			 else if (quot == 6) 	{document.getElementById('roomtype').value = '-1';}
		 }else if ((quot % 2) != 0) {
			 if (quot == 1) {
				 document.getElementById('roomtype').value = '1';
			 } else {
				 document.getElementById('roomtype').value = '-1';
				 document.getElementById('number_of_rooms').value = '-1';
			 }
		 }
	}else if (quot < 0) {
		 document.getElementById('roomtype').value = '-1';
		 document.getElementById('number_of_rooms').value = '-1';
	}else {
		 document.getElementById('roomtype').value = '-1';
	}
 
}

function afterChangeAdult()
{
 if(document.getElementById('adult')) {
 var erw = document.getElementById('adult').value;
 if (erw == 4) {
 document.getElementById('roomtype').value = '2';
 document.getElementById('number_of_rooms').value = '2';
 } else if (erw == 6) {
 document.getElementById('roomtype').value = '2';
 document.getElementById('number_of_rooms').value = '3';
 } else {
 document.getElementById('roomtype').value = '-1';
 document.getElementById('number_of_rooms').value = '-1';
 }
 } else {
 document.getElementById('roomtype').value = '-1';
 document.getElementById('number_of_rooms').value = '-1';
 }
}
function switchFormDisplay ( type ) {
 switch ( type ) {
 case 'package' :
 document.getElementById('hotel').style.display = 'none';
 document.getElementById('package').style.display = 'block';
 document.getElementById('packageTab').className = 'active';
 document.getElementById('hotelTab').className = '';
 document.getElementById('hotline').style.visibility = "visible";
 document.getElementById('pack2').checked = "checked";
 break;
 case 'hotel' :
 document.getElementById('hotel').style.display = 'block';
 document.getElementById('package').style.display = 'none';
 document.getElementById('packageTab').className = '';
 document.getElementById('hotelTab').className = 'active';
 document.getElementById('hotline').style.visibility = "hidden";
 document.getElementById('hotel2').checked = "checked";
 break;
 }
}

function changeTarget() {
 document.getElementById('landing').action = HOME_URL + "package/hotel/";
 if(document.getElementById('hotel_kette')) {document.getElementById('hotel_kette').value = '';}
}

function changeTarget2(type) {
 if (type == "package") {document.getElementById('bengine').action = HOME_URL + "package/hotel";}
 else {document.getElementById('hotelsearch').action = HOME_URL + "hotel/search";}
}

function checkSubmit() {
 var datefrom = document.getElementById('datefrom').value;
 var dateto = document.getElementById('dateto').value;
 var isDateFrom = isDate(datefrom);
 var isDateTo = isDate(dateto);
 if(!isDateFrom && !isDateTo){
 alert('Bitte geben Sie gÃ¼ltige Reisedaten ein!');
 return false;
 }
 if(!isDateFrom){
 alert('Bitte geben Sie ein gÃ¼ltiges Anreisedatum ein!');
 return false;
 }
 if(!isDateTo){
 alert('Bitte geben Sie ein gÃ¼ltiges Abreisedatum ein!');
 return false;
 }
 var anr = datefrom.split('.');
 var abr = dateto.split('.');
 var anreise = new Date(anr[2],(anr[1]-1),anr[0]);
 var abreise = new Date(abr[2],(abr[1]-1),abr[0]);
 if (abreise <= anreise) {
 alert('Das Anreisedatum muss wor dem Abreisedatum liegen!');
 return false;
 }
 showBox();
 return true;
}

function isDate(dateStr) { 
 var datePat = /^(\d{1,2})(\/)(\d{1,2})(\/)(\d{4})$/;
 var matchArray = dateStr.match(datePat);
 if (matchArray == null) return false;
 day = matchArray[3];
 month = matchArray[1];
 year = matchArray[5];
 if (month < 1 || month > 12) return false;
 if (day < 1 || day > 31) return false;
 if ((month==4 || month==6 || month==9 || month==11) && day==31) return false;
 if (month == 2) { // check for february 29th
   var isleap = (year % 4 == 0 && (year % 100 != 0 || year % 400 == 0));
   if (day > 29 || (day==29 && !isleap)) return false;
 }
 return true;
}

function isFuture(datum) 
{ 
 if (isDate(datum))
 {  	
	var aktuell = new Date();
	aktuell.setTime(aktuell.getTime());
	var dd = aktuell.getDate();
	if(dd<10)dd='0'+dd;
	var mm = aktuell.getMonth()+1;
	if(mm<10)mm='0'+mm;
	aktuellD=mm+'/'+dd+'/'+aktuell.getFullYear();
	
	var DatumAktuell = aktuellD.split('/');
	var PruefDatum = datum.split('/');
	var AktuellesDatum = new Date(DatumAktuell[2],(DatumAktuell[0]-1),DatumAktuell[1]);
	var PruefeDatum  = new Date(PruefDatum[2],(PruefDatum[0]-1),PruefDatum[1]);
	
	//alert(AktuellesDatum);
	//alert(PruefeDatum);
	
	if (PruefeDatum < AktuellesDatum)return false;
 	else return true;
  }
}

// Funktion empfaengt geaendertes Anreisedatum und berechnet daraus neues Abreisedatum
function setDate(test) 
{
 var datefrom = document.getElementById('datefrom').value;
	 if(!isDate(datefrom)) {
		 if (LANGUAGE == 'GERMAN') {
			 alert('Bitte geben Sie ein g&uuml;ltiges Anreisedatum ein!');
		 } else {
			 alert('Please enter a valid checkin date!');
		 }
	 var anreise = new Date();
	 anreise.setTime(anreise.getTime() +168 * 60 * 60 * 1000);
	 var dd = anreise.getDate();
	 if(dd<10)dd='0'+dd;
	 var mm = anreise.getMonth()+1;
	 if(mm<10)mm='0'+mm;
	 document.getElementById('datefrom').value = mm+'/'+dd+'/'+anreise.getFullYear();
 
	 }else {
	 
		 if (!isFuture(datefrom)) {
			 if (LANGUAGE == 'GERMAN') {
				 alert('Bitte geben Sie ein g&uuml;ltiges Anreisedatum ein!');
			 } else {
				 alert('Please enter a correct checkin date!');
			 }	
			var anreise = new Date();
			anreise.setTime(anreise.getTime() +168 * 60 * 60 * 1000);
			var dd = anreise.getDate();
			if(dd<10)dd='0'+dd;
			var mm = anreise.getMonth()+1;
			if(mm<10)mm='0'+mm;
			document.getElementById('datefrom').value = mm+'/'+dd+'/'+anreise.getFullYear();
		 
		 	var abreise = new Date();
			abreise.setTime(anreise.getTime() +25 * 60 * 60 * 1000);
			var dd = abreise.getDate();
			if(dd<10)dd='0'+dd;
			var mm = abreise.getMonth()+1;
			if(mm<10)mm='0'+mm;
			document.getElementById('dateto').value = mm+'/'+dd+'/'+abreise.getFullYear();
			
		  } else {
			  
			 // Berechnung neues Abreisedatum
			 var input = datefrom.split('/');
			 // Sonderbehandlung
			 //if (input[1] == '02' && (input[0] == '30' || input[0] == '31')) document.getElementById('datefrom').value = '01.03.2008';
			 var anreise = new Date(input[2],(input[0]-1),input[1]);
			 var abreise = new Date();
			 abreise.setTime(anreise.getTime() +24 * 60 * 60 * 1000);
			 // neues Abreisedatum ab ins Form
			 var dd = abreise.getDate();
			 if(dd<10)dd='0'+dd;
			 var mm = abreise.getMonth()+1;
			 if(mm<10)mm='0'+mm;
			 document.getElementById('dateto').value = mm+'/'+dd+'/'+abreise.getFullYear();
		 }
	 }
}
 
// liegt Abreisedatum vor Anreisedatum wenn ja, Abreisedatum ein Tag spaeter als Anreisedatum waehlen
function checkDate() {
 var datefrom = document.getElementById('datefrom').value;
 var dateto = document.getElementById('dateto').value;
 if(!isDate(dateto)) {
	 if (LANGUAGE == 'GERMAN') {
		 alert('Bitte geben Sie ein g&uuml;ltiges Abreisedatum ein!');
	 } else {
		 alert('Please enter a valid checkout date!');
	 }
 var anr = datefrom.split('/');
 var anreise = new Date(anr[2],(anr[0]-1),anr[1]);
 var abreise_neu = new Date();
 abreise_neu.setTime(anreise.getTime() +24 * 60 * 60 * 1000);
 var dd = abreise_neu.getDate();
 if(dd<10)dd='0'+dd;
 var mm = abreise_neu.getMonth()+1;
 if(mm<10)mm='0'+mm;
 document.getElementById('dateto').value = mm+'/'+dd+'/'+abreise_neu.getFullYear();
 } else {
 var anr = datefrom.split('/');
 var abr = dateto.split('/');
 var anreise = new Date(anr[2],(anr[0]-1),anr[1]);
 var abreise = new Date(abr[2],(abr[0]-1),abr[1]);
 if (abreise <= anreise) {
 var abreise_neu = new Date();
 abreise_neu.setTime(anreise.getTime() +24 * 60 * 60 * 1000);
 var dd = abreise_neu.getDate();
 if(dd<10)dd='0'+dd;
 var mm = abreise_neu.getMonth()+1;
 if(mm<10)mm='0'+mm;
 document.getElementById('dateto').value = mm+'/'+dd+'/'+abreise.getFullYear();
 }
 }
}


