function c_addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}
function c_getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 

	return window.undefined; 
}
function c_getViewportWidth() {
	var offset = 17;
	var width = null;
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
}

function c_getScrollTop() {
	if (self.pageYOffset) // all except Explorer
	{
		return self.pageYOffset;
	}
	else if (document.documentElement && document.documentElement.scrollTop)
		// Explorer 6 Strict
	{
		return document.documentElement.scrollTop;
	}
	else if (document.body) // all other Explorers
	{
		return document.body.scrollTop;
	}
}

var gPopupMask = null;
var gPopupContainer = null;
var gPopFrame = null;
var gReturnFunc;
var gPopupIsShown = false;
var gDefaultPage = "loading.html";
var gHideSelects = false;
var gReturnVal = null;
var finnair_alert_msg = "";

var gTabIndexes = new Array();
var gTabbableTags = new Array("A","BUTTON","TEXTAREA","INPUT","IFRAME");	

if (!document.all) {
	document.onkeypress = keyDownHandler;
}



function initPopUp() {
    if(gPopupMask != null)
        return;
	// Add the HTML to the body
	theBody = document.getElementsByTagName('BODY')[0];
	popmask = document.createElement('div');
	popmask.id = 'finnair_popupMask';
	popcont = document.createElement('div');
	popcont.id = 'finnair_popupContainer';
	popcont.innerHTML = '' +
		'<div id="finnair_popupInner">' +
			'<div id="finnair_popupTitleBar">' +
				'<div id="finnair_popupTitle"><div id="finnair_alert_msg_title"></div></div>' +
				'<div id="finnair_popupControls">' +
					'' +
				'</div>' +
			'</div>' +
            '<div id="finnair_alertmsgdiv"><table>'+
                '<tr><td>' +
		'<div id="finnair_alert_msg_text"></div>'+
                '</td></tr>'+
                '<tr><td align="center">'+
                '<button id="finnair_alert_ok_button" onclick="window.hidePopWin();">OK</button></td></tr>'+
            '</div>' +
		'</div>';
	theBody.appendChild(popmask);
	theBody.appendChild(popcont);
	
	gPopupMask = document.getElementById("finnair_popupMask");
	gPopupContainer = document.getElementById("finnair_popupContainer");
	gPopFrame = document.getElementById("finnair_popupFrame");	
	
	var brsVersion = parseInt(window.navigator.appVersion.charAt(0), 10);
	if (brsVersion <= 6 && window.navigator.userAgent.indexOf("MSIE") > -1) {
		gHideSelects = true;
	}
	
	var elms = document.getElementsByTagName('a');
	for (i = 0; i < elms.length; i++) {
		if (elms[i].className.indexOf("submodal") == 0) { 
			elms[i].onclick = function(){
				var width = 300;
				var height = 60;
				params = this.className.split('-');
				if (params.length == 3) {
					width = parseInt(params[1]);
					height = parseInt(params[2]);
				}
				showPopWin(width,height); return false;
			}
		}
	}
}

c_addEvent(window, "load", initPopUp);

function showPopWin(width, height) {
	gPopupIsShown = true;
	disableTabIndexes();
	gPopupMask.style.display = "block";
	gPopupContainer.style.display = "block";
	centerPopWin(width, height);
	var titleBarHeight = parseInt(document.getElementById("finnair_popupTitleBar").offsetHeight, 10);
	if(document.body.className == "jump"){
		gPopupContainer.style.width = "183px";//width + "px";
		gPopupContainer.style.height = "200px";//(height+titleBarHeight) + "px";
		gPopupContainer.style.top = "100px";
		gPopupContainer.style.left = "0px";
	}
	if(document.body.className == "miniReservation") {
		//gPopupContainer.style.width = "150px";//width + "px";
		//gPopupContainer.style.height = "150px";//(height+titleBarHeight) + "px";
		gPopupContainer.style.top = "30px";
		gPopupContainer.style.left = "4px";		
	}
	/*else{
		gPopupContainer.style.top = (c_getViewportWidth()/2)+"px";
		gPopupContainer.style.left = (c_getViewportHeight()/2)+"px";
	}*/
	setMaskSize();
	if (gHideSelects == true) {
		hideSelectBoxes();
	}
}

//
var gi = 0;
function centerPopWin(width, height) {
	if (gPopupIsShown == true) {
		if (width == null || isNaN(width)) {
			width = gPopupContainer.offsetWidth;
		}
		if (height == null) {
			height = gPopupContainer.offsetHeight;
		}
		
		var theBody = document.getElementsByTagName("BODY")[0];
		var scTop = parseInt(c_getScrollTop(),10);
		var scLeft = parseInt(theBody.scrollLeft,10);
	
		setMaskSize();
		
		var titleBarHeight = parseInt(document.getElementById("finnair_popupTitleBar").offsetHeight, 10);
		
		var fullHeight = c_getViewportHeight();
		var fullWidth = c_getViewportWidth();
		
		gPopupContainer.style.top = (scTop + ((fullHeight - (height+titleBarHeight)) / 2)) + "px";
		gPopupContainer.style.left =  (scLeft + ((fullWidth - width) / 2)) + "px";
	}
}
c_addEvent(window, "resize", centerPopWin);
c_addEvent(window, "scroll", centerPopWin);
window.onscroll = centerPopWin;

