bgcycle = 1;
bgcycle_max = 4;

fadeables = null;
backgrounds = null;

function img_load_complete() {
    if (document.readyState != null)
        return (document.readyState == "complete");
    if (document.images.length == 0)
        return false;
    for (i = 0; i < document.images.length; i++)
        if (!document.images[i].complete)
        return false;
    return true;
}

function prepare_bg(divname, filename) {
    if (backgrounds == null) {
        backgrounds = jQuery("div.bg_holder");
    }
    for (i = 0; i < backgrounds.size() && backgrounds.get(i).id != divname; i++) { }
    if (i < backgrounds.size()) {
        divfield = backgrounds.eq(i);
        if (divfield.css('background-image') != "none")
            return false;
        divfield.css('background-image', filename);
        return true;
    } else {
        return false;
    }
}

var autoPlayer = false;
bgloader_semaphore = false;
var bgloader = false;
var arrBgOfferImgs = new Array();

function initSlider() {
    if (arrBgOfferImgs.length > 0) {
        bgcycle_max = arrBgOfferImgs.length;
        initBG();
        prepare_bg("bg1", arrBgOfferImgs[0]);
        if (arrBgOfferImgs.length > 1) {
            bgloader = window.setInterval("bgloader_event()", 500);
            jQuery('.slidebutton_box').show();
        }
        bgEl = document.getElementsByName('bg1')[0];
        areaEl = document.getElementsByName('clickarea_bg1')[0];
        bgEl.style.display = 'block';
        areaEl.style.display = 'block';
        if (bgEl.filters == null) {
            bgEl.style.opacity = "1";
        } else {
            jQuery(bgEl).css('filter', 'none');
        }
        startPlayer();
    }
}

function initBG() {
    for (i = 0; i < arrBgOfferImgs.length; i++) {
        jQuery('.bg_collection').append('<div name="bg' + (i + 1) + '" id="bg' + (i + 1) + '" class="bg_holder"></div>');
    }
    jQuery('.clickarea_box').show();
    jQuery('.slideshow').show();
}
function startPlayer() {
    if (!autoPlayer) {
        autoPlayer = window.setTimeout("bgcycle_next()", 8000);
    }
}

function stopPlayer() {
    if (autoPlayer) {
        window.clearTimeout(autoPlayer);
        autoPlayer = false;
    }
}

function bgloader_event() {
    if (bgloader_semaphore)
        return;
    else
        bgloader_semaphore = true;
    if (img_load_complete()) {
        nextVal = bgcycle + 1;
        nextString = nextVal.toString();
        prevVal = bgcycle - 1;
        prevString = prevVal.toString();
        if (bgcycle == 1) {
            if (!prepare_bg("bg2", arrBgOfferImgs[1]))
                prepare_bg("bg" + bgcycle_max, arrBgOfferImgs[arrBgOfferImgs.length - 1]);
        } else if (bgcycle == bgcycle_max) {
            if (!prepare_bg("bg1", arrBgOfferImgs[0]))
                prepare_bg("bg" + prevString, arrBgOfferImgs[prevVal - 1]);
        } else {
            if (!prepare_bg("bg" + nextString, arrBgOfferImgs[nextVal - 1]));
            prepare_bg("bg" + prevString, arrBgOfferImgs[prevVal - 1]);
        }
    }
    setbuttons();
    bgloader_semaphore = false;
}

function nextbg() {
    if (bgcycle == bgcycle_max) {
        return arrBgOfferImgs[0];
    } else {
        return arrBgOfferImgs[parseInt(bgcycle)];
    }
}

function prevbg() {
    if (bgcycle == 1) {
        return arrBgOfferImgs[arrBgOfferImgs.length - 1];
    } else {
        return arrBgOfferImgs[parseInt(bgcycle - 2)];
    }
}

function curbg() {
    return arrBgOfferImgs[bgcycle - 1];
}

prevbutton_oldstate = false;
nextbutton_oldstate = false;
function setbuttons() {
    if (fadeeffect_running || fadeout_running || fadein_running) {
        prevbutton = false;
        nextbutton = false;
    } else {
        prevbutton = isready(prevbg());
        nextbutton = isready(nextbg());
    }
    if (prevbutton_oldstate != prevbutton) {
        prevbutton_oldstate = prevbutton;
    }
    if (nextbutton_oldstate != nextbutton) {
        nextbutton_oldstate = nextbutton;
    }
}

function isready(bgname) {
    if (backgrounds == null) {
        backgrounds = jQuery("div.bg_holder");
    }
    for (i = 0; i < backgrounds.size(); i++) {
        bgImg = backgrounds.eq(i).css('background-image');
        bgImg = bgImg.replace("'", "").replace("'", "");
        bgImg = bgImg.replace('"', "").replace('"', "");
        if (bgImg == bgname) break;
    }
    if (i >= backgrounds.size()) {
        return false;
    } else if (backgrounds.eq(i).css('background-image').replace("'", "").replace('"', "").replace("'", "").replace('"', "") == "none") {
        return false;
    } else {
        return true;
    }
}

function bgcycle_next() {
    if (!isready(nextbg())) {
        return;
    }
    stopPlayer();
    fade(curbg(), nextbg());
    oldbg = bgcycle;
    if (oldbg == bgcycle_max) {
        bgcycle = 1;
    } else {
        bgcycle++;
    }
    startPlayer();
}

function bgcycle_prev() {
    if (!isready(prevbg())) {
        return;
    }
    stopPlayer();
    fade(curbg(), prevbg());
    oldbg = bgcycle;
    if (oldbg == 1) {
        bgcycle = bgcycle_max;
    } else {
        bgcycle--;
    }
    startPlayer();
}


