﻿//===========================================================================
// ::: Standard Library for IF3 Client
//---------------------------------------------------------------------------
	var PUBDIR = "./share/";
	var USRDIR = "_private/";
	var USRRES = "../../usr/pub/";
	
//---------------------------------------------------------------------------
// Copyright(C)2006 DIGITAL DREAM, Inc.
//===========================================================================



function getElement( name ){
	try{
		if(document.getElementById) //for e5,e6,n6,n7,m1,o6,o7,s1
			return document.getElementById(name);
		else if(document.all) //for e4
			return document.all(name);
		else if(document.layers) //for n4
			return document.layers[name];
	}catch(e) {}
	return null;
}

function setElement(id, html){
	setElementHTML( id, html );
}

function setElementHTML(id, html){
	getElement(id).innerHTML = "";
	hideElement(id);
	getElement(id).innerHTML = html;
	showElement(id);
}


function setElementText(id, text){
	//getElement(id).innerText = "";
	//hideElement(id);
	getElement(id).innerText = text;
	//showElement(id);
}


function activateElement( name ){
	getElement(name).style.display = "";
	//showElement(name);
}

function deactivateElement( name ){
	getElement( name ).style.display = "none";
	//hideElement(name);
}


/*function logOut(){
	setcookie('rid',"", -1);
	document.forms["frmlogout"].submit();
}*/

function logInOut(url){
	//alert(isLogon);
	if (isLogon) {
		setcookie("smile_rid","", -1);
		viewPid = logonPid = "";
		isLogon = canEdit = false;
		nicknameStr = "";
		logout();
		openWindow("logout","?state=logout", (url?url:""));
	}else{
		openWindow("logout","?redir=" +  escape(pidenc(location.pathname + location.search)), (url?url:""));
	}
}

function logout(){
	var ajax = new AJAX();
	if( typeof( ajax ) != 'undefined' ){
		ajax.setListener( function(){ onLogoutResponse( ajax ); } );
		var params = new Object();
		params["xmlurl"] = "./logoncheck.aspx?logout=true"+"&rnd="+rnd();
		ajax.send( "GET", params["xmlurl"], params );
	}
	setcookie('smile_rid',"", -1);
}
	
function rnd(){
	return Math.random();
}

function getrid(){
	var str="";
	for (var i=0; i<32; i++){
		str +=getChar(Math.random()*36);
	}
	return str;
}

function getChar(i){
	if(i<10){
		i = 48+i;
	}else{
		i = i + 55;
	}
	var ch = String.fromCharCode(i);
	return ch;
}

function IsEmail(str){
	var filter=/^([\w-]+(?:\.[\w-]+)*)@((?:[\w-]+\.)*\w[\w-]{0,66})\.([a-z]{2,6}(?:\.[a-z]{2})?)$/i
	if (filter.test(str)){
		return true;
	}
	return false;
}

function GetCurDateStr(){
	var d = new Date(); 	
	return d.getFullYear() + d.getMonth + d.getDate + "T" + d.getHours + d.getMinutes + d.getSeconds;
}

function getexpirydate( nodays){
	var UTCstring;
	var Today = new Date();
	var nomilli=Date.parse(Today);
	Today.setTime(nomilli+nodays*24*60*60*1000);
	var UTCstring = Today.toUTCString();
	return UTCstring;
}

function getcookie(cookiename) {
	var cookiestring=""+document.cookie;
	var index1=cookiestring.indexOf(cookiename);
	if (index1==-1 || cookiename=="") return "";
	var index2=cookiestring.indexOf(';',index1);
	if (index2==-1) index2=cookiestring.length;
	return unescape(cookiestring.substring(index1+cookiename.length+1,index2));
}

function setcookie(name,value,duration){
	cookiestring=name+"="+escape(value)+";EXPIRES="+getexpirydate(duration);
	document.cookie=cookiestring;
	if(!getcookie(name)){
		return false;
	}else{
		return true;
	}
}

function CInt(str){
	try {
		var i1 = parseInt(str);
		return i1;
	}catch(exp) {
		return false;
	}
}

function optionGen(id, from, to, label, index, arry, inner, option, digit){
	var isObj = false;
	var start = from;
	var str="<select id='"+ id +"' name='"+ id +"' "+ (option?option:"") +">";
	if(typeof(from)=="object") { isObj=true; start = 0 ; to = from.length-1; }
	for (var i=start; i<=to; i++){
		str += "<option value='"+ (isObj?from[i]:(((digit&&i<10)?"0":"") + i)) +"'"+ (index?((isObj?from[i]:i)==index?" selected":""):"") + ">"+ ((arry!=null && arry[i])?arry[i]:i) + label +"</option>";
	}
	str+="</select>";
	if (inner!=null) {
		if (inner=="id") {
			getElement("span"+id).innerHTML = str;	//spanNickname
		}else if (inner=="iddiv") {
			getElement("div"+id).innerHTML = str;
		} else {
			getElement(inner).innerHTML = str;
		}
	}
	return str;
}

function removeTag(str){
	var re = /<br \/>/g;
	str = str.replace(re, "");
	re = /<br\/>/g;
	str = str.replace(re, "")
	re = /<\/p>/g;
	str = str.replace(re,"");
	re = /<p>/g;
	str = str.replace(re,"");
	return str;
}
	
	
function showElement( name ){
	//alert(name);
	if( navigator.appName.charAt(0) == "M" ){
		if( navigator.appVersion.indexOf( "MSIE 5" ) != -1 || navigator.appVersion.indexOf( "MSIE 6" ) != -1 ){
			if( document.getElementById ){
				//alert( "show element = " + name + document.getElementById( name ) );
				document.getElementById( name ).style.visibility = "visible";
			}
		}else{
			if( document.all ){
				document.all( name ).style.visibility = "visible";
			}
		}
	}
	if( navigator.appName.charAt(0) == "N" ){
		if( document.getElementById ){
			document.getElementById( name ).style.visibility = "visible";
		}
		if( document.layers ){
			document.layers[name].visibility = "show";
		}
	}
}
	

function hideElement( name ){
	if( navigator.appName.charAt(0) == "M" ){
		if( navigator.appVersion.indexOf( "MSIE 5" ) != -1 || navigator.appVersion.indexOf( "MSIE 6" ) != -1 ){
			if( document.getElementById ){
				document.getElementById( name ).style.visibility = "hidden";
			}
		}else{
			if( document.all ){
				document.all( name ).style.visibility = "hidden";
			}
		}
	}
	if( navigator.appName.charAt(0) == "N" ){
		if( document.getElementById ){
			document.getElementById( name ).style.visibility = "hidden";
		}
		if( document.layers ){
			document.layers[name].visibility = "hide";
		}
	}
}

function setZorder( name, order){
	if(document.getElementById) //for e5,e6,n6,n7,m1,o6,o7,s1
		document.getElementById(name).style.zIndex= order;
	else if(document.all) //for e4
		document.all(name).style.zIndex = order;
 else if(document.layers) //for n4
		document.layers[name].zIndex = order;
}

function getZorder( name, order){
 if(document.getElementById) //for e5,e6,n6,n7,m1,o6,o7,s1
		return document.getElementById(name).style.zIndex;
 else if(document.all) //for e4
		return document.all(name).style.zIndex;
 else if(document.layers) //for n4
		return document.layers[name].zIndex;
}

//
// ::: OBJECT MASNTER CLASS VERSION
//
// usage:
//	var OBJS = new ObjectMaster( [
//		{ cname:"Person", pid:"1234-1234-1111", nickname:"jwave", whereabouts:0, live:0, name:"近藤 治", name_kana:"コンドウオサム", gender:0, birthday:"1960.02.21", constellation:2, address:"神奈川", selfintro:"プログラマ", key:"海 ウィンドサーフィン" },
//		{ cname:"Person", pid:"1234-1234-1111", nickname:"shouno", whereabouts:3, live:1, name:"庄野功祐", name_kana:"ショウノ", gender:0, birthday:"1960.02.21", constellation:3, address:"徳島", selfintro:"プログラマ", key: "カメラ 車" },
//		{ cname:"Person", pid:"1234-1234-1111", nickname:"mark", whereabouts:5, live:0, name:"ソーミン", name_kana:"ソーミン", gender:0, birthday:"1960.02.21", constellation:5, address:"徳島", selfintro:"プログラマ" },
//		{ cname:"Person", pid:"1234-1234-1111", nickname:"tomo", whereabouts:2, live:0, name:"野口朋子", name_kana:"ノグチ", gender:1, birthday:"1960.02.21", constellation:6, address:"徳島", selfintro:"デザイナー", key:"パピオン" }
//	]);
//
//

