/* ////////////////////////////////////////////////////////////////////////////////////////////////////

// core.js should only be used for functions that are site-wide
// separate functions that are page specific into page specific javascript files
// camelCase should be used for all variable and function names, e.g. "initLinks()" NOT "init_links()"

//////////////////////////////////////////////////////////////////////////////////////////////////// */
/* utils */
function monkey() {
    alert('monkey');
}

function getScrollingPosition()
{
	//used to eliminate browser inconsistancies
 var position = [0, 0];

 if (typeof window.pageYOffset != 'undefined')
 {
   position = [
       window.pageXOffset,
       window.pageYOffset
   ];
 }

 else if (typeof document.documentElement.scrollTop
     != 'undefined' && document.documentElement.scrollTop > 0)
 {
   position = [
       document.documentElement.scrollLeft,
       document.documentElement.scrollTop
   ];
 }

 else if (typeof document.body.scrollTop != 'undefined')
 {
   position = [
       document.body.scrollLeft,
       document.body.scrollTop
   ];
 }

 return position;
}

/* forms */
$(document).ready(function() {
    var email = $('.emailField');
    email.val('*Email');
    email.click(function() {
        email.val("");
    });
    email.blur(function() {
        if (email.val() == "") {
            email.val('*Email');
        }
    });
    var fname = $('.fname');
    fname.val('*First Name');
    fname.click(function() {
        fname.val("");
    });
    fname.blur(function() {
        if (fname.val() == "") {
            fname.val('*First Name');
        }
    });
    var lname = $('.lname');
    lname.val('*Last Name');
    lname.click(function() {
        lname.val("");
    });
    lname.blur(function() {
        if (lname.val() == "") {
            lname.val('*Last Name');
        }
    });
    $('.topSubmit').click(function() { return validateTop(); });
    $('.sideSubmit').click(function() { return validateSide(); });
});


var topValid = false;

$('.topSubmit').click(function() {
    validateTop();
});

function validateTop() {
    if ($(".emailNewsletter .defaultValue").val() != "" && $(".emailNewsletter .defaultValue").val() != "Email") {
        topValid = true;
    }
    else {
        $('.valFail').remove();
        $('.emailNewsletter').append('<div class="valFail"><br />*valid email address required</div>');
        return false;
    }
}


$('.sideSubmit').click(function() {
    validateSide();
});

function validateSide() {
    var sideValid = true;
    if ($("#enewsletterSignup .emailField").val() == "" || $("#enewsletterSignup .emailField").val() == "*Email") {
        sideValid = false;
    }
    if ($("#enewsletterSignup .fname").val() == "" || $("#enewsletterSignup .fname").val() == "*First Name") {
        sideValid = false;
    }
    if ($("#enewsletterSignup .lname").val() == "" || $("#enewsletterSignup .lname").val() == "*Last Name") {
        sideValid = false;
    }
    if (!sideValid) {
        $('.valFailSide').remove();
        $('#enewsletterSignup').append('<div class="valFailSide">*first name, last name and valid email<br /> address required</div>');
        return false;
    }
}



function toggleInputValue(obj) {
	if ( $(obj).val() == $(obj).data('defaultVal') ) {
		$(obj).val('');
	} else if ( $(obj).val() == null || $(obj).val() == '') {
		$(obj).val($(obj).data('defaultVal'));
	}
}

function initnoLabelInputs() {
	var defaultValElems = $('.defaultValue');
	defaultValElems.each(function(i) {
		 if ($(defaultValElems[i]).data('defaultVal') == null) {
			$(defaultValElems[i]).data('defaultVal', $(defaultValElems[i]).val());
		}
		
		$(defaultValElems[i]).focus(function(e) {
			toggleInputValue(defaultValElems[i]);						
		});
		$(defaultValElems[i]).blur(function(e) {
			toggleInputValue(defaultValElems[i]);
		});
	});
	var inputElems = $('.noLabel');
	inputElems.each(function(i) {
		 $(this).removeClass('noLabel').addClass('noLabel-replaced');
		//inputObjs[$(inputElems[i]).attr('name')] = {obj: inputElems[i], defaultVal: inputElems[i].attr('value')};
		if ($(this).children('input').data('defaultVal') == null  ) {
			$(this).children('input').data('defaultVal', $(this).children('label').text());
		} 
		if( ($(this).children('input').val() != "" && $(this).children('input').val() != null) && $(this).children('input').data('defaultVal') != $(this).children('input').val() ) {
			$(this).children('label').css('z-index', '-2');
		}
		
		$(this).children('input').focus(function() {
			$(this).siblings('label').css('z-index', '-2');
		});
		
		$(this).children('input').blur(function() {
			if ( $.trim($(this).val()) == "" ) {
				$(this).siblings('label').css('z-index', '60');
			}
		});
	});
}

//function validateEmail() {
//    var validated = ($(".emailNewsletter .defaultValue").val() != "" && $(".emailNewsletter .defaultValue").val() != "Email");
//    if (!validated) {
//        $('.valFail').remove();
//        $('.emailNewsletter').append('<div class="valFail"><br />*valid email address required</div>');
//    }
//    return validated;
//}

