(function(){
    Class('site').create({
        init: function(){
        	if(obj('slider').get()){
        		this.scrollbars();
        	}
        	this.load_actions();
        	this.newsletter();
        	
        	if(obj('slider_count').get() != ''){
        		this.total = obj('slider_count').get_attribute('value')/6;
        	}
        	
        	if(obj('left_btn').get() != ''){
   				obj('left_btn').add_event('click', this.slide_left);
   			};
   			
   			if(obj('right_btn').get() != ''){
   				obj('right_btn').add_event('click', this.slide_right);
   			};
   			
   			this.preload();

        },
		
		preload: function(){
			img1 = new Image();
            img2 = new Image();
            img3 = new Image();
            img4 = new Image();
            img5 = new Image();
            img1.src = "/media/images/home_main_img_1.jpg"
            img2.src = "/media/images/home_main_img_2.jpg"
            img3.src = "/media/images/home_main_img_3.jpg"
            img4.src = "/media/images/home_main_img_4.jpg"
            img5.src = "/media/images/home_main_img_5.jpg"
            
            this.slideshow_imgs = [img1, img2, img3, img4, img5];
            
            this.home_slideshow();
		},
		
		home_slideshow: function(){
			var i = 0;
            var max = 4;
            if(obj('slideshow').get() != ''){
                var run = function(){
                	dfx.config.duration = 1200;
                    i = i < max ? i + 1 : 0;
                    next = i < max ? i + 1 : 0;
                    var main_img = obj('slideshow').children_by_tag('img');
                    main_img2 = main_img[1];
                    current = main_img[0].src;
                    main_img = main_img[0];
                    
                    var out = function(){
                        dfx.animate(main_img2, 'opacity', 100, 0, function(){
                        	main_img2.src = main_img.src;
                        });
                    }
                    
                    var fin = function(){
                        dfx.animate(main_img, 'opacity', 0, 100, run);
                    }
                    
                    
                    var main = function(){
                        main_img.style.zIndex = 10;
                        main_img.style.position = 'absolute';
                        main_img.style.opacity = 0;
                        main_img.src = site.slideshow_imgs[i].src;
                        main_img2.style.zIndex = 10;
                        main_img2.style.position = 'absolute';
                        fin();
                        out();
                    }
                    
                    var timer = window.setInterval(function(){
                        window.clearInterval(timer);
                        timer = null;
                        main();              
                        
                        
                    }, 5000);
                }
                
                run();
            }
		},
		
		process_columns: function(){
            var width = 0;
            var cols = utils.get_by_class('slider_block');
            Collection(cols).each(function(el){
            	el = obj(el);
                width += el.get_dimensions().w;
            });

            col_width = width + 300
			
			col_width = col_width < 1800 ? 1820 : col_width + "px";
			
            obj('slider_content').css({
                width: col_width
            });

            var timer = '';

            var left = function(){
                timer = window.setInterval(function(){
                    var cont_left = obj('slider_content').get_position().left
                    var cont_w = obj('slider_content').get_dimensions().w

                    var left = obj('slider_content').get_position().left + Math.round(cont_w/27) + "px"

                    var wextras = obj('slider_bar').get_dimensions().w - 25;
                    var wdiff = (obj("slider_track").get_dimensions().w - (obj('slider_track').get_position().left - 50)) - obj('slider_content').get_dimensions().w;
                    wratio = wdiff * (1/(obj("slider_track").get_dimensions().w - (wextras)));

                    var sleft = parseInt(left) * wratio + "px"

                    if(parseInt(sleft) > obj('slider_track').get_position().left){
                        obj('slider_bar').css({
                            left: parseInt(sleft) + obj('slider_track').get_position().left + 'px'
                        })
                    }else{
                        obj('slider_bar').css({
                            left: obj('slider_track').get_position().left + 'px'
                        })
                    }

                    if(cont_left < 0){
                        obj('slider_content').css({
                            left: left
                        });
                    }else{
                        obj('slider_content').css({
                            left: 0 + 'px'
                        });
                        window.clearInterval(timer);
                        timer = null;
                    }

                //obj('debug').html(sleft + ' - ' + cont_w)

                }, 20)
            }
           
            var right = function(){
                timer = window.setInterval(function(){
                    var cont_left = obj('slider_content').get_position().left
                    var cont_w = obj('slider_content').get_dimensions().w
                    var left = obj('slider_content').get_position().left - Math.round(cont_w/27) + "px"

                    var wextras = obj('slider_bar').get_dimensions().w + 25;
                    var wdiff = (obj("slider_track").get_dimensions().w - (obj('slider_track').get_position().left - 100)) - obj('content').get_dimensions().w;
                    wratio = wdiff * (1/(obj("slider_track").get_dimensions().w  - (wextras)));

                    var sleft = parseInt(left) * wratio + "px"

                    if(parseInt(sleft) > -(obj("slider_track").get_dimensions().w - wextras)){
                        obj('slider_bar').css({
                            left: parseInt(sleft) + obj('slider_track').get_position().left + 'px'
                        })
                    }else{
                        obj('slider_bar').css({
                            left: -(obj("slider_track").get_dimensions().w + - wextras) + 'px'
                            })
                    }

                    if(cont_left > -(cont_w - obj('slider_content').parent().get_dimensions().w)){
                        obj('slider_content').css({
                            left: left
                        });
                    }else{
                        obj('slider_content').css({
                            left: -(cont_w - obj('slider_content').parent().get_dimensions().w) + 'px'
                            });
                        window.clearInterval(timer);
                        timer = null;
                    }

                //obj('debug').html(wratio + ' - ' + cont_w)
                }, 20)
            }
           
            var up = function(){
                window.clearInterval(timer);
                timer = null;
            }
           
            obj('left_btn').add_event('mousedown', left);
			obj('right_btn').add_event('mousedown', right);

            obj('left_btn').add_event('mouseup', up);
            obj('right_btn').add_event('mouseup', up);
            
            obj('slider_bar').drag('horizontal', obj('slider_track'), obj('slider_content'));
        },

		
        call: function(fn, url, caller, qstring, method){
            xhr.config.method = method || 'post';
            xhr.config.url = url;
            xhr.call(qstring || '', fn, caller);
        },

        refresh: function(){
            site.load_actions();
        },
		
		
        parse_target: function(e){
            var ele = obj(evnt.get_target(e));
            var cmd = evnt.get_target(e).id.split('-');
            var action = cmd[0];
            var identifier = cmd[1];
            var type = cmd[2];
            var parent = cmd[3];
            site[action](action, identifier, type, ele, parent);
        },
        
        parse_target_id: function(el){
        	var ele = obj(el);
        	var cmd = el.id.split('-');
        	var action = cmd[0];
            var identifier = cmd[1];
            var type = cmd[2];
            var parent = cmd[3];
            return{
            	action: action, 
            	identifier: identifier, 
            	type: type, 
            	ele: ele, 
            	parent: parent
            };
        },

        gather_form: function(form){
            var tqstring = utils.create_querystring(form.get());
            var qstring = tqstring ? tqstring : '';
            return qstring;
        },

        load_actions: function(){
            var clickable = utils.get_by_class('clickable');
            var rollable = utils.get_by_class('roll');
            Collection(clickable).add_event('click', this.parse_target);
            Collection(rollable).add_event('mouseover', this.parse_target);            
        },
        
        product_descrip: function(action, id, type, ele, parent){
        	obj('product_hover').destroy();
        	var cont = ui.create_element(ele.parent().parent().get(), 'div', {id: 'product_hover'}, '', 'hidden');
        	cont.add_class('hidden');
        	cont.css({top: ele.parent().get_position().top - 50 + 'px', left: ele.parent().get_position().left + 150 + 'px'});
        	
        	ele.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.destroy();
        		}
        	});
        	
        	cont.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.destroy();
        		}
        	});
        	
        	site.call(site.after_product_descrip, '/product_description', cont, 'id=' + id);
        },
        
        cur_el: '',
        
        slider_product_descrip: function(action, id, type, ele, parent){
        	obj('home_product_hover').destroy();
        	var cont = ui.create_element(obj('slider').get(), 'div', {id: 'home_product_hover'}, '', 'hidden');
        	cont.add_class('hidden');
        	site.cur_el = ele;
        	ele.add_event('mouseout', function(e){
       			cont.destroy();
        	});
        	
        	site.call(site.after_product_descrip, '/home_product_description', cont, 'id=' + id);
        },
        
        after_product_descrip: function(http, ele){
        	ele.remove_class('hidden');
        	ele.html(http.responseText);
        	if(site.cur_el != ''){
        		ele.css({position: 'relative', top: -(ele.get_dimensions().h + 75) + 'px', left: site.cur_el.parent().parent().get_position().left + obj('slider_content').get_position().left + 'px'});
        	}
        },
        
        show_team: function(action, type, id, ele){
        	var member = type + '-' + id;
        	
        	obj('home_product_hover').destroy();
        	var cont = ui.create_element(obj('slider').get(), 'div', {id: 'product_hover'}, '', 'hidden');
        	cont.css({top: ele.get_position().top + 50 + 'px', left: ele.get_position().left + 'px'});
        	cont.add_class('hidden');
        	ele.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.destroy();
        		}
        	});
        	
        	cont.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.destroy();
        		}
        	});
        	
        	site.call(site.after_product_descrip, '/' + member, cont);
        },
        
        highlight: function(action, id, type, ele, parent){
        	ele = ele || evnt.get_target(action);
        	var src = ele.get_attribute("src");
        	var split_src = src.split('.');
        	var src_len = (split_src.length) - 1;
        	var ext = split_src[src_len];
        	var pattern = new RegExp('\\.' + ext);
        	src = src.replace(pattern, '');
        	var new_src = src + '_on.' + ext;
        	ele.set_attribute("src", new_src);
        	
        	ele.add_event('mouseout', function(){
        		new_src = src + '.' + ext;
        		ele.set_attribute("src", new_src);
        	});
        },
        
        clothing_rollovers: function(action, id, type){
        	var block = obj('product_descrip-' + type + '-product');
        	block.set_attribute('src', '/media/' + id);
        },
        
        length_rollovers: function(action, id, type, ele){
        	var large_img = obj('large_prod_img');
        	var prod = type.replace(/\s/, '_').toLowerCase();
        	var src = prod + '_' + id + '_on.png';
        	large_img.children_by_tag('IMG')[0].src = "/media/products/" + src;
        	
        	ele.add_event('click', site.enlarge_prod);
        },
        
        feature_rollovers: function(action, type, id, ele){
        	var descrip = ele.get_attribute('alt');
        	
        	obj('home_product_hover').destroy();
        	var cont = ui.create_element('', 'div', {id: 'home_product_hover'}, descrip, 'visible');
        	cont.css({top: ele.get_position().top - cont.get_dimensions().h - 20 + 'px', left: ele.get_position().left - 100 + 'px', padding: '10px'});
        	ele.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
       			cont.destroy();
        	});
        	
        },
        
        newsletter: function(){
            if(obj('newsletter_input').get()){
                obj(document).add_event('click', function(e){
                    var target = evnt.get_target(e);
                    var str;
                    var val = obj('newsletter_input').get_attribute('value');
                    if(target.id == 'newsletter_input'){
                        str = val != 'enter email address' ? val : '';
                        obj('newsletter_input').set_attribute('value', str);
                    }else{
                        str = val != '' ? val : 'enter email address';
                        obj('newsletter_input').set_attribute('value', str);
                    }
                });

                obj('newsletter_submit').add_event('click', function(){
                    var email = obj('newsletter_input').get_attribute('value');
                    if(site.check_email(email)){
                        var qstring = 'email=' + email;
                        site.call(site.newsletter_confirm, '/newsletter/add', obj('newsletter_input'), qstring);
                    }else{
                        alert('Please enter a valid email address.');
                    }
                });
            }
        },
        
        check_email: function(email){
            var check = new RegExp('(.*)\@(.*)\\.(.*)');
            return check.test(email);
        },

        newsletter_confirm: function(http, ele){
            var div = ui.create_element(ele.parent().get(), 'div', {'id': 'newsletter_confirm'}, 'You have been added.', 'visible');
            div.css({top: ele.get_position().top - div.get_dimensions().h + 'px', left: ele.get_position().left + 'px'});
            var timer = window.setInterval(function(){
                window.clearInterval(timer);
                timer = null;
                div.destroy();
                obj('newsletter_input').set_attribute('value', 'enter email address');
            }, 5000);
        },
        
        enlarge_prod: function(ev){
        	//972
        	var target = evnt.get_target(ev);
        	var vals = site.parse_target_id(target);
        	var src = target.src.split('/');
        	var img = src[src.length-1];
        	if(img.indexOf('_base') != -1){
        		img = img.replace(/_base/, '');
        	}
        	img = img.replace(/.png/, '');
			
			var back = ui.show_trans_back();
			
			var cont = ui.create_element('', 'div', {id: 'product_popover'}, '', 'visible');
			ui.center_ele(cont);
			
			var html = '';
			html = html + '<span class="float_right italics">click to close</span>';
			html = html + '<div style="width:922px; margin:0px auto;"><img src="/gd/product_enlarge/' + img + '.png"/></div>';
			html = html + '<div style="width:922px; margin:0px auto;"><img src="/gd/product_enlarge/' + img + '_base.png"/></div><div class="clear"></div>';
			html = html + '<h2>' + vals.type + ' | ' + vals.identifier + '</h2>';
			
			cont.html(html);
			
			cont.add_event('click', function(){
				cont.destroy();
				back.destroy();
			});        	
        },
        
        open_video: function(action, type, id){
        	obj('video_player').destroy();
        	site.call(site.after_open_video, '/get_video', '', 'vid=' + id);
        },
        
        after_open_video: function(http, ele){
        	var div = ui.create_element('', 'div', {'id': 'video_player'}, '', 'visible');
        	var close = ui.create_element(div.get(), 'div', {'id': 'close', 'class': 'float_right pointer margin_bottom'}, 'Close', 'visible');
        	var inner = ui.create_element(div.get(), 'div', {'id': 'video_player_inner'}, '', 'visible');
        	div.css({position: 'absolute', zIndex: '60000000'});
        	ui.center_ele(div);
        	close.add_event('click', function(){
        		div.destroy();
        	});
        	
        	if (!browser.is_ie) {
        		div.drag()
        	}
        	
        	var stageW = 364;
			var stageH = 230;
			var flashvars = {
				stageW: stageW,
				stageH: stageH,
				imagePath: "/education/video/files/203_vinyl-pause.jpg",
				videoPath: http.responseText,
				autoStart: "true",
				autoHide: "false",
				autoHideTime: "3",
				hideLogo: "true",
				volAudio: "60",
				disableMiddleButton: "false",
				playSounds: "true",
				soundBarColor: "0x0066FF",
				barColor: "0x0066FF",
				barShadowColor: "0x91BBFB",
				subbarColor: "0xffffff",
				extendVideo: "false"
			};
			
			var params = {
				bgcolor: "#000000",
				allowfullscreen: "true"
			};
			/*params.bgcolor = "#000000";
			params.allowfullscreen = "true";
			flashvars.stageW = stageW;
			flashvars.stageH = stageH;
			flashvars.imagePath = "/education/video/files/203_vinyl-pause.jpg";
			flashvars.videoPath = http.responseText;
			flashvars.autoStart = "true";
			flashvars.autoHide = "false";
			flashvars.autoHideTime = "3";
			flashvars.hideLogo = "true";
			flashvars.volAudio = "60";
			flashvars.disableMiddleButton = "false";
			flashvars.playSounds = "true";
			flashvars.soundBarColor = "0x0066FF";
			flashvars.barColor = "0x0066FF";
			flashvars.barShadowColor = "0x91BBFB";
			flashvars.subbarColor = "0xffffff";
			flashvars.extendVideo = "false";*/
			
			
			if(!browser.is_ie){
        		swfobject.embedSWF("/media/videos/flvPlayer.swf", "video_player_inner", stageW, stageH, "9.0.0", "/media/videos/expressInstall.swf", flashvars, params);
        	}else{
        		swfobject.embedSWF("/media/videos/flvPlayer.swf", "video_player_inner", stageW, stageH, "9.0.0", "/media/videos/expressInstall.swf", flashvars, params);
        	}

        },
        
        total:0,
       	current:1,
       	
       	slide_left: function(){
       		if(site.current > 1){
       			site.current--
	       		window.clearInterval(site.timer)
	       		var slide_start = obj('slider_inner').get_position().left;
	       		var slide_end = slide_start + 940;
	       		
				fx.animate(obj('slider_inner').get(), 'left', slide_start, slide_end);
			}
       	},
       	
       	slide_right: function(){
       		if(site.current < site.total){
       			site.current++
	       		window.clearInterval(site.timer)
	       		var slide_start = obj('slider_inner').get_position().left;
	       		var slide_end = slide_start - 940;
	       		
				fx.animate(obj('slider_inner').get(), 'left', slide_start, slide_end);
			}
       	},
       	
       	scrollbars: function(ele){
       		var outer = obj('slider');
       		var content =  obj('slider_inner');
       		var track = obj('track');
       		var slider = obj('bar');
       		
       		var height = 0;
            var cols = utils.get_by_class('slider_cell');
            Collection(cols).each(function(el){
            	el = obj(el);
                height += el.get_dimensions().h;
            });

            col_height = height + 172
			
			col_height = col_height < 1800 ? 1820 : col_height + "px";
			
            content.css({
                height: col_height
            });
       		
       		//alert(content.get_dimensions().h + ' - ' + outer.get_dimensions().h)
       		
	        if(outer.get_dimensions().h < content.get_dimensions().h){
	            slider.show();
	            /*var s_ratio = (content.get_dimensions().h) / (outer.get_dimensions().h);
	            slider.css({
	                height: content.get_dimensions().h / s_ratio + 'px'
	            });*/
	
	            slider.drag('vertical', track, content);
	        }
        },
        
        service_schedule: function(){
			var div = ui.create_element('', 'div', {'id': 'service_schedule'}, '<img src="/images/site/shipping-map.gif" alt="Click to close." title="Click to close." />', 'visible');        	
			div.css({
				position: 'absolute',
				zIndex: '999999',
				border: 'solid 4px #000000',
				cursor: 'pointer'
			});
			
			ui.center_ele(div);
			
			div.add_event('click', function(){
				div.destroy();
			});
        }
	})
})();



