
function searchForm() {
	var form = $('searchForm');
	
	if(!form){
		return false;
	}
	
	var searchURL = "/#/Search/Search Results.aspx?query=";
	
	if($('hasIE')){
		searchURL = searchURL.gsub('/#', '');
	}
	
	var formInputs = form.getInputs();
	var formSubmitInputs = form.select('label.submit');
	
	var pseudoButton = new Element('p');
	pseudoButton.addClassName('pseudoButton');
	var pseudoButtonLink = new Element('a');
	pseudoButtonLink.writeAttribute('href', searchURL);
	pseudoButtonLink.update('GO');
	
	pseudoButton.insert({
		top: pseudoButtonLink
	});
	
	form.down('fieldset').insert({
		bottom: pseudoButton
	});
	
	formSubmitInputs.each(function(formSubmitInput){
		formSubmitInput.hide();
	});
	
	formInputs.each(function(formInput){
		formInput.observe('keyup', function(event){
			var inputValue = formInput.getValue();
			pseudoButtonLink.writeAttribute('href', searchURL + inputValue);
		}); 
	});
}

function signUpForm(){
	
	var form = $('contactInfo');
	var formResponse = $('response');
	
	if(!form){
		return false;
	}
			
	var formInputs = form.getInputs();
	var formSubmitInputs = form.getInputs('submit');
	var formMessages = $$('p.warning, p.success, p.failure');
	var fieldsets = form.select('fieldset');
	var emailRegEx = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	
	var currentfieldset1Height = [];
	var currentfieldset2Height = [];
	//console.log(fieldsets);
	var overThirteen = $('overThirteen');
	
	var formTrigger = form.down('h2');
	fieldsets[0].toggle();
	
	$('response').setStyle({
		right: '430px'
	});
	$('response').toggle();
	
	formTrigger.observe('click', function(event){
		fieldsets.each(function(fieldset){
			fieldset.setStyle({
				right: '430px'
			});
			fieldset.toggle();
		});
	});
	
	formSubmitInputs.each(function(formSubmitInput){
		//console.log('Submit Found');
		
		formSubmitInput.observe('click', function(event){
			var formValid = true;
			
			if(overThirteen.checked == 1){
				overThirteen.writeAttribute('value','true');
				overThirteen.up('label').removeClassName('error');
				if(!overThirteen.up('label').down('span')){
					
				} else {
					overThirteen.up('label').down('span').remove();
				}	
			} else {
				overThirteen.writeAttribute('value','false');
				overThirteen.insert({
					after: '<span>Must be 13 or older</span>'
				});
				overThirteen.up('label').addClassName('error');
			}
			
			var formFields = $H(form.serialize(true));
	
			//console.log(formFields);
			//console.log($('name').value);
			
			if($('name').value == ''){
				formValid= false;
				if(!$('name').next('span')){
					$('name').insert({
						after: '<span>This field is required</span>'
					});
				}
				$('name').up('label').addClassName('error');
				//console.log('name is empty');
			} else {
				formValid= true;
				$('name').up('label').removeClassName('error');
				if(!$('name').next('span')){
					
				} else {
					$('name').next('span').remove();
				}
			}
			if($('emailAddress').value == ''){
				formValid= false;
				if(!$('emailAddress').next('span')) {
					$('emailAddress').insert({
						after: '<span>This field is required</span>'
					});
				}
				$('emailAddress').up('label').addClassName('error');
				//console.log('emailAddress is empty');
			} else if (!$('emailAddress').value.match(emailRegEx)) {
				formValid= false;
				if(!$('emailAddress').next('span')) {
					$('emailAddress').insert({
						after: '<span>Enter a valid email address.</span>'
					});
				}
				$('emailAddress').up('label').addClassName('error');
			} else {
				formValid= true;
				$('emailAddress').up('label').removeClassName('error');
				if(!$('emailAddress').next('span')) {
				
				} else {
					$('emailAddress').next('span').remove();
				}
			}
			
			if(!formValid){
				event.stop();
				return false;
			}
			
			var parameters = Object.toJSON(formFields);
			var fillStatus = new Ajax.Request(form.getAttribute('action'), {
				method: 'post',
				requestHeaders: ["Content-type", "application/json; charset=utf-8"],
				postBody: parameters,
				onSuccess: function(transport) {
					var responseArray = transport.responseJSON;
					//console.log(fieldsets[0]);
					/*fieldsets[0].morph('top:-' + currentfieldset1Height+200 + 'px;');
					fieldsets[1].morph('top:-' + currentfieldset2Height+30 + 'px;');
					
					currentfieldset1Height = currentfieldset1Height+200;
					currentfieldset2Height = currentfieldset2Height+30;
					
					if(currentfieldset2Height == 3030){
						formSubmitInput.hide();
						$('response').morph('top: 0px');
					}*/
								
					fieldsets[0].morph('opacity:' + 0,{
						duration: .5,
						transition: 'sinusoidal',
						after: function(){
							fieldsets[0].setStyle({
								right: '-999px'
							});
							$('response').toggle();
							$('response').morph('opacity:' + 0,{
								duration: .5,
								transition: 'sinusoidal',
								delay: 2
							});
							form.down('h2').morph('opacity:' + 0,{
								duration: .5,
								transition: 'sinusoidal',
								delay: 2
							});
						},
						delay: 0
					});
					
					return true;
				},
				onFailure: function() {
					return false;
				}
			});

			
			event.stop();
		});	
	});
}