$(initnoLabelInputs);

/* external links, etc. */
function popUp(url) {
    var newwindow = window.open(url, 'extWin', 'height=800,width=1024,scrollbars=1,resizable=1,menubar=1,status=1,toolbar=1,location=1,personalbar=1');
    if (newwindow.focus) {
        newwindow.focus()
    }
    return false;
}

function initLinks() {
    var anchors = $('a');
    anchors.each(function(i) {
        var h = $(anchors[i]).attr('href');
        var r = $(anchors[i]).attr("rel");
        if (h != null && r != null) {
			if (r == 'external') {
                //popup script
                $(anchors[i]).click(function() {
                    return popUp($(this).attr("href"))
                });
				var title = $(anchors[i]).attr('title') + $(anchors[i]).text();
                $(anchors[i]).attr("title", title);
            }
        }
    });
}

$(initLinks);

/* ----------------------------- Modal Popup function ----------------------------- */
var newsContent;
$.get('/assets/content/xml/news.xml', function(data) { newsContent = data; });

var modalPopup = new modalPopupObj();

function modalPopupObj() {
	var _this = this;

	this.openPopup = function(obj, popupElem) {
	    var id = $(obj).attr('artID');

	    $('select').css('visibility', 'hidden');

	    $(popupElem).appendTo('body');
	    $(popupElem).find('.close').bind('click', function() { _this.closePopup(popupElem) });
	    
	    var blackout = $(popupElem).after('<div class="blackout" style="display: block;">&nbsp;</div>');

	    _this.populateContent(id, popupElem);
	    _this.applyPositioning(popupElem);
	    
	    $(popupElem).show();
	    $(window).bind('resize', function() { _this.applyPositioning(popupElem); });
	};

	this.closePopup = function(popupElem) {
	    $(window).unbind('resize');
	    $(popupElem).find('.close').unbind('click');
		$('select').css('visibility', 'visible');
		$(popupElem).hide();
		$('.blackout').remove();
    };

    this.clearContent = function(popupElem) {
        $(popupElem).find("h2, div.body, div.image").empty();
        //$(popupElem).find('.content').scrollTop(0);
    };

    this.populateContent = function(articleID, popupElem) {
        var title = "";
        var html = "";
        var image = "";
        _this.clearContent(popupElem);
        $(newsContent).find("article").each(function() {
            if ($(this).find("id").text() == articleID) {
                title = $(this).find("heading").text();
                html = $(this).find("body").text();
                image = $(this).find("image").text();
            }
        });
        $(popupElem).find("h2").text(title);
        $(popupElem).find("div.body").html(html);
        $(popupElem).find("div.image").html(image);
    };

    this.applyPositioning = function(popupElem) {
        var wh = $(window).height();
        var ww = $(window).width();
        var mh = $(popupElem).outerHeight();
        var mw = $(popupElem).outerWidth();
        var scrollPos = $('html').scrollTop();
        $(popupElem).css({ left: ((ww - mw) / 2), top: (scrollPos + 50) });
        $('.content').css({ height: (wh - 200) });
    };
};
$('.blackout').live('click', function() {
    $('.blackout').hide();
    $('.popover').hide();
});
/* ----------------------------- Modal Overlay function ----------------------------- */
    var modalOverlay;
    $(function () {
        $(window).resize(positionModal);
        $('.tmodal-close, .screen').click(closeModal);
        $('.cmodal-close, .screen').click(closeCalc);
    });

/* ----------------------------- FMA Modal Popup function ----------------------------- */
    var fmaModal;
    var modalLink = $('.openModal');
    function openModal() {
        modalOverlay = $('.screen');
        fmaModal = $('.tmodal');
        modalOverlay.add(fmaModal).css({ display: 'block' });
        positionModal();
    }
        
    function positionModal() {
        modalOverlay = $('.screen');
        fmaModal = $('.tmodal');
        var document_height = $(document).height();
        var document_width = $(document).width();
        var window_height = $(window).height();
        var window_width = $(window).width();
        var modal_height = fmaModal.outerHeight();
        var modal_width = fmaModal.outerWidth();
        var scrollTop = $(window).scrollTop();
        modalOverlay.height(document_height);
        modalOverlay.width(document_width);
        fmaModal.css({ left: (window_width / 2) - (modal_width / 2), top: (window_height / 2) - (modal_height / 2) + scrollTop });
    }

    function closeModal() {
        modalOverlay = $('.screen');
        fmaModal = $('.tmodal');
        fmaModal.css({ 'display': 'none' });
        modalOverlay.css({ 'display': 'none' });
    }

    modalLink.click(function() {
        openModal();
    });

    /* ----------------------------- Calculator Popup function ----------------------------- */

    var calcLink = $('.openCalc');
    
    var calcModal;
    function openCalc() {
        modalOverlay = $('.screen');
        calcModal = $('.cmodal');
        modalOverlay.add(calcModal).css({ display: 'block' });
        positionCalcModal();
    }
    
    calcLink.click(function() {
        openCalc();
    });

    function positionCalcModal() {
        modalOverlay = $('.screen');
        calcModal = $('.cmodal');
        var document_height = $(document).height();
        var document_width = $(document).width();
        var window_height = $(window).height();
        var window_width = $(window).width();
        var modal_height = calcModal.outerHeight();
        var modal_width = calcModal.outerWidth();
        var scrollTop = $(window).scrollTop();
        modalOverlay.height(document_height);
        modalOverlay.width(document_width);
        calcModal.css({ left: (window_width / 2) - (modal_width / 2), top: (window_height / 2) - (modal_height / 2) + scrollTop });
    }

    function closeCalc() {
        modalOverlay = $('.screen');
        calcModal = $('.cmodal');
        calcModal.css({ 'display': 'none' });
        modalOverlay.css({ 'display': 'none' });
    }


    var contactLink = $('.contactLink');
    contactLink.click(function() {
        window.open('/contact-us', '_self');
    });

