/*
* MTIR V1.22
* 版本：Build 2006-7-11 20:30
* 版权所有：Monkéy(QQ 10433182)
* PHPSo.Com
*
* PHPSoMVC为开源的免费工具，任何人均可以修改，修改后请保留原作者姓名及网站，谢谢。
* 如有任何开发的意见及建议欢迎和我联系，最新版本在官方网站MVC.PHPSo.Com予以发布。
*/
var frame_id=1;
var frame_data=new Array();
var frame_form=new Array();
var userAgent=navigator.userAgent.toLowerCase();
var is_ie=(userAgent.indexOf('msie')!=-1);
var is_opera=(userAgent.indexOf('opera')!=-1);

function $(id) {return document.getElementById(id);}
function _(name) {return document.getElementsByTagName(name);}
function frame(obj) {if ($(obj).tagName=='SPAN' && $(obj).attributes['_frame']) return $(obj);else return false;}

function FixPrototypeForGecko()
{
	HTMLElement.prototype.__defineGetter__("runtimeStyle",element_prototype_get_runtimeStyle);
	window.constructor.prototype.__defineGetter__("event",window_prototype_get_event);
	Event.prototype.__defineGetter__("srcElement",event_prototype_get_srcElement);
	HTMLElement.prototype.__defineSetter__("outerHTML",setOuterHtml);
	HTMLElement.prototype.__defineGetter__("outerHTML",getOuterHtml);
}
function element_prototype_get_runtimeStyle() {return this.style;}
function window_prototype_get_event() {return MTIR_searchevent();}
function event_prototype_get_srcElement() {return this.target;}
function setOuterHtml(s) {
	var range=this.ownerDocument.createRange();
	range.setStartBefore(this);
	var fragment=range.createContextualFragment(s);
	this.parentNode.replaceChild(fragment, this);
}
function getOuterHtml() {
	var s='<span';
	var obj=this.attributes;
	for (i=0;i<obj.length;i++) s+=' '+obj[i].nodeName+'="'+obj[i].nodeValue+'"';
	s+='></span>';
	return s;
}
if(window.addEventListener && !is_opera) FixPrototypeForGecko();

function MTIR_searchevent()
{
	if(document.all) return window.event;
	var func=MTIR_searchevent.caller;
	while(func!=null)
	{
		var arg0=func.arguments[0];
		if(arg0 && (arg0.constructor==Event || arg0.constructor==MouseEvent)) return arg0;
		func=func.caller;
	}
	return null;
}

function MTIR_create(src) {
	if (document.all && !is_opera) _iframe=document.createElement("<iframe name='mtir_"+frame_id+"'></iframe>");
	else {
		_iframe=document.createElement("iframe");
		_iframe.name='mtir_'+frame_id;
	}
	_iframe.id='mtir_'+frame_id;
	_iframe.style.display='none';
	if (src!='') {
		src+=(src.search(/\?/)>0?'&':'?')+'MTIR=true';
		_iframe.src=src;
	}
	document.body.appendChild(_iframe);
	if (_iframe.attachEvent) _iframe.attachEvent('onload',MTIR_load);
	else _iframe.addEventListener('load',MTIR_load,false);
	return _iframe.id;
}

function MTIR_elementa() {
	target_event=MTIR_searchevent();
	if (target_event.srcElement.tagName!='A') obj=target_event.srcElement.parentNode;
	else obj=target_event.srcElement;
	_iframe=MTIR_create(obj.href);
	frame_data[frame_id]={
		'target':obj.attributes['_target'].nodeValue,
		'obj':obj
	}
	if (obj.attributes['_addon']) {
		frame_data[frame_id]['addon']=true;
		frame_data[frame_id]['addonpos']=obj.attributes['_addon'].nodeValue;
	}
	if (is_ie || is_opera) {
		target_event.returnValue=false;
		target_event.cancelBubble=true;
	} else {
		target_event.stopPropagation();
		target_event.preventDefault();
	}
	frame_id++;
	return false;
}

function MTIR_load() {
	try{
		target_event=MTIR_searchevent();
		if (target_event.srcElement) id=target_event.srcElement.id.substr(5);
		else id=this.id.substr(5);
		window.setTimeout("MTIR_show('"+id+"')",1);
	} catch (e) {}
}

