(function(){
    Class('site').create({
    	loaded : [],
    	cur_img : '',
    	
        init: function(){
        	this.resize_background();
            obj(window).add_event('resize', this.resize_background);
        	this.check_os();
        	this.newsletter();
        	this.scrollbars();
        	
        	this.load_actions();
        	
        	if(obj('thumb_slider').get()){
        		this.home_scrollbars();
        	}
        	
        	var roll_arr = utils.get_by_class('rollable');
        	Collection(roll_arr).add_event('mouseover', function(e){
        		var target = obj(evnt.get_target(e));
        		var img = target.get();
        		
        		var orig_src = img.src;
        		var mod_src = orig_src.replace(/.png/, '_on.png');
        		
        		img.src = mod_src;
        		
        		target.add_event('mouseout', function(){
        			img.src = orig_src;
        		})
        	});
        	
        	var enlarge_arr = utils.get_by_class('work_img');
        	Collection(enlarge_arr).each(function(e){
        		obj(e).add_event('click',function(e){
       		
		       		var target = evnt.get_target(e);
		       		site.cur_img = new Image(); 
		       		site.cur_img.src = target.src.replace(/\/gd\/work_thumb\//, '/gd/large_image/');
		       		
		       		var clear = function(){
		       			obj('main_image').destroy();
		       			var img = ui.create_element('main_img', 'img', {'src': site.cur_img.src, 'id' : 'main_image'}, '', 'visible');
		       			
		       			var timer = window.setInterval(function(){
		       			if(site.cur_img.complete){
		       				window.clearInterval(timer);
		       				timer = null;
		       				fx.animate(obj('main_img').get(), 'opacity', 0, 100);		
		       			}
		       		}, 100);
		       		}
		       		
		       		fx.animate(obj('main_img').get(), 'opacity', 100, 0, clear);
		       	});
        	});
        	
        	//this.intruder_expand('intruder_expand', 'open', 'now', obj('intruder-open-now'));
   			
   			if(location.href == 'http://scanout.com/' || location.href == 'http://www.scanout.com/'){
   				this.intruder_expand('intruder_expand', 'open', 'now', obj('intruder-open-now'));
        		/*obj('intruder').css({height: '173px'});
        		obj('intruder_inner').css({opacity:1});*/
        	}else{
        		var intruder = obj('intruder_expand-open-now');
        		intruder.html('+ Open Portfolio');
        	}
        },
        
        check_os: function(){
        	var Apple = {};
			Apple.UA = navigator.userAgent;
			Apple.Device = false;
			Apple.Types = ["iPhone", "iPod", "iPad"];
			for (var d = 0; d < Apple.Types.length; d++) {
				var t = Apple.Types[d];
				Apple[t] = !!Apple.UA.match(new RegExp(t, "i"));
				Apple.Device = Apple.Device || Apple[t];
			}
			
			if(Apple.iPad || Apple.iPhone){
				obj('intruder').hide();
				//obj('wrapper').hide();
				var ele = obj('wrapper');
	            var ratio = document.body.offsetWidth / 1280;
	
	            var width  = 1280 * ratio;
	            width = width < 1280 ? 1280 + "px" : width + "px";
	            var height = document.body.scrollHeight;
				height = height + 'px';
	            ele.css({width: width, height: height});
	            
	            
	            if(obj('track').get()){
		            obj('track').hide();
		            obj('slider_outer').css({
		            	overflow: 'scroll'
		            });
	            }
	            
	            if(obj('home_track').get()){
		            obj('home_track').hide();
		            obj('thumb_slider').css({
		            	overflow: 'scroll'
		            });
	            }
	            
	            var arr = utils.get_by_tag('iframe');
	            Collection(arr).each(function(e){
	           		var ele = obj(e);
	           		ele.css({
	           			height:'100px',
	           			width:'600px'
	           		});
	            });
			}
			
			/*Apple.iPad ? location.href = "http://ipad.lackner-buckingham.com" : ''
			Apple.iPhone ? location.href = "http://ipad.lackner-buckingham.com" : ''*/
        },
        
        resize_background: function(){
        	var ele = obj('wrapper');
            var ratio = document.body.offsetWidth / 1280;

            var width  = 1280 * ratio;
            width = width < 1280 ? 1280 + "px" : width + "px";
            var height = 959 * ratio + "px";

            ele.css({width: width, height: height});
            
            if(document.body.offsetWidth < 1350){
            	obj('intruder_inner').css({overflowX: 'scroll'});
            }
        },
		
        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);            
        },
        
        links: function(action,type,id,ele){
        	alert(ele.get_attribute('src'));
        },
        
        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(utils.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.');
                    }
                });
            }
        },
        
        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);
        },
        
        home_scrollbars: function(ele){
       		var outer = obj('thumb_slider');
       		var content =  obj('thumb_slider_content');
       		var track = obj('home_track');
       		//var slider = obj('home_bar');
       		
       		var width = 0;
       		var i = 0;
            var cols = utils.get_by_class('gallery_cell');
            Collection(cols).each(function(el){
            	el = obj(el);
            	width += 770;
            });
			
			var len = cols.length;
			
			obj('numbers').html('01/' + len);
			
            col_width = width
			
			col_width = col_width < 1800 ? 1820 : col_width + "px";
			
            content.css({
                width: col_width
            });
       		
	        var start = 792;
            var i = 1;
            var animating = false;
            
           	var left = function(){
           		//if(obj('thumb_slider_content').get_position().left < 0){
           		if(!animating){
           			animating = true;
	           		if(i > 1){
	           			i--;
	           			var cont_start = obj('thumb_slider_content').get_position().left;
		            	var bar_start = obj('home_bar').get_position().left;
		                
		                var cont_w = obj('thumb_slider_content').get_dimensions().w;
		                var track_w = obj('home_track').get_dimensions().w; 
		                var bar_w = obj('home_bar').get_dimensions().w;
		                
		                var cont_end = -((cont_w) - obj('thumb_slider').get_dimensions().w);
		                var bar_end = (track_w - 5) - bar_w;
		                
		                var diff = (bar_end) - cont_w;
		                var ratio = diff * (1/bar_end);
	           			
	           			dfx.animate(obj('thumb_slider_content').get(), 'left', cont_start, cont_start + 748, function(){
		           				animating = false;
		           		});
	           			
	           			var sleft = (obj('thumb_slider_content').get_position().left + 748) / ratio + "px";
	           			
	           			var num = i;
	           			if(i < 10){
	           				num = '0' + i
	           			}
	           			obj('numbers').html(num + '/' + len);
	           			
	           			//fx.animate(obj('home_bar').get(), 'left', obj('home_bar').get_position().left, sleft);
	           			//obj('home_bar').css({left:sleft});
	           			
	           		}else{
	           			var cont_start = obj('thumb_slider_content').get_position().left;
	           			dfx.animate(obj('thumb_slider_content').get(), 'left', cont_start, -(obj('thumb_slider_content').get_dimensions().w - (748 + 23)));
	           			
	           			
	           			i=len;
	           			cont_start = -(obj('thumb_slider_content').get_dimensions().w - (748 + 23));
	           			var num = i;
	           			if(i < 10){
	           				num = '0' + i
	           			}
	           			obj('numbers').html(num + '/' + len);
	           			animating = false;
	           		}
	           	}
           	}
           	
           	
           	var right = function(){
           		if(!animating){
           			animating = true;
	           		//if(obj('thumb_slider_content').get_position().left < obj('thumb_slider_content').get_dimensions().w){
	           		if(i < len){
	           			i++;
	           			var cont_start = obj('thumb_slider_content').get_position().left - 25;
		            	var bar_start = obj('home_bar').get_position().left;
		                
		                var cont_w = obj('thumb_slider_content').get_dimensions().w;
		                var track_w = obj('home_track').get_dimensions().w; 
		                var bar_w = obj('home_bar').get_dimensions().w;
		                
		                var cont_end = -((cont_w) - obj('thumb_slider').get_dimensions().w);
		                var bar_end = (track_w - 5) - bar_w;
		                
		                var diff = (bar_end) - cont_w;
		                var ratio = diff * (1/bar_end);
	           			
	           			dfx.animate(obj('thumb_slider_content').get(), 'left', cont_start, (cont_start + 25) - 792, function(){
	           				animating = false;
	           			});
	           			
	           			var sleft = (obj('thumb_slider_content').get_position().left - 792) / ratio + "px";
	           			
	           			var num = i;
	           			if(i < 10){
	           				num = '0' + i
	           			}
	           			
	           			obj('numbers').html(num + '/' + len);
	           			
	           			//fx.animate(obj('home_bar').get(), 'left', obj('home_bar').get_position().left, sleft);
	           			//obj('home_bar').css({left:sleft});
	           			
	           		}else{
	           			var cont_start = obj('thumb_slider_content').get_position().left - 25;
	           			dfx.animate(obj('thumb_slider_content').get(), 'left', cont_start, 0, function(){
	           				animating = false;
	           			});
	           			i=1;
	           			cont_start = 792;
	         			var num = i;
	           			if(i < 10){
	           				num = '0' + i
	           			}
	           			obj('numbers').html(num + '/' + len);
	           		}
           		}
           	}
           
            var up = function(){
                window.clearInterval(timer);
                timer = null;
            }
           
            obj('left').add_event('mousedown', left);
			obj('right').add_event('mousedown', right);
			
			obj('small_left').add_event('mousedown', left);
			obj('small_right').add_event('mousedown', right);

            /*obj('left').add_event('mouseup', up);
            obj('right').add_event('mouseup', up);*/
        },
        
        scrollbars: function(ele){
       		var outer = obj('slider_outer');
       		var content =  obj('slider_inner');
       		var track = obj('track');
       		var slider = obj('bar');
       		
       		var height = 0;
       		var i = 0;
            var cols = utils.get_by_class('work_img');
            Collection(cols).each(function(el){
            	el = obj(el);
            	height += 88;
            	
            	el.set_attribute('id', 'cell_' + i);
            	
            	i++;
            	if(i == 1){
            		el.css({
		            	opacity: '1'
		            });
            	}
            	
            	el.add_event('mouseover', function(e){
            		el.css({
		            	opacity: '1'
		            });
            	})
            	
            	if(i != 1){
	            	el.add_event('mouseout', function(e){
	        			el.css({
			            	opacity: '.4'
			            });
			        });
            	}
            	
            	
            	var load = function(e){
            		var target = obj(evnt.get_target(e));
            		var target_id = target.get().id;
            		
            		Collection(cols).each(function(el){
            			el = obj(el);
            			
            			if(el.get_attribute('id') == target_id){
		            		el.css({
				            	opacity: '1'
				            });
		            	}else{
		            		el.css({
				            	opacity: '.4'
				            });
		            	}
		            	
		            	el.add_event('mouseover', function(e){
		            		el.css({
				            	opacity: '1'
				            });
		            	})
		            	
		            	if(el.get_attribute('id') != target_id){
			            	el.add_event('mouseout', function(e){
			        			el.css({
					            	opacity: '.4'
					            });
					        });
		            	}else{
		            		el.add_event('mouseout', function(e){
			        			el.css({
					            	opacity: '1'
					            });
					        });
		            	}	
            		});
            		
            		
            	}
            	
            	el.add_event('click', load);
            	

            });

            col_height = height
			
			col_height = col_height + "px";
			
			if(content.get() != ''){
	            content.css({
	                height: col_height
	            });
	            
	       		
		        if(outer.get_dimensions().h < content.get_dimensions().h){
		            slider.show();
					
					var bounds = {
	                    left:track.get_position().left - 10,
	                    right:((track.get_position().left - 10) + track.get_dimensions().w) - (slider.get_dimensions().w + 8),
	                    top:track.get_position().top,
	                    bottom:(track.get_position().top - 8 + (track.get_dimensions().h - (slider.get_dimensions().h + track.get_position().top)))
	                }
					
		            slider.drag('vertical', track, content, bounds);
		        }
	        
	        }
        },
        
        intruder_expand: function(action, id, type, intruder){
        
        	var on_open = function(){
        		var inner = obj('intruder_inner');
        		dfx.animate(inner.get(), 'opacity', 0, 100);
        		intruder.get().innerHTML = '- Close Portfolio';
        		//intruder.css({background: 'transparent url(/media/site/close.png) no-repeat', width: '18px', height: '18px', position: 'relative', top: '-5px'});
        	}
        	
        	var on_close = function(){
        		var inner = obj('intruder_inner');
        		inner.css({opacity: 0});
        		intruder.html('+ Open Portfolio');
        		intruder.css({background: 'none', width: 'auto', height: 'auto', top: '0px'});
        	}
        
        	if(obj('intruder').get_dimensions().h < 173){
        		dfx.animate(obj('intruder').get(), 'height', 25, 173, on_open);
        	}else{
        		dfx.animate(obj('intruder').get(), 'height', 173, 25, on_close);
        	}
        },
        
        navigation_tutorial: function(action){
        	//var back = ui.show_trans_back();
        	
        	var help = obj('help');
        	
        	help.css({
        		visibility: 'visible',
        		zIndex: 1000,
        		left: obj('content_top').get_position().left - 110 + 'px',
        		top: obj('content_top').get_position().top - 70 + 'px'
        	});
        	
        	//ui.center_ele(help);
        	
        	help.add_event('click', function(){
        		help.css({
        			visibility: 'hidden'
        		});
        		
        		//back.destroy();
        	})
        },
        
        faqs: function(action){
        	var faqs = obj('faqs_popover');
        	
        	faqs.css({
        		visibility: 'visible',
        		zIndex: 1000,
        		left: obj('content_top').get_position().left - 70 + 'px',
        		top: obj('content_top').get_position().top - 70 + 'px'
        	});
        	
        	//ui.center_ele(faqs);
        	
        	faqs.add_event('click', function(){
        		faqs.css({
        			visibility: 'hidden'
        		});
        	})
        },
        
        open_descrip: function(action, id){
        	var el = obj(id);
        	var ele = el.get()
        	
        	var bottom = obj('thumb_slider').get_dimensions().h + obj('thumb_slider').get_position().top;
        	
        	el.show();
        	dfx.animate(ele, 'opacity', 0, 100);
        	
        	obj(id).add_event('click', function(){
        		dfx.animate(ele, 'opacity', 100, 0, function(){
        			el.hide();
        		});
        		
        	});
        }
        
    })
})();


/*obj(window).add_event('load', function(){
	site.intruder_expand('intruder_expand', 'open', 'now', obj('intruder-open-now'));
});*/