function shareThis(){
	var shareThisList = $('shareThis');
	
	var shareThisOptions = shareThisList.select('a');
		
	shareThisOptions[0].observe('click', function(event){
		var currentURL = location.href;		//grab current URL
		var currentURL = currentURL.gsub('#/', ''); //Remove Hash-tags
		var currentURL = currentURL.gsub(' ', '%20'); //Remove spaces
		this.writeAttribute('href', 'http://api.addthis.com/oexchange/0.8/forward/facebook/offer?url=' + currentURL + '&title=LeBron%20James%20Official%20Website&username=Number23');
		
	});
	
	shareThisOptions[1].observe('click', function(event){
		var currentURL = location.href;		//grab current URL
		var currentURL = currentURL.gsub('#/', ''); //Remove Hash-tags
		this.writeAttribute('href', 'http://api.addthis.com/oexchange/0.8/forward/twitter/offer?url=' + currentURL + '&title=LeBron James Official Website&username=Number23&template=Check this out at the Official LeBron James website: {{url}}');
	});

} 

function audioFix(){ 
	var playLists = $$('ul.playlist');
	
	if(playLists.size() == 0){
		return false;
	}
	
	if(typeof pagePlayer === 'undefined'){
		pagePlayer = new PagePlayer();
	}
	else {
		pagePlayer.sounds.each(function(sound){
			sound.stop();
		});
	}
	
	pagePlayer.init(typeof PP_CONFIG !== 'undefined' ? PP_CONFIG : null);
  
	//console.log(pagePlayer);
	
	/*var audioLinks = $$('a.sm2_button');
	
	soundManager.onready(function() {
		audioLinks.each(function(audioLink, index){
			var audioController = audioLink.up('p');
			var audioFile = audioLink.getAttribute('href');
			var audioID = audioLink.identify();
			var fastForwardButton = new Element('a').addClassName('fastForward').update('Fast Forward');
			var rewindButton = new Element('a').addClassName('rewind').update('Rewind');			
			audioLink.insert({
				before: rewindButton,
				after: fastForwardButton
			});
			
			var mySoundObject = soundManager.createSound({
				 id: '' + audioID + '',
				 url: '' + audioFile + '',  
				 onfinish: function() {
					audioController.addClassName('sm2_paused');
					audioController.removeClassName('sm2_playing');			
				 }

			});
						
			audioLink.observe('click', function(event){
				if(audioController.hasClassName('sm2_playing')){
					audioController.addClassName('sm2_paused');
					audioController.removeClassName('sm2_playing');
					soundManager.pause('' + audioID + '');
				} else {
					soundManager.pauseAll();
					var currentlyPlayingLinks = $$('a.sm2_playing');
					currentlyPlayingLinks.each(function(link){
						audioController.removeClassName('sm2_playing');
					});
					audioController.addClassName('sm2_playing');
					audioController.removeClassName('sm2_paused');
					soundManager.play('' + audioID + '');
				}
				event.stop();
			});
			
			fastForwardButton.observe('click', function(event){
				if(audioController.hasClassName('sm2_playing')){
					//console.log('fast-forwarding play back'); 
					var currentPosition = mySoundObject.position;
					mySoundObject.setPosition(currentPosition + 2000);
				} else {
					return false;
				}
			});
			
			rewindButton.observe('click', function(event){
				if(audioController.hasClassName('sm2_playing')){
					//console.log('rewinding play back'); 
					var currentPosition = mySoundObject.position;
					mySoundObject.setPosition(currentPosition - 2000);
				} else {
					return false;
				}
			});
		});
	});	*/
}

