(function(){
    Class('site').create({
    	slideshow_imgs: [],
    
        init: function(){
        	if(obj('slider').get()){
        		this.process_columns();
        	}
        	this.load_actions();
        	this.newsletter();
        	img1 = new Image();
    		img2 = new Image();
    		img3 = new Image();
    		img4 = new Image();
    		img5 = new Image();
    		img6 = new Image();
    		img7 = new Image();
    		img8 = new Image();
    		img9 = new Image();
   			img1.src = "/media/images/home_image_1.jpg"
			img2.src = "/media/images/home_image_2.jpg"
			img3.src = "/media/images/home_image_3.jpg"
			img4.src = "/media/images/home_image_4.jpg"
			img5.src = "/media/images/home_image_5.jpg"
			img6.src = "/media/images/home_image_6.jpg"
			img7.src = "/media/images/home_image_7.jpg"
			img8.src = "/media/images/home_image_8.jpg"
			img9.src = "/media/images/home_image_9.jpg"
			
			simg1 = new Image();
			simg2 = new Image();
			simg3 = new Image();
			simg4 = new Image();
			simg5 = new Image();
			simg6 = new Image();
			
			simg1.src = "/media/images/lte_slider_title.png";
			simg1.src = "/media/images/morphic_slider_title.png";
			simg1.src = "/media/images/helix_slider_title.png";
			simg1.src = "/media/images/dobule_helix_slider_title.png";
			simg1.src = "/media/images/genome_slider_title.png";
			simg1.src = "/media/images/jinx_slider_title.png";
   			
   			this.slideshow_imgs = [img1, img2, img3, img4, img5, img6, img7, img9, img8];
   			
   			this.home_slideshow();
        },
		
		process_columns: function(){
            var width = 0;
            var cols = utils.get_by_class('slider_block');
            Array(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 - 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) > 10){
                        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;
                    }


                }, 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');
            Array(clickable).add_event('click', this.parse_target);
            Array(rollable).add_event('mouseover', this.parse_target);            
        },
        
        should_be_rel: '',
        
        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', position: 'absolute'});
        	
        	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.should_be_rel = false;
        	site.call(site.after_product_descrip, '/product_description/index.php', cont, 'id=' + id);
        },
        
        cur_el: false,
        
        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;
        	site.should_be_rel = true;
        	ele.add_event('mouseout', function(e){
       			cont.destroy();
        	});
        	
        	site.call(site.after_product_descrip, '/home_product_description/index.php', cont, 'id=' + id);
        },
        
        after_product_descrip: function(http, ele){
        	ele.remove_class('hidden');
        	ele.html(http.responseText);
        	//if(site.cur_el != false){
        		ele.css({top: -(ele.get_dimensions().h + 75) + 'px', left: site.cur_el.parent().parent().get_position().left + obj('slider_content').get_position().left + 'px'});
        		
        		if(site.should_be_rel){
        			ele.css({position: 'relative'});
        		}else{
        			ele.css({position: 'absolute'});
        		}
        		
        		site.should_be_rel = '';
        		site.cur_el = false;
        	//}
        },
        
        show_team: function(action, type, id, ele){
        	var member = type + '-' + id;
        	
        	var cont = obj(member);
        	
        	cont.show();
        	
        	obj('home_product_hover').destroy();
        	//var cont = ui.create_element(obj('slider').get(), 'div', {id: 'team_hover'}, '', 'hidden');
        	cont.css({top: ele.get_position().top + 50 + 'px', left: ele.get_position().left + 'px'});
        	
        	ele.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.hide();
        		}
        	});
        	
        	cont.add_event('mouseout', function(e){
        		var ev = evnt.get_event(e);
        		if(utils.isNest(cont.get(), ev)){
        			cont.hide();
        		}
        	});
        	
        	
        	/*cont.css({top: -(cont.get_dimensions().h + 75) + 'px', left: site.cur_el.parent().parent().get_position().left + obj('slider_content').get_position().left + 'px'});
        		
    		if(site.should_be_rel){
    			cont.css({position: 'relative'});
    		}else{
    			cont.css({position: 'absolute'});
    		}*/
        	
        	//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, parent){
        	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);
        	
        	site.call(site.length_descrip, '/dimensions_over/index.php', obj('dimensions'), "option_id=" + parent);
        },
        
        length_descrip: function(http, ele){
        	ele.html(http.responseText);
        	obj('title_dimensions').html(obj('dims').html());
        },
        
        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({left: ele.get_position().left - 100 + 'px', padding: '10px', fontSize: '11px', lineHeight: '1.9em', textAlign: 'center'});
        	
        	var title = cont.children_by_tag('H2');
        	obj(title[0]).css({textAlign: 'center'});
        	
        	cont.css({top: ele.get_position().top - cont.get_dimensions().h - 10 + 'px'});
        	
        	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.indexOf('Base') != -1){
        		img = img.replace(/_base/, '');
        		img = img.replace(/Base/, '');
        	}
        	//img = img.replace(/.jpg/, '.jpeg');
        	
        	var imgs = target.parentNode.getElementsByTagName('IMG');
          img0 = imgs[0].src.split('/')[src.length-1];
          img1 = imgs[1].src.split('/')[src.length-1];
          

			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/' + img0 + '"/></div>';
			html = html + '<div style="width:922px; margin:0px auto;"><img src="/gd/product_enlarge/' + img1 + '"/></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();
			});        	
        },
        
        home_slideshow: function(){
        	var i = 0;
        	var max = 8;
        	if(obj('slideshow').get() != ''){
	        	var run = function(){
	        		i = i < max ? i + 1 : 0;
	        		obj('debug').html(i);
		        	var main_img = obj('slideshow').children_by_tag('img');
	       			main_img = main_img[0];
		        	
		        	var out = function(){
		        		fx.animate(main_img, 'opacity', 100, 0, main);
		        	}
		        	
		        	var fin = function(){
		        		fx.animate(main_img, 'opacity', 0, 100, run);
		        	}
		        	
		        	
		        	var main = function(){
		        		main_img.style.zIndex = 10;
		       			obj('logo').css({zIndex: 20});
		       			main_img.style.position = 'relative';
		       			main_img.src = site.slideshow_imgs[i].src;
	       				fin();
	       				/*var stimer = window.setInterval(function(){
	       					window.clearInterval(stimer);
	       					stimer = null;	
	       					
	       				}, 600);*/
		        	}
		        	
	        		var timer = window.setInterval(function(){
	       				window.clearInterval(timer);
	       				timer = null;
	       				out();				
	       				
	       				
	       			}, 5000);
	       		}
	       		
	       		run();
       		}
        	
        	/*if(obj('main_img') != ''){
	        	var main_img = obj('main_img').children_by_tag('img');
       			main_img = main_img[0];
	        	var run = function(){
		        	var timer = window.setInterval(function(){
		        		window.clearInterval(timer);
		        		timer = null;
		        		
		        		fx.animate(main_img, 'opacity', 100, 0);
		        		
		        		var stimer = window.setInterval(function(){
		        			window.clearInterval(stimer);
		        			stimer = null;
		        			
		        			i = i < max ? i + 1 : 1;
		        			main_img.src = "/media/images/home_image_" + i + ".jpg"; 
		        			
		        			var itimer = window.setInterval(function(){
		        				window.clearInterval(itimer);
		        				itmer = null;
		        				fx.animate(main_img, 'opacity', 0, 100, run);
		        			}, 1000);
		        			
		        		}, 1000);
		        	
		        	}, 5000);
	        	};
	        	
	        	run();
        	}*/
        }
        
    })
})();



