var viewer=new Class({mode:'rand',modes:['top','right','bottom','left','alpha'],sizes:{w:480,h:240},fxOptions:{duration:500},interval:5000,initialize:function(items,options){if(options)for(var o in options)this[o]=options[o];if(this.buttons){this.buttons.previous.addEvent('click',this.previous.bind(this,[true]));this.buttons.next.addEvent('click',this.next.bind(this,[true]));}this._current=0;this._previous=null;this.items=items.setStyle('display','none');this.items[this._current].setStyle('display','block');this.disabled=false;this.attrs={left:['left',-this.sizes.w,0,'px'],top:['top',-this.sizes.h,0,'px'],right:['left',this.sizes.w,0,'px'],bottom:['top',this.sizes.h,0,'px'],alpha:['opacity',0,1,'']};this.rand=this.mode=='rand';this.sequence=typeof(this.mode)=='object'?this.mode:false;this.curseq=0;this.timer=null;},walk:function(n,manual){if(this._current!==n&&!this.disabled){this.disabled=true;if(manual){this.stop();}if(this.rand){this.mode=this.modes.getRandom();}else if(this.sequence){this.mode=this.sequence[this.curseq];this.curseq+=this.curseq+1<this.sequence.length?1:-this.curseq;}this._previous=this._current;this._current=n;var a=this.attrs[this.mode].associate(['p','f','t','u']);for(var i=0;i<this.items.length;i++){if(this._current===i){this.items[i].setStyles($extend({'display':'block','z-index':'2'},JSON.decode('{"'+a.p+'":"'+a.f+a.u+'"}')));}else if(this._previous===i){this.items[i].setStyles({'z-index':'1'});}else{this.items[i].setStyles({'display':'none','z-index':'0'});}}this.items[n].set('tween',$merge(this.fxOptions,{onComplete:this.onComplete.bind(this)})).tween(a.p,a.f,a.t);if(this.onWalk)this.onWalk(this._current);}},play:function(wait){this.stop();if(!wait){this.next();}this.timer=this.next.periodical(this.interval,this,[false]);},stop:function(){$clear(this.timer);},next:function(manual){this.walk(this._current+1<this.items.length?this._current+1:0,manual);},previous:function(manual){this.walk(this._current>0?this._current-1:this.items.length-1,manual);},onStart:function(){},onComplete:function(){this.disabled=false;this.items[this._previous].setStyle('display','none');}});