function ObjectMaster( list, slidename ){
	if( slidename == null )	slidename = "SLIDE";
	this.objs = new Array();
	for( var i = 0; i < list.length; i++ ){
		var cobj = eval( list[i].cname );
		this.objs[i] = new cobj( list[i] );
		this.objs[i].slidename = slidename;
	}
}

ObjectMaster.prototype.dummyObj = null;
ObjectMaster.prototype.items = new Array();
ObjectMaster.prototype.frames = -1;
ObjectMaster.prototype.start = 0;
ObjectMaster.prototype.end = 0;

ObjectMaster.prototype.show = function( elm, template, classname ){
	var html = "";
	var max = this.frames == -1? this.objs.length : this.frames;
	for( var i = this.start; i < max; i++ ){
		if( i < this.objs.length ){
			if(classname) { 
				html += this.objs[i].write(i, template, max-1, classname); 
			}else { 
				html += this.objs[i].write(i, template, max); 
			}
		}else{
			var obj = new this.dummyObj();
			html += obj.write(i, template);
		}
	}
	//alert( html );
	getElement( elm ).innerHTML = html;
}

	function DiaryMini( obj ){
		for( var prop in obj ){
	 		this[prop] = obj[prop];
		}
	}

	DiaryMini.prototype.write = function( index, template ){
		var ret = "";
		this.xid = pidenc(this.xid);
		if(template == "titleList"){
			var tbody = removeTag(this.body);
			var tbody = cutStr(tbody,130);
			ret = "<div class='ibox'>" + 
					"<div class='ICON40_WHATSNEW' style='background-image:url(\"" + (this.photo.length>0?getImageFile(this.photo[0].url,"ss_"):(Path?Path:"https://www.smilestation.net")+"/user/template/_private/images/blog/category01.gif") + "\")'></div>" +
					"<h3><a href='"+Path+"/user/template/blog.aspx?xid="+ this.xid +"' title='新着'>" + cutStr(removeTag(this.title),30)  + "</a></h3>" + 
					"<div class='date'>"+ this.date +"</div>" +
					"<div class='comment'>" + tbody + "</div>" +
					"</div>";
		}
		//if (index==1) { alert(ret); }
		return ret; 
	}
 
 /////////////

///// :::::: Home 

	function ClubMini( obj ){
		for( var prop in obj ){
			this[prop] = obj[prop];
		}
	}

	function PersonMini( obj ){
		for( var prop in obj ){
			this[prop] = obj[prop];
		}
	}
	
	PersonMini.prototype.write = function(index){
		var w_msg = (this.wabouts_msg?this.wabouts_msg:nodata) + (this.live=="1"?online:offline);
		var photo = {path:'../../share/images/sss_nophoto.jpg', width:52, height:52};
		if(this.photo.path != undefined){
			// photo.path = this.photo.path; photo.width = this.photo.width; photo.height = this.photo.height;
			photo.path = getImageFile(this.photo.path, "ss_");
			photo.width = 64;
			photo.height = 64;
		}
		var zoomAmount = (photo.width>photo.height?photo.width:photo.height);
		zoomAmount = (95 / (zoomAmount / 54));
		
		var wnew = this.whatsnew != null && this.whatsnew != "" ? 1 : 0;
		var ret     ="<div id='fellow" + index + "' class='fellowUnit'>" +
						"<div class='fellowIcon'>"+
							"<div class='fellowZoom' style='background-image:url(\"" + photo.path + "\"); zoom:"+ zoomAmount +"%;'>"+
								"<a href='javascript:openGroup(\""+this.baseurl+"home.aspx?pid="+this.pid+"\")' title='" + this.nickname + "'>" + this.nickname + "</a>"+
							"</div>" +
						"</div>"+
						"<div class='ICON28_WHATSNEW ICON40_S" + wnew + "'>" + 
							"<a href='javascript:dummy()' title='" + this.whatsnew + "' >" + this.whatsnew + "</a></div>" +
						"<div class='ICON28_WHEREABOUTS ICON28_S" + this.whereabouts + "_" + this.live + "' >"+
							"<a href='javascript:dummy()' title='" + w_msg + "' >" + w_msg + "</a>"+
						"</div>" +
					"</div>";			
		//alert(ret); 
		return ret; 
	}

	ClubMini.prototype.write = function( index ){
		var photo = {path:'../../share/images/sss_nophoto.jpg', width:52, height:52};
			if(this.photo.path != undefined){
			/* photo.path = this.photo.path;
			photo.width = this.photo.width;
			photo.height = this.photo.height;
			*/
			photo.path = getImageFile(this.photo.path, "ss_");
			photo.width = 64;
			photo.height = 64;
		}
		var zoomAmount = (photo.width>photo.height?photo.width:photo.height);
		zoomAmount = (95 / (zoomAmount / 54));
		
		var wnew = this.whatsnew != null && this.whatsnew != "" ? 1 : 0;
		var ret     ="<div id='fellow" + index + "' class='fellowUnit'>" +
						"<div class='fellowIcon'>"+
							"<div class='fellowZoom' style='background-image:url(\"" + photo.path + "\"); zoom:"+ zoomAmount +"%;'>"+
								"<a href='javascript:openGroup(\""+this.baseurl+"home.aspx?pid="+this.pid+"\")' title='" + this.nickname + "'>" + this.nickname + "</a>"+
							"</div>" +
						"</div>"+
						"<div class='ICON28_WHATSNEW ICON40_S" + wnew + "'>" + 
							"<a href='javascript:dummy()' title='" + this.whatsnew + "' >" + this.whatsnew + "</a></div>" +
						"<div class='ICON28_CLUBTYPE ICON40_S" + this.clubtype + "' >"+
							"<a href='javascript:dummy()' title='" + this.clubtype + "' >" + this.clubtype + "</a>" +
						"</div>" +
					"</div>";	
		//alert(ret); 
		return ret; 
	}
 
/////////////

//
// ::: PHOTO SLIDE CLASS VERSION
//
// usage:
//	var SLIDE = new SlideMaster( [
//		{	index:0, photos:[{ path:"_private/images/GRAY001.jpg", title:"グレイ" },{ path:"_private/images/ORANGE001.jpg", title:"オレンジ" },{ path:"_private/images/if3.jpg", title:"IF3 iamges" },{ path:"_private/images/YELLOW003.JPG", title:"イエロー" }]	},
//		{	index:1, photos:[{ path:"_private/images/if3.jpg", title:"IF3 iamges" },{ path:"_private/images/YELLOW003.JPG", title:"イエロー" }] },
//		{	index:2, photos:[ { path:"_private/images/YELLOW003.JPG", title:"イエロー" }] },
//		{	index:3, photos:[] }
//	] );
//
//

function Slide(){}
function Slide( obj ){
	for( var prop in obj ){
		this[prop] = obj[prop];
	}	
}

Slide.prototype.index = 0;				// for slide elment idetifier
Slide.prototype.frames = 1;				// number of slide frame
Slide.prototype.start = -1;				// display start index of photos
Slide.prototype.photos = new Array();	// photos array
Slide.prototype.lastMark = -1;

Slide.prototype.getMax = function(){
	var max = this.photos.length;
	if( max < this.lastMark )	max++;
	return max;
}

Slide.prototype.prev = function(){
	var html = "";
	var max = this.getMax();
	if( max <= this.frames ){
		this.start = 0;
		html += this.write_prev( -1 );
	}else{
		if( ++this.start >= max )	this.start = 0;
		html += this.write_prev( this.index );
	}
	this.write_photos( html );
}

