/**
* @author Bruno Bornsztein <bruno@missingmethod.com>
* @copyright 2007 Curbly LLC
* @package Glider
* @license MIT
* @url http://www.missingmethod.com/projects/glider/
* @version 0.0.3
* @dependencies prototype.js 1.5.1+, effects.js
*/

/*  Thanks to Andrew Dupont for refactoring help and code cleanup - http://andrewdupont.net/  */

//*** AJH Extra bits ***
var intCurrent;
intCurrent = 1;

var intMax;
//intMax = 8;

var PageURL;

Glider = Class.create();
Object.extend(Object.extend(Glider.prototype, Abstract.prototype), {
    initialize: function (wrapper, options, setMax) {

        this.scrolling = false;
        this.wrapper = $(wrapper);
        this.scroller = this.wrapper.down('div.scroller');
        this.sections = this.wrapper.getElementsBySelector('div.section');
        this.options = Object.extend({ duration: 1.0, frequency: 3 }, options || {}); //3

        intMax = setMax

        this.sections.each(function (section, index) {
            section._index = index;
        });

        this.events = {
            click: this.click.bind(this)
        };

        this.addObservers();
        if (this.options.initialSection) this.moveTo(this.options.initialSection, this.scroller, { duration: this.options.duration });  // initialSection should be the id of the section you want to show up on load
        if (this.options.autoGlide) this.start();

        setHighlight(intCurrent);
    },

    addObservers: function () {
        var controls = this.wrapper.getElementsBySelector('div.controls a');
        controls.invoke('observe', 'click', this.events.click);
    },

    click: function (event) {
        this.stop();
        var element = Event.findElement(event, 'a');
        if (this.scrolling) this.scrolling.cancel();

        var elementId;
        elementId = element.href.split("#")[1];
        if (elementId.length <= 7) {
            elementId = elementId.replace('n', 'section');
        }


        this.moveTo(elementId, this.scroller, { duration: this.options.duration });
        Event.stop(event);

        //*** AJH ***
        var strURL
        strURL = element.href.split("#")[1];
        strURL = strURL.replace('n', 'section');
        intCurrent = strURL.split("n")[1];

        clearAll();
        //alert(element.href);
        setHighlight(intCurrent);
    },

    moveTo: function (element, container, options) {
        this.current = $(element);
        var tmpCurrent
        tmpCurrent = this.current.id.split("n")[1];
        //alert("to move to:" + tmpCurrent);

        if ((eval(tmpCurrent) + eval(5)) >= intMax) {
            if ((eval(tmpCurrent) + eval(3)) > intMax) {
                //alert('Here1');
                this.current = document.getElementById("section" + (intMax - 4));
                if (!this.current) {
                    //alert('Here6');
                    this.current = document.getElementById("section1");
                };
            } else {
                //alert('Here2');
                this.current = document.getElementById("section" + (tmpCurrent - 2));
                if (!this.current) {
                    //alert('Here3');
                    this.current = document.getElementById("section1");
                };
            }
        } else {
            if ((eval(tmpCurrent) - eval(2)) <= 0) {
                //alert('Here4');
                this.current = document.getElementById("section" + (1));
            } else {
                //alert('Here5');
                this.current = document.getElementById("section" + (eval(tmpCurrent) - eval(2)));
            }
        }

        //alert("section" + (eval(tmpCurrent) - eval(2)));
        element = this.current.id;

        Position.prepare();
        var containerOffset = Position.cumulativeOffset(container),
	        elementOffset = Position.cumulativeOffset($(element));

        this.scrolling = new Effect.SmoothScroll(container,
			    { duration: options.duration, x: (elementOffset[0] - containerOffset[0]), y: (elementOffset[1] - containerOffset[1]) });
        return false;

    },

    next: function () {
        if (this.current) {
            intCurrent = intCurrent - 1

            var currentIndex = intCurrent;
            var nextIndex = (this.sections.length - 1 == currentIndex) ? 0 : currentIndex + 1;
            currentIndex + 1;
        } else {
            var nextIndex = 1
        }

        this.moveTo(this.sections[nextIndex], this.scroller, {
            duration: this.options.duration
        });

        clearAll();
        intCurrent = this.sections[nextIndex].id.split("n")[1];
        setHighlight(intCurrent);
    },

    previous: function () {
        if (this.current) {

            intCurrent = intCurrent - 1

            var currentIndex = intCurrent;
            var prevIndex = (currentIndex == 0) ? this.sections.length - 1 :
       currentIndex - 1;
        } else {
            var prevIndex = this.sections.length - 1;
        }
        this.moveTo(this.sections[prevIndex], this.scroller, {
            duration: this.options.duration
        });

        clearAll();
        intCurrent = this.sections[prevIndex].id.split("n")[1];
        setHighlight(intCurrent);
    },

    stop: function () {
        clearTimeout(this.timer);
    },

    start: function () {
        this.periodicallyUpdate();
    },

    periodicallyUpdate: function () {
        if (this.timer != null) {
            clearTimeout(this.timer);
            this.next();
        }
        this.timer = setTimeout(this.periodicallyUpdate.bind(this), this.options.frequency * 1000);
    }

});

