/* -----------------------------------------------------------------------------
	APPLICATION.JS
	Performs actions to improve visual presentation of the site.
	-----------------------------------------------------------------------------
	STARRING
	-------------------------------------------------------------------------- */

if (document.getElementById && document.getElementsByTagName && document.createTextNode) {
    create_mainNavCSSLink();
    window.onload = init;
}

var onLoads = new Array;

function init() {
    for (var i = 0; i < onLoads.length; i++) {
        eval(onLoads[i]);
    }
}

function addOnLoad(func) {
    onLoads[onLoads.length] = func;
}

addOnLoad('init_mainNav()');
addOnLoad('init_faqs()');
//addOnLoad('init_formSubmits()');
addOnLoad('init_washCareSymbols()');

var submenus = 0;
var Prototype = false;

function ieHoverFix_on() {
    this.className = 'over';
}
;

function ieHoverFix_out() {
    this.className = '';
}
;

function track_mouse(e) {
    if (!e) var e = window.event;
    if (e.pageX || e.pageY) {
        posx = e.pageX;
        posy = e.pageY;
    } else if (e.clientX || e.clientY) {
        posx = e.clientX + document.documentElement.scrollLeft;
        posy = e.clientY + document.documentElement.scrollTop;
    }
}
;

// Init Mouse location discovery
document.onmousemove = track_mouse;
document.onmouseup = function() {
    if (!overDlWin) {
        hide_imageDownload();
    }
}

function create_mainNavCSSLink() {
    var link = document.createElement('LINK');
    link.rel = 'stylesheet';
    link.type = 'text/css';
    link.media = 'screen';
    link.href = 'https://www.hm.com/static/external/css/common/js_specific.css';

    for (var i = 0; i < document.childNodes.length; i++) {
        if (document.childNodes[i].nodeName == 'HTML') {
            for (var k = 0; k < document.childNodes[i].childNodes.length; k++) {
                var curNode = document.childNodes[i].childNodes[k];
                if (curNode.nodeName == 'HEAD') {
                    curNode.appendChild(link);
                }
            }
        }
    }
}
;

/* MAIN NAVIGATION */

function init_mainNav() {
    if (nmObj = $('nav_main_object')) {
        for (var i = 0; i < nmObj.childNodes.length; i++) {  
	 var curObj = nmObj.childNodes[i];
            if ((curObj.nodeName == 'LI') && (curObj.className.match(/current/))) {
                for (var k = 0; k < curObj.childNodes.length; k++) {
		var curObj2 = curObj.childNodes[k];
                    if (curObj2.nodeName == 'UL') {
                        for (var a = 0; a < curObj2.childNodes.length; a++) {   
			var curObj3 = curObj2.childNodes[a];
                            if ((curObj3.nodeName == 'LI') && !(curObj3.className.match(/current/))) {
                                for (var b = 0; b < curObj3.childNodes.length; b++) {
				    var curObj4 = curObj3.childNodes[b];
                                    if (curObj4.nodeName == 'A') {
										// if onclick is allready defined we do not want to override it with show_subMenu. /DS
										if(curObj4.onclick == undefined){
											curObj4.onclick = show_subMenu;
										}
                                    }
                                    if (curObj4.nodeName == 'UL') {
                                        curObj4.id = 'submenu_' + submenus;
                                        submenus++;
                                    }
                                }
                            }
                        }
				    
	            } else if ((curObj2.nodeName == 'A') && !(curObj.className.match(/current/))) {
                        curObj2.firstlevel = true;
                        curObj2.onclick = show_subMenu;
                    } 

                }
            }
        }
    }
}
;

function show_subMenu() {
    for (var i = 0; i < this.parentNode.childNodes.length; i++) {
        var curObj = this.parentNode.childNodes[i];
        if (curObj.nodeName == 'UL') {
            if (!curObj.className) {
                for (var k = 0; k < submenus; k++) {
                    document.getElementById('submenu_' + k).className = '';
                }
                curObj.className = 'show';
                if (this.firstlevel) {
                    var nmObj = $('nav_main_object');
                    for (var k = 0; k < nmObj.childNodes.length; k++) {
                        var curObj2 = nmObj.childNodes[k];
                        if ((curObj2.nodeName == 'LI') && (curObj2.className == 'current expanded')) {
                            curObj2.className = '';
                            for (var a = 0; a < curObj2.childNodes.length; a++) {
                                var curObj3 = curObj2.childNodes[a];
                                if (curObj3.nodeName == 'UL') {
                                    curObj3.className = '';
                                }
                            }
                        }
                    }
                    this.parentNode.className = 'current expanded';
                }
            } else {
                if (this.firstlevel) {
                    this.parentNode.className = '';
                }
                curObj.className = '';
            }
        }
    }
}
;