Slide.prototype.next = function(){
	var html = "";
	var max = this.getMax();
	if( max <= this.frames ){
		this.start = 0;
		html += this.write_prev( -1 );
	}else{
		if( --this.start < 0 )	this.start = max - 1;
		html += this.write_prev( this.index );
	}
	this.write_photos( html );
}

Slide.prototype.move = function( sindex ){
	var html = "";
	var max = this.getMax();

	this.start = sindex;
	if( max <= this.frames ){
		this.start = 0;
		html += this.write_prev( -1 );
	}else{
		html += this.write_prev( this.index );
		if( this.start < 0 )	this.start = max - 1;
		if( this.start >=max )	this.start = 0;
	}
	this.write_photos( html );
}

Slide.prototype.update = function(){
	this.move( this.start );
}

Slide.prototype.count = function( path ){
	return this.photos.length;
}

Slide.prototype.add = function( path ){
	var photo;
	if( typeof( path ) == "string" ){
		photo = new Object();
		photo.path = path;
	}else{
		photo = path;
	}
	return this.photos.push( photo ) - 1 ;
}

Slide.prototype.remove = function( path ){
	if( path == null ){
		this.photos.shift();
		return 0;
	}else if( typeof( path ) == "string" ){
		for( var i = 0; i < this.photos.length; i++ ){
			if( this.photos[i].path == path ){
				this.photos.splice( i, 1 );
				return i;
			}
		}
	}else{
		for( var i = 0; i < this.photos.length; i++ ){
			if( this.photos[i] == path ){
				this.photos.splice( i, 1 );
				return i;
			}
		}
	}
	return -1;
}

Slide.prototype.setPhoto = function( idx, path ){
	var photo;
	if( typeof( path ) == "string" ){
		photo = new Object();
		photo.path = path;
	}else{
		photo = path;
	}
	this.photos[idx] = photo;
	return i;
}

Slide.prototype.getPhoto = function( index ){
	if( index == null ){
		index = this.start;
	}
	if( index >= this.photos.length ){
		return null;
	}
	return this.photos[index];
}

Slide.prototype.write_photos = function( html ){
	var max = this.getMax();
	var idx = this.start;
	for( var i = 0; i < this.frames; i++ ){
		if( i < max ){
			if( this.lastMark != -1 && idx == max -1 ){
				html += this.write_photo( -2 );
			}else{
				html += this.write_photo( idx, this.photos[idx] );
			}
			if( ++idx >= max ) idx = 0;
		}else{
			html += this.write_photo( -1 );
		}
	}
	if( max <= this.frames ){
		html += this.write_next( -1 );
	}else{
		html += this.write_next( this.index );
	}
		
	//alert( html );
	getElement( this.pname + this.index ).innerHTML = html;
}

Slide.prototype.write_photo = function( index, obj ){
	if( index < 0 ){
		return "<div id='"+ this.pname + this.index + "p" + index + "' class='photoframe'><a href='javascript:" + this.pname + ".slides[" + this.index + "].select(-1)' title='写真が設定されていません'><img src='" + PUBDIR + "images/nophoto.jpg'/></a></div>";
	}else{
		return "<div id='"+ this.pname + this.index + "p" + index + "' class='photoframe'><a href=\"javascript:" + this.pname + ".slides[" + this.index + "].select(" + index + ")\" title='" + obj.title + "'><img src='" + obj.path + "' /></a></div>";
	}
}

Slide.prototype.write_prev = function( index ){
	if( index == -1 )	return "<div class='scrollbox prev'><a href='javascript:dummy()'/></div>";
	else				return "<div class='scrollbox prev'><a href='javascript:" + this.pname + ".slides[" + index + "].prev()' title='前の写真'/></div>";
}

Slide.prototype.write_next = function( index ){
	if( index == -1 )	return "<div class='scrollbox next'><a href='javascript:dummy()'/></div>";
	else				return "<div class='scrollbox next'><a href='javascript:" + this.pname + ".slides[" + index + "].next()' title='次の写真'/></div>";
}

Slide.prototype.select = function( index ){
	if( index >= 0 ){
		var obj = this.photos[index];
		if( obj.path != null ){
			var opt = "toolbar=no, location=no, directories=no, status=no, scrollbars=yes, resizable=yes ";
			if( obj.width != null )	opt += ( " width = " + obj.width + " height = " + obj.height );
			window.open( obj.path, "PhotoWin", opt );
	//		win.location.href = path;
		}
	}
}

function SlideMaster( list, pname, frames ){
	if( frames == null )	frames = 1;
	if( pname == null )		pname = "SLIDE";
	this.slides = new Array();
	for( var i = 0; i < list.length; i++ ){
		this.slides[i] = new Slide( list[i] );
		this.slides[i].frames = frames;
		this.slides[i].pname = pname;
		//alert("SlideMaster" + " frames ; " + frames + " pname : " + pname + " List.length : " + list.length);
	}
}

SlideMaster.prototype.slides = new Array();
SlideMaster.prototype.show = function(){
 //alert(this.slides.length);
	for( var i = 0; i < this.slides.length; i++ ){
		this.slides[i].prev();
	}
}

function dummy(){}

//--------------------------------------------------------------------------
// ::: PHOTO UPLOADER

function PhotoUploader(){}
PhotoUploader.prototype.slideName = "SLIDE";		// Slide Object Name
PhotoUploader.prototype.elementName = "uploader";	// input file element id
PhotoUploader.prototype.upcount = 0;				// upload photo counter
PhotoUploader.prototype.max = 3;					// max upload
PhotoUploader.prototype.selection = -1;				// selected index or object
	

PhotoUploader.prototype.init = function(){
	eval(this.slideName).slides[0].lastMark = this.max-1;

	this.upcount = eval(this.slideName).slides[0].count();
	eval(this.slideName).slides[0].uploader = this;
	
	eval(this.slideName).slides[0].select = function(index){
	//alert("init"+ this.SlideName);
		if( index == -1 ){
			this.uploader.select( -1 );
		}else{
			this.uploader.select( index, this.photos[index] );
		}
	};
	
	deactivateElement( "divupfile" );
	for( var i = 0; i < this.max; i++ ){
		deactivateElement( "div" + this.elementName + i );
	}
	this.select( 0 );
}

PhotoUploader.prototype.getSpace = function(){
	for( var i = 0; i < this.max; i++ ){
		if( getElement(this.elementName+i).value == "" ){
			return i;
		}
	}
	return -1;
}

PhotoUploader.prototype.add = function( obj ){
	if( this.upcount >= this.max ){
		alert( "アップロードできる写真は" + this.max + "枚まです。" );
		return;
	}
	var photo = new Object();
	var slide;
	photo.path = "file://" + obj.value;
	photo.elm = obj.name;
	slide = eval( this.slideName ).slides[0];
	//alert(slide + slide.photos + slide.photos.length);
	for( var i = 0; i < slide.photos.length; i++ ){
		if( slide.photos[i].elm == photo.elm ){
			slide.move( slide.setPhoto( i, photo ) );
			this.upcount++;
			return;
		}
	}
	var sno = slide.add( photo );
	slide.move( sno );
	this.upcount++;
	this.select( sno );
}

PhotoUploader.prototype.remove = function(){
	if( this.upcount > 0 ){
		var slide = eval(this.slideName).slides[0];
		if( this.selection.elm != null ){
//			alert( "rm element = " + this.selection.elm );
			getElement( "div" + this.selection.elm ).innerHTML = "<input type='file' id='" + this.selection.elm + "' name='" + this.selection.elm + "' onChange='PUP.add(this)'/>";
//				getElement( this.selection.elm ).disabled = true;
			var idx = slide.remove( this.selection );
			slide.update();
			this.upcount--;
			this.select( idx ); 			
		}else{
			getElement( "rmfile" ).value += ( this.selection.xid + "," );
//			alert( "rm uploaded file = " + getElement( "rmfile" ).value );
			var idx = slide.remove( this.selection );
			slide.update();
			this.upcount--;
			this.select( idx );			
		}
	}	
}