function rateCommentThumbsUp() {
    var commentThumbsUpLink = $('commentThumbsUp');
    var sitecoreItemID = commentThumbsUpLink.up('dfn').readAttribute('id');

    commentThumbsUpLink.observe('click', function(event) {
        var parameters = Object.toJSON({ itemID: sitecoreItemID });
        var fillStatus = new Ajax.Request('/services/commentprocessingservice.asmx/ProcessPositiveCommentRating', {
            method: 'post',
            requestHeaders: ["Content-type", "application/json; charset=utf-8"],
            postBody: parameters,
            onSuccess: function(transport) {
                return true;
            },
            onFailure: function() {
                return false;
            }
        });
        event.stop();
    });
}

function rateCommentThumbsDown() {
    var commentThumbsDownLink = $('commentThumbsDown');
    var sitecoreItemID = commentThumbsDownLink.up('dfn').readAttribute('id');

    commentThumbsDownLink.observe('click', function(event) {
        var parameters = Object.toJSON({ itemID: sitecoreItemID });
        var fillStatus = new Ajax.Request('/services/commentprocessingservice.asmx/ProcessNegativeCommentRating', {
            method: 'post',
            requestHeaders: ["Content-type", "application/json; charset=utf-8"],
            postBody: parameters,
            onSuccess: function(transport) {
                return true;
            },
            onFailure: function() {
                return false;
            }
        });
        event.stop();
    });
}

function rateComments() {
	var commentLinks = $$('ul.rating li');
	
	commentLinks.each(function(commentLink, index){
		var requestURL = '/services/commentprocessingservice.asmx/ProcessPositiveCommentRating';
		var commentContainer = commentLink.up('ul');
		var sitecoreItemID = commentContainer.readAttribute('id');
		 
		if(index == 0){
			
		}
		else {
			requestURL = '/services/commentprocessingservice.asmx/ProcessNegativeCommentRating';
		}
		
		commentLink.observe('click', function(event) {
			var parameters = Object.toJSON({ itemID: sitecoreItemID });
			var fillStatus = new Ajax.Request(requestURL, {
				method: 'post',
				requestHeaders: ["Content-type", "application/json; charset=utf-8"],
				postBody: parameters,
				onSuccess: function(transport) {
					var responseText = new Element('p');
					responseText.innerHTML = 'Your Rating has been Submitted';
					
					commentContainer.replace(responseText);
					return true;
				},
				onFailure: function() {
					var responseText = new Element('p');
					responseText.innerHTML = 'Our apologies, an Error Occurred.';
					
					commentContainer.replace(responseText);
					return false;
				}
			});
			event.stop();
		});
		
	});
}