Effect.SmoothScroll = Class.create();
Object.extend(Object.extend(Effect.SmoothScroll.prototype, Effect.Base.prototype), {
    initialize: function (element) {
        this.element = $(element);
        var options = Object.extend({
            x: 0,
            y: 0,
            mode: 'absolute'
        }, arguments[1] || {});
        this.start(options);
    },
    setup: function () {
        if (this.options.continuous && !this.element._ext) {
            this.element.cleanWhitespace();
            this.element._ext = true;
            this.element.appendChild(this.element.firstChild);
        }

        this.originalLeft = this.element.scrollLeft;
        this.originalTop = this.element.scrollTop;

        if (this.options.mode == 'absolute') {
            this.options.x -= this.originalLeft;
            this.options.y -= this.originalTop;
        }
    },
    update: function (position) {
        this.element.scrollLeft = this.options.x * position + this.originalLeft;
        this.element.scrollTop = this.options.y * position + this.originalTop;
    }
});

function setHighlight(boxNumber) {
    var box;
    box = document.getElementById('section' + boxNumber);


    intCurrent = boxNumber;


    //alert(boxNumber);
    box.style.border = "3px solid #C00000";

    var mainImage;
    mainImage = document.getElementById('divMain' + boxNumber);
    mainImage.style.display = "block";

    //Refresh AdTech Ads
    RefreshAds(boxNumber);


    try {
        //Covergirls specific "From the article"
        var articleTitle;
        articleTitle = document.getElementById('divArticleTitle' + boxNumber);

        var articleLink;
        articleLink = document.getElementById('divArticleURL' + boxNumber);

        var articleLinkTop
        articleLinkTop = document.getElementById('divArticleLink');
        if (articleTitle.innerHTML != '') {
            articleLinkTop.innerHTML = "<span style='font-size: 12px;'>From the article: </span><a class='lnkArticleLink' href='" + articleLink.innerHTML + "'>" + articleTitle.innerHTML + "</a>";
        }
        else {
            articleLinkTop.innerHTML = "";
        }

    } catch (err) {
    }


    try {
        //Honey specific stuff
        setHoneyRating(boxNumber);
        setHoneyKeyWords(boxNumber);
    } catch (err) {
    }
}

function setHoneyKeyWords(boxNumber) {
    var root = location.protocol + '//' + location.host;
    var keywordsList = document.getElementById('divTagKeyWords' + boxNumber).innerHTML;
    var aryKeywords;
    var urlStrings;
    if (boxNumber >= 1) {
        if (keywordsList.length >= 1) {
            aryKeywords = keywordsList.split("|");
            urlStrings += '<p>'
            for (var i = 0; i < aryKeywords.length; i++) {
                if (aryKeywords[i].length >= 5) {
                    urlStrings += '<a href="' + root + '/girls/high-street-honeys/find-photos/' + aryKeywords[i].trim() + '">' + aryKeywords[i] + '</a> | ';
                }
            }
            if (urlStrings.substr(urlStrings.length - 2, urlStrings.length) == "| ") {
                j$("#divFiledUnderKeywords").html(urlStrings.substr(0, urlStrings.length - 2).replace("undefined", ""));
            } else {
                j$("#divFiledUnderKeywords").html(urlStrings.replace("undefined", ""));
            }
            urlStrings += '</p>'
        } else {
            j$("#divFiledUnderKeywords").html("&nbsp;");
        }
    }
}

function setHoneyRating(boxNumber) {
    if (boxNumber >= 1) {
        var contentMediaID = document.getElementById('divContentMediaID' + boxNumber).innerHTML;
        //Gets and sets the content rating
        var avgRating = document.getElementById('divAvgRatings' + boxNumber).innerHTML;

        if (parseInt(avgRating) >= 1) { avgRating = '\+' + avgRating; }

        document.getElementById('divAvgRatings').innerHTML = avgRating;
        document.getElementById('divTotalRatings').innerHTML = document.getElementById('divTotalRatings' + boxNumber).innerHTML + " votes";
        //Set the current selected box item by the user
        document.getElementById('divSelectedBoxItem').innerHTML = boxNumber;

        postBackHiddenField(contentMediaID);
    }
}

function clearAll() {
    for (i = 1; i <= intMax; i = i + 1) {
        var box;
        //alert('section' + i);
        box = document.getElementById('section' + i);
        box.style.border = "3px solid transparent";

        var mainImage
        mainImage = document.getElementById('divMain' + i);
        mainImage.style.display = "none";
    }
}

function RefreshAds(boxNumber) {
    //Google Analytics
    if (PageURL) {
        _gaq.push(['bauertracker._trackPageview'], PageURL + 'picture-view');
    }

    if (typeof window.refreshBanner == 'function') {
        refreshBanner();
    }

    if (typeof window.refreshMPU == 'function') {
        refreshMPU();
    }

    if (typeof window.refreshSky == 'function') {
        refreshSky();
    }
}