PhotoUploader.prototype.select = function( index, obj ){
	if( obj == null ){
		obj = eval(this.slideName).slides[0].getPhoto( index );
		if( obj == null )	index = -1;
	}
	
	this.selPhoto = obj;
	
	if( this.selection == null ){
	}else{
		if( typeof( this.selection ) == "number" ){
			if( this.selection >= 0 ){
				deactivateElement( "div" + this.elementName + this.selection );
			}
		}else if( this.selection.elm == null ){
			deactivateElement( "divupfile" );
		}else{
			deactivateElement( "div" + this.selection.elm );
		}	
	}
			
	if( index == -1 ){	// new
		var elmno = this.getSpace();
		if( elmno != -1 ){
			activateElement( "div" + this.elementName + elmno );
			this.selection = elmno;
			hideElement( "divrmfile" );
		}
	}else{
//		alert( "select = " + index + " path = " + obj.path );
		showElement( "divrmfile" );
		if( obj.elm != null ){
			activateElement( "div" + obj.elm );
			this.selection = obj;
		}else{
			activateElement( "divupfile" );
			getElement( "upfilename" ).value = obj.path;
			this.selection =obj;
		}
	}
}

//
// ::: PANEL EXCHANGE by SIDEMENU
//

/* DEFINITIONS
	var panelMenu = "petmenu";
	var panels = new Array(
							new Array( "c01", "パピオン通り", "パピオンの..." ),
							new Array( "c02", "ちわわ通り", "人気のちわわ" ),
							new Array( "c03", "わんこ大通り", "そのほかのわんこ大集合" ),
							new Array( "c04", "にゃんこ海岸どおり", "にゃんこ大好き" ),
							new Array( "c05", "街の動物園", "ちょっとめずらしいペットなど" ),
							new Array( "c06", "ペットのいる風景", "ペットとクラス...ライフスタイル" )
						);
*/
	
var baseitems = new Array(	"<li class='",
							"'><span class='photo'></span>",
							"<br /><span>",
							"</span></li>"
						);

var refitems = new Array(	"<li class='",
							"'><a href='javascript:showPanel(\"",
							"\");' title='",
							"'><span class='photo'></span>",
							"<br /><span>",
							"</span></a></li>"
						);

var catrefitems = new Array(	"<li class='",
							"'><a href='javascript:getBlogs(\"",
							"\")' title='",
							"'><span class='photo'></span>",
							"<br /><span>",
							"</span></a></li>"
						);
						
var catitems = new Array(	"<li class='",
							"'><span class='photo'></span>",
							"<br /><span>",
							"</span></li>"
						);		
											
var titleitems = new Array( "<li class='", "'></li>" );						
						
function showPanel( name ){
	var html = "";
	var tabStr = "";
	if (typeof(catArry)!='undefined') {
		for( var i = 0; i < catArry[0].length; i++ ){
			if( catArry[0][i].tname == name && !sd && !ed && !xid){
				//alert(name + cid + catArry[0][i].tname);
				html += ( catitems[0] + catArry[0][i].tname + catitems[1] + catArry[0][i].name + catitems[2] + catArry[0][i].comment + catitems[3] );
				setcookie("Smile_Page_" + currentPage , name , 10000);
				tabStr += "<div id='"+ catArry[0][i].tname +"'><div id='DIARYSTR' name='DIARYSTR'>　読み込み中・・・</div></div>"; 
			}else{
				html += ( catrefitems[0] + catArry[0][i].tname + catrefitems[1] + viewPid + "\",\"\",\"\",\"" + catArry[0][i].cid + "\",\"\",\"\",\"" + catArry[0][i].tname + catrefitems[2] + catArry[0][i].name + catrefitems[3] + catArry[0][i].name + catrefitems[4] + catArry[0][i].comment + catrefitems[5] );
				tabStr += "<div id='"+ catArry[0][i].tname +"'></div>"; 
			}
			if ((sd && ed) || xid || name=="noPanel" || cid) tabStr += "<div id='DIARYSTR' name='DIARYSTR'></div>";
		}
		//alert(tabStr);
		getElement("tabStr").innerHTML = tabStr;
	}else{
		for( var i = 0; i < panels.length; i++ ){
			if( panels[i][0].indexOf( "t0", 0 ) == 0 ){
				html += ( titleitems[0] + panels[i][0] + titleitems[1] );
			}else if( panels[i][0]== name ){
				try{ eval( name + "_init" )(); }catch( exp ){}
				try{ setViewMode(getViewMode(objs[i][1]), objs[i][2] , objs[i][1], objs[i][3]);}catch( exp ){}
				//alert("Smile_Page_" + currentPage + " " + name );
				setcookie("Smile_Page_" + currentPage , name , 10000);
				activateElement( panels[i][0] );
				html += ( baseitems[0] + panels[i][0] + baseitems[1] + panels[i][1] + baseitems[2] + panels[i][2] + baseitems[3] );
			}else if ( panels[i][0].indexOf( "c", 0 ) == 0){
				deactivateElement( panels[i][0] );
				html += ( refitems[0] + panels[i][0] + refitems[1] + panels[i][0] + refitems[2] + panels[i][1] + refitems[3] + panels[i][1] + refitems[4] + panels[i][2] + refitems[5] );				
			}
		}
	}		
	//alert(html);
	getElement( panelMenu ).innerHTML = html;
}
					
// ::: VIEW MODE CHANGER

/* DIFINITION

var vmode = new Array(	new Array( "albumView", "フォトアルバム" ),
						new Array( "photoList", "フォトリスト" ),
						new Array( "titleList", "タイトルリスト" )
					);

var vmodeElm = "CENTERBK";
*/

var vmodeRefTemplate = new Array(
"<div class='",
"'><a href='javascript:setViewMode(\"",
 "\", \"",
 "\", \"",
 "\", \"",
 "\")' title='",
 "'>",
 "</a></div>" );

var vmodeActTemplate = new Array( "<div class='", "'>", "</div>" );

function setViewMode( cname , obj , block, err){
	var html = "";
	for( var i = 0; i < vmode.length; i++ ){
		if( vmode[i][0] == cname ){
			html += ( vmodeActTemplate[0] + vmode[i][0] + vmodeActTemplate[1] + vmode[i][1] + vmodeActTemplate[2] );
		}else{
			html += ( vmodeRefTemplate[0] + vmode[i][0] + vmodeRefTemplate[1] + vmode[i][0] + (block?vmodeRefTemplate[2] + obj + vmodeRefTemplate[3] + block + vmodeRefTemplate[4] + err:"") + vmodeRefTemplate[5] + vmode[i][1] + vmodeRefTemplate[6] + vmode[i][1] + vmodeRefTemplate[7] );
		}
	}
	//alert(html);
	getElement( "viewmode" ).innerHTML = html;
	viewMode = cname;
	if (block) {
		var split = obj.split(",");
		var bsplit = block.split(",");
		var errsplit = err.split(",");
		var result = false;
		for (var i = 0 ; i < split.length;i++){
			var str = split[i] + ".show('" + bsplit[i] + "', '" + cname + "')" ;	
			try{
				//alert(split[i]);
				var count = eval(split[i]+".objs.length");
				getElement(bsplit[i]).innerHTML = "";
				if (count > 0) { 
					result = true;
					eval( str );
				}
			}catch(e){}
		}
		//alert(result + bsplit + errsplit);
		if (!result) getElement(bsplit[0]).innerHTML = "<IMG SRC='"+ errsplit[0] +"'>";
		setcookie("ViewMode_" + block, viewMode , 10000);
	}
}

function getViewMode(block){
	var viewModeStr = getcookie('ViewMode_' + block);
	//alert(viewModeStr + " " + vmode[0][0]) ;
	if (viewModeStr) {
		return viewModeStr;
	}else {
		return vmode[1][0];
	}
}

function getCurrentPanel() {
	var curTab = getcookie("Smile_Page_" + currentPage);
	return !curTab?"c01":curTab ;
}

function initScript(){
	writeFooter("FOOTERBK");
	//if (location.host!="localhost") { indexPath = "index2.aspx"; }
	try{
		setHeaderInfo("headerInfo");
		if (typeof(getElement("logInOut"))!='undefined') {
			getElement('logInOut').innerHTML = '| ' + (isLogon?'ログアウト':'ログイン') + ' |';
			if(typeof(getElement("nicknameStr"))!='undefined') { getElement("nicknameStr").innerHTML = nicknameStr + " さん"; }
		}
	}catch (e) { }
}