/* FAQs */

function init_faqs() {
    var DLs;
    if (DLs = document.getElementsByTagName('DL')) {
        for (var i = 0; i < DLs.length; i++) {
            if (DLs[i].className.match(/faq/)) {
                DLs[i].id = 'faq_' + i;
                var DTs = DLs[i].getElementsByTagName('DT');
                var DDs = DLs[i].getElementsByTagName('DD');
                for (var k = 0; k < DTs.length; k++) {
                    var DTtext = DTs[k].firstChild.data;
                    var DTlink = document.createElement('A');
                    DTlink.onclick = showhide_dd;
                    DTlink.appendChild(document.createTextNode(DTtext));
                    DTlink.faqid = DLs[i].id;
                    DTlink.thisnum = k;
                    DTs[k].replaceChild(DTlink, DTs[k].firstChild);
                }
            }
        }
    }
}
;

function showhide_dd() {
    if (DL = $(this.faqid)) {
        var thisnum = this.thisnum;
        var DTs = DL.getElementsByTagName('DT');
        var DDs = DL.getElementsByTagName('DD');
        DDs[thisnum].className = (DDs[thisnum].className == '')?'show':'';
        this.className = (this.className == '')?'current':'';
    }
}
;

/* FORM SUBMITS */

/*function init_formSubmits() {
    var allInputs = document.getElementsByTagName('INPUT');
    var allSubmits = new Array();
    var k = 0;
    for (var i = 0; i < allInputs.length; i++) {
        if (allInputs[i].type == 'submit') {
            allSubmits[k] = allInputs[i];
            k++;
        }
    }

    for (var i = 0; i < allSubmits.length; i++) {
        var submit = allSubmits[i];
        var form = submit.form;

        var theLink = document.createElement('A');
        theLink.className = "button " + submit.className;
        theLink.formId = form.id;
        theLink.onclick = submitForm;
        var theSpan = document.createElement('SPAN');

        theSpan.appendChild(document.createTextNode(submit.value));
        theLink.appendChild(theSpan);

        submit.className += " hidden";
        submit.parentNode.appendChild(theLink);
    }
}
;*/
/*
function submitForm() {
    $(this.formId).submit();
}
;*/

/* WASH CARE SYMBOLS */

function init_washCareSymbols() {
    if (wcList = $('wash_care_symbols_list')) {
        var IMGs = wcList.getElementsByTagName('IMG');
        for (var i = 0; i < IMGs.length; i++) {
            IMGs[i].onclick = show_wcPopup;
        }
    }

    if (wcDiv = $('wash_care_symbol_descriptions')) {
        var wcDivs = wcDiv.getElementsByTagName('DIV');

        for (var i = 0; i < wcDivs.length; i++) {
            if (wcDivs[i].className.match(/wash_care_symbol_description/)) {
                var link = document.createElement('A');
                link.appendChild(document.createTextNode('Close'));
                link.onclick = hide_wcPopup;
                link.className = 'close_popup';

                header = wcDivs[i].getElementsByTagName('H4')[0];
                wcDivs[i].insertBefore(link, header);
            }
        }

        var faux = document.createElement('P');
        faux.id = 'faux_background';
        faux.style.display = 'none';
        wcDiv.parentNode.insertBefore(faux, wcDiv);
    }
}
;

function show_wcPopup() {
    var popupId = this.id.replace('_trigger', '');
    if (popup = $(popupId)) {
        if (!(popup.className.match(/ show/))) {
            if (wcDiv = $('wash_care_symbol_descriptions')) {
                wcDivs = wcDiv.getElementsByTagName('DIV');
                for (var i = 0; i < wcDivs.length; i++) {
                    if (wcDivs[i].className.match(/ show/)) {
                        wcDivs[i].className = wcDivs[i].className.replace(' show', '');
                    }
                }
            }
            popup.className += ' show';
            $('faux_background').style.display = 'block';
        }
    }
}
;