// AUTOLOAD CODE BLOCK (MAY BE CHANGED OR REMOVED)
window.addEvent("domready",
function() {
    Element.implement({
        reflect: function(options) {
            var img = this;
            if (img.get("tag") == "img") {
                options = $extend({
                    height: 0.33,
                    opacity: 0.5
                },
                options);
                img.unreflect();
                function doReflect() {
                    var reflection, reflectionHeight = Math.floor(img.height * options.height),
                    wrapper,
                    context,
                    gradient;
                    if (Browser.Engine.trident) {
                        reflection = new Element("img", {
                            src: img.src,
                            styles: {
                                width: img.width,
                                height: img.height,
                                marginBottom: -img.height + reflectionHeight,
                                filter: "flipv progid:DXImageTransform.Microsoft.Alpha(opacity=" + (options.opacity * 100) + ", style=1, finishOpacity=0, startx=0, starty=0, finishx=0, finishy=" + (options.height * 100) + ")"
                            }
                        });
                    } else {
                        reflection = new Element("canvas");
                        if (!reflection.getContext) return;
                        try {
                            context = reflection.setProperties({
                                width: img.width,
                                height: reflectionHeight
                            }).getContext("2d");
                            context.save();
                            context.translate(0, img.height - 1);
                            context.scale(1, -1);
                            context.drawImage(img, 0, 0, img.width, img.height);
                            context.restore();
                            context.globalCompositeOperation = "destination-out";
                            gradient = context.createLinearGradient(0, 0, 0, reflectionHeight);
                            gradient.addColorStop(0, "rgba(255, 255, 255, " + (1 - options.opacity) + ")");
                            gradient.addColorStop(1, "rgba(255, 255, 255, 1.0)");
                            context.fillStyle = gradient;
                            context.rect(0, 0, img.width, reflectionHeight);
                            context.fill();
                        } catch(e) {
                            return;
                        }
                    }
                    reflection.setAttribute('id', 'canvas');
                    reflection.setStyles({
                        display: "block",
                        border: 0
                    });
                    wrapper = new Element(($(img.parentNode).get("tag") == "a") ? "span": "div").injectAfter(img).adopt(img, reflection);
                    wrapper.className = img.className;
                    img.store("reflected", wrapper.style.cssText = img.style.cssText);
                    wrapper.setStyles({
                        width: img.width,
                        height: img.height + reflectionHeight,
                        overflow: "hidden"
                    });
                    img.style.cssText = "display: block; border: 0px";
                    img.className = "reflected";
                }
                if (img.complete) doReflect();
                else img.onload = doReflect;
            }
            return img;
        },

        unreflect: function() {
            var img = this,
            reflected = this.retrieve("reflected"),
            wrapper;
            img.onload = $empty;
            if (reflected !== null) {
                wrapper = img.parentNode;
                img.className = wrapper.className;
                img.style.cssText = reflected;
                img.store("reflected", null);
                wrapper.parentNode.replaceChild(img, wrapper);
            }
            return img;
        }
    });

    Fx.Scroll2 = new Class({
        'Extends': Fx.Scroll,
        'styleString': Element.getComputedStyle,
        'styleNumber': function(element, style) {
            return this.styleString(element, style).toInt() || 0;
        },
        'borderBox': function(element) {
            return this.styleString(element, '-moz-box-sizing') == 'border-box';
        },
        'topBorder': function(element) {
            return this.styleNumber(element, 'border-top-width');
        },
        'leftBorder': function(element) {
            return this.styleNumber(element, 'border-left-width');
        },
        'isBody': function(element) {
            return (/^(?:body|html)$/i).test(element.tagName);
        },
        'toElement': function(el) {
            var offset = {
                x: 0,
                y: 0
            };
            var element = $(el);
            if (this.isBody(element)) {
                return offset;
            }
            var scroll = element.getScrolls();
            while (element && !this.isBody(element)) {
                offset.x += element.offsetLeft;
                offset.y += element.offsetTop;
                if (Browser.Engine.gecko) {
                    if (!this.borderBox(element)) {
                        offset.x += this.leftBorder(element);
                        offset.y += this.topBorder(element);
                    }
                    var parent = element.parentNode;
                    if (parent && this.styleString(parent, 'overflow') != 'visible') {
                        offset.x += this.leftBorder(parent);
                        offset.y += this.topBorder(parent);
                    }
                } else if (Browser.Engine.trident || Browser.Engine.webkit) {
                    offset.x += this.leftBorder(element);
                    offset.y += this.topBorder(element);
                }
                element = element.offsetParent;
                if (Browser.Engine.trident) {
                    while (element && !element.currentStyle.hasLayout) {
                        element = element.offsetParent;
                    }
                }
            }
            if (Browser.Engine.gecko && !this.borderBox(element)) {
                offset.x -= this.leftBorder(element);
                offset.y -= this.topBorder(element);
            }
            var relative = this.element;
            var relativePosition = (relative && (relative = $(relative))) ? relative.getPosition() : {
                x: 0,
                y: 0
            };
            var position = {
                x: offset.x - scroll.x,
                y: offset.y - scroll.y
            };
            return this.start(position.x - relativePosition.x, position.y - relativePosition.y);
        }
    });

    // start reflect
    function reflectIntro() {
        var splash = $$('.enter');
	    if (!splash) {
            return false
        }
		
		
        
		for(i=0;i<splash.length;i++)
		{
		
		if (i==0) {
			splash[i].getElement('img').reflect({});
		}
		
		splash[i].addEvent('click',
        function(e) {
            e = new Event(e).stop();
			
            var target = this.getAttribute('href');
            selected_lk = $('selected_lk');
            if (selected_lk) {
                selected_lk.removeAttribute('id');
            }
            var main_menu_lks = $$('#main_menu a');
            for (i = 0; i < main_menu_lks.length; i++) {

                if (main_menu_lks[i].getAttribute('href') == target) {
                    main_menu_lks[i].setAttribute('id', 'selected_lk');
                    selected_lk = main_menu_lks[i];
                }
            }

            main_menu_bg.setStyle('left', selected_lk.getPosition($('main_menu_inner')).x);
            if ($('canvas')) {
                var items = [$('envelope'), $('canvas'), $('envelope_wrapper')];
                $('envelope').setStyle('height', 390);
                items[1].inject($('envelope_wrapper'));
                items[1] = $('canvas');
                var itemsFx = new Fx.Elements(items, {
                    duration: 1000,
                    wait: false,
                    transition: Fx.Transitions.Quad.easeInOut,
                    onStart: function() {
                        $$('h1')[0].style.visibility = 'hidden';
                    },
                    onComplete: function() {
                        requestPage.get(target)
                    }
                });
                itemsFx.start({
                    '0': {
                        'height': [0]
                    },
                    '1': {
                        'height': [0]
                    },
                    '2': {
                        'top': [390]
                    }
                });
            } else {
                $$('h1')[0].style.visibility = 'hidden';
                requestPage.get(target);
            }
        });
		}
        var free_gift = $('free_gift');
		if (!free_gift) {
            return false;
        }
        var free_gift_dt = free_gift.getElement('dt');
        var status = 'closed';
        free_gift.set('tween', {
            duration: 500,
            property: 'left',
            transition: Fx.Transitions.Quad.easeInOut
        });

        free_gift_dt.addEvent('click',
        function(e) {
            e = new Event(e).stop();
            if (status == 'closed') {
                free_gift.tween(357);
                status = 'open';
            } else {
               free_gift.tween(680);
                status = 'closed';
            }
        });
		
    }

    // end reflect

    // start rotator
    function rotatorWidget() {
        var rotator = $('rotator');
        if (!rotator) {
            return false;
        }
        var rotator_content = $$('#rotator .rotator_content');
        var rotator_lks = $$('#rotator_nav a');
		//var maxThumbs = rotator_lks.length;
		var maxThumbs = 8;
		
		rotator_lks[0].setAttribute('id', 'active_rotator');
        var rotator_nav = $('rotator_nav');
        var thumb = rotator_nav.getElements('li');
        $('rotator_nav').getElement('ul').setStyle('width', 120 * rotator_lks.length + 1);
        if (rotator_content.length > 1) {
            $('prev1').setStyle('display', 'block');
            $('next1').setStyle('display', 'block');
        }
        if (rotator_content.length > maxThumbs) {
            $('prev2').setStyle('display', 'block');
            $('next2').setStyle('display', 'block');
        }
        var scrolled_thumbs = 0;
        var index;
        var slideshow = new viewer(rotator_content, {
            sizes: {
                w: 765,
                h: 382
            },
            fxOptions: {
                duration: 1000,
                transition: Fx.Transitions.Quad.easeInOut
            },
            interval: 5000,
            modes: ['right'],
            onWalk: function(current_index) {
                rotator_lks.each(function(el, i) {
                    el.removeAttribute('id')
                });
                rotator_lks[current_index].setAttribute('id', 'active_rotator');
                //if (current_index % maxThumbs == 0) {
                    scrolled_thumbs = Math.floor(current_index / maxThumbs);
                    index = current_index;
                    var target = current_index - (rotator_content.length - current_index);
                    if (target < 0) {
                        target = 0
                    }
                    navFx.toElement(thumb[target]);
                //}
            }
        });

        rotator_lks.each(function(el, i) {
            el.addEvent('click',
            function(e) {
                e = new Event(e).stop()
            });
            el.addEvent('click', slideshow.walk.bind(slideshow, [i, true])
            );
        });

        $('prev1').addEvent('click',
        function(e) {
            e = new Event(e).stop()
        });

        $('next1').addEvent('click',
        function(e) {
            e = new Event(e).stop()
        });

        $('prev1').addEvent('click',
        slideshow.previous.bind(slideshow)
        );

        $('next1').addEvent('click',
        slideshow.next.bind(slideshow)
        );

        //slideshow.play(true);

        var navFx = new Fx.Scroll(rotator_nav,
        {
            wait: true,
            wheelStops: false,
            duration: 750,
            transition: Fx.Transitions.Quad.easeInOut
        }
		
        )

        navFx.toElement(thumb[0]);

        $('prev2').addEvent('click', slideshow.stop.bind(slideshow));
        $('prev2').addEvent('click',
        function(e) {
            e = new Event(e).stop();
            scrolled_thumbs--;
            if (scrolled_thumbs < 0) {
                scrolled_thumbs = Math.floor(rotator_content.length / maxThumbs)
            }
            var target = scrolled_thumbs * maxThumbs;
            target = target - (rotator_content.length - target);
            if (target < 0) {
                target = 0
            }
            navFx.toElement(thumb[target]);
        });

        $('next2').addEvent('click', slideshow.stop.bind(slideshow));
        $('next2').addEvent('click',
        function(e) {
            e = new Event(e).stop();
            scrolled_thumbs++;
            if (scrolled_thumbs > Math.floor(rotator_content.length / maxThumbs)) {
                scrolled_thumbs = 0
            }
            var target = scrolled_thumbs * maxThumbs;
            target = target - (rotator_content.length - target);
            if (target < 0) {
                target = 0
            }
            navFx.toElement(thumb[target]);
            //navFx.toElement(thumb[target]);
        });
    }

    // end rotator

    var requestPage = new Request.HTML(
    {
        onRequest: function() {
            if ($('page')) {
                $('content').removeChild($('page'));
            }
            if ($('intro')) {
                $('content').removeChild($('intro'));
            }
        },

        onSuccess: function(responseTree, responseElements, responseHTML, responseJavaScript) {
            var content_elements = responseElements;
            var page = null;
            for (i = 0; i < content_elements.length; i++) {
                if (content_elements[i].getAttribute('id') == 'page')
                {
                    page = content_elements[i]
                }
                if (content_elements[i].getAttribute('id') == 'intro') {
                    page = content_elements[i]
                }
                if (content_elements[i].getAttribute('id') == 'finish') {
                    page = content_elements[i]
                }
            }
            if (page.getAttribute('id') == 'page') {
                main_menu_fx.start('margin-top', 0);
            } else {
                main_menu_fx.start('margin-top', -160);
            }
            main_menu_fx.onComplete = function() {
                page.inject($('content'));
                page.setStyle('opacity', 0);
                section_fx = new Fx.Tween(page, {
                    duration: 1000,
                    transition: Fx.Transitions.Sine.easeOut,
                    wait: false,
                    onComplete: function() {
                        contentVisible();
                    }
                });
                section_fx.start('opacity', 1);
                rotatorWidget();
                reflectIntro();
                finishPage();
                dragBadge();
                freeGift2();
                slideIssues();
                flashIntro();
				finish_form();
            }
        }
    }
    );

    main_menu_fx = new Fx.Tween($('main_menu'), {
        duration: 500,
        wait: false
    });

    var selected_lk = $('selected_lk');
    var main_menu_bg = $('main_menu_bg');
    main_menu_bg.setStyle('left', selected_lk.getPosition($('main_menu_inner')).x);
    main_menu_bg.setStyle('visibility', 'visible');
    // start navigation 
    function navigation() {
        var main_menu = $('main_menu');
        if (!main_menu) {
            return false
        }
        var main_menu_lks = $$('#main_menu a');
        bg_fx = new Fx.Tween(main_menu_bg, {
            duration: 500,
            transition: Fx.Transitions.Sine.easeOut,
            wait: false
        });

        for (i = 0; i < main_menu_lks.length; i++) {
            main_menu_lks[i].addEvent('mouseover',
            function(e) {
                e = new Event(e).stop();
                var this_lk = this;
                bg_fx.start('left', this_lk.getPosition($('main_menu_inner')).x);
            });

            main_menu_lks[i].addEvent('mouseout',
            function(e) {
                e = new Event(e).stop();
                var this_lk = this;
                bg_fx.start('left', selected_lk.getPosition($('main_menu_inner')).x);
            });

            main_menu_lks[i].addEvent('click',
            function(e) {
                e = new Event(e).stop();
                selected_lk.removeAttribute('id');
                this.setProperty('id', 'selected_lk');
                selected_lk = this;
                requestPage.get(this.getAttribute('href'));
            });
        }
    }

    //end navigation

    // start finish page
    function finishPage() {
        var finish_lk = $('finish_lk');
        if (!finish_lk) {
            return false
        }
        finish_lk.addEvent('click',
        function(e) {
            e = new Event(e).stop();
            selected_lk.removeAttribute('id');
            selected_lk = null;
            requestPage.get(this.getAttribute('href'));
        });
    }

    // end finish page


    // badge

    function dragBadge() {
        var badge = $('badge');
        if (!badge) {
            return false
        };
        var hint = $('hint');
        var badge_placeholder = $('badge_placeholder');
        badge_placeholder.setStyle('opacity', 0.1);
        var xy = [badge.getPosition($('rvsp_page')).x, badge.getPosition($('rvsp_page')).y];
        var x2y2 = [badge_placeholder.getPosition($('rvsp_page')).x, badge_placeholder.getPosition($('rvsp_page')).y];
        var rvsp_form = $$('.rvsp_form')[0];
        
				rvsp_form.addEvent('submit', function(e) {
					new Event(e).stop();
					
					var error = validate('form_id','iOrdBillEmail');
					if(!error) {return false;}
					if(selected_lk) {
						selected_lk.removeAttribute('id');
						selected_lk = null;
					}

					new Request.HTML({
						url:this.action,
						onSuccess: function() {
							requestPage.get($('finish_lk').getAttribute('href'));							
						}
					}).post(this);
						
					// this.send({
					// 	// url: 'test.php',
					// 	onComplete: function() {
					// 		alert('sdas');
					// 		//requestPage.get($('finish_lk').getAttribute('href'));							
					// 	}
					// });                
				});
		
        badge_placeholder.set('tween', {
            duration: 500,
            property: 'opacity',
            transition: Fx.Transitions.Quad.easeInOut
        });
        var badge_relocate = new Fx.Morph(badge, {
            duration: 'short',
            transition: Fx.Transitions.Sine.easeOut,
            onComplete: function() {
                if (!success_drag) {
                    hint.setStyle('display', 'block');
                }
            }
        });
		
        var success_drag = false;
        var dragItem = new Drag.Move(badge, {
            container: $('rvsp_page'),
            droppables: badge_placeholder,
            onDrag: function() {
                hint.setStyle('display', 'none');
            },

            onEnter: function() {
                badge_placeholder.tween(0.3);
            },
            onLeave: function() {
                badge_placeholder.tween(0.1);
            },
            onDrop: function(element, droppable) {
                if (!droppable) {
                    badge_relocate.start({
                        'top': xy[1],
                        'left': xy[0]
                    });
                }
                else {
                    success_drag = true;
                    badge_relocate.start({
                        'top': x2y2[1],
                        'left': x2y2[0]
                    });
                    badge.removeEvents();
                    $('saving').value = true;
                }
            }
        });
        document.ondragstart = function() {
            return false;
        }; //IE drag hack
    }

    // badge



    // slideIssues

    function slideIssues() {
        var issues_fotos = $('issues_fotos');
        if (!issues_fotos) {
            return false
        }
        var fotos = $$('.issue_covers');
        var fotoSlide = [];
        for (i = 0; i < fotos.length; i++) {
            fotos[i].setStyle('opacity', 0);
            fotos[i].set('morph', {
               duration: 1000,
                transition: Fx.Transitions.Sine.easeOut
            });
            fotos[i].morph({
                'left': fotos[i].getParent().getPosition(issues_fotos).x,
                'top': fotos[i].getParent().getPosition(issues_fotos).y - 24,
                'opacity': 1
            });
        }
    }
    // slide Issues

    function contentVisible() {
        function letter_contents() {
            var letter_page_content = $$('.letter_page_content');
            if (letter_page_content.length) {
                for (i = 0; i < letter_page_content.length; i++) {
                   letter_page_content[i].setStyle('visibility', 'visible');
                }
            }
        }
        letter_contents();
        if ($('rvsp_page_content')) {
            $('rvsp_page_content').setStyle('visibility', 'visible');
        }
    }

    //start freegift2

    function freeGift2() {
        var free_gift2 = $('free_gift2');
        if (!free_gift2) {
            return false
        }
        var free_gift_dd = $('free_gift2').getElement('dd');
        var free_gift_p = $('free_gift2').getElement('p');
        free_gift_dd.set('tween', {
            duration: 500,
            property: 'height',
            transition: Fx.Transitions.Quad.easeInOut
        });
        var status = 'closed';

        free_gift2.addEvent('click',
        function(e) {
            e = new Event(e).stop();
            if (status == 'closed') {
                free_gift_dd.tween(free_gift_p.getSize().y);
                status = 'open';
            } else {
                free_gift_dd.tween(0);
                status = 'closed';
            }
        });
    }

    // end freegift2

    // flashIntro

	function flashIntro() {
        var flash_splash = $('flash_splash');
        if (!flash_splash) {
            return false
        }
        flash_splash.setStyle('opacity', 1);
        flash_splash.set('tween', {
            duration: 500,
            property: 'opacity',
            transition: Fx.Transitions.Quad.easeInOut,
            onComplete: function() {
                flash_splash.setStyle('display', 'none');
            }
        });
        flash_splash.addEvent('click',
        function(e) {
            e = new Event(e).stop();
            flash_splash.tween(0);
        });

    }
    // flashIntro
	
    if ($('main_menu') && $('page')) {
        main_menu_fx.start('margin-top', 0);
    }
	
	
	
	
	function finish_form(){
    	var finish_content = $('finish_content');
        if (!finish_content) {
            return false
        }
    	var friend_form = $$('.friend_form')[0];
       		friend_form.addEvent('submit', function(e) {
					new Event(e).stop();
					var error = validate('friend_form','Email');
					if(!error) {return false;}
					new Request.HTML({
						url:this.action,
						onSuccess: function() {
							//requestPage.get('index.html');
							window.location.href = 'index.html';						
						}
					}).post(this);            
				});
    }
		function validate(form_id,iOrdBillEmail) {
		var reg = /^([A-Za-z0-9_\-\.])+\@([A-Za-z0-9_\-\.])+\.([A-Za-z]{2,4})$/;
		var address = document.forms[form_id].elements[iOrdBillEmail].value;
		if(reg.test(address) == false) {
			alert('Invalid Email Address');
			return false;
		}
		return true;
	} 
	
	
    navigation();
    reflectIntro();
    rotatorWidget();
    dragBadge();
    contentVisible();
    freeGift2();
    slideIssues();
    flashIntro();
	finish_form();
});