/************************************************************************************************************
Ajax dynamic content
Copyright (C) 2006  DTHMLGoodies.com, Alf Magne Kalleland

This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 2.1 of the License, or (at your option) any later version.

This library is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Lesser General Public License for more details.

You should have received a copy of the GNU Lesser General Public
License along with this library; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA

Dhtmlgoodies.com., hereby disclaims all copyright interest in this script
written by Alf Magne Kalleland.

Alf Magne Kalleland, 2006
Owner of DHTMLgoodies.com
	
************************************************************************************************************/	



var enableCache = true;
var jsCache = new Array();
var firstLoadCommentId = null;
var dynamicContent_ajaxObjects = new Array();
var parentObject = null;

function jsCacheContent(frameId, innerFrame, content) {
	this.IsCached = false;
	this.frameId = frameId;
	this.innerFrame = innerFrame;
	this.content = content;

	this.toString = function(commentId) {
		var html;
//		if (commentId != null)
//			html = window.frames[this.frameId].document.getElementById(commentId).outerHTML;
//			html = document.getElementById(commentId).outerHTML;
//		else
			html = content;
//		if (this.IsCached)
//			html += "<p><b>キャッシュデータ<\/b><\/p>";
		return html;
	};
}

//このメソッドは初回のみ動作
function ajax_showContent(divId,ajaxIndex,url)
{
	var cache = new jsCacheContent(
			dynamicContent_ajaxObjects[ajaxIndex].frameId,
			dynamicContent_ajaxObjects[ajaxIndex].innerFrame,
			dynamicContent_ajaxObjects[ajaxIndex].response
	);

	document.getElementById(divId).innerHTML = cache.toString(firstLoadCommentId);

	if(enableCache){
		cache.IsCached = true;
		jsCache[url] = 	cache;
	}
	dynamicContent_ajaxObjects[ajaxIndex] = false;
	parentObject.style.display='block';
}

//毎回呼ばれる
//キャッシュ無し時は Ajax コール、有りならキャッシュから
function ajax_loadContent(divId,pObj,url)
{
    parentObject = pObj;
	var commentId = null;
	firstLoadCommentId = null;
	if (url.indexOf("#") > -1) {
		var ar = url.split("#");
		url = ar[0];
		commentId = ar[1];
		firstLoadCommentId = commentId;
	}

	//キャッシュされていればここから取得
	if(enableCache && jsCache[url]){
		document.getElementById(divId).innerHTML = jsCache[url].toString(commentId);
		return;
	}

	
	var ajaxIndex = dynamicContent_ajaxObjects.length;
	document.getElementById(divId).innerHTML = 'Loading content - please wait';
	dynamicContent_ajaxObjects[ajaxIndex] = new sack();

	//コメントIDが有る場合は XmlHttp を使わない
	//xmlHttp はローカルでテストする場合には動かないので注意すること
	//
	if (commentId != null) dynamicContent_ajaxObjects[ajaxIndex].xmlhttp = null;
	//Ajax を使わない場合は以下をコメント
	else dynamicContent_ajaxObjects[ajaxIndex].createAJAX();

//	if(url.indexOf('?')>=0){
//		dynamicContent_ajaxObjects[ajaxIndex].method='GET';
//		var string = url.substring(url.indexOf('?'));
//		url = url.replace(string,'');
//		string = string.replace('?','');
//		var items = string.split(/&/g);
//		for(var no=0;no<items.length;no++){
//			var tokens = items[no].split('=');
//			if(tokens.length==2){
//				dynamicContent_ajaxObjects[ajaxIndex].setVar(tokens[0],tokens[1]);
//			}	
//		}	
//		url = url.replace(string,'');
//	}
	
	dynamicContent_ajaxObjects[ajaxIndex].requestFile = url;	// Specifying which file to get
	dynamicContent_ajaxObjects[ajaxIndex].onCompletion = function(){ ajax_showContent(divId,ajaxIndex,url); };	// Specify function that will be executed after file has been found
	dynamicContent_ajaxObjects[ajaxIndex].runAJAX();		// Execute AJAX function	
	
	
}