function openDialog(name, w, h, strName){
	if (name.indexOf("invitation")!=-1) { 
		openWindow("invitation");
	} else {
		window.open(name,strName?strName:'_blank','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=' + (!w?420:w) + ', height=' + (!h?300:h));
	}
}

function openWindow(name, params, url, target){
	try{
		if(!params) params = ""; //blert(name);
		if(typeof(DS[name])!='undefined') {
			var p = DS[name]; //blert(p.url+params+","+ (target?target:p.target) +","+ p.method + "width="+p.width + ", height="+p.height);
			if(!p.method) { 
				if(getAgent()=="IE"){
					document.writeln("<html>");
					document.writeln("<body onload='location.href=location.href'><p></p>");
					document.writeln("</body>");
					document.writeln("</html>");
					location.href = (!url?p.url:url) + params;
				}else if (getAgent()=="Firefox") {
					window.location.href = (!url?p.url:url) + params;
				}else{
					window.open ((!url?p.url:url) + params, p.target); 
				}
			}else { 
				window.open((!url?p.url:url)+params, p.target, p.method + "width="+p.width + ", height="+p.height);
			}	
		}
	}catch(e){}
}

function openInvitation(){
	window.open("../template/invitation.aspx",'_blank','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=yes, width=' + 380 + ', height=' + 520);
}

function openSizableDialog(URL, strName, w, h, Scroll, Status){
	window.open(URL?URL:'about:blank',strName?strName:'','toolbar=no, location=no, directories=no, status='+(Status?'no':'yes')+', menubar=no, scrollbars='+ (Scroll?'no':'yes') +', resizable=yes, width=' + (!w?420:w) + ', height=' + (!h?300:h)).focus();
}

function openGroup(name, w, h){
	window.open(name,'_blank','titlebar=yes, menubar=yes, toolbar=yes, location=yes, directories=yes, status=yes, scrollbars=yes, resizable=yes, width=' + (!w?820:w) + ', height=' + (!h?640:h));
}

function openLogin(){
	window.open('./login.aspx','_blank','toolbar=yes, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=420, height=180');
}

function openComment(xid){
	window.open('./comment_entry.aspx?xid=' + xid,'_blank','toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, width=540, height=360');
}

//
// ::: trace
//

function trace( id, comment ){
	if( id == "alert" ){
		alert( comment );
	}else{
		var msg = document.getElementById( id );
		if( msg ){
			msg.innerHTML = comment;
		}
	}
}

function FlashObject(id, width, height, path, flashvars , transparent, scale){
	//if( window.opera || isSafari() || isMozes() ){
	var html = "<object classid='clsid:d27cdb6e-ae6d-11cf-96b8-444553540000' codebase='https://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0'" + " width='" + /* */ width + "' height='" + /* */ height + "' id='" + /* */ id + "' align='middle' >" +
				"<param name='allowScriptAccess' value='sameDomain' />"+
				"<param name='movie' value='" + /* */ path + "' />"+
				"<param name='src' value='" + /* */ path + "' />"+
				"<param name='quality' value='high' />"+
				"<param name='bgcolor' value='#ffffff' />"+
				(transparent?"<param name='wmode' value='transparent' />":"") +
				(!scale?"<param name='scale' value='noscale' />":"") +
				"<param name='FlashVars' value='" + /* */ flashvars +"' />"+
				"<embed src='" + /* */ path + "' FlashVars='" + /* */ flashvars + "' menu='false' " + (scale?"scale='noscale' ":"") + (transparent?"wmode='transparent'":"") + " quality='high' bgcolor='#ffffff' width='" + /* */ width + "' height='" + /* */ height + "' id='" + /* */ id + "' name='" + /* */ id + "' align='middle' allowScriptAccess='sameDomain' type='application/x-shockwave-flash' pluginspage='https://www.macromedia.com/go/getflashplayer' />" +
				"</object>";
	//alert( html );
	//getElement("debugtest").value = html;
	return html;
}

function setHeaderInfo(elm){
	var ret = 
		'<a href="javascript:openWindow(\'index\')">| スマイルステーショントップ </a>' + 
		'<a href="javascript:openWindow(\'home\',\'?pid='+logonPid+'\')">| 自分空間ホーム </a>' + 
		'<a href="javascript:openWindow(\'home\',\'?pid='+rPid+'\')">| 散策 </a>' + 
		'<a href="#">| 散策 倶楽部 </a>' + 
		'<a id="logInOut" href="javascript:logInOut()"></a>';
	getElement( elm ).innerHTML = ret;
}

function writeFooter(elm){
	var ret = "<div id='FOOTERBK'><div class='menu'>" +
		"<ul>" +
			"<li class='menu01'>" +
				"<a href='https://www.smilestation.net/info/abouts.html' target='_blank'> スマイルについて</a></li>" +
			"<li class='menu02'>" +
				"<a href='https://www.smilestation.net/info/privacy.html' target='_blank'> プライバシーポリシー</a></li>" +
			"<li class='menu03'>" +
				"<a href='http://www.h2oir.com/about.html' target='_blank'> 会社概要</a></li>" +
			"<li class='menu04'>" +
				"<a href='http://www.smilestation.net/info/contract.html' target='_blank'> 利用規約</a></li>" +
		"</ul>" +
	"</div>" +
	"<div id='credit'>2005c H2O Institute of Research, Inc.</div></div>";
	getElement( elm ).innerHTML = ret;
}

function setFooter(elm){
	var ret = "<div class='menu'>" +
		"<ul>" +
			"<li class='menu01'>" +
				"<a href='"+domainType+"://www.smilestation.net/info/abouts.html' target='_blank'> スマイルについて</a></li>" +
			"<li class='menu02'>" +
				"<a href='https://www.smilestation.net/info/privacy.html' target='_blank'> プライバシーポリシー</a></li>" +
			"<li class='menu03'>" +
				"<a href='http://www.h2oir.com/about.html' target='_blank'> 会社概要</a></li>" +
			"<li class='menu04'>" +
				"<a href='"+domainType+"://www.smilestation.net/info/contract.html' target='_blank'> 利用規約</a></li>" +
		"</ul>" +
	"</div>" +
	"<div id='credit'>2005c H2O Institute of Research, Inc.</div>";
	getElement( elm ).innerHTML = ret;
}

function writeTabMenu(elm, activeTab){
	var ret  = '<ul>' + 
					'<li class="menu01">' + (activeTab!=1?'<a href="javascript:openWindow(\'home\',\'?pid=' + viewPid + '\')" title="自分空間ホーム">ホーム</a>':'ホーム') + '</li>' + 
					'<li class="menu02">' + (activeTab!=2?'<a href="javascript:openWindow(\'blog\',\'?pid=' + viewPid + '\')" title="記憶日記(blog)">記憶日記</a>':'記憶日記') + '</li>' + 
					'<li class="menu03">' + (activeTab!=3?'<a href="javascript:openWindow(\'fellow\',\'?pid=' + viewPid + '\')" title="仲間空間・倶楽部">仲間空間</a>':'仲間空間') + '</li>' + 
				'</ul>';
	//alert(ret);
	getElement( elm ).innerHTML = ret;
}

function cutStr(str, l) {
	//blert(str);
	var ret = str;
	if(str){
		ret = (str.length >l? str.substr( 0, l ) + "..." : str)
	}
	return ret;
}

function getImageFile(str, addStr) {
	var ret = "";
	var pos = str.lastIndexOf("/");
	var ret = str.substr(pos+1, str.length-pos-1);
	ret = str.replace(ret, addStr + ret);
	ret = ret.replace(".bmp", ".jpg");
	ret = ret.replace(".gif", ".jpg");
	ret = ret.replace(".png", ".jpg");
	ret = ret.replace(".jpeg", ".jpg");
	//alert(ret);
	return ret;
}

function getAbsolutePath(){
		
}

