/**
 * ====================================================
 * JavaScript (html contents)
 *
 * @author    : maomao
 * @date      : 2006/09/01
 * @copyright : (c) maomao-studio. All Rights Reserved.
 *     
 * ====================================================
 */

// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//
//  Constant
//
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 

document.oncontextmenu = new Function("return false"); // Just For IE -> right button invalid.


// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//
//  Global Function
//
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 

var MMS = {};

/**********************************************************
 * 機　能： 入力された値がEmail（xxx@xxx.xx）であるかどうかチェック 
 * 引　数： arg　入力された値 
 * 戻り値： 正：true　不正：false 
 **********************************************************/ 
MMS.isEmail = function(arg) {

	var checkTLD=1;

	var knownDomsPat=/^(com|net|org|edu|int|mil|gov|arpa|biz|aero|name|coop|info|pro|museum)$/;

	var emailPat=/^(.+)@(.+)$/;

	var specialChars="\\(\\)><@,;:\\\\\\\"\\.\\[\\]";

	var validChars="\[^\\s" + specialChars + "\]";

	var quotedUser="(\"[^\"]*\")";

	var ipDomainPat=/^\[(\d{1,3})\.(\d{1,3})\.(\d{1,3})\.(\d{1,3})\]$/;

	var atom=validChars + '+';

	var word="(" + atom + "|" + quotedUser + ")";

	var userPat=new RegExp("^" + word + "(\\." + word + ")*$");

	var domainPat=new RegExp("^" + atom + "(\\." + atom +")*$");

	var matchArray=arg.match(emailPat);

	if (matchArray==null) {
		return false;
	}
	var user=matchArray[1];
	var domain=matchArray[2];

	for (i=0; i<user.length; i++) {
		if (user.charCodeAt(i)>127) {
			return false;
	   }
	}
	for (i=0; i<domain.length; i++) {
		if (domain.charCodeAt(i)>127) {
			return false;
	   }
	}

	if (user.match(userPat)==null) {
		return false;
	}

	var IPArray=domain.match(ipDomainPat);
	if (IPArray!=null) {

	for (var i=1;i<=4;i++) {
		if (IPArray[i]>255) {
			return false;
	   }
	}
	return true;
	}

	var atomPat=new RegExp("^" + atom + "$");
	var domArr=domain.split(".");
	var len=domArr.length;
	for (i=0;i<len;i++) {
		if (domArr[i].search(atomPat)==-1) {
			return false;
	   }
	}

	if (checkTLD && domArr[domArr.length-1].length!=2 && domArr[domArr.length-1].search(knownDomsPat)==-1) {
		return false;
	}

	if (len<2) {
		return false;
	}

	return true;
};

/**
 * ポップアップ画面
 */
MMS.popWindow = function(name, href, width, height) {
	var sw = screen.width, sh=screen.height;
	if (typeof(width) == "undefined"){w = 300;}
	if (typeof(height) == "undefined"){h = 400;}

	var left = (sw/2 - w)/2, top = (sh - h)/2;

	var option = "screenX=0,screenY=0,top="+top+",left="+left+",width=" + w + ",height=" + h + ",scrollbars=yes,resizable=yes";
	var child = window.open(href, name, option);
	child.focus();
};

/**
 * 画面サイズを取得
 */
MMS.getPageSize = function() {
	var d = document.documentElement;
	var w = window.innerWidth || self.innerWidth  || (d && d.clientWidth)  || document.body.clientWidth;
	var h = window.innerHeight || self.innerHeight || (d && d.clientHeight) || document.body.clientHeight;
	return [w, h];
};

/**
 * スクロール位置を取得
 */
MMS.getPageScrollPosition = function() {
	var xScrollLeft, yScrolltop;
	if (self.pageYOffset) {
		yScrolltop = self.pageYOffset;
		xScrollLeft = self.pageXOffset;
	} else if (document.documentElement && document.documentElement.scrollTop){ // Explorer 6 Strict
		yScrolltop = document.documentElement.scrollTop;
		xScrollLeft = document.documentElement.scrollLeft;
	} else if (document.body) { // all other Explorers
		yScrolltop = document.body.scrollTop;
		xScrollLeft = document.body.scrollLeft;
	}
	if (typeof(xScrollLeft) == "undefined"){
		xScrollLeft = 0;
	}
	if (typeof(yScrolltop) == "undefined"){
		yScrolltop = 0;
	}
	return [xScrollLeft, yScrolltop]; 
};

/**
 * 減速スクロール
 */
MMS.scrj = 1;
MMS.softScrollBack = function() {
	var scrolltop = MMS.getPageScrollPosition()[1];
	if (MMS.scrj<50 && scrolltop) {
		scrolltop = (scrolltop>2) ? Math.ceil(scrolltop*.2) : 1;
		MMS.scrj++;
		scrollBy(0, -scrolltop);
		setTimeout("MMS.softScrollBack()", 20);
	} else {
		scrollTo(0,0);
		MMS.scrj = 1;
	}
};

// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//
//  EventHandle
//
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 

