//---- Start Javascipt file HI_DynamicLanguageFlags.js /*------ Copyright notice -------------------------------------------* * * * Removing this copyright notice is unlawful! * * * * Copyright (c) 2008 Hahn Informatica, Veldhoven, Netherlands * * Created 13 October 2008 by Ir. H. Hahn * * Last modification: 13 October 2008 * * * * The most recent version cal be downloaded from * * www.hahn-informatica.nl/hi2008/index.php?id=dnld * * * *--------------------------------------------------------------------*/ //------ Configuration: ----------------------- // Time (ms) between two successive steps. A lower value will result in // a more "smooth" fade-out / fade-in of the flags. // Default: 200 ms var DLF_DELTA_TIME = 100; // Total time (ms) needed for one flag swap. // Default: 1000 ms var DLF_TIME_SWAPPING = 1000; // Time (ms) between the end of a swap and the start of the next swap. Together // with DLF_TIME_SWAPPING this determines the time between the start of two // successive flag swaps (= DLF_TIME_SWAPPING + DLF_TIME_BETWEEN_SWAPS). // Default: 1000 ms var DLF_TIME_BETWEEN_SWAPS = 1000; //++++++++++ D O N O T M O D I F Y B E L O W T H I S L I N E ! ++++++++++ var DLF_STEPS_SWAPPING = (DLF_TIME_SWAPPING / DLF_DELTA_TIME); // Steps needed for one flag swap var DLF_STEPS_BETWEEN_SWAPS = (DLF_TIME_BETWEEN_SWAPS / DLF_DELTA_TIME); // Steps between successive flag swaps var DLF_STEPS_TOTAL = (DLF_STEPS_SWAPPING + DLF_STEPS_BETWEEN_SWAPS); var STEP_SIZE = (1 / DLF_STEPS_SWAPPING); var DLF_AllLangFlags = null; var tCk_iDLF = 'Ck_iDLF'; //------ Constructor DLF_DynLangFlags(): ---------------- /* Input: none. */ function DLF_DynLangFlags () { this.arrFlagsObjects = new Array(); this.NrLanguages = 0; this.iStep = 4294967295; this.iLanguage = 0; this.Active = 0; this.IntervalId = null; this.DoStep = DoStep; this.AddLangFlags = AddLangFlags; return (this); //------ Method AddLangFlags (): -------------------------------------- /* Input: Flags: (string) Comma-separated filenames of flag images (complete with pathname). */ function AddLangFlags (FlagIds) { this.arrFlagsObjects.push (new DLF_CreateFlags (FlagIds)); this.NrLanguages = this.arrFlagsObjects.length; } // "AddLangFlags ()" //------ Method DoStep (): -------------------------------------- function DoStep () { if (++(DLF_AllLangFlags.iStep) >= DLF_STEPS_TOTAL) { DLF_AllLangFlags.iStep = 0; if (++(DLF_AllLangFlags.iLanguage) >= DLF_AllLangFlags.NrLanguages) { DLF_AllLangFlags.iLanguage = 0; } } if (DLF_AllLangFlags.iStep == DLF_STEPS_BETWEEN_SWAPS) { DLF_AllLangFlags.arrFlagsObjects[DLF_AllLangFlags.iLanguage].Status = 0; // Start swapping } if ( (DLF_AllLangFlags.iStep >= DLF_STEPS_BETWEEN_SWAPS) && (DLF_AllLangFlags.iStep < DLF_STEPS_TOTAL ) ) { DLF_AllLangFlags.arrFlagsObjects[DLF_AllLangFlags.iLanguage].SwapFlags (DLF_AllLangFlags.iStep); // Do swapping step } } // "DoStep ()" return (this); } // "DLF_DynLangFlags" () //------ Constructor DLF_CreateFlags (): ----------------------------------- // Not to be called directly. Use DLF_AllLangFlags.AddLangFlags.SetLangFlags() instead. function DLF_CreateFlags (FlagIds) { var Img, MSIE = 0, T; this.IdxFlag = 0; this.IdxNextFlag = 1; this.Status = -1; this.SwapFlags = SwapFlags; this.SetOpacity = SetOpacity; // Store filenames in an array: this.arrFlags = new Array; var ZIndex0 = 1000; var FlagIds_ = FlagIds.split (","); var N = FlagIds_.length; for (var i = 0; i < N; i++) { Img = document.getElementById (FlagIds_[i]); this.arrFlags.push (Img); } return (this); //------ Method SwapFlags (): -------------------------------------- function SwapFlags (iStep) { if (iStep == DLF_STEPS_BETWEEN_SWAPS) { this.IdxNextFlag = (this.IdxFlag + 1) % this.arrFlags.length; } if ( (iStep >= DLF_STEPS_BETWEEN_SWAPS) && (iStep < DLF_STEPS_TOTAL ) ) { var FlagImgOld = this.arrFlags[this.IdxFlag]; var FlagImgNew = this.arrFlags[this.IdxNextFlag]; var iOpacNew = (iStep - DLF_STEPS_BETWEEN_SWAPS + 1) * STEP_SIZE; var iOpacOld = 1 - iOpacNew; this.SetOpacity (FlagImgOld, iOpacOld, FlagImgNew, iOpacNew); if (iStep == (DLF_STEPS_TOTAL - 1)) { this.IdxFlag = this.IdxNextFlag; this.Status = -1; } } else { this.Status = -1; } } // "SwapFlags ()" //------ Method SetOpacity (): -------------------- function SetOpacity (FlagImgOld, iOpacOld, FlagImgNew, iOpacNew) { if (typeof (FlagImgOld.style.opacity) != "undefined") // try CSS3-version first! { FlagImgOld.style.opacity = (iOpacOld); if (FlagImgNew != null) { FlagImgNew.style.opacity = (iOpacNew); } } else if (typeof (FlagImgOld.style.MozOpacity) != "undefined") // Mozilla-version { FlagImgOld.style.MozOpacity = (iOpacOld); if (FlagImgNew != null) { FlagImgNew.style.MozOpacity = (iOpacNew); } } else if (typeof (FlagImgOld.style.KhtmlOpacity) != "undefined") // KHTML-version { FlagImgOld.style.KhtmlOpacity = (iOpacOld); if (FlagImgNew != null) { FlagImgNew.style.KhtmlOpacity = (iOpacNew); } } else // other: MSIE { FlagImgOld.style.filter = "alpha(opacity = " + (iOpacOld * 100) + ")"; if (FlagImgNew != null) { FlagImgNew.style.filter = "alpha(opacity = " + (iOpacNew * 100) + ")"; } } return (0); } // "SetOpacity ()" return (this); } // "DLF_CreateFlags ()" //------ DLF_StartFlags (): -------------------- function DLF_StartFlags () { /* arrOnUnLoad.push (function StoreDlfIndex () { CookieAanmaken (tCk_iDLF, DLF_AllLangFlags.iStep, 0); // opslaan in cookie (levensduur = sessie) }); */ DLF_AllLangFlags.IntervalId = window.setInterval(DLF_AllLangFlags.DoStep, DLF_DELTA_TIME); } // "DLF_StartFlags ()" //------ End of Javascript file "HI_DynamicLanguageFlags.js" ----------------