function blert(str){
	alertid = [ "E7812F06-41BD-4091-9B64-828BC33BD16A", "F12F290D-E6B4-43BD-8BDE-94C8CDE38226" ];
	for(var i = 0 ; i < alertid.length; i++){
		if(typeof(viewPid)!='undefined'){
			if(viewPid == alertid[i] || logonPid == alertid[i]){
				if(str) { alert(str); }else{ return true };
				break;
			}
		}
	}
	return;
}

function pidenc(str){
	if(str){
		var re = /-/g;
		str = str.replace(re, "%2d");
		re = /#/g;
		str = str.replace(re, "!");
		return str;
	}
	return;
}

function decid(str){
	if(str){
		var re = /%2d/g;
		str = str.replace(re, "-");
		re = /!/g;
		str = str.replace(re, "#");
		return str;
	}
}

function parseDblQuote(str){
	if(typeof(str)=="string"  && str!= null){
		var re = /\"/g;
		str = str.replace(re, '\\"');
		return str;
	}
	return str;
}



function nb ( str, ins ){		//Null Blank
	if(typeof(str)!="undefined"){
		if(typeof(str)=="string"){
			if(str.length > 0 ){
				return str;
			}
		}
	}
	return (ins?ins:"&nbsp;");
}

function setQData(){
    var qs = new Array;
    try{
        if( location.search.length > 1 ){
            var query = location.search.substr(1).split('&');
            for( var idx in query ){
                qs.push( query[idx].split('=') );
            }
            for( var idx in qs ){
                try{
                    var str = qs[idx][0] += '='+ (isNaNB(qs[idx][1])?'"':'') + qs[idx][1] + (isNaNB(qs[idx][1])?'"':'');
                    //alert(str);
                    eval( str );
                }catch( exp ){}
            }
        }
    }catch( exp ){}
}

function getArry (str, name){
	var pos = str.indexOf(name+":") + (name.length+1);
	var ret =	str.substr(pos, str.length - pos);
	ret = ret.substr(0, ret.indexOf("]") + 1);
	return ret;
}

function toRoot(str){
	var ret = "";
	var re = /..\/..\/.\//g;
	ret = str.replace(re, "./");
	re = /..\/..\//g;
	ret = ret.replace(re, "./");
	return ret;
}
		
function insertQuotedArry (str, arryname, insname){
	var ret;
	var pos = str.indexOf(arryname+":") + (arryname.length+1);
	var arry =	str.substr(pos, str.length - pos);
	arry = arry.substr(0, arry.indexOf("]") + 1);
	var alen = arry.length;
	if(alen>0){
		//blert(arry.length);
		var re = /\"/g;
		arry = arry.replace(re , '\\"');
		var inspt = pos + alen + 1;
		ret = str.substr(0, inspt ) + " " + insname + ":\"" + arry + "\", " + str.substr(inspt, str.length - inspt);
	//	blert(ret);	
		return ret;
	}else {
		return str;
	}
}

	function init(param, loc, aj){
		
		var url = (aj?aj:"../../ajax.aspx") + "?mode=init&rnd="+rnd()+(loc.search?"&"+loc.search.substr(1,loc.search.length-1):"");
		var ajax = new AJAX();
		if( typeof( ajax ) != 'undefined' ){
			ajax.setListener( function() { onInit(ajax); } );
			var params = new Object();
			params["xmlurl"] = url;
			params["param"] = param;
			params["loc"] = loc.href;
			ajax.send( "POST", url, params);
		}
	}

	function onInit( ajax ){
		if( ajax.isReady() ){
			setQData();
			if(typeof(pid)!='undefined') viewPid=pid;
			var res = unescape( ajax.request.responseText );
			//alert("onInit "+ res );
			if(typeof(res)!='undefined') {
				eval( "var obj = new Object ( " + res + " )" );
				if(typeof(obj)!='undefined') {
					for( var prop in obj ){
						try{
							eval(prop + '=' + (isNaNB(obj[prop])?'"':'') + obj[prop] + (isNaNB(obj[prop])?'"':''));
						}catch(e) {}
					}
				}
				try{ if(typeof(caller)=="function") caller() } catch (e) {}
			}
		}
	}

	/*alert(isNaNB(null)); // true; alert(isNaNB("")); //true alert(isNaNB("asdf")); //true alert(isNaNB("false")); //false alert(isNaNB(1232)); //false alert(isNaNB(false)); //false */
	function isNaNB( str ) 
	{	
		if(typeof(str) == 'number' || typeof(str) == 'boolean'){
			return false;
		}else if(typeof(str)=='string'){
			try{
				if (str==null) return false; 
				if (str=="") return true; 
				if (str=="false" || str=="true") return false; 
				if (isNaN(str)) return true; 
				if (str) return true;
			}catch(e){
				return true;
			}
		}else{
			return true;
		}
		return true;
	}
	
	function getAgent(){
		//blert(navigator.userAgent);
		if (navigator.userAgent.indexOf("Opera")!=-1){
		}else if (navigator.userAgent.indexOf("Netscape")!=-1){
			return "Netscape";
		}else if(navigator.userAgent.indexOf("Safari")!=-1){
			return "Safari";
		}else if(navigator.userAgent.indexOf("Firefox")!=-1){
			return "Firefox";
		}else if(navigator.userAgent.indexOf("MSIE")!=-1){
			return "IE";
		}
	}

	function getOS(){
		if (navigator.userAgent.indexOf("Windows")!=-1){
			return "Windows";
		}else if (navigator.userAgent.indexOf("Macintosh")!=-1){
			return "Mac";
		}
	}
	
	function getKey(){
		if (typeof(e)=='undefined') var e = window.event;
		return e.which ? e.which : e.keyCode;
	}
	
	
// ---------------------------------------------------
// :::: Declarations
// ---------------------------------------------------

var nodata = "未設定";
var undisclosed = "非公開";
var indexPath = "index.aspx";
var online = "（現在オンライン中）";
var offline = "（現在オフライン）";
var untitled = "無題";
var currentPage = null;
var domainType, curDomain, virDir, baseDir;
var Path;
var rPid;
var rnd;

var pubstr = new Array ( "非公開","友達に公開","倶楽部に公開", "公開" );
var subscribePeriod = new Array ( "一週間", "三日", "毎日" ); 

var dmethod = [ [ "toolbar=no, location=no, directories=no, status=no, menubar=no, scrollbars=no, resizable=no, "],
				[ "toolbar=yes, location=yes, directories=yes, status=yes, menubar=yes, scrollbars=yes, resizable=yes, "],
				[ "toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=yes, "],
				[ "toolbar=no, location=no, directories=no, status=yes, menubar=no, scrollbars=no, resizable=no, "]
			  ];

var DS = new Object  
( { 
	invitation		: { url:"./invitation.aspx", width:400, height:520, target:"_blank", method:dmethod[0] }, 
	inviteOnly		: { url:"./invitation.aspx", width:400, height:315, target:"_blank", method:dmethod[0] }, 
	sendmail		: { url:"./sendmail.aspx", width:490, height:350, target:"_blank", method:dmethod[0] },
	idcheck			: { url:"./idcheck.aspx", width:410, height:270, target:"_blank", method:dmethod[0] },
	comment_entry	: { url:"./comment_entry.aspx", width:450 , height:300, target:"_blank", method:dmethod[0] },
	addressbook		: { url:"./addressbook.aspx", width:420 , height:300, target:"_blank", method:dmethod[2] },
	blog_entry		: { url:"./blog_entry.aspx", width:840 , height:800, target:"_blank", method:dmethod[1] },
	uploadfile		: { url:"./uploadfile.aspx", width:350 , height:50, target:"_blank", method:dmethod[3] },
	admin_profile	: { url:"./admin_profile.aspx", target:"_top", method:"" },
	message			: { url:"./message.aspx", target:"_top", method:"" },
	search			: { url:"./search.aspx", target:"_top", method:"" },
	home			: { url:"./home.aspx", target:"_top", method:"" },
	fellow			: { url:"./fellow.aspx", target:"_top", method:"" },
	blog			: { url:"./blog.aspx", target:"_top", method:"" },
	blog_new		: { url:"./blog.aspx", width:840 , height:800, target:"_blank", method:dmethod[1] },
	home_new		: { url:"./home.aspx", width:840 , height:800, target:"_blank", method:dmethod[1] },
	index			: { url:"../../index.aspx", target:"_top", method:"" },
	logout			: { url:"../../index.aspx", target:"_top", method:"" }  // special method
} ) ;