function hide_wcPopup() {
    popup = this.parentNode;
    if (popup.className.match(/ show/)) {
        popup.className = popup.className.replace(' show', '');
    }

    $('faux_background').style.display = 'none';
}
;

/* IMAGE GALLERIES */

addOnLoad('init_imageGalleries()');

var posx = 0;
var posy = 0;
var overDlWin = false;

function init_imageGalleries() {
    if (Prototype && (ajaxObj = new Ajax.Request)) {
        // Check to see which DIVs are image galleries (if any)
        var DIVs = document.getElementsByTagName('DIV');
        var galleries = 0;
        for (var i = 0; i < DIVs.length; i++) {
            if (DIVs[i].className.match(/image_gallery/) || DIVs[i].className.match(/mini_image_gallery/)) {
                galleries++;
                DIVs[i].id = 'gallery_' + galleries;
            }
        }

        // Loop through the links in each gallery and prepare them for AJAX integration
        for (var i = 0; i < galleries; i++) {
            regexp = /image=([0-9]*_[0-9]*)$/;
            gallery = $('gallery_' + (i + 1));
            links = gallery.getElementsByTagName('A');
            for (var k = 0; k < links.length; k++) {
                if (links[k].image_id = regexp.exec(links[k].href)[1]) {
                    //alert("image_id=" + links[k].image_id);
                    links[k].removeAttribute('href');
                    links[k].onclick = show_imageDownload;
                    links[k].onmouseout = ieHoverFix_out;
                    links[k].onmouseover = ieHoverFix_on;
                }
            }
        }

        // Create a DIV to be the Download Dialog
        if ($('gallery_1')) {
            var fakewin = document.createElement('DIV');
            var win = document.createElement('DIV');
            fakewin.id = 'gallery_fake_dl_window';
            win.id = 'gallery_dl_window';
            win.onmouseover = function() {
                overDlWin = true;
            }
            win.onmouseout = function() {
                overDlWin = false;
            }
            $('gallery_1').parentNode.insertBefore(fakewin, $('gallery_1'));
            $('gallery_1').parentNode.insertBefore(win, $('gallery_1'));
            reset_galleryDlWindow();
        }
    }
}
;

function reset_galleryDlWindow() {
    if (win = $('gallery_dl_window')) {
        while (win.hasChildNodes()) {
            win.removeChild(win.firstChild);
        }

        var link = document.createElement('A');
        var header = document.createElement('H4');
        var pic_p = document.createElement('P');
        var pic = document.createElement('IMG');
        var photographer = document.createElement('P');
        var terms_p = document.createElement('P');
        var terms_label = document.createElement('LABEL');
        var terms_checkbox = document.createElement('INPUT');
        var terms_part1 = document.createElement('SPAN');
        var terms_link = document.createElement('A');
        var highres_p = document.createElement('P');
        var lowres_p = document.createElement('P');
        var highres_link = document.createElement('A');
        var lowres_link = document.createElement('A');
        var highres_span = document.createElement('SPAN');
        var lowres_span = document.createElement('SPAN');
        var instructions = document.createElement('P');

        header.id = 'gallery_dl_header';
        pic.id = 'gallery_dl_pic';
        photographer.id = 'gallery_dl_photographer';
        terms_p.id = 'gallery_dl_terms';
        terms_part1.id = 'gallery_dl_terms_part1';
        terms_link.id = 'privacy_policy_link';
        highres_p.id = 'gallery_dl_highres';
        lowres_p.id = 'gallery_dl_lowres';
        highres_link.id = 'gallery_dl_highres_link';
        lowres_link.id = 'gallery_dl_lowres_link';
        highres_span.id = 'gallery_dl_highres_span';
        lowres_span.id = 'gallery_dl_lowres_span';
        instructions.id = 'gallery_dl_instructions';

        pic_p.className = 'gallery_dl_picture';
        pic.alt = '';

        link.appendChild(document.createTextNode('Close'));
        link.onclick = hide_imageDownload;
        link.className = 'close_popup';

        header.appendChild(document.createTextNode(' '));

        pic_p.appendChild(pic);

        photographer.appendChild(document.createTextNode(' '));
        instructions.appendChild(document.createTextNode(' '));

        terms_checkbox.onclick = allow_imageDownload;

        terms_checkbox.id = 'gallery_dl_terms_checkbox';
        terms_checkbox.type = 'checkbox';
        terms_link.href = 'javascript:showPrivacyPolicyPopup();';
        terms_label.appendChild(document.createTextNode(' '));
        terms_label.appendChild(terms_part1);
        terms_label.appendChild(document.createTextNode(' '));
        terms_label.appendChild(terms_link);
        terms_p.appendChild(terms_checkbox);
        terms_p.appendChild(terms_label);

        highres_link.appendChild(document.createTextNode(' '));
        highres_span.appendChild(document.createTextNode(' '));
        highres_link.appendChild(document.createTextNode(' '));
        highres_link.appendChild(highres_span);
        highres_p.appendChild(highres_link);
        lowres_link.appendChild(document.createTextNode(' '));
        lowres_span.appendChild(document.createTextNode(' '));
        lowres_link.appendChild(document.createTextNode(' '));
        lowres_link.appendChild(lowres_span);
        lowres_p.appendChild(lowres_link);

        win.appendChild(link);
        win.appendChild(header);
        win.appendChild(pic_p);
        win.appendChild(photographer);
        win.appendChild(terms_p);
        win.appendChild(highres_p);
        win.appendChild(lowres_p);
        win.appendChild(instructions);
    }
}
;