function MTIR_formsubmit() {
	target_event=MTIR_searchevent();
	src=target_event.srcElement.action;
	if (src.search(/MTIR=true$/)<0) {
		if (src.search(/\?/)>0) src+='&'; else src+='?';
		src+='MTIR=true';
	}
	target_event.srcElement.action=src;
}

function MTIR_parse() {
	obj=_('A');
	for(i=0;i<obj.length;i++) {
		if (obj[i].attributes['_target'] && !obj[i].attributes['_set']) {
			if (obj[i].attachEvent) {
				obj[i].attachEvent('onclick',MTIR_elementa);
			} else {
				obj[i].addEventListener('click',MTIR_elementa,false);
			}
			obj[i].setAttribute("_set","1");
		}
	}
	obj=_('SPAN');
	for(i=0;i<obj.length;i++) if (obj[i].attributes['_frame']) obj[i].location=MTIR_location;
	obj=_('FORM');
	var form_target = new Array();
	for(i=0;i<obj.length;i++) {
			if (obj[i].attributes['_target'] && obj[i].target=='') {
				var form_iframe=MTIR_create('');
				obj[i].target=form_iframe;
				if (obj[i].attachEvent) obj[i].attachEvent('onsubmit',MTIR_formsubmit);
				else obj[i].addEventListener('submit',MTIR_formsubmit,false);
				frame_data[frame_id]={
					'target':obj[i].attributes['_target'].nodeValue,
					'noremove':true
				}
				if (obj[i].attributes['_addon']) {
					frame_data[frame_id]['addon']=true;
					frame_data[frame_id]['addonpos']=obj[i].attributes['_addon'].nodeValue;
				}
				frame_form[i]=frame_id;
				frame_id++;
				form_target[i]=form_iframe;
			} else form_target[i]=obj[i].target;
	}
	obj=_('IFRAME');
	for(i=0;i<obj.length;i++) {
		var checke=false;
		if (obj[i].src=='') {
			for (j=0;j<form_target.length;j++) if (obj[i].id==form_target[j]) checke=true;
			if (!checke) {
				var lid=obj[i].id.substr(7);
				obj[i].parentNode.removeChild(obj[i]);
				frame_data[lid]=null;
			}
		}
	}
}

function MTIR_show(lid) {
	var content='';
	content=$('mtir_'+lid).contentWindow.document.body.innerHTML;
	if (content=='') return;
	if ($(frame_data[lid]['target'])) {
		if (frame_data[lid]['addon']==true) {
			var targetself=$(frame_data[lid]['target']).outerHTML;
			switch (frame_data[lid]['addonpos']) {
				case 'before':
					$(frame_data[lid]['target']).outerHTML=targetself+content;
					break;
				case 'replace':
					$(frame_data[lid]['target']).outerHTML=content;
					break;
				default:
					$(frame_data[lid]['target']).outerHTML=content+targetself;
			}
		}
		else $(frame_data[lid]['target']).innerHTML=content;
		var r=/[\n\r]function\s+(\S+?)\((.*?)\)\s*?\{([\n\r\s\S]+?)[\n\r]\}/;
		var func_name,func_parm,func_body,v;
		var reg=new RegExp(r);
		v=reg.exec(content);
		while (v) {
			func_name=v[1];func_parm=v[2];func_body=v[3];
			eval(func_name+'=new Function(func_parm, func_body)');
			content=content.replace(v[0], '');
			v=reg.exec(content);
		}
		var obj=$('mtir_'+lid);
		if (frame_data[lid]['noremove']!=true) {
			obj.parentNode.removeChild(obj);
			frame_data[lid]=null;
		}
		MTIR_parse();
	}
}

function MTIR_location(URL,is_addon,is_before) {
	var _iframe=MTIR_create(URL);
	if (!is_before) is_before='';
	frame_data[frame_id]={
		'target':this.id,
		'addon':is_addon,
		'addonpos':is_before
	}
	frame_id++;
}

function MTIR_onload(noinit) {
	MTIR_parse();
	try {frame_init()}
	catch(e) {}
}

if (document.attachEvent) window.attachEvent('onload',MTIR_onload);
else window.addEventListener('load',MTIR_onload,false);

MTIR_parse();