/* news articles */
function initArchivesMenu() {
	$('.recentNews li:not(".open") ul').addClass('hide');
	$('.recentNews li.parent').click(function() {
			//$('.open').removeClass('open').children('ul').addClass('hide');
			$(this).toggleClass('open');
	});
}

$(initArchivesMenu);

/* news articles */
//function initNewsMenu() {
//	$('.recentNews ul li.parent').each(function(i) {
//		if(i == 0){
//		    $(this).addClass('open');}
//	});
//}

//$(initArchivesMenu);

function initFeatures() {
	
	function addPoints(id, xmlFrag) {
		$('.infoGraphicPoint').remove();
		var ds = new Array();
		$('datapoint', xmlFrag).each(function(i) {
			ds.push({position_x: $(this).children('pos_x').text(), position_y: $(this).children('pos_y').text(), title: $(this).children('title').text(), copy: $(this).children('copy').text()});
		});
		
		$('#' + id).infographic({replaceImage:false, dataset: ds});
	}
	
	function swapInfoGraphic(lnk, node) {
		lnk.addClass('active');
		if ( $(node).children('graphictitle').text() != "" || $(node).children('graphiccopy').text() != "" ) {
			$('.featureGalleryViewport .title').text($(node).children('graphictitle').text());
			$('.featureGalleryViewport .orly').text($(node).children('graphiccopy').text());
		} else if ( $(node).children('graphicstepnum').text() != "" || $(node).children('graphicstepaction').text() != "" ) {
			$('.featureGalleryViewport .titlebox').addClass('stepbox');
			$('.featureGalleryViewport .title').text($(node).children('graphicstepnum').text());
			$('.featureGalleryViewport .orly').text($(node).children('graphicstepaction').text());
		} else {
			/*$('.featureGalleryViewport .title').remove();
			$('.featureGalleryViewport .orly').remove();*/
			$('.titlebox').remove();
		}
		
		$('.featureGalleryViewport .actionDiv').css('background-image', 'url(' + $(node).children('fullimage').text() + ')').attr('id', $(node).children('id').text());;
		/* add points for fist image */
		addPoints($(node).children('id').text(), $(node).children('datapoints'));
	}
	
	function successFunc(xml, success) {
		//$('.featureGalleryThumbs').empty().append($('<ul></ul>'));
		var ul = $('<ul></ul>');
		$('infographic', xml).each(function(i) {
			/* build thumbs and load first image */
			var spanTxt = ($(this).children('graphicstepnum').text() != "") ? $(this).children('graphicstepnum').text() : '&nbsp;';
			var span = $('<span></span>').append(spanTxt);
			var img = $('<img />').attr('src', $(this).children('thumb').text()).attr('alt', $(this).children('alt').text());
			var lnk = $('<a></a>').attr('href', $(this).children('fullimage').text()).append(span).append(img);
			if ( i == 0 ) {
				swapInfoGraphic(lnk, $(this));
			}
			var lnkItem = $('<li></li>').append(lnk);
			ul.append(lnkItem);
			
			
			/* add link event for thumbs */
			var tmpXmlNode = $(this);
			$(lnk).click(function(e){
				if(!($(this).hasClass('active'))){
					$('a.active').removeClass('active');
					swapInfoGraphic(lnk, tmpXmlNode);
				}
					
				return false;	
			})
			
		});
		
		if( $('infographic', xml).length > 1 ) {
			$('.featureGalleryThumbs').empty().append(ul);
		} else {
			//$('.featureGalleryThumbs').css('display', 'none');
			//$('.featureGalleryViewport').css('width', '920px');
			$('.featureGallery').addClass('full');
		}
		
	}
	
	$.ajax({
		type: 'GET',
		url: '/assets/content/xml/features.xml',
		data: { },
		complete: function(xml, success) { },
		success: function(xml, success) { successFunc($('feature[id="' + $('input[name="curpage"]').val() + '"]', xml), success); },
		error: function(XMLHttpRequest, textStatus, errorThrown) {
			//curtain.css('display', 'none');
		}
	});

}

$(initFeatures);

function init() {
	$('.extLinks').mouseover(function(e) {
		$('.moreNavistar').css('display', 'block');
	});
	$('.extLinks').mouseout(function(e) {
		$('.moreNavistar').css('display', 'none');
	});
}

$(init);


