// main.js

// fix navigation for IE6, 7
(function(w, d) {
    var detect = d.documentElement.className;
    if (!/\bie\d+\b/.test(detect)) return;

    var loc = d.location;
    var baseurl = loc.protocol + '//' + loc.host;

    var fixLocalNav = function(ln) {
	if (!ln) return;

	var li = ln.getElementsByTagName('li')[0];
	do {
	    if (li.nodeType != 1) continueue;
	    if (li.nodeType == 1 && /\bheader\b/.test(li.className)) continue;

	    (function(div) {
		if (!div || div.length == 0) return;

		var a = div[0].getElementsByTagName('a');
		if (!a || a.length == 0)
		    a = div[0].getElementsByTagName('span');
		if (!a || a.length == 0) return;

		a = a[0];
		a.style.marginTop = ((45 - a.offsetHeight) / 2) + 1 + 'px';

	    })(li.getElementsByTagName('div'));

	} while (li = li.nextElementSibling || li.nextSibling)
    };

    var fixLocalNavForIE6 = function(ln, sheet) {
	if (!ln) return;

	if (sheet && sheet.addRule) {
	    sheet.addRule('.ie6 #local-nav li li a', 'background:none');
	    sheet.addRule('.ie6 #local-nav li li a img', 'display:inline-block; margin-right:4px; margin-left:2px; vertical-align:middle');
	}
	
	var ul = ln.getElementsByTagName('ul');
	if (ul.length < 2) return;

	var imgsrc = baseurl + '/misc/styles/images/link-list-header-04.gif';
	var as = ul[1].getElementsByTagName('a');
	for (i=0,l=as.length; i<l; i++) {
	    (function(a, src) {
		var img = new Image();
		img.src = src;
		a.style.paddingLeft = '0';
		a.insertBefore(img, a.firstChild);
	    })(as[i], imgsrc);
	}
    };

    var fixGlobalNavForIE6 = function(gn, sheet) {
	if (!gn) return;

	if (sheet && sheet.addRule) {
	    sheet.addRule('.ie6 #global-nav .sub-nav a', 'padding-left:0; background:none');
	    sheet.addRule('.ie6 #global-nav .sub-nav a img', 'display:inline-block; margin-right:3px; vertical-align:middle');
	}

	var imgsrc = baseurl + '/misc/styles/images/link-list-header-05.gif';
	var as = gn.getElementsByTagName('a');
	for (var i=0,l=as.length; i<l; i++) {
	    if (/\blevel-1\b/.test(as[i].parentNode.className)) continue;

	    (function(a, src) {
		var img = new Image();
		img.src = src;
		a.insertBefore(img, a.firstChild);
	    })(as[i], imgsrc)
	}
    };


    // fire
    var ln = d.getElementById('local-nav');
    fixLocalNav(ln)

    if (/\bie6\b/.test(detect)) {
	var sheet = d.styleSheets[0];
	
	fixLocalNavForIE6(ln, sheet);

	var gn = d.getElementById('global-nav');
	fixGlobalNavForIE6(gn, sheet);
    }
})(window, document);


