// global functions to overwrite with Y

var resetForm = function(){},
    resetEmployeeSearchForm = function(){};

YUI({
//	combine: false,
//	filter: 'raw',
	gallery : 'gallery-2011.03.23-22-20'
}).use('gallery-text-resizer', 'node', 'event', 'io', 'overlay', 'widget-anim', 'gallery-overlay-extras', 'node-event-simulate', 'gallery-effects', function(Y){
	
	var blindConfig = {duration: .27};
	
	// Font Resize
	Y.all('.text-size').plug(Y.Text.Resizer);
	
	// hover states
	Y.all('#nav li').on({
		'mouseenter' : function(e){
			e.currentTarget.addClass('hover');
		}, 
		'mouseleave' : function(e){
			e.currentTarget.removeClass('hover');
		}
	});
	
	Y.all('.sidebar.hoverable').on({
		'mouseenter' : function(e) {
			e.currentTarget.addClass('hover');
		}, 
		'mouseleave' : function(e){
			e.currentTarget.removeClass('hover');
		}
	});
	
	// hr wrapping
	Y.all('hr').each(function(hr){
		var div = Y.Node.create('<div class="hr2"/>');
		hr.insert(div, 'before');
		div.append(hr);
	});

	// local market
	Y.all(".local_market_button").on('click', function(e) {
		var parent = e.currentTarget.ancestor(),
		    span = e.currentTarget.one('span span'),
		    list = parent.one('.local_market_offices_box');
		
		if(span.hasClass('open')) {
			list.blindUp(blindConfig);
			span.removeClass('open');
		}else{
			list.blindDown(blindConfig);
			span.addClass('open');
		}
		
	});
	
	// collapsable
	Y.all('.collapsable .trigger').each(function(o){
		// set initial state to content areas
		o.ancestor().all('.content').setStyles({'display':'none', 'width':'auto'}).removeClass('opening');
		
		// bind clicks to triggers
		o.on('click',function(e){
			Y.log('click');
			var cont = e.currentTarget.ancestor().one('.content');
			if(cont.hasClass('opening')) {
				// hide it
				cont.blindUp(blindConfig);
				cont.removeClass('opening');
			}else{
				// close it
				cont.blindDown(blindConfig);
				cont.addClass('opening');
			}
		});
	});
	
	// bios
	var strHideText = 'hide bio';
	var strShowText = 'read bio';

	$('.employee_bio .expand-collapse').click(function() {
		var myDisplay = $(this).parent().find('.bio').css('display');
		$('.bio').slideUp('medium');
		if ($(this).parent().find('.bio').css('display') == 'none') {
			$(this).text(strHideText);
			$(this).parent().find('.expand').css('display', 'none');
			$(this).parent().find('.collapse').css('display', 'inline');
		} else {
			$(this).text(strShowText);
			$(this).parent().find('.expand').css('display', 'inline');
			$(this).parent().find('.collapse').css('display', 'none');
		}
		
		if (myDisplay != 'block') {
			$(this).parent().find('.bio').slideToggle("medium");
		}

	});
	
	// video overlay
    var overlay = new Y.Overlay({

			width       : 540,
	        zIndex      : 10000,
	        centered    : true,
	        constrain   : true,
	        render      : true,
	        visible     : false,
	        plugins     : [
	            { fn: Y.Plugin.OverlayModal },
	            { fn: Y.Plugin.OverlayKeepaligned },
	            { fn: Y.Plugin.OverlayAutohide, cfg: {
	                focusedOutside : false  // disables the Overlay from auto-hiding on losing focus
	            }}
	        ],
			on : {
			    visibleChange : function(e) {
				    if(!e.newVal) {
					    overlay.setStdModContent('body', '');
					}
			    }
			}
	    }),
	    
	    btn = Y.Node.create('<button style="float: right;"><img src="/css/img/close.jpg"></button>');


	btn.on('click', Y.bind(overlay.hide, overlay));
	
	
	Y.delegate('click', function(e){
		e.preventDefault();
		
		
		
		var target = e.currentTarget,
		    title, video = target.get('href');
			
		
		if(target.ancestor('.case-study')) {
			title = target.ancestor('.case-study').one('h3').get('text');
		}else{
			title = target.get('text');
		}
		
		overlay.setStdModContent(
				'body', 
				'<div id="player" style="width: 530px; height: 298px;"></div>');
		
		overlay.setStdModContent('footer', title);
		overlay.setStdModContent('footer', btn, 'before');
		
		overlay.show();
		flowplayer("player", "/swf/flowplayer-3.2.4.swf",{
			clip:{url: video, autoPlay:true },
			plugins : { controls : { url : "/swf/flowplayer.controls-3.2.2.swf" } }
		});
		overlay.centered();
		
		
	}, '#page_content_columns', 'a.flv_video');	
	
	
	// property reset form
	resetForm = function() {
		var frm = Y.one('#property_form');
		
		frm.all('input, textarea, select').each(function(field){
			
			var type = field.get('nodeName') + ':' + (field.get('type') || '');
			
			switch(type.toLowerCase()) {
				case 'input:':
				case 'input:text':
				case 'input:hidden':
				case 'input:file':
				case 'input:password':
				case 'textarea:':
				case 'textarea:textarea':
					field.set('value','');
					field.simulate('change');
					break;
				case 'select:':
				case 'select:select-one':
				case 'select:select-multi':
				case 'select:select-multiple':
					field.set('selectedIndex',0);
					field.simulate('change');
					break;
				case 'input:radio':
				case 'input:checkbox':
					field.set('checked','');
					field.simulate('change');
					break;
			}
			
		});
		
		Y.one('#select-footage-min').set('value', 0).simulate('change');
		Y.one('#select-footage-max').set('value', 1500000).simulate('change');
		
		$("#select-footage-range").slider("values", 0, 0);
		$("#select-footage-range").slider("values", 1, 1500000);
		
		return false;
	};
	
	// reset employee search form
	resetEmployeeSearchForm = function() {
		
		var oForm = Y.one('#people_search_form');
		
		var elements = oForm.get('elements');
		Y.log(elements);
		
		elements.each(function(el){
			field_type = el.get('type').toLowerCase();
			Y.log(field_type);	
				switch(field_type) {
			
					case "text":
					case "password":
					case "textarea":
					case "hidden":
						el.set('value','');
						break;
			
					case "radio":
					case "checkbox":
						if (el.checked) {
							el.set('checked', false);
							el.simulate('change');
						}
						break;
			
					case "select-one":
					case "select-multi":
						el.set('selectedIndex',0);
						el.simulate('change');
						break;
			
					default:
						break;
					
				}
			
		});
		
		return false;
	};
	
	// property view
	var currentImage,
	    largeImageTarget = Y.one('#property-images .main img'),
	    largeImageTitle = Y.one('#property-images .main .property-image-type'),
	    largeImage = {'w':525,'h':335},
	    smallImage = {'w':110,'h': 70},
		firstImageMoved = false,
	    handleToggleImage = function(e) {
		    toggleImage(e.currentTarget.ancestor());
	    },
		toggleImage = function(container) {
			if(!container) {
				return;
			}
			var img = container.one('img'),
			    title = container.one('span'),
			    oldImage = largeImageTarget.get('src'),
			    oldTitle = largeImageTitle.get('text')
			    ;
				
			var src = img.get('src')
			             .replace(smallImage.w + '&', largeImage.w + '&')
						 .replace(smallImage.h + '&', largeImage.h + '&')
						 ;
			largeImageTarget.set('src','');
			largeImageTarget.set('src',src);
			largeImageTitle.set('text',title.get('text'));
			
			if(oldImage) {
				img.set('src', oldImage.replace(largeImage.w + '&', smallImage.w + '&').replace(largeImage.h + '&', smallImage.h + '&'));
				title.set('text',oldTitle);
			}
		}, 
		moveFirstImage = function() {
			var firstLi = Y.one('#property-images .image-list .image-set');
			if(!firstLi) {
				return;
			}
			toggleImage(firstLi);
			firstLi.remove();
			firstImageMoved = true;
		};
	
	
	if (!firstImageMoved) {
		moveFirstImage();
	}
	
	Y.later(200, this, function(){
		if (!firstImageMoved) {
			moveFirstImage();
		}
	});
							 
	Y.delegate('click',handleToggleImage,'#property-images','img');	
	
	/*** CAREERS ***/
	var resumeSubmitBtn = Y.one('#job-submit-resume'),
	    friendSubmitBtn = Y.one('#job-send-to-a-friend');
	
	if(resumeSubmitBtn) {
		resumeSubmitBtn.on('click', function(e){
			
			// get xhr response text
			Y.io('/xhr/submit-resume.php?title=' + Y.one('#job_title').get('value') + '&job_subject=' + Y.one('#job_subject').get('value'), {
				on : {
					success : function(id, o, args) {
						// display form in overlay
						overlay.setStdModContent('body', o.responseText);
						
						overlay.setStdModContent('header', '<h2>Submit Your Resume</h2>');
						overlay.setStdModContent('header', btn, 'before');
						
						overlay.setStdModContent('footer', null);
	
						overlay.unplug(Y.Plugin.OverlayKeepaligned);
						overlay.show();
						overlay.centered();
					}
				}
			});
			
			// wire up submit button to io-iframe
			Y.delegate('click', function(e){
				e.preventDefault();
				var frm = e.currentTarget.ancestor('form');
				
				
				Y.io(frm.get('action'), {
					
					method : 'POST',
					
					form : {
						id : frm.get('id'),
						upload : true
					},
					
					on : {
						
						start : function(id, args) {
							e.currentTarget.set('disabled', true);
						},
						
						complete : function(id, o, args) {
							if(o.responseText.indexOf('<pre') === 0) {
								overlay.setStdModContent('footer', o.responseText);
								e.currentTarget.set('disabled', false);
								overlay.get('boundingBox').one('.yui3-widget-ft').setStyle('backgroundColor', '#efefef');
							}else{
								overlay.setStdModContent('body', o.responseText);
								overlay.setStdModContent('footer', null);
							}
						}
							
					}
					
				});
				
			},'form','#submit_resume_form');
			// on submit, close overlay
		});
	}
	
	if(friendSubmitBtn) {
		friendSubmitBtn.on('click', function(e){
			
			// get xhr response text
			Y.io('/xhr/submit-friend.php?title=' + Y.one('#job_title').get('value') + '&job_subject=' + Y.one('#job_subject').get('value'), {
				on : {
					success : function(id, o, args) {
						// display form in overlay
						overlay.setStdModContent('body', o.responseText);
						
						overlay.setStdModContent('header', '<h2>Forward To A Friend</h2>');
						overlay.setStdModContent('header', btn, 'before');
						
						overlay.setStdModContent('footer', null);
	
						overlay.unplug(Y.Plugin.OverlayKeepaligned);
						overlay.show();
						overlay.centered();
					}
				}
			});
			
			// wire up submit button to io-iframe
			Y.delegate('click', function(e){
				e.preventDefault();
				var frm = e.currentTarget.ancestor('form');
				
				
				Y.io(frm.get('action'), {
					
					method : 'POST',
					
					form : {
						id : frm.get('id'),
						upload : true
					},
					
					on : {
						
						start : function(id, args) {
							e.currentTarget.set('disabled', true);
						},
						
						complete : function(id, o, args) {
							if(o.responseText.indexOf('<pre') === 0) {
								overlay.setStdModContent('footer', o.responseText);
								e.currentTarget.set('disabled', false);
								overlay.get('boundingBox').one('.yui3-widget-ft').setStyle('backgroundColor', '#efefef');
							}else{
								overlay.setStdModContent('body', o.responseText);
								overlay.setStdModContent('footer', null);
							}
						}
							
					}
					
				});
				
			},'form','#submit_resume_form');
			// on submit, close overlay
		});
	}
	
	
	
	Y.all('.sidebar-newsletter-signup').on('click', function(e){
		e.preventDefault();
		
		
		// get xhr response text
		Y.io('/xhr/newsletter-sign-up.php', {
			on : {
				success : function(id, o, args) {
					// display form in overlay
					overlay.setStdModContent('body', o.responseText);
					
					overlay.setStdModContent('header', '<h2>Newsletters &mdash; Sign-up</h2>');
					overlay.setStdModContent('header', btn, 'before');
					
					overlay.setStdModContent('footer', null);

					overlay.unplug(Y.Plugin.OverlayKeepaligned);
					overlay.set('width', '650px');
					overlay.show();
					overlay.centered();
					
				}
			}
		});
		
		// wire up submit button to io-iframe
		Y.delegate('click', function(e){
			
			var pressedButton = e.currentTarget;
			
			e.preventDefault();
			
			var frm = pressedButton.ancestor('form'),
				data = {
					'MID' : frm.one('#MID').get('value'),
					'First Name' : frm.one('#first_name').get('value'),
					'Last Name' : frm.one('#last_name').get('value'),
					'Phone' : frm.one('#phone1').get('value') + '.' + 
					          frm.one('#phone2').get('value') + '.' + 
					          frm.one('#phone3').get('value'),
					'Email Address' : frm.one('#Email').get('value'),
					'Address' : frm.one('#street').get('value') + ' ' + 
					            frm.one('#suite').get('value') + ' ' + 
					            frm.one('#city').get('value') + ' ' +
					            frm.one('#state').get('value') + ' ' +
					            frm.one('#postal').get('value') + ' ' +
					            frm.one('#country').get('value'),
					'lid' : []
				},
				errors = [];
			
			frm.all('#newsletter_lists input').each(function(node){
				if (node.get('checked')) {
					data.lid.push(node.get('value'));
				}
			});
			
			frm.all('.error').removeClass('error');
			
			if (data['First Name'].length < 1) {
				errors.push(frm.one('#first_name'));
			}
			if (data['Last Name'].length < 1) {
				errors.push(frm.one('#last_name'));
			}
			if (!data['Email Address'].match(/^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}$/)) {
				errors.push(frm.one('#Email'));
			}
			if (data.lid.length < 1) {
				errors.push(frm.one('#newsletter_lists'));
			}
			
			if (errors.length > 0) {
				Y.Array.each(errors, function(value, index, array){
					value.addClass('error');
				});
				return
			}
				
				
			
			Y.io(frm.get('action'), {
				
				method : 'POST',
				
				form : {
					id : frm.get('id')
				},
				
				on : {
					
					start : function(id, args) {
						frm.ancestor().all('.message').remove(true);
					    pressedButton.set('disabled', true);
					    pressedButton.setStyle('opacity', '0.5');
					},
					
					complete : function(id, o) {
						pressedButton.removeAttribute('disabled');
						pressedButton.setStyle('opacity', '1');
					},
					
					success : function(id, o, args) {
						Y.log('success');
						var msg = Y.Node.create('<div class="message">' + o.responseText + '</div>');
						frm.ancestor().all('>p').remove(true);
						frm.replace(msg);
					},
					
					failure : function(id, o, args) {
						Y.log('failure');
						var msg = Y.Node.create('<div class="message">' + o.responseText + '</div>');
					    frm.insert(msg,'after');
						
					}
						
				}
				
			});
			
		},'form','#submit_subscribe_form');
		
		// reset subscribe form
		Y.delegate('click', function(e){
			e.preventDefault();
			var frm = e.currentTarget.ancestor('form');
			frm.all('.error').removeClass('error');
			(Y.bind(frm.reset, frm))();
		},'form','#clear_subscribe_form');

	});
	
});