function show_imageDownload() {
    if (win = $('gallery_dl_window')) {
        var ajax = new Ajax.Request(
                'viewarchivepic.ahtml',
        {
            method: 'post',
            parameters: 'image=' + this.image_id,
            onSuccess: show_imageDownload_done,
            onFailure: show_imageDownload_error
        });

        fakewin = $('gallery_fake_dl_window');

        while (win.hasChildNodes()) {
            win.removeChild(win.firstChild);
        }

        var loader_p = document.createElement('P');
        var loader_img = document.createElement('IMG');

        loader_p.id = 'gallery_dl_loader';

        loader_img.src = 'https://www.hm.com/static/images/common/ajax_loader.gif';
        loader_p.appendChild(loader_img);
        win.appendChild(loader_p);

        if (posx > 725) posx = 725;
        if (posx < 460) posx = 460;

        posx = 460;
        posy = 350;

        win.style.left = posx - 239 + 'px';
        fakewin.style.left = posx - 239 + 'px';
        win.style.top = posy - 167 + 'px';
        fakewin.style.top = posy - 167 + 'px';

        if (!win.className.match(/ show/)) {
            win.className += ' show';
            fakewin.className += ' show';
        }
    }
}
;

function show_imageDownload_done(response) {
    alert(response.responseText);
    reset_galleryDlWindow();

    header = $('gallery_dl_header');
    pic = $('gallery_dl_pic');
    photographer = $('gallery_dl_photographer');
    terms = $('gallery_dl_terms');
    terms_part1 = $('gallery_dl_terms_part1');
    terms_link = $('privacy_policy_link');
    highres_link = $('gallery_dl_highres_link');
    highres_span = $('gallery_dl_highres_span');
    lowres_link = $('gallery_dl_lowres_link');
    lowres_span = $('gallery_dl_lowres_span');
    instructions = $('gallery_dl_instructions');

    var ajaxResponse = Try.these(
            function() {
                return new DOMParser().parseFromString(response.responseText, 'text/xml');
            },
            function() {
                var xmldom = new ActiveXObject('Microsoft.XMLDOM');
                xmldom.loadXML(response.responseText);
                return xmldom;
            }
            );
    alert('ajaxResponse: ' + ajaxResponse.childNodes[0].textContent);
    header.replaceChild(document.createTextNode(ajaxResponse.getElementsByTagName('header')[0].firstChild.nodeValue), header.firstChild);
    pic.src = ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('bigger_picture')[0].firstChild.nodeValue;

    //photographer.replaceChild(document.createTextNode(ajaxResponse.getElementsByTagName('photographer_title')[0].firstChild.nodeValue + ' '), photographer.firstChild)
    photographer.appendChild(document.createTextNode(ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('photographer')[0].firstChild.nodeValue));
    photographer.appendChild(document.createElement('BR'));
    //photographer.appendChild(document.createTextNode(ajaxResponse.getElementsByTagName('usage_title')[0].firstChild.nodeValue + ' '));
    //photographer.appendChild(document.createTextNode(ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('usage')[0].firstChild.nodeValue + ' '));

    terms_part1.appendChild(document.createTextNode(ajaxResponse.getElementsByTagName('terms_part1')[0].firstChild.nodeValue));
    terms_link.appendChild(document.createTextNode(ajaxResponse.getElementsByTagName('terms_part2')[0].firstChild.nodeValue));
    //terms_link.href = ajaxResponse.getElementsByTagName('terms_link')[0].firstChild.nodeValue;

    highres_link.replaceChild(document.createTextNode(ajaxResponse.getElementsByTagName('highres_text')[0].firstChild.nodeValue), highres_link.firstChild)
    highres_link.linkto = ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('highres')[0].firstChild.nodeValue;
    highres_span.replaceChild(document.createTextNode('(' + ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('highres_size')[0].firstChild.nodeValue + ')'), highres_span.firstChild)
    lowres_link.replaceChild(document.createTextNode(ajaxResponse.getElementsByTagName('lowres_text')[0].firstChild.nodeValue), lowres_link.firstChild)
    lowres_link.linkto = ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('lowres')[0].firstChild.nodeValue;
    lowres_span.replaceChild(document.createTextNode('(' + ajaxResponse.getElementsByTagName('picture')[0].getElementsByTagName('lowres_size')[0].firstChild.nodeValue + ')'), lowres_span.firstChild)

    instructions.replaceChild(document.createTextNode(ajaxResponse.getElementsByTagName('instructions')[0].firstChild.nodeValue), instructions.firstChild)
}
;

function allow_imageDownload() {
    highres_link = $('gallery_dl_highres_link');
    lowres_link = $('gallery_dl_lowres_link');
    terms_checkbox = $('gallery_dl_terms_checkbox');

    if (terms_checkbox.checked) {
        highres_link.href = highres_link.linkto;
        lowres_link.href = lowres_link.linkto;
        highres_link.className = 'active';
        lowres_link.className = 'active';
    } else {
        highres_link.removeAttribute('href');
        lowres_link.removeAttribute('href');
        highres_link.className = '';
        lowres_link.className = '';
    }
}

function show_imageDownload_error() {
    hide_imageDownload();
    alert('There was an error while loading the details for this picture. Please try again later.');
}
;

function hide_imageDownload() {
    if (win = $('gallery_dl_window')) {
        fakewin = $('gallery_fake_dl_window');
        if (win.className.match(/ show/)) {
            win.className = win.className.replace(' show', '');
            fakewin.className = fakewin.className.replace(' show', '');
        }
        if (win.className.match(/show/)) {
            win.className = win.className.replace('show', '');
            fakewin.className = fakewin.className.replace('show', '');
        }
    }
}
;

/* POPUP OPENER */
function openFullScreenPopup(url, windowName) {

    var faqWindowName = 'faqworkathm';
    var careerNavigationNodePrefix = 'career';
    var left = 0;
    var top = 0;
    var width, height;
    var isMac = (navigator.appVersion.indexOf("Mac") != -1);

    width = (screen.availWidth ? screen.availWidth : 800);
    height = (screen.availHeight ? screen.availHeight : 600);

    height -= 10;
    width -= 10;
    if (isMac) {
        height -= 20;
    }

    if(windowName != null && windowName.indexOf(faqWindowName) != -1) {
        width = 480;
        height = 600;
        left = 500;
        top = 112;
    }
    if(windowName != null && windowName.indexOf(careerNavigationNodePrefix) == 0) {
        width = 600;
        height = 550;
        left = 230;
        top = 50;
    }

    if (windowName == null || windowName == "") {
        windowName = "popupFullscreen";
    }

    var windowAttributes = "left=" + left
            + ",top=" + top
            + ", width=" + width
            + ", height=" + height
            + ", fullscreen=" + 'no'
            + ", toolbar=" + 'no'
            + ", location=" + 'no'
            + ", status=" + 'no'
            + ", menubar=" + 'no'

    if(windowName != null && (windowName.indexOf(faqWindowName) != -1 || windowName.indexOf(careerNavigationNodePrefix) == 0)) {
        windowAttributes += ", scrollbars=" + 'yes'
    } else {
        windowAttributes += ", scrollbars=" + 'no'
    }

    windowAttributes += ", resizable=" + 'no'
            + ", copyhistory=" + 'no'

    var theWindow = window.open(url, windowName, windowAttributes);
    if (theWindow != null) {
        theWindow.focus();
    }
}
;