var MSG = new Object 
( {
	logon		: { needLogon : "ログオンする必要があります" , pleaseLogin: "ログオンしてください。", loginAgain: "再びログインしてください。" },
	complete	: { registered : "ご登録ありがとうございました", sended:"招待状を送信しました。" },
	invitation	: { sended:"招待状を送信しました。", idcreated:"招待状番号を作成しました。送信ボックスをチェックしてください。", cannotSend : "招待状の送信できませんでした。", isSend: "招待状を送信しますか？", sendMultiple: "招待状送る回数は一回以上なっています、再び送信しますか？", sending:"送信中です。少々お待ちください。" },
	mail		: { cannotSend : "メールの送信できませんでした。", sendComplete: "メールを送信しました。" },
	security	: { needHttps : "Secure Socket Layer (https://) is Needed!" },
	msg			: { delete_ok : "削除しました。", delete_error:"削除できませんでした。", accept_ok:"このメッセージを承認しました。", accept_error:"承認できませんでした。", reject_ok:"このメッセージを拒否しました。", reject_error:"拒否できませんでした。" },
	friend		: { nofriend : "表示するお友達はいません。お友達に招待状を送って誘ってください。" },
	blog		: { deleted : "ブログを削除しました。", noblog:"ブログ見つかりませんでした。", ok:"ブログ見つかりました。"},
	addressbook	: { loaded : "アドレスブックをロッドしました。", noitem:"アドレスブックのロードできませんでした。" },
	ranking		: { ok : "ランキングの設定しました。", error:"ランキングの設定できませんでした。", get_ok:"ランキングの取得できました。", get_error:"ランキングの取得できませんでした。"},
	goods		: { ok : "商品を見つかりました。", error:"商品見つかりませんでした。", detail:"商品詳細表示に切り替え", append_price_ok:"定価の追加しました。", append_price_error:"定価の追加できませんでした。", noid:"商品のIDが見つかりませんでしたのでこの商品の編集はできません。", get_price_ok:"定価を取得しました。", get_price_error:"定価を取得できませんでした。", set_spec_ok:"詳細情報の取得できました。", set_spec_error:"詳細情報の取得できませんでした。", append_ok : "商品を登録しました。", append_error:"商品の登録できませんでした。", find_ok : "商品を見つかりました。", find_error:"商品見つかりませんでした。"},
	order		: { append_ok:"オーダーを追加しました。", append_error:"オーダーの追加できませんでした。", addToCart_ok:"商品カートに追加できませんでした。", addToCart_error:"商品カートに追加しました。", updateCart_ok:"カートにアイテムを保存しました。", updateCart_error:"カートに保存できませんでした。", getCartItems_ok:"カートのアイテムを取得しました。。", getCartItems_error:"カートから取得できませんでした。", invalid_data:"正しいデータは取れませんでした。", deleteFromSessoin_ok:"セッションから削除しました。", deleteFromSessoin_error:"セッションから削除できませんでした。", find_ok:"オーダーを見つかりました", find_error:"オーダーを見つかりませんでした。", set_status_ok:"ステータスを設定しました。", set_status_error:"ステータスの設定できませんでした。" },
	shop		: { getUserCurrentData_ok:"最新のユーザー登録情報を取得しました。", getUserCurrentData_error:"ユーザーの登録情報を取得できませんでした。", setUserData_ok:"ユーザー登録しました。", setUserData_error:"ユーザー登録できませんでした。", noUserData:"登録するデータはありません。"},
	accesslog	: { ok : "アクセスログをロードしました。", error:"アクセスログをロードできませんでした。"},
	footprints	: { ok : "足跡マークのログロードしました。", error:"足跡マークのログロードできませんでした。"},
	image		: { add_ok : "画像を追加しました。。", error:"画像の追加できませんでした。"},
	special		: { yen : "円", withTax:"税込み"},
	session		: { setData_ok:"セッションにデータを保存しました。", setData_error:"セッションにデータの保存できませんでした。" },
	display		: { showAlert:"\nDo you want to display this alert Next time?" },
	already		: { submitted : "商品の登録中です。少々お待ちください。", searched: "ただいま検索中です。", priceAppending:"ただいま定価の追加中です。", alreadySetSpec:"詳細設定の更新中です。", alreadyDelMsg:"メッセージを削除しています。少々お待ちください。", alreadyReplyMsg:"このメッセージは承認、拒否中です。", orderAppending:"オーダーを追加中です。", updatingCart:"商品をカートを更新中です。", removingFromCart:"商品カートから削除中です。", recalculatingCart:"カート再計算中です。", updatingCurrentUserData:"セッションに保存中です。", gettingSubItems:"詳細情報の取得中です。" },
	comment		: { added:"コメントを追加しました。", deleted : "コメントを削除しました。", isSend :"コメントを削除してもよろしいですか？"}
} )

var Naming = new Object 
( {
	diary		: { comment : "diaryComment_" , blog: "diary_blog_" },
	msg			: { invitation : "invitation_" , mail: "mail_" },
	fellow		: { friendname : "friend_",  clubname: "club_" }
} )

//	-------------------------------------------------------------------------------------------


//  ===========================================================================================
//	::::: AJAX Extension :::::::
//	===========================================================================================
//
//  Usage : SendAjax(mode, params, listener, method, ajaxUrl)
//				
//		<mode>			= AJ[<mode>], e.g., if <mode>="idcheck", AJ["idcheck"].mode = "invitation"
//		<params>		= (Optional) datatype is (Object) & used in Request.Form[<params name>]
//		<listener>		= (Optional) onAjax() is called when this object is blank
//		<method>		= (Optional) "POST" or "GET"
//		<ajaxUrl>		= (Optional) "../../ajax.aspx" || "./ajax.aspx"
//
//	=== Here is the examples for SendAjax Function. ===
//
//	SendAjax("ifriend"); 友達に招待状送って変えてきた状態を表示する。ログオン状態まで変えてくる。
//  SendAjax("idcheck", params);　招待状番号をサーバーに送る。
//	SendAjax("sendmail", params); メールを送る。フォームのメールアドレス、内容、サブジェットなども送信。
//
//	=== Here is Response Function. ===
//
//	onAjax (response, result, data, params)  
//		response	: "ERROR", "OK"
//		result		: MSG.<name>.<subname>  --> MSG.logon.needLogon = "ログオンする必要があります"
//		data		: response data in JSON Format;
//		params		: Input params Object is return;
//
//  End of usage in SendAjax

// =======================================================================================

function SendAjax(mode, params, listener, method, ajaxUrl){
	//alert(mode + " " + typeof(listener)); 
	var ajax = new AJAX();
	//alert(JsonToString(ajax));
	if( typeof( ajax ) != 'undefined' ){
		if (typeof(params)	!= "object")	{ var params = new Object(); }
		if (typeof(listener)!= "function")	{ var listener = onAjax; }
		ajax.setListener(  function() { OnAjax(ajax, listener, params); } ) ;
		params["mode"] = mode;
		params["loc"] = location.href;
		params["host"] = location.hostname;
		if(typeof(viewPid)!='undefined')  { params["pid"] = viewPid; }
		ajax.send(  (method?method:"POST"),  (ajaxUrl?ajaxUrl:"../../ajax.aspx"),  params );
	}
}

var showAlert = true;
function OnAjax(ajax, listener, params){
	if( ajax.isReady() ){
	//alert("onAjax");
		var res = unescape( ajax.request.responseText );
		//if( showAlert ) { if(confirm("onAjax "+ res + MSG.display.showAlert )) { showAlert=true; try { getElement("debug").value = res; } catch (e) {} } else { showAlert = false;} } 
		if(typeof(res)!='undefined') {
			try {  
				eval( "var _RES = new Object ( " + res + " )" ); 
				if(typeof(_RES)=="object"){
					try{ if(_RES.THROW) eval (_RES.THROW); } catch (e) {}
					listener(_RES.RESPONSE, eval(_RES.RESULT), _RES.DATA, params);
				}else{
					listener("ERROR", "Invalid Object", "", params);
				}
			}catch (e) {
				listener("ERROR", "Invalid Object", "", params);
			}
		}
	}			
}

