var cPageSwapGlobalArray = new Array();

jQuery((document)).ready(function () {
    jQuery(".pageSwapContainer").each(function () {
        cPageSwapGlobalArray.push(new cPageSwap(this));
    });
});

function cPageSwap(dom_element) {
    var obj_ref = this;
    this.pages = new Array();
    this.current_slide = null;

    /*--This part of the code is responsible for ensuring that the pages array is populated --*/
    jQuery((dom_element)).find(".pageSwapPage").each(function () {
        obj_ref.pages.push(this);
        if (obj_ref.pages.length == 1) {
            this.style.left = "0px";
            cPageSwapAddStyle(this, true);
            obj_ref.current_slide = this;   //Makes sure that the first slide is in the current_slide variable
        }
        else {
            cPageSwapAddStyle(this, false);
        }
        this.page_swap_object = obj_ref; //Gives this dom element a way to reference the cPageSwap object using it
    });

    /*--This part of the code is responsible for ensuring the events are tied into each page--*/
    for (var i = 0; i < this.pages.length; i++) {
        var this_page = this.pages[i];
        cPageSwapAddArrowEvents(this_page);
    }

    this.Change_Page = function (index) {
        var new_page = obj_ref.pages[index];
        jQuery((obj_ref.current_slide)).animate({ opacity: 0 }, 1000, 'linear', function () {
            jQuery((this)).css("opacity", 1);
            jQuery((this)).css("left", jQuery((document)).width() + "px");
        });
        jQuery((new_page)).animate({ left: 0 }, 1000, 'linear');

        obj_ref.current_slide = obj_ref.pages[index];
    }
}

function cPageSwapAddArrowEvents(dom_element) {
    var cPageSwapRef = dom_element.page_swap_object; //gets the page swap object for this from element
    jQuery((dom_element)).find(".cPageSwapBackButton").each(function () {
        this.onclick = function () {
            cPageSwapRef.Change_Page(0); //changing the index to 0 activates the home page
        }
    });
    jQuery((dom_element)).find("[class*=cPageSwapNav]").each(function () {
        var classes = this.className.split(" ");
        for (var i = 0; i < classes.length; i++) {
            if (classes[i].indexOf("cPageSwapNav") == 0) {
                this.cPageSwapIndex = parseInt(classes[i].replace("cPageSwapNav", ""));
            }
        }
        this.onclick = function () {
            cPageSwapRef.Change_Page(this.cPageSwapIndex);
        }
    });
}

function cPageSwapAddStyle(slide, isfirst) {
    var parent = slide.parentNode;
    if (slide.parentNode.style.position != "absolute") {
        slide.parentNode.style.position = "relative";
    }
    slide.style.position = "absolute";
	slide.style.top = "0px";
    if (isfirst) {
        slide.style.left = "0px";
    }
    else {
        var page_width = jQuery((document)).width();
        slide.style.left = page_width + "px";
    }
}

function cPageSwapExternalSwap(index, slide){
	var this_page_swap = cPageSwapGlobalArray[index];
	this_page_swap.Change_Page(slide);
}