function commentForm() {

    var form = $('addComment');
    var formResponse = $('response');

    if (!form) {
        return false;
    }

    var formInputs = form.getInputs();
    var formSubmitInputs = form.getInputs('submit');
    var formMessages = $$('p.warning, p.success, p.failure');
    var fieldsets = form.select('fieldset');

    var currentfieldset1Height = [];
    var currentfieldset2Height = [];
    
    formSubmitInputs.each(function(formSubmitInput) {
 
        formSubmitInput.observe('click', function(event) {
            var formValid = true;
            
            var formFields = $H(form.serialize(true));
         
            if ($('name').value == '') {
                formValid = false;
                if (!$('name').next('span')) {
                    $('name').insert({
                        after: '<span>This field is required</span>'
                    });
                }
                $('name').up('label').addClassName('error');
            } else {
                formValid = true;
                $('name').up('label').removeClassName('error');
                if (!$('name').next('span')) {

                } else {
                    $('name').next('span').remove();
                }
            }
            
            if ($('emailAddress').value == '') {
                formValid = false;
                if (!$('emailAddress').next('span')) {
                    $('emailAddress').insert({
                        after: '<span>This field is required</span>'
                    });
                }
                $('emailAddress').up('label').addClassName('error');
            } else {
                formValid = true;
                $('emailAddress').up('label').removeClassName('error');
                if (!$('emailAddress').next('span')) {

                } else {
                    $('emailAddress').next('span').remove();
                }
            }

            if ($('comment').value == '') {
                formValid = false;
                if (!$('comment').next('span')) {
                    $('comment').insert({
                        after: '<span>This field is required</span>'
                    });
                }
                $('comment').up('label').addClassName('error');
            } else {
                formValid = true;
                $('comment').up('label').removeClassName('error');
                if (!$('comment').next('span')) {

                } else {
                $('comment').next('span').remove();
                }
            }
            
            if (!formValid) {
                event.stop();
                return false;
            }
            
            var commentTemplate = new Template('<h3>#{MessageHeader}</h3>#{Message}<ul class="comments"><li><dl><dt>#{PostedBy}</dt><dd class="meta">#{PostedDate}</dd><dd>#{Comment}</dd></dl></li></ul>');

            var parameters = Object.toJSON(formFields);
            var fillStatus = new Ajax.Request(form.getAttribute('action'), {
                method: 'post',
                requestHeaders: ["Content-type", "application/json; charset=utf-8"],
                postBody: parameters,
                onSuccess: function(transport) {
					var response = transport.responseJSON;
					var responseData = response.d.evalJSON();
					
					if(responseData.MarkedForReview = 'true'){
						var responseMessage = commentTemplate.evaluate(responseData);
						formResponse.innerHTML = responseMessage;
						fieldsets.each(function(fieldset){
							fieldset.remove();
							if(fieldset.next('label')){
								fieldset.next('label').remove();
							}
						});
					}
					else {
						var responseMessage = commentTemplate.evaluate(responseData);
						formResponse.innerHTML = responseMessage;
						fieldsets.each(function(fieldset){
							fieldset.remove();
							if(fieldset.next('label')){
								fieldset.next('label').remove();
							}
						});
					}
					
                    return true;
                },
                onFailure: function() {
                    return false;
                }
            });


            event.stop();
        });
    });
}