var EventHandle = Class.create();
EventHandle.prototype = {
    //  コンストラクタ
    initialize : function(id) {
		this.id = id;
		this.err = [];
		this.form = null;
		this.focus = null;
		this.__frms = 5;
		this.__speed = 40;
		this.timer = null;
		this.scrollFlag = false;
		this.POSITIONS = {top:32, profile:128, works:222, gallery:320, essay:408, contact:498}; 
		this.LOADING = '<DIV id="loading"></DIV>';
		this.currentPosition = null;
		this.targetPosition = null;
    },

	set : function(id) {
		this.id = id;
		//Element.setStyle("mNaviFocus", {left : this.POSITIONS[this.id] + "px"});
	},

	focusIn : function(evt) {
		var o = Event.element(evt);
		Element.addClassName(o, "input-active");
	},

	focusOut : function(evt) {
		var o = Event.element(evt);
		Element.removeClassName(o, "input-active");
	}
};

// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//
//  Main Contents
//
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 

function loadTop() {
	eventHandle.set("top");
}

function loadProfile() {
	eventHandle.set("profile");
}

function loadWorks() {
	eventHandle.set("works");
}

function loadGallery() {
	eventHandle.set("gallery");
	initLightbox();
}

function loadEssay() {
	eventHandle.set("essay");

	eventHandle.show = function(o) {
		if (o)	{
			var url = o.href;
			popWindow("essay", url);
			return false;
		}
		return true;
	};
}

function loadContact() {
	eventHandle.set("contact");

	Event.observe("name", 'focus', eventHandle.focusIn, false);
	Event.observe("name", 'blur', eventHandle.focusOut, false);
	Event.observe("email", 'focus', eventHandle.focusIn, false);
	Event.observe("email", 'blur', eventHandle.focusOut, false);
	Event.observe("subject", 'focus', eventHandle.focusIn, false);
	Event.observe("subject", 'blur', eventHandle.focusOut, false);
	Event.observe("msg", 'focus', eventHandle.focusIn, false);
	Event.observe("msg", 'blur', eventHandle.focusOut, false);

	eventHandle.sendMail = function() {
		// 名前は入力されていません．
		var _MSG_NO_NAME = String.fromCharCode(21517,21069,12399,20837,21147,12373,12428,12390,12356,12414,12379,12435,65294);
		// メッセージは入力されていません．
		var _MSG_NO_MSG = String.fromCharCode(12513,12483,12475,12540,12472,12399,20837,21147,12373,12428,12390,12356,12414,12379,12435,65294);

		var html = "";
		var name = $F("name").strip();
		var email = $F("email").strip();
		var subject = $F("subject").strip();
		var msg = $F("msg").strip();

		var checkForm = function(){
			
			var alertBox = new AlertBox();
			
			if (name == ""){
				alertBox.push("name", MSG.W001, "お名前");
			}
			if (email == ""){
				alertBox.push("email", MSG.W001, "メールアドレス");
			} else if (!MMS.isEmail(email)){
				alertBox.push("email", MSG.W002, "メールアドレス");
			}
			if (msg == ""){
				alertBox.push("msg", MSG.W001, "メッセージ");
			}

			if (alertBox.ifHas()){
				alertBox.show();
				return false;
			}
			return true;
		};

		if (!checkForm()){
			return false;
		}

		$("content").innerHTML = this.LOADING;
		var url = "sendmail.php";
		if (subject == ""){
			subject = "no title";
		}
		var pars = $H({v_name : name, v_email : email, v_subject : subject, v_message : msg}).toQueryString();

		// Ajax
		var myAjax = new Ajax.Request(
		url, 
		{
			method: 'post', 
			postBody : pars, 
			onComplete: eventHandle.showResponse
		});
	};
	
	eventHandle.showResponse = function (originalRequest) {
		// メール送信しました。ありがとうございました。
		var _MSG_MAIL_SEND_OK = String.fromCharCode(12513,12540,12523,36865,20449,12375,12414,12375,12383,12290,12354,12426,12364,12392,12358,12372,12374,12356,12414,12375,12383,12290);
		// エラーが発生したため、送信できませんでした。上記のアドレス宛に直接メールしてください。
		var _MSG_MAIL_SEND_NG = String.fromCharCode(12456,12521,12540,12364,30330,29983,12375,12383,12383,12417,12289,36865,20449,12391,12365,12414,12379,12435,12391,12375,12383,12290,19978,35352,12398,12450,12489,12524,12473,23451,12395,30452,25509,12513,12540,12523,12375,12390,12367,12384,12373,12356,12290);
		//put returned XML in the textarea
		var flag = originalRequest.responseText.strip();
		var html = '<DL id="sendover">';
		if (flag.toLowerCase() == "true") {	
			html += '<DD><P>Thank you. Your message has been sent successfully.</P><P>'+_MSG_MAIL_SEND_OK+'</P></DD>';
		} else {
			html += '<DD class="err"><P>Seems like an error occurred while processing your message.Please write directly to <A href="mailto:lee_luqing@yahoo.co.jp;">lee_luqing@yahoo.co.jp</A></P><P>'+_MSG_MAIL_SEND_NG+'</P></DD>';
		}			
		html += '</DL>';
		html += '<DIV id="btn-back"><A href="contact.php" title="戻る">戻る</A></DIV>';
		$("content").innerHTML = html;
	};

}


// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
//
//  New a EventHandle Object.
//
// _/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/_/ 
var eventHandle = new EventHandle();
