/* Copyright (c) 2008 Kean Loong Tan http://www.gimiti.com/kltan
 * Licensed under the MIT (http://www.opensource.org/licenses/mit-license.php)
 * jFlow
 * Version: 1.2 (July 7, 2008)
 * Requires: jQuery 1.2+
 * 
 * This is a modified version of the original jFlow with automatic scroll:
 * you can choose the scroll direction, modifing the 'direction' parameter 
 * ('left' or 'right') when calling the function on your document.
 * Edited by Mauro Belgiovine (geek89@gmail.com) on October 20, 2010.
 *
 * Modified again by Josh Darvill for spyka Webmaster templates, removing
 * the annoying Javascript Messages in IE6-8
 */
 
(function($) {

	$.fn.jFlow = function(options) {
		var opts = $.extend({}, $.fn.jFlow.defaults, options);
		var randNum = Math.floor(Math.random()*11);
		var jFC = opts.controller;
		var jFS =  opts.slideWrapper;
		var jSel = opts.selectedWrapper;

		var cur = 0;
		var timer;
		var maxi = $(jFC).length - 1;
		var autoMove = opts.next;
		var displayDuration = 7500;
		
		// sliding function
		var slide = function (dur, i) {
			$(opts.slides).children().css({
				overflow:"hidden"
			});
			$(opts.slides + " iframe").hide().addClass("temp_hide");
			$(opts.slides).animate({
				marginLeft: "-" + (i * $(opts.slides).find(":first-child").width() + "px")
				},
				opts.duration*(dur),
				opts.easing,
				function(){
					$(opts.slides).fadeIn('200');
					$(opts.slides).children().css({
						overflow:"hidden"
					});
					$(".temp_hide").show();
				}
			);
			
		}
		$(this).find(jFC).each(function(i){
			$(this).click(function(){
				dotimer();
				if ($(opts.slides).is(":not(:animated)")) {
					$(jFC).removeClass(jSel);
					$(this).addClass(jSel);
					if(opts.direction == 'right'){ //direction edit for controller
						that = maxi - i;
					} else {
						that = i;
					}
					var dur = Math.abs(cur-that);
					slide(dur,that);
					cur = that;
				}
			});
		});	
		
		$(opts.slides).before('<div id="'+jFS.substring(1, jFS.length)+'"></div>').appendTo(jFS);
		
		$(opts.slides).find("div").each(function(){
			$(this).before('<div class="jFlowSlideContainer"></div>').appendTo($(this).prev());
		});
		
		//direction settings
		if(opts.direction == 'right'){
			cur = maxi; //starting from last slide
			autoMove = opts.prev; //changing the auto-scroll direction
			$(opts.slides).children().each(function(e){ //inverting the slide order
				if(e > 0){
					var child = $(this).detach();
					$(opts.slides).prepend(child);
				}
			});
		}
		
		
		//initialize the controller
		$(jFC).eq(cur).addClass(jSel);
		
		var resize = function (x){
			$(jFS).css({
				position:"relative",
				width: opts.width,
				height: opts.height,
				overflow: "hidden"
			});
			//opts.slides or #mySlides container
			$(opts.slides).css({
				position:"relative",
				width: $(jFS).width()*$(jFC).length+"px",
				height: $(jFS).height()+"px",
				overflow: "hidden"
			});
			// jFlowSlideContainer
			$(opts.slides).children().css({
				position:"relative",
				width: $(jFS).width()+"px",
				height: $(jFS).height()+"px",
				"float":"left",
				overflow:"hidden"
			});
			
			$(opts.slides).css({
				marginLeft: "-" + (cur * $(opts.slides).find(":eq(0)").width() + "px")
			});
		}
		
		// sets initial size
		resize();

		// resets size
		$(window).resize(function(){
			resize();						  
		});
		
		$(opts.prev).click(function(){
			dotimer();
			doprev();
			
		});
		
		$(opts.next).click(function(){
			dotimer();
			donext();
			
		});
		
		var doprev = function (x){
			if ($(opts.slides).is(":not(:animated)")) {
				var dur = 1;
				if (cur > 0)
					cur--;
				else {
					cur = maxi;
					dur = cur;
				}
				$(jFC).removeClass(jSel);
				slide(dur,cur);
				$(jFC).eq(cur).addClass(jSel);
			}
		}
		
		var donext = function (x){
			if ($(opts.slides).is(":not(:animated)")) {
				var dur = 1;
				if (cur < maxi)
					cur++;
				else {
					cur = 0;
					dur = maxi;
				}
				$(jFC).removeClass(jSel);
				//$(jFS).fadeOut("fast");
				slide(dur, cur);
				//$(jFS).fadeIn("fast");
				$(jFC).eq(cur).addClass(jSel);
			}
		}
		
		var dotimer = function (x){
			if((opts.auto) == true) {
				if(timer != null) 
					clearInterval(timer);
			    
        		timer = setInterval(function() {
	                	$(autoMove).click();
						}, displayDuration);
			}
		}

		dotimer();
	};
	
	$.fn.jFlow.defaults = {
		controller: ".jFlowControl", // must be class, use . sign
		slideWrapper : "#jFlowSlide", // must be id, use # sign
		selectedWrapper: "jFlowSelected",  // just pure text, no sign
		auto: false,
		direction: 'left', //'left' (default) or 'right'
		easing: "swing",
		duration: 400,
		width: "100%",
		prev: ".jFlowPrev", // must be class, use . sign
		next: ".jFlowNext" // must be class, use . sign
	};
	
})(jQuery);


(function (f)
{
    f.cookie = function (l, s, v)
    {
        if (typeof s != "undefined")
        {
            v = v || {};
            if (s === null) {
                s = "";
                v.expires =- 1
            }
            var o = "";
            if (v.expires && (typeof v.expires == "number" || v.expires.toUTCString))
            {
                var p;
                if (typeof v.expires == "number") {
                    p = new Date();
                    p.setTime(p.getTime() + (v.expires * 24 * 60 * 60 * 1000))
                }
                else {
                    p = v.expires
                }
                o = "; expires=" + p.toUTCString()
            }
            var u = v.path ? "; path=" + (v.path) : "";
            var q = v.domain ? "; domain=" + (v.domain) : "";
            var k = v.secure ? "; secure" : "";
            document.cookie = [l, "=", encodeURIComponent(s), o, u, q, k].join("")
        }
        else
        {
            var n = null;
            if (document.cookie && document.cookie != "")
            {
                var t = document.cookie.split(";");
                for (var r = 0; r < t.length; r++)
                {
                    var m = f.trim(t[r]);
                    if (m.substring(0, l.length + 1) == (l + "=")) {
                        n = decodeURIComponent(m.substring(l.length + 1));
                        break
                    }
                }
            }
            return n;
        }
    };
    f.cookie("Dash-detect-cookies", "is_working");
    var d = f.cookie("Dash-detect-cookies") == "is_working";
    f.fn.Dashboard = function (k)
    {
        var l = {
            columns : 2, columnWidth : null, dragOpacity : 0.65, showSector : true
        };
        k = f.extend(l, k);
        return this.each(function ()
        {
            var s = document.createElement("div");
            f(s).addClass("DashboardSection");
            if (!k.showSector) {
                f(s).css({
                    visibility : "hidden"
                })
            }
            var A = f(this);
            this.sector = s;
            A.addClass("Dash").append(s);
            var w = A.children("div.BoxContents");
            var C = document.createElement("table");
            var v = document.createElement("tbody");
            var q = document.createElement("tr");
            var y = [];
            for (var x = 0; x < k.columns; x++)
            {
                var r = document.createElement("td");
                f(r).addClass("Dash-column");
                f(r).css({
                    width : k.columnWidth == null ? Math.floor(100 / k.columns) + "%" : k.columnWidth
                });
                f(q).append(r);
                y.push(r)
            }
            f(C).attr({
                cellPadding : 0, cellSpacing : 0
            });
            if (k.columnWidth == null) {
                f(C).css({
                    width : "100%"
                })
            }
            C.appendChild(v);
            v.appendChild(q);
            this.appendChild(C);
            if (d)
            {
                var n;
                if (!f.cookie("Dash-collapse-" + A.attr("id")) || f.cookie("Dash-collapse-" + A.attr("id")).split("-").length != w.length)
                {
                    n = "";
                    for (var t = 0; t < w.length; t++) {
                        n += (t > 0 ? "-0" : "0")
                    }
                    f.cookie("Dash-collapse-" + A.attr("id"), n, {
                        expires : 365
                    })
                }
                if (!f.cookie("Dash-index-" + A.attr("id")) || f.cookie("Dash-index-" + A.attr("id")).split("|").length != w.length)
                {
                    n = "";
                    var o = 0;
                    for (var t = 0; t < w.length; t++) {
                        n += (t > 0 ? "|" : "") + o + "," + t;
                        o++;
                        if (o >= y.length) {
                            o = 0;
                        }
                    }
                    f.cookie("Dash-index-" + A.attr("id"), n, {
                        expires : 365
                    })
                }
                var z = f.cookie("Dash-collapse-" + A.attr("id")).split("-");
                var m = f.cookie("Dash-index-" + A.attr("id")).split("|")
            }
            w.each(function (H)
            {
                var J = f(this);
                this.DashCollapse = false;
                this.DashId = H;
                this.dragOpacity = k.dragOpacity;
                this.offset = {
                    click : {
                        left : 0, top : 0
                    },
                    left : 0, top : 0
                };
                var L = J.children("h1.BoxTitle:first-child");
                var O;
                if (L.children("div.BoxToolbar").length) {
                    O = L.children("div.BoxToolbar")[0]
                }
                L.children("div.BoxToolbar").remove();
                var N = L.html();
                L.html("");
                var P = document.createElement("table");
                var E = document.createElement("tbody");
                var M = document.createElement("tr");
                var G = document.createElement("td");
                var F = document.createElement("td");
                f(P).attr({
                    cellPadding : 0, cellSpacing : 0
                }).css({
                    width : "100%"
                });
                P.appendChild(E);
                E.appendChild(M);
                if (O)
                {
                    var K = document.createElement("tr");
                    var D = document.createElement("td");
                    E.appendChild(K);
                    K.appendChild(D);
                    f(D).attr("colspan", "2");
                    D.appendChild(O)
                }
                f(G).css({
                    verticalAlign : "middle"
                });
                f(F).css({
                    width : 31, verticalAlign : "middle"
                });
                M.appendChild(G);
                M.appendChild(F);
                L.append(P);
                var I = document.createElement("div");
                G.appendChild(I);
                f(I).html(N).addClass("BoxTitle-title");
                var u = document.createElement("div");
                f(u).addClass("BoxTitle-collapse").click(g);
                F.appendChild(u);
                f(I).mousedown(f.proxy(i, this));
                f(document).mousemove(f.proxy(j, this)).mouseup(f.proxy(e, this));
                if (d && z[H] == "1")
                {
                    J.children("div.BoxBody").css({
                        display : "none"
                    });
                    J.addClass("collapse");
                    this.DashCollapse = true;
                }
            });
            if (d)
            {
                var p = [];
                for (var B = 0; B < m.length; B++) {
                    p.push(m[B].split(",")[1])
                }
                for (var t = 0; t < w.length; t++) {
                    f(y[Math.min(m[t].split(",")[0], y.length - 1)]).append(w[m[t].split(",")[1]])
                }
            }
            else {
                var o = 0;
                for (var t = 0; t < w.length; t++) {
                    f(y[o]).append(w[t]);
                    o++;
                    if (o >= k.columns) {
                        o = 0;
                    }
                }
            }
        })
    };
    function i(l)
    {
        var k = f(this);
        if (!this.isDragging && !this.dragInit)
        {
            this.offset.left = k.offset().left;
            this.offset.top = k.offset().top;
            this.offset.click.left = l.pageX - k.offset().left;
            this.offset.click.top = l.pageY - k.offset().top;
            this.dragInit = true;
            k.css({
                position : "relative"
            })
        }
        l.preventDefault()
    }
    function j(l)
    {
        var k = f(this);
        if (this.dragInit && !this.isDragging)
        {
            this.isDragging = true;
            this.dragInit = false;
            f.proxy(c, this)(l);
            k.css({
                opacity : this.dragOpacity
            });
            this.offset.left = k.offset().left;
            this.offset.top = k.offset().top
        }
        if (this.isDragging)
        {
            k.css(
            {
                left : l.pageX - this.offset.left - this.offset.click.left, top : l.pageY - this.offset.top - this.offset.click.top
            });
            f.proxy(b, this)(l)
        }
        l.preventDefault()
    }
    function e(k)
    {
        if (this.isDragging || this.dragInit)
        {
            if (this.isDragging) {
                f.proxy(h, this)(k)
            }
            this.isDragging = false;
            this.dragInit = false;
            f(this).css({
                opacity : 1
            })
        }
        k.preventDefault()
    }
    function c(m)
    {
        var l = f(this);
        l.addClass("dragging");
        var k = l.parents("div.Dash")[0].sector;
        f(k).insertAfter(this);
        l.css(
        {
            marginBottom :- this.offsetHeight - (l.is(":last-child") ? 0 : parseFloat(l.css("marginTop")))
        });
        f(k).css(
        {
            display : "block", height : this.offsetHeight + (parseFloat(l.css("paddingTop")) - parseFloat(f(k).css("paddingTop"))) + (parseFloat(l.css("paddingBottom")) - parseFloat(f(k).css("paddingBottom"))) - parseFloat(f(k).css("borderTopWidth")) - parseFloat(f(k).css("borderBottomWidth")) - parseFloat(l.css("paddingTop")) - parseFloat(l.css("paddingBottom"))
        })
    }
    function b(m)
    {
        var l = f(this);
        var k = l.parents("div.Dash")[0].sector;
        var n = this;
        l.parents("tr").children("td.Dash-column").each(function ()
        {
            var o = f(this);
            if ((o.children().length == 0 || (o.children().length == 1 && o.children()[0] == n)) && l.offset().left + n.offsetWidth / 2 - 10 > o.offset().left && l.offset().left + n.offsetWidth / 2 + 10 < o.offset().left + this.offsetWidth) {
                f(o.parents("div.Dash")[0].sector).appendTo(this);
                f.proxy(a, n)(m)
            }
        });
        l.parents("div.Dash").find("div.BoxContents").each(function ()
        {
            var o = f(this);
            if (this != n)
            {
                if (l.offset().left + n.offsetWidth / 2 - 10 > o.offset().left && l.offset().left + n.offsetWidth / 2 + 10 < o.offset().left + this.offsetWidth && ((l.offset().top > o.offset().top && l.offset().top + 10 < o.offset().top + this.offsetHeight / 2) || ((o.is(":first-child") || (l.is(":first-child") && o.prev()[0] == n)) && l.offset().top + 10 < o.offset().top + this.offsetHeight / 2)) && o.prev()[0] != k) {
                    f(o.parents("div.Dash")[0].sector).insertBefore(this);
                    f.proxy(a, n)(m)
                }
                else
                {
                    if (l.offset().left + n.offsetWidth / 2 - 10 > o.offset().left && l.offset().left + n.offsetWidth / 2 + 10 < o.offset().left + this.offsetWidth && ((l.offset().top + n.offsetHeight - 10 > o.offset().top + this.offsetHeight / 2 && l.offset().top + n.offsetHeight + 10 < o.offset().top + this.offsetHeight) || ((o.is(":last-child") || (l.is(":last-child") && o.next()[0] == n)) && l.offset().top + n.offsetHeight - 10 > o.offset().top + this.offsetHeight / 2)) && o.next().next()[0] != k) {
                        f(o.parents("div.Dash")[0].sector).insertAfter(this);
                        f.proxy(a, n)(m)
                    }
                }
            }
        });
        l.css(
        {
            marginBottom :- this.offsetHeight - (l.is(":last-child") ? 0 : parseFloat(l.css("marginTop")))
        })
    }
    function h()
    {
        var q = f(this);
        q.css({
            marginBottom :- this.offsetHeight - parseFloat(q.css("marginTop"))
        });
        var o = q.parents("div.Dash")[0].sector;
        q.css(
        {
            top : q.offset().top - f(o).offset().top, left : q.offset().left - f(o).parent("td.Dash-column").offset().left - parseFloat(q.css("marginLeft"))
        });
        q.insertBefore(o);
        q.animate({
            left : 0, top : 0
        },
        "fast", "", function ()
        {
            q.removeClass("dragging");
            f(o).css({
                display : "none"
            });
            q.css({
                marginBottom : parseFloat(q.css("marginTop"))
            })
        });
        if (d)
        {
            var k = "";
            var m = 0;
            var l = q.parents("div.Dash").find("div.BoxContents").toArray();
            var p = q.parents("div.Dash").find("td.Dash-column").length;
            for (var n = 0; n < l.length; n++)
            {
                k += (n > 0 ? "|" : "") + f(l[n]).parents("td.Dash-column").index() + "," + l[n].DashId;
                m++;
                if (m >= p) {
                    m = 0;
                }
            }
            f.cookie("Dash-index-" + q.parents("div.Dash").attr("id"), k, {
                expires : 365
            })
        }
    }
    function a(l)
    {
        var k = f(this);
        this.offset.left = k.offset().left - parseFloat(k.css("left"));
        this.offset.top = k.offset().top - parseFloat(k.css("top"));
        k.css(
        {
            left : l.pageX - this.offset.left - this.offset.click.left, top : l.pageY - this.offset.top - this.offset.click.top
        })
    }
    function g()
    {
        var p = f(this);
        var k = p.parents("div.BoxContents").children("div.BoxBody");
        if (d)
        {
            p.parents("div.BoxContents")[0].DashCollapse = k.css("display") != "none";
            var l = p.parents("div.Dash").find("div.BoxContents");
            var n = "";
            for (var o = 0; o < l.length; o++)
            {
                for (var m = 0; m < l.length; m++)
                {
                    if (l[m].DashId == o) {
                        n += (n == "" ? (l[m].DashCollapse ? "1" : "0") : "-" + (l[m].DashCollapse ? "1" : "0"));
                        break
                    }
                }
            }
            f.cookie("Dash-collapse-" + p.parents("div.Dash").attr("id"), n, {
                expires : 365
            })
        }
        k.slideToggle("fast", function ()
        {
            if (k.css("display") == "none") {
                k.parents("div.BoxContents").addClass("collapse")
            }
        });
        if (k.css("display") == "block") {
            k.parents("div.BoxContents").removeClass("collapse")
        }
    }
})(jQuery);