function promotionEntryForm() {

    var form = $('promotionEntry');
    if (!form) {
        return false;
    }
    
    var formResponse = form.down('div.response');


    var formInputs = form.getInputs();
    var formSubmitInputs = form.getInputs('submit');
    var formMessages = $$('p.warning, p.success, p.failure');
    var fieldsets = form.select('fieldset');

    var currentfieldset1Height = [];
    var currentfieldset2Height = [];
    //console.log(fieldsets);
    var overThirteen = $('overThirteenPromo');
    var receiveCommunications = $('receiveCommunication');

    formSubmitInputs.each(function(formSubmitInput) {
        //console.log('Submit Found');

        formSubmitInput.observe('click', function(event) {
            var formValid = true;

            if (overThirteen.checked == 1) {
                overThirteen.writeAttribute('value', 'true');
                overThirteen.up('label').removeClassName('error');
            } else {
                overThirteen.writeAttribute('value', 'false');
                overThirteen.up('label').addClassName('error');
            }
            
            if (receiveCommunications.checked == 1) {
				var validatorInput = $('receiveCommunicationPsuedo');
				if(validatorInput){
					validatorInput.remove();
				}
                receiveCommunications.writeAttribute('value', 'true');
            } else {
				var oldValidatorInput = $('receiveCommunicationPsuedo');
				if(oldValidatorInput){
					oldValidatorInput.remove();
				}
				var validatorInput = new Element('input');
				validatorInput.writeAttribute('id', 'receiveCommunicationPsuedo');
				validatorInput.writeAttribute('value', 'false');
				validatorInput.writeAttribute('name', 'receiveCommunication');
				validatorInput.writeAttribute('type', 'hidden');
				form.insert({
					bottom: validatorInput
				});
                receiveCommunications.writeAttribute('value', 'false');
            }

            var formFields = $H(form.serialize(true));

            //console.log(formFields);
            //console.log($('name').value);

            if ($('namePromo').value == '') {
                formValid = false;
                if (!$('namePromo').next('span')) {
                    $('namePromo').insert({
                        after: '<span>This field is required</span>'
                    });
                }
                $('namePromo').up('label').addClassName('error');
                //console.log('name is empty');
            } else {
                formValid = true;
                $('namePromo').up('label').removeClassName('error');
                if (!$('namePromo').next('span')) {

                } else {
                    $('namePromo').next('span').remove();
                }
            }
            if ($('emailAddressPromo').value == '') {
                formValid = false;
                if (!$('emailAddressPromo').next('span')) {
                    $('emailAddressPromo').insert({
                        after: '<span>This field is required</span>'
                    });
                }
                $('emailAddressPromo').up('label').addClassName('error');
                //console.log('emailAddress is empty');
            } else {
                formValid = true;
                $('emailAddressPromo').up('label').removeClassName('error');
                if (!$('emailAddressPromo').next('span')) {

                } else {
                    $('emailAddressPromo').next('span').remove();
                }
            }

            if (!formValid) {
                event.stop();
                return false;
            }

            var parameters = Object.toJSON(formFields);
            var fillStatus = new Ajax.Request(form.getAttribute('action'), {
                method: 'post',
                requestHeaders: ["Content-type", "application/json; charset=utf-8"],
                postBody: parameters,
                onSuccess: function(transport) {
                    var responseArray = transport.responseJSON;
                    //console.log(fieldsets[0]);
                    fieldsets[0].morph('top:-999em;');
                    fieldsets[1].morph('top:-999em;');

                    //currentfieldset1Height = currentfieldset1Height + 200;
                    //currentfieldset2Height = currentfieldset2Height + 30;

                    //if (currentfieldset2Height == 3030) {
                    //    formSubmitInput.hide();
                    formResponse.morph('top: 0px');
                    //}

                    return true;
                },
                onFailure: function() {
                    return false;
                }
            });


            event.stop();
        });
    });
}
	
function urlify(text) {
	var urlRegex = /https?:\/\/([-\w\.]+)+(:\d+)?(\/([\w/_\.]*(\?\S+)?)?)?/;
	return text.replace(urlRegex, function(url) {
		return '<a href="' + url + '" title="Visit ' + url + '" target="_blank">' + url + '</a>';
	});
}
	

function facebookFeed(){
	var faceBookEntries = $$('ul.feed li.facebook p.content');
	
	//console.log('Facebook Feed');
	if(faceBookEntries.size() == 0){
		return false;
	}
	
	faceBookEntries.each(function(entry){
		var content = entry.innerHTML;
		
		entry.update(urlify(content));
	});
}
	

function twitterFeed(){
	var twitterEntries = $$('ul.feed li.twitter');
	
	//console.log('Twitter Feed');
	if(twitterEntries.size() == 0){
		return false;
	}
	
	twitterEntries.each(function(tweet){
		var content = tweet.innerHTML;
		var tweetDetail = tweet.down('p.content').innerHTML;
		tweet.update(content.gsub('-05:00', 'EST'));
		
		//Go through and make all URLs links.
		tweet.down('p.content').update(urlify(tweetDetail));
		
		//Go through and find usernames, make those links
		tweet.down('p.content').update(tweet.down('p.content').innerHTML.replace(/(^|\s)@(\w+)/g, '$1@<a href=http://www.twitter.com/$2 rel=extenal>$2</a>'));
	
		//Find hastags and make those links
		tweet.down('p.content').update(tweet.down('p.content').innerHTML.replace(/(^|\s)#(\w+)/g, '$1#<a href=http://search.twitter.com/search?q=%23$2 rel=extenal>$2</a>'));

		
		  

	});
}