// Test function for SendAjax
function onAjax(response, result, data, params){
	//alert("onAjax Sample " + result);
}

	
// =======================================================================================


// ---------------- フラッシュからの招待状送信
/*
var iFriendSendCount = 0;

function ifriend(){
	if(iFriendSendCount > 0){ 
		if(confirm (MSG.invitation.sendMultiple ) ){
			SendAjax("ifriend","", onInvitation );
		}
	}else if( confirm( MSG.invitation.isSend ) ){
		SendAjax("ifriend","", onInvitation );
	}
}


function onInvitation (response, result, data, params){
	if(response=="ERROR"){ 
		alert(result); 
	}else if(response=="OK") {
		//alert(result);
		iFriendSendCount++;
	}
}
*/

var iFriendSendCount = 0;

function iFriend(){
	openWindow("inviteOnly","?show=invite&pid="+viewPid);
}


function onInvitation (response, result, data, params){
	if(response=="ERROR"){ 
		alert(result); 
	}else if(response=="OK") {
		//alert(result);
	}
}

function SetRanking(xid, type, name, quantity){
	var params = new Object();
	params["xid"] = xid;
	params["ppid"] = (logonPid?logonPid:"Guest");
	params["type"] = type;
	params["name"] = name;
	params["quantity"] = quantity;
	SendAjax("set_ranking", params);
}

//var testJson = "[[[[{name:'mark', nll:null, id:'111-222', type:2, bool:false, subitem:[[[[{id:'asdf', name:'asdf', subitem:[[[[{id:'asdf', name:'asdf'}]]]]}]]]]}, {name:'mark', id:'111-222', type:2, bool:false}]]]]";alert(testJson); var objJson = StringToJson(testJson); if(typeof(objJson)!="object") alert(typeof(objJson)); var newTestJson = JsonToString(objJson); alert(newTestJson); 
//var testjson = '{"[<Sections: Section>]":[{"Rows":[{"Label":{"isTitle":true,"IsHtml":false,"Style":null,"Text":"Friend Ground Unit","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":null,"Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Threat","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"FRIEND","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"BattleDimension","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"GROUND","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Name","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"TODO!","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Nation","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"NORWAY","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Allegiance","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"LIMELINE","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Service","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"ARMY","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Report Responsible","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"COMNON","Tooltip":null,"Action":null}}],"Name":"Basic Unit","Tooltip":"Contains Basic Unit description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Unit Name","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"JOHN THE 1ST","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Unit Identification Code","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"NOA712834","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Unit Id","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"12901290","Tooltip":null,"Action":null}}],"Name":"ObjectIdentifications","Tooltip":"Contains ObjectIdentifications description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Description","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"COMBAT<br\>&nbsp;&nbsp;&nbsp;INFANTRY<br\>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MOTORIZED<br\>","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Size","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"BRIGADE - TF","Tooltip":null,"Action":null}}],"Name":"Description","Tooltip":"Contains unit description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Org Parent","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"1ST INF BN","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Higher Cmd","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"1ST INF COY 1","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Cmd Rel","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"COMD","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Time for TOA","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"040000ZMAI2001","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Master","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":true,"Style":null,"Text":"Y","Tooltip":null,"Action":null}}],"Name":"UnitRelations","Tooltip":"Contains UnitRelations description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Mission","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"MISSION IMPOSSIBLE","Tooltip":null,"Action":null}}],"Name":"Mission","Tooltip":"Contains Basic Unit description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Main Activity","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"JOINT DISPLAY TEXTVIEW IN MARIA","Tooltip":null,"Action":null}}],"Name":"Main Activity","Tooltip":"Contains Main activity description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Main Equip","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":"RED","Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"SAM-L-SKYG-SPAR (2)","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Total Pers","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"51","Tooltip":null,"Action":null}}],"Name":"Main Activity","Tooltip":"Contains Main activity description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Unit Duty Status","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"Inconclusive Analysis","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Combat Experience","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"Raw Recruits","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Combat Effectiveness","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"Marg Operational (25-49%)","Tooltip":null,"Action":null}}],"Name":"Object Status","Tooltip":"Contains Object description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Latitude","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"59,83","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Longitude","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"10,6766667","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Location Name","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"HAKKEBAKKESKOGEN","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"DTG","Tooltip":null,"Action":null},"Status":{"Icon":"alert","Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"082350ZOKT2003","Tooltip":"Date Time Group","Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Time Late","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"41:06:14","Tooltip":null,"Action":null}}],"Name":"TrackStore","Tooltip":"Contains track location data","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Links","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"3","Tooltip":null,"Action":null}}],"Name":"Document Links","Tooltip":"Contains Main activity description","Action":null,"MouseOverFrame":true},{"Rows":[{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"Remarks","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":"3","Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"TESTING REMARKS - THIS IS THE LATEST CREATED REMARK FOR JOHN THE 1ST","Tooltip":null,"Action":null}},{"Label":{"isTitle":false,"IsHtml":false,"Style":null,"Text":"# of Remarks","Tooltip":null,"Action":null},"Status":{"Icon":null,"Style":null,"Tooltip":null,"Action":null},"Value":{"IsHtml":false,"Style":null,"Text":"3","Tooltip":null,"Action":null}}],"Name":"Remarks","Tooltip":"Contains Remarks description","Action":null,"MouseOverFrame":true}]}'; alert(testjson); alert(typeof(testjson)); var testobj = StringToJson(testjson);  alert(typeof(testobj)); var newobj = JsonToString(testobj); alert(newobj); var test1obj =  StringToJson(newobj); alert(typeof(test1obj)); 
		
//	JSON Object To String Parser Beta  //
//	JsonToString Parser Start
function JsonToString(json){
var ret = "";
var i1=0;
	if (typeof(json.length) == 'undefined') ret += "{";
	if(typeof(json)=="object"){
		if(!isNaN(json.length)) ret += "[";
		for(var idx in json){
			i1++;
			if(!isNaNB (json[idx]) || json[idx]==null || typeof(json[idx])=="string"){ 
				if(i1>1) ret+=",";
				if ( isNaN ( idx ) ) {	
					ret += (idx.match(/\W/g)?"\"":"") + idx + (idx.match(/\W/g)?"\":":":"); 
				}	
				if(typeof(json[idx])=="string"){
					ret += (isNaNB(json[idx])?"\"":"") + parseDblQuote(json[idx]) + (isNaNB(json[idx])?"\"":"");
				}else {
					ret += json[idx];
				}
			}else if(typeof(json[idx])=="function"){
				i1 = 0; //neglect if type is function
			}else if(typeof(json[idx])=="object"){
				if(i1>1) ret+=",";
				if(json[idx].length==0){
					ret += idx + ":[]";
				}else{
					if ( isNaN ( idx ) ) {	
						ret += (idx.match(/\W/g)?"\"":"") + idx + (idx.match(/\W/g)?"\":":":"); 
					}
					ret += JsonToString ( json[idx] );				////////////	recursive function  ////////////
				}
			}else {
				alert(idx)
			}
		}
		if(!isNaN(json.length)) ret += "]";
	}
	if (typeof(json.length) == 'undefined') ret += "}";
	return ret;
}

//	JsonToString Parser End

//	StringToJson Start
function StringToJson(str){
	try{
		eval( "var objxx = new Object ( " + str + " )" ); 
	}catch(e){
		for(var idx in e){ 
			//alert(e[idx]); 
		}
	}
	return objxx;
}
//	StringToJson End

Object.prototype.toString = function () { return JsonToString(this); }

String.prototype.toJson = function () { return StringToJson(this); }

function toValue(obj, name){
	var ret = "";
	for(var i = 0 ; i < obj.length; i++){
		ret += (i>0?',':'');
		ret += obj[i][name];
	}
	//alert(ret);
	return ret;
}

function showError(Exception){
	var msg = "";
	for(var error in Exception){ 
		msg += error + " : " + Exception[error] + "\n";
	}
	alert(msg);
}