fadeeffect_running = false;
fadeeffect_semaphore = false;
fadeeffect_oldbg = "";
fadeeffect_newbg = "";
fadeeffect_step = 0;
fadeeffect_id = 0;

fadeeffect_speed = 25;


function fade(olddiv, newdiv) {
    if (!fadeeffect_running) {
        fadeeffect_running = true;
        setbuttons();
        fadeeffect_oldbg = olddiv;
        fadeeffect_newbg = newdiv;
        fadeeffect_step = 1;
        fadeeffect_id = window.setInterval("fade_event()", fadeeffect_speed);
    }
}

function fade_event_clear() {
    fadeeffect_step = 0;
    window.clearInterval(fadeeffect_id);
    fadeeffect_running = false;
    setbuttons();
}

function fade_event() {
    if (fadeeffect_semaphore) {
        return;
    } else {
        fadeeffect_semaphore = true;
    }
    if (backgrounds == null) {
        backgrounds = jQuery("div.bg_holder");
    }
	for (k = 0; k < backgrounds.size() && backgrounds.eq(k).css('background-image').replace("'", "").replace('"', "").replace("'", "").replace('"', "") != fadeeffect_newbg; k++) { }
	if (!(k < backgrounds.size() && backgrounds.eq(k).css('background-image') == "none")) {
		if(fadeeffect_step == 2)
		{
			if(!fadein_step()) {
				fade_event_clear();
			}
		} else if(!fadeout_step()) {
			if (!img_load_complete()) {
				return;
			}
			k++;
			for (j = 1; j <= bgcycle_max; j++)
			{
				bgArray = document.getElementsByName("bg" + j.toString());
				bgClickArray = document.getElementsByName("clickarea_bg" + j.toString());
				if(bgArray.length != 0) {
					if(k != j) { 
						bgArray[0].style.display = "none";
						bgClickArray[0].style.display = "none";
					} else {
						bgArray[0].style.display = "block";
						bgClickArray[0].style.display = "block";
					}
				}
			}
			fadeeffect_step = 2;
		}
	}
    fadeeffect_semaphore = false;
}

opacity_step = 0;
fadeout_running = false;
fadein_running = false;
opacity_steps = new Array(100, 94, 88, 81, 75, 69, 63, 56, 50, 44, 38, 31, 25, 19, 13, 6, 0);
opacity_steps_nonie = new Array(1, 0.9375, 0.875, 0.8125, 0.75, 0.6875, 0.625, 0.5625, 0.5, 0.4375, 0.375, 0.3125, 0.25, 0.1875, 0.124, 0.0625, 0);

function fadeout_step() {
    if (fadeeffect_oldbg == '') return false;
    if (fadeables == null) {
        fadeables = jQuery("div.fadeable");
    }
    if (!fadeout_running) {
        fadeout_running = true;
        if (backgrounds == null) {
            backgrounds = jQuery("div.bg_holder");
        }
        for (i = 0; i < backgrounds.size() && backgrounds.eq(i).css('background-image').replace("'", "").replace('"', "").replace("'", "").replace('"', "") != fadeeffect_oldbg; i++) { }
        oldBgArray = document.getElementsByName("bg" + (i + 1).toString());
        oldBg = oldBgArray[0];
        opacity_step = 0;
    }
    if (opacity_step == opacity_steps.length) {
        fadeout_running = false;
        return false;
    } else {
        if (!jQuery.browser.msie) {
            oldBg.style.opacity = opacity_steps_nonie[opacity_step];
        } else {
            jQuery(oldBg).css('filter', 'alpha(opacity=' + opacity_steps[opacity_step] + ')');
        }
        for (i = 0; i < fadeables.length; i++) {
            if (!jQuery.browser.msie) {
                fadeables[i].style.opacity = opacity_steps_nonie[opacity_step];
            } else {
                jQuery(fadeables[i]).css('filter', 'alpha(opacity=' + opacity_steps[opacity_step] + ')');
            }
        }
        opacity_step++;
        return true;
    }
}

function fadein_step() {
    if (fadeables == null) {
        fadeables = jQuery("div.fadeable");
    }
    if (!fadein_running) {
        fadein_running = true;
        if (backgrounds == null) {
            backgrounds = jQuery("div.bg_holder");
        }
        for (i = 0; i < backgrounds.size() && backgrounds.eq(i).css('background-image').replace("'", "").replace('"', "").replace("'", "").replace('"', "") != fadeeffect_newbg; i++) { }
        newBgArray = document.getElementsByName("bg" + (i + 1).toString());
        newBg = newBgArray[0];
        opacity_step = opacity_steps.length - 1;
    }
    if (opacity_step == -1) {
        fadein_running = false;
        return false;
    } else {
        if (!jQuery.browser.msie) {
            newBg.style.opacity = opacity_steps_nonie[opacity_step];
        } else {
            jQuery(newBg).css('filter', 'alpha(opacity=' + opacity_steps[opacity_step] + ')');
        }
        for (i = 0; i < fadeables.length; i++) {
            if (!jQuery.browser.msie) {
                fadeables[i].style.opacity = opacity_steps_nonie[opacity_step];
            } else {
                if (opacity_steps[opacity_step] == 100) {
                    jQuery(fadeables[i]).css('filter', 'none');
                } else {
                    jQuery(fadeables[i]).css('filter', 'alpha(opacity=' + opacity_steps[opacity_step] + ')');
                }
            }
        }
        opacity_step--;
        return true;
    }
}

fadein_running = false;

jQuery(document).ready(function() { initSlider(); });

window.onunload = dispose

function dispose() {
	stopPlayer();
	if (bgloader) {
		window.clearInterval(bgloader);
	}
	if (fadeeffect_running) {
		window.clearInterval(fadeeffect_id);
	}
}