function setMaskSize() {
	var theBody = document.getElementsByTagName("BODY")[0];
			
	var fullHeight = c_getViewportHeight();
	var fullWidth = c_getViewportWidth();
	
	if (fullHeight > theBody.scrollHeight) {
		popHeight = fullHeight;
	} else {
		popHeight = theBody.scrollHeight;
	}
	
	if (fullWidth > theBody.scrollWidth) {
		popWidth = fullWidth;
	} else {
		popWidth = theBody.scrollWidth;
	}
	/* adiitional fix for jump -page */
	if(document.body.className == "jump"){
		gPopupMask.style.height = "417px";
		gPopupMask.style.width = "183px";
	}
	if(document.body.className == "miniReservation") {
		gPopupMask.style.height = "150px";
		gPopupMask.style.width = "150px";		
	}
	else{
		gPopupMask.style.height = popHeight + "px";
		gPopupMask.style.width = popWidth + "px";
	}
}

function hidePopWin(callReturnFunc) {
	gPopupIsShown = false;
	var theBody = document.getElementsByTagName("BODY")[0];
	theBody.style.overflow = "";
	restoreTabIndexes();
	if (gPopupMask == null) {
		return;
	}
	gPopupMask.style.display = "none";
	gPopupContainer.style.display = "none";
	if (callReturnFunc == true && gReturnFunc != null) {
		gReturnVal = window.frames["finnair_popupFrame"].returnVal;
		window.setTimeout('gReturnFunc(gReturnVal);', 1);
	}
	if (gHideSelects == true) {
		displaySelectBoxes();
	}
}

function keyDownHandler(e) {
    if (gPopupIsShown && e.keyCode == 9)  return false;
}

function disableTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				gTabIndexes[i] = tagElements[k].tabIndex;
				tagElements[k].tabIndex="-1";
				i++;
			}
		}
	}
}

function restoreTabIndexes() {
	if (document.all) {
		var i = 0;
		for (var j = 0; j < gTabbableTags.length; j++) {
			var tagElements = document.getElementsByTagName(gTabbableTags[j]);
			for (var k = 0 ; k < tagElements.length; k++) {
				tagElements[k].tabIndex = gTabIndexes[i];
				tagElements[k].tabEnabled = true;
				i++;
			}
		}
	}
}


function hideSelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
				document.forms[i].elements[e].style.visibility="hidden";
			}
		}
	}
}

function displaySelectBoxes() {
	for(var i = 0; i < document.forms.length; i++) {
		for(var e = 0; e < document.forms[i].length; e++){
			if(document.forms[i].elements[e].tagName == "SELECT") {
			document.forms[i].elements[e].style.visibility="visible";
			}
		}
	}
}

function finnairalert(title, alertmsg, button, alerttext) {
//	window.alert(alerttext);
// TODO: poista kommentit kun properties tiedostot on käännetty.
    var mm = document.getElementById("finnair_alert_msg_text");
    if(alertmsg.indexOf("com.finnair") != -1) {
        mm.innerHTML=alerttext;
    } else {
        mm.innerHTML=alertmsg;
    }
    mm = document.getElementById("finnair_alert_msg_title");
    if(title.indexOf("com.finnair") != -1) {
        mm.innerHTML="Alert";
    } else {
        mm.innerHTML=title;
    }
    mm = document.getElementById("finnair_alert_ok_button");
    if(button.indexOf("com.finnair") != -1) {
        mm.innerHTML="OK";
    } else {
        mm.innerHTML=button;
    }
    showPopWin(230, 60);
}

// japanin kielisten merkkijen syoton esto

var finnair_ok_button_text = "";
var finnair_alert_text="";
var finnair_alert_title="";

function init_finnair_validateinput(title,message,button) {
    finnair_ok_button_text=button;
    finnair_alert_text=message;
    finnair_alert_title=title;
}

function finnair_validateinput(control) {
	var string = control.value;
    if(string) {
	for (var n = 0; n < string.length; n++) {
			var c = string.charCodeAt(n);
			if(c > 300) {
				finnairalert(finnair_alert_title,finnair_alert_text,finnair_ok_button_text,"Field contaings invalid characters.");
				control.focus();
				return;
			}
		}
	}
}

function setFinnairOnblurs(){
    $j('input').each(function(f){
        jQuery(this).bind('blur', function(){
           finnair_validateinput(this);
        });
    });
    $j('textarea').each(function(f){
        jQuery(this).bind('blur', function(){
            finnair_validateinput(this);
        });
    });
}	

function setFinnairOnblurstoolbox(){
    $j('input').each(function(f){
        jQuery(this).bind('blur', function(){
            window.top.finnair_validateinput(this);
        });
    });
    $j('textarea').each(function(f){
        jQuery(this).bind('blur', function(){
            window.top.finnair_validateinput(this);
        });
    });
}