// main features
(function(w, d) {
    var detector = d.documentElement.className;
    var loc = d.location;
    var baseurl = loc.protocol + '//' + loc.host;

    var bind = function(fn, obj) {
	return function() { fn.apply(obj, arguments); };
    };

    var addEvent = function(elm, en, eh) {
	if (elm.addEventListener)
	    elm.addEventListener(en, eh, false);
	else if (elm.attachEvent)
	    elm.attachEvent('on'+en, eh);
    };


    // global nav pulldown
    var globalNavPulldown = function(gn) {
	if (!gn) return;

	var main = function(e) {
	    var isover = (e.type == 'mouseover');
	    var rel = e.relatedTarget || (isover ? e.fromElement : e.toElement);

	    while (rel && (rel !== this))
		rel = rel.parentNode;

	    if (rel === this) return;

	    var childs = this.getElementsByTagName('div');
	    if (childs.length)
		childs[0].style.display = isover ? 'block' : 'none';
	};
	
	var lis = gn.getElementsByTagName('li');
	for (var i=0, l=lis.length; i<l; i++) {
	    if (/\blevel-1\b/.test(lis[i].className)) {
		addEvent(lis[i], 'mouseover', bind(main, lis[i]));
		addEvent(lis[i], 'mouseout', bind(main, lis[i]));
	    }
	}
    }


    // toggles
    var QAToggleClickHandler = function() {
	var sub = this.sub;
	var target = this.target;
	var opened = (this.sub.style.display === 'block');

	if (opened) {
	    sub.style.display = 'none';
	    target.setAttribute('title', 'show answer');
	}else {
	    sub.style.display = 'block';
	    target.setAttribute('title', 'hide answer');
	}
    };
    
    var toggleInit = function(target, sub) {
	if (!(target && sub)) return;

	var tgl = d.createElement('a');
	tgl.setAttribute('title', 'close');
	tgl.innerHTML = '&nbsp;';

	var p = d.createElement('p');
	p.className = 'close-button';
	p.appendChild(tgl);

	sub.appendChild(p);
	sub.style.display = 'none';

	var ts = {target: target, sub: sub};
	addEvent(tgl, 'click', bind(QAToggleClickHandler, ts));
	addEvent(target, 'click', bind(QAToggleClickHandler, ts));

	if (/\bie6\b/.test(detector)) {
	    addEvent(target, 'mouseover', bind(function() {
		target.style.textDecoration = 'underline';
	    }, target));
	    addEvent(target, 'mouseout', bind(function() {
		target.style.textDecoration = 'none';
	    }, target));
	}
    }


    // transit between Official and Recruit
    var transitOfficialAndRecruitHandler = function(e) {
	var opnr = w.opener, winref;
	
	try {
	    if (opnr && opnr.location.href == this.url) {
		opnr.focus();

	    }else {
		winref = w.open(this.url, this.target, 'resizable=yes,scrollbars=yes,status=yes,menubar=yes,toolbar=yes,location=yes');
		if (winref) winref.focus();
	    }
	}catch (err) {
	    winref = w.open(this.url, this.target, 'resizable=yes,scrollbars=yes,status=yes,menubar=yes,toolbar=yes,location=yes');
	    if (winref) winref.focus();
	}

	if (opnr || winref) {
	    if (w.event) {
		w.event.returnValue = false;
	    }else {
		e.preventDefault();
	    }
	}
    };
    
    var transitOfficialAndRecruitInit = function(a, t, dt) {
	if (/\bopera\b/.test(dt)) {
	    a.setAttribute('target', '_target');

	    a.addEventListener('click', function(e) {
		w.open(this.href, '_target', 'resizable=yes,scrollbars=yes,status=yes,menubar=yes,toolbar=yes,location=yes');
		if (w.opener) w.opener.close();
		e.preventDefault();
	    }, false);
	    return;
	    
	}else
	    a.setAttribute('target', t);

	if (/\bwebkit\b/.test(dt)) return;
	
	addEvent(a, 'click', bind(transitOfficialAndRecruitHandler, {url: a.href, target: t}));
    };


    // domContentLoaded handler
    var domReadyHandler = function() {
	var bodyId = d.body.id;

	// fire pulldown
	if (/\bie6\b/.test(detector))
	    globalNavPulldown(d.getElementById('global-nav'));
	
	// fire faq toggle
	if (bodyId == 'recruit-qa' && /\bis-qa-toggle\b/.test(detector)) {
	    var dts = d.getElementsByTagName('dt');
	    
	    for (var i=0, l=dts.length; i<l; i++) {
		var dt = dts[i];
		
		if (/\bqa-list\b/.test(dt.parentNode.className)) {
		    dt.setAttribute('title', 'show answer');
		    toggleInit(dt, (dt.nextElementSibling || dt.nextSibling));
		}
	    }
	}

	// fire transit between official and recruit
	if (/^recruit/.test(bodyId) ) {
	    // recruit
	    var _a = d.getElementsByTagName('a');
	    for (var i=0,l=_a.length; i<l; i++) {
		var a = _a[i];
		var hr = a.href;
		if (hr.indexOf(baseurl) == 0 &&
		    hr.indexOf(baseurl + '/recruit/') != 0) {
		    transitOfficialAndRecruitInit(a, 'naisOfficialWin', detector);
		}
	    }
	}else {
	    // official
	    var _a = d.getElementsByTagName('a');
	    for (var i=0,l=_a.length; i<l; i++) {
		var a = _a[i];
		var hr = a.href;
		if (hr.indexOf(baseurl + '/recruit/') == 0) {
		    transitOfficialAndRecruitInit(a, 'naisRecruitWin', detector);
		}
	    }
	}
	
	// fire flash branch
	if (/^(recruit-home|home)$/.test(bodyId)) {
	    if (typeof DetectFlashVer !== 'undefined' && !DetectFlashVer(6)) {
		(function(m) {
		    if (!m) return;

		    m.innerHTML = '';
		    var img = new Image();
		    img.src = 'images/main-visual.jpg';
		    m.appendChild(img);
		})(d.getElementById('main-visual'));
	    }
	}
    };

    
    // observe dom ready
    if (/\bie\d?\b/.test(detector)) {
	w.setTimeout(function domReadyObserver() {
	    try {
		d.documentElement.doScroll('left');
	    }catch (e) {
		w.setTimeout(domReadyObserver, 25);
		return;
	    }
	    domReadyHandler();
	}, 25);

	if (/\bie7\b/.test(detector)) {
	    addEvent(w, 'load', function(e){
		(function(c){
		    if (c) w.setTimeout(function(){c.style.border = '1px solid #fff';},1);
		})(d.getElementById('corp-logo'));
	    });
	}
    }else
	d.addEventListener('DOMContentLoaded', domReadyHandler, false);

})(window, document);

