//========================================================================== 
// SuperMap IS 客户端程序,版权所有，北京超图地理信息技术有限公司，2000-2007。 
// 本程序只能在有效的授权许可下使用。未经许可，不得以任何手段擅自使用或传播。 
// 作者：			李玮顾，胡中南 
// 修改：	 
// 文件名：			Page.js 
// 功能：			自定义事件，与页面相关的一些函数 
// 版本：			5.2.1.28508
// 最后修改时间：	2004-11-16 

// client program of SuperMap IS .NET. Copyright(C)2000-2007 SuperMap GIS Technologies, Inc.
// This program can only use when it is permitted by applicable law or authorized. Without permission , can't use or spread by means of any . 
// Author:			Li weigu , Hu zhongnan
// Modified by:	 
// File name:		Page.js 
// Function:		Custom event, Some function correlating with page  
// Version:			5.2.1.28508
// Last modified:	2004-11-16 
//========================================================================== 

var former_index = 0;
var MAX_Btn_Number = 33;

function GetBrowser(){
	var ua=navigator.userAgent.toLowerCase();
	if(ua.indexOf('opera')!=-1)return'opera';
	else if(ua.indexOf('msie')!=-1)return'ie';
	else if(ua.indexOf('safari')!=-1)return'safari';
	else if(ua.indexOf('gecko')!=-1)return'gecko';
	else return false;
}

// 切换按钮。 Switch button//
function SwitchBtn(index, action)
{
	// when argument index is ignored
	if(typeof(index) == "undefined" || typeof(index) == "string") {
		action = index;
		index = Eve(event).id.replace("img0","").replace("img","");
	}
	var prefix="btn";
	var current = "";
	var rest = "";
	if (index==-1){ //reset all buttons to off status
		for(var i=1; i<10; i++){
			if(i!=index && getImg("img0"+i)){getImg("img0"+i).src="images/"+prefix+"_0"+i+"_off.gif";}
		}
		for(var i=10; i<=MAX_Btn_Number; i++){
			if(i!=index && getImg("img"+i)){getImg("img"+i).src="images/"+prefix+"_"+i+"_off.gif";}
		}
		former_index = 0;
	}
	switch(action){
		case "Over":
			current = "on";
			rest = "off";
			SwitchBtn_ChangeImg(current,rest,prefix,index,former_index);
			break;
		case "Out":
			current = "off";
			rest = "off";
			SwitchBtn_ChangeImg(current,rest,prefix,index,former_index);
			break;
		case "Down":
			current = "down";
			rest = "off";
			// 判断鼠标操作类型。 Judge the type of the mouse operating  
			if(index==4 || index==5 || index==6 || index==10 || (index>=13 && index<=17) || index==22 || index==26 || (index>=28 && index<=32)){
				for(var i=1; i<10; i++){
					if(i!=index && getImg("img0"+i)){getImg("img0"+i).src="images/"+prefix+"_0"+i+"_off.gif";}
				}
				for(var i=10; i<=MAX_Btn_Number; i++){
					if(i!=index && getImg("img"+i)){getImg("img"+i).src="images/"+prefix+"_"+i+"_off.gif";}
				}
				SwitchBtn_ChangeImg(current,rest,prefix,index,former_index);
				former_index = index;
			}
			else
			{
				SwitchBtn_ChangeImg(current,rest,prefix,index,former_index);
				//former_index = index;
			}
			break;
	}
}

function SwitchBtn_ChangeImg(current,rest,prefix,index,former_index)
{
	if(former_index != index){
		if(getImg("img"+index)){
			getImg("img"+index).src="images/"+prefix+"_"+index+"_"+current+".gif";
		}
		if(getImg("img0"+index)){
			getImg("img0"+index).src="images/"+prefix+"_0"+index+"_"+current+".gif";
		}
	}
	else{
		if(current != "off"){
			if(getImg("img"+index)){
				getImg("img"+index).src="images/"+prefix+"_"+index+"_"+current+".gif";
			}
			if(getImg("img0"+index)){
				getImg("img0"+index).src="images/"+prefix+"_0"+index+"_"+current+".gif";
			}
		}
		else
		{
			if(getImg("img"+index)){
				getImg("img"+index).src="images/"+prefix+"_"+index+"_"+"down"+".gif";
			}
			if(getImg("img0"+index)){
				getImg("img0"+index).src="images/"+prefix+"_0"+index+"_"+"down"+".gif";
			}
		}
	}
}

function getImg(img)
{
	if (document.all){
		return document.all(img);
	}
	else if (document.getElementById){
		return document.getElementById(img);
	}
}

function Eve(e)
{
   var trigger='';
   if(!e){e = window.event;}
   if(e.srcElement) trigger= e.srcElement;
   else if(typeof(e) != "undefined" && e.target) trigger= e.target;
   if (trigger.nodeType && trigger.nodeType== 3) trigger= trigger.parentNode;
   return trigger;
}

function SqlQuery()
{
	var strSQL;
	if(document.all){
		strSQL = document.all.sql.value;
		document.all.mapForm.QuerySQL(strSQL);
	}
	else if (document.getElementById){
		strSQL = document.getElementById('sql').value
		document.getElementById('mapForm').QuerySQL(strSQL);
	}
}

function viewObj(obj)
{
	var str;
	var aWin = window.open("","","");
	str = getAttributes(obj);
	aWin.document.write(str);
	aWin.document.close();
}
function getAttributes(o)
{
	var s = "";
	var i;

	// undefined or null
	if(typeof(o)=="undefined" || o==null)
		return "<unknown>null</unknown>";

	// array
	if(typeof(o[0]) != "undefined"){
		for(i = 0; i < o.length; i++)
			s += "<item" + i + ">" + getAttributes(o[i]) + "</item" + i + ">";
		return s;
	}

	if(typeof(o.xml) != "undefined")
		return "<xml>" + o.xml + "</xml>";

	// object(not array)
	try{
		if(typeof(o) != "object"){
			s = "<" + typeof(o) + ">" + o + "</" + typeof(o) + ">";
		}else{
			var oo;	// oo 是对象 o 的属性。 (oo is the attribute for o object.)
			for(oo in o){
				if(o[oo]==null){
					s += "<" + oo + ">null</" + oo + ">";					
					continue;
				}
				// array
				if(typeof(o[oo]) != "undefined" && typeof(o[oo][0]) != "undefined"){
					var strTemp = "";
					for(i = 0; i < o[oo].length; i++){		
						strTemp += "<item" + i + ">" + getAttributes(o[oo][i]) + "</item" + i + ">";
					}
					strTemp = "<" + oo + ">" + strTemp + "</" + oo + ">";
					s += strTemp;
				}
				// not array
				else if(typeof(o[oo])=="object"){
					var str2;
					str2 = getAttributes(o[oo]);
					s += "<" + oo + ">" + str2 + "</" + oo + ">";
				}else{
					s += "<" + oo + ">" + o[oo] + "</" + oo + ">";
				}
			}
		}
	}catch(e){
		s = "<error>" + e.name + ":" + e.message + "</error>";
	}

	return s;
}

// SQL查询 (SQL query)
var isQuerying = false;  // 避免重复查询。 (Avoid repeating inquiry) 
function QuerySQL(strSQL)
{
	// 锁定 ( Lock )
	if(isQuerying){
		alert("Querying, please wait for a moment. "); 
	//	alert("正在查询，请稍候。"); 
		return;
	}

	isQuerying = true;

	// 替换“<”和“>”符号 (replace the symbol '<' and '>')
	var re;
	re = /</g;
	strSQL = strSQL.replace(re,"&lt;");
	re = />/g;
	strSQL = strSQL.replace(re,"&gt;");
//	window.status = strSQL;
	
	mapAction.SetAction('SQLQUERY');
	document.forms[0].SQLQUERY.value = strSQL;

	OnSubmitToServer();
	isQuerying = false;
}

function SwitchToolboxTab(boxIndex, tabIndex)
{
	var COUNT = 4;
	var tempObject;
	for (var i=1; i<=COUNT; i++){
		tempObject = document.getElementById("tbt_" + i);
		if( typeof(tempObject) != "undefined" && tempObject != null){
			tempObject.src = tempObject.src.replace("_on", "_off");
		}
		tempObject = document.getElementById("Toolbox_" + i);
		if( typeof(tempObject) != "undefined" && tempObject != null){
			tempObject.style.visibility = "hidden";
			tempObject.style.display = "none";
		}
	}
	
	// 可能只有 boxIndex 参数，而没有 tabIndex 参数。  //
	if(tabIndex == null || typeof(tabIndex) == "undefined") {
		tabIndex = boxIndex;
	}
	
	tempObject = document.getElementById("tbt_" + tabIndex);
	if( typeof(tempObject) != "undefined" && tempObject != null){
		tempObject.src = tempObject.src.replace("_off", "_on");
	}
	tempObject = document.getElementById("Toolbox_" + boxIndex);
	if( typeof(tempObject) != "undefined" && tempObject != null){
		tempObject.style.visibility = "visible";
		tempObject.style.display = "block";
	}
}


function SwitchEditDiv(divIndex)
{
	var COUNT = 5;
	var tempObject;
	for (var i=1; i<=COUNT; i++){
		tempObject = document.getElementById("Toolbox_4_" + i);
		if( tempObject ){
			tempObject.style.visibility = "hidden";
			tempObject.style.display = "none";
		}
	}
	
	tempObject = document.getElementById("Toolbox_4_" + divIndex);
	if( tempObject ){
		tempObject.style.visibility = "visible";
		tempObject.style.display = "block";
	}
}

//executed when body loaded 
function Body_Load()
{
	;
}

function SwitchListVisibility(evt,listId)
{
	var list;
	if(listId){
		list = document.getElementById(listId);
		if(!list){return;}
	}
	else{
		list = this;
	}
	
//	list.onmousemove = function(){this.bStarted = true; this.onmouseout = HideList();};
//	list.onmouseout = HideList();
	var curPosition = SMISGetMouseAbsolutePosition(evt);
	if(list.style.visibility =="hidden"){
		with(list.style){
			visibility	= "visible";
			display		= "block";
			position	= "absolute";
			left		= (curPosition.x + 3)+"px";
			top			= (curPosition.y + 3)+"px";
			zIndex		= 1000;
		}
	}
	else{
		with(list.style){
			visibility	= "hidden";
			display		= "none";
		}
		list.bStarted = false;
	}
}

function HideList(listId)
{
	var browser=GetBrowser();
	if(browser!="ie"){return;}
	var list;
	if(listId){
		list = document.getElementById(listId);
		if(!list){
			return;
		}
	}
	else{
		list = event.srcElement;
	}
/*	
	if(!list.bStarted)
	{
		return;
	}
*/	
	if(list.style.visibility != "hidden"){
		with(list.style){
			visibility	= "hidden";
			display		= "none";
		}
		list.bStarted = false;
	}
}

//CustomAction

function MoveEntity(mapId, entityType)
{
	if(!entityType){
		entityType = document.getElementById("entityType").value;
	}
	var points = document.getElementById('pixs').value;
	switch(entityType){
		case "Point":
			SMISCreatePoint(mapId, points);
			break;
		case "Line":
			SMISCreateLine(mapId, points);
			break;
		case "Polygon":
			SMISCreatePolygon(mapId, points);
			break;
		default:
			break;
	}
	
}

function OpenLegendWindow(legendControlId)
{
	var legend = document.getElementById(legendControlId + "_LegendUrl");
	if(!legend){return;}
	
	var win = window.open("");
	win.document.write("<img src='" + legend.value + "'>");
	win.document.close();
	
	win.focus();
}
 
 
function ShowBusSolutionSubmit(solutionId)
{
	var inputShowBusSolution = document.getElementById("ShowBusSolution");
	if(!inputShowBusSolution){
		SMISCreateHiddenField(document.forms[0], "ShowBusSolution", "ShowBusSolution", "true");
	}
	else{
		inputShowBusSolution.Value = "true";
	}
	
	var inputSolutionId = document.getElementById("SolutionId");
	if(!inputSolutionId){
		SMISCreateHiddenField(document.forms[0], "SolutionId", "SolutionId", solutionId);
	}
	else{
		inputSolutionId.Value = solutionId;
	}
	
	__doPostBack("","");
} 

 
function ShowBusStopSubmit(stopId, solutionId, locationX, locationY, stopName)
{
	var inputShowBusStop = document.getElementById("ShowBusStop");
	if(!inputShowBusStop){
		SMISCreateHiddenField(document.forms[0], "ShowBusStop", "ShowBusStop", "true");
	}
	else{
		inputShowBusStop.Value = "true";
	}
	
	var inputStopId = document.getElementById("StopId");
	if(!inputStopId){
		SMISCreateHiddenField(document.forms[0], "StopId", "StopId", stopId);
	}
	else{
		inputStopId.Value = stopId;
	}
	
	var inputSolutionId = document.getElementById("SolutionId");
	if(!inputSolutionId){
		SMISCreateHiddenField(document.forms[0], "SolutionId", "SolutionId", solutionId);
	}
	else{
		inputSolutionId.Value = solutionId;
	}
	
	SMISCreateHiddenField(document.forms[0], "LocationX", "LocationX", locationX);
	SMISCreateHiddenField(document.forms[0], "locationY", "LocationY", locationY);
	SMISCreateHiddenField(document.forms[0], "StopName", "StopName", stopName);
	
	__doPostBack("","");
}


function ShowPropEditWindow()
{
	var fieldNames = document.getElementById("EditFieldNames");
	var fieldValues = document.getElementById("EditFieldValues");
	if(!fieldNames || !fieldValues){return;}
	
	fieldNames = fieldNames.value;
	fieldValues = fieldValues.value;
	
	var arrFieldNames = fieldNames.split(":");
	var arrFieldValues = fieldValues.split(":");
	var fieldLength = arrFieldNames.length;
	var strTemp = "";
	for(var i=0; i<fieldLength; i++){
		if(arrFieldNames[i].length > 0){
			strTemp += "<br>" + arrFieldNames[i] + ": <input type='text' id='Field" + i + "' value=" + arrFieldValues[i] + ">";
		}
	}
	strTemp += "<script type='text/javascript' src='scripts/Page.js'></script>";
	strTemp += "<br><input type='submit' onclick='SubmitEditProps(" + fieldLength + "); return false;'>";
	var editWin = window.open("");
	editWin.document.write(strTemp);
	editWin.document.close();
	editWin.focus();
}

function SubmitEditProps(fieldLength)
{
	var map = window.opener.SMISGetMap('MapControl1');
	
	var objEditPostBack = window.opener.document.getElementById('EditPostBack');
	if(!objEditPostBack){return;}
	
	var objFieldValues = window.opener.document.getElementById('EditFieldValues');
	if(!objFieldValues){return;}
	
	var strTemp = "";
	var objTemp;
	var maxLength = 12;
	var shouldPrompt;
	for(var i=0; i<fieldLength; i++){
		objTemp = document.getElementById("Field" + i)
		if(objTemp){
			if( !shouldPrompt && objTemp.value.length > maxLength){
				shouldPrompt = true;
			}
			strTemp += objTemp.value + ":";
		}
	}
	
	if(shouldPrompt){
		// var flag = confirm("您提交的字段值的长度可能过长，确定要提交吗？");
		var flag = confirm("The length of the field's value which you submit may be too long, are you sure to submit it? ");
		if(!flag)	{return;	}
	}
	
	objEditPostBack.value = "true";
	objFieldValues.value = strTemp;
	window.opener.focus();
	window.close();
	map.DoPostBack();
}

function SwitchVisible(elementID )
{
	if(!elementID){return;}
	var element = document.getElementById(elementID);
	if(!element || !element.style){return;}
	if(element.style.visibility == "hidden" || element.style.display == "none")
	{
		element.style.visibility = "";
		element.style.display = "block";
	}
	else
	{
		element.style.visibility = "hidden";
		element.style.display = "none";
	}
}

function SwitchResultVisible(resultIndex, resultPrefix)
{
	SwitchVisible(resultPrefix + resultIndex);
	var element;
	var index = -1;
	while(true)
	{
		index++;
		if(index == resultIndex) { continue;}
		element = document.getElementById(resultPrefix + index);
		if(!element || !element.style){break;} //beyond the end.
		element.style.display = "none";
	}
}

function SetFieldValue(id, value)
{
	SMISCreateHiddenField("", id, id, value);
}


// 根据GeoRss的解析结果显示返回的信息，在一个层上表示
function addDiv(title,description,link,imageURL,hoverwidth,hoverheight,e)
{
	var browser=GetBrowser();
    if(browser!="ie")
    {
        addDivForNS(title,description,link,imageURL,hoverwidth,hoverheight,e);
    }
    else
    {  
        addDivForIE(title,description,link,imageURL,hoverwidth,hoverheight);
    }
}

// 让GeoRss信息层消失
function delDiv(title,description,link,imageURL,hoverwidth,hoverheight,e)
{
	var browser=GetBrowser();
    if(browser!="ie")
    {
        delDivForNS();
    }
    else
    {  
        delDivForIE();
    }
}

function addDivForNS(title,description,link,imageURL,hoverwidth,hoverheight,e)
{
    delDivForNS();
    var div=document.createElement("div");
    div.id="show_div";
    div.style.left=e.clientX+5+"px";
    div.style.top=e.clientY+5+"px";
    div.style.borderRight="gray 1px solid";
    div.style.borderTop="gray 1px solid";
    div.style.borderLeft="gray 1px solid";
    div.style.borderBottom="gray 1px solid";
    div.style.visibility="visible";
    div.style.position="absolute";
    div.style.zIndex=2000;
    var html="<table style='background-color:White;'><tr><td style='width: 150px;height:15px;background-color: lightcyan;'><span style='font-size: 8pt; '>返回信息</span></td>";
    html+="<td style='background-color: lightcyan;'><img src='images/close.gif' onclick='delDiv();'/ ></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'></td><td></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'><span style='font-size: 8pt; '>标题:"+title+"</span></td><td></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'><span style='font-size: 8pt; '>描述:"+description+"</span></td><td></td></tr>";
    html+="<tr><td style='width:175px;height:15px;'><span style='font-size: 8pt; '>相关链接:<a href=http://www.supermap.com>"+link+"</a></span></td><td></td></tr><tr><td style='height:15px;'></td><td></td></tr></table>";
    div.innerHTML=html;
    document.forms[0].appendChild(div);
    switchIconForNS(imageURL,hoverwidth,hoverheight,e)
}


// 根据GeoRss的解析结果显示返回的信息，在一个层上表示
function addDivForIE(title,description,link,imageURL,hoverwidth,hoverheight)
{
    delDivForIE();
    var div=document.createElement("<div style='background-color:White; border-right: gray 1px solid; border-top: gray 1px solid; border-left: gray 1px solid; border-bottom: gray 1px solid;'>");
    div.id="show_div";
    div.style.left=event.clientX+5+"px";
    div.style.top=event.clientY+5+"px";
    div.style.visibility="visible";
    div.style.position="absolute";
    div.style.zIndex=2000;
    var html="<table style='background-color:White;'><tr><td style='width: 150px;height:15px;background-color: lightcyan;'><span style='font-size: 8pt; '>返回信息</span></td>";
    html+="<td style='background-color: lightcyan;'><img src='images/close.gif' onclick='delDiv();'/ ></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'></td><td></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'><span style='font-size: 8pt; '>标题:"+title+"</span></td><td></td></tr>";
    html+="<tr><td style='width: 150px;height:15px;'><span style='font-size: 8pt; '>描述:"+description+"</span></td><td></td></tr>";
    html+="<tr><td style='width:175px;height:15px;'><span style='font-size: 8pt; '>相关链接:<a href=http://www.supermap.com>"+link+"</a></span></td><td></td></tr><tr><td style='height:15px;'></td><td></td></tr></table>";
    div.innerHTML=html;
    document.forms[0].appendChild(div);
    switchIconForIE(imageURL,hoverwidth,hoverheight)
}

function delDivForNS()
{
    var div=document.getElementById("show_div");
    if(div){document.forms[0].removeChild(div);switchIconForNS();}
    
}

function delDivForIE()
{
    var div=document.getElementById("show_div");
    if(div){div.parentNode.removeChild(div);switchIconForIE();}
    
}

// 在mouseover事件中变换标记的图片
var oldElement; // 变换前的对象
var oldElementWidth; // 原对象宽度
var oldElementHeight; // 原对象高度
var oldImage; // 原对象图片地址
function switchIconForNS(imageURL,hoverwidth,hoverheight,e)
{
    if(imageURL)
    {
        if(e.target.src==imageURL)
        {
            return;
        }
        oldImage=e.target.src;
        oldElement=e.target;
        oldElementWidth=e.target.width;
        oldElementHeight=e.target.height;
        e.target.src=imageURL;
        if(hoverwidth){e.target.width=hoverwidth;}
        if(hoverheight){e.target.height=hoverheight;}
    }
    else if(typeof(imageURL)=="undefined")
    {
        if(oldElement)
        {
            oldElement.src=oldImage;
            oldElement.width=oldElementWidth;
            oldElement.height=oldElementHeight;
        }
    }
}

function switchIconForIE(imageURL,hoverwidth,hoverheight)
{
    if(event.srcElement.src==imageURL)
    {
        return;
    }
    if(imageURL)
    {
        oldImage=event.srcElement.src;
        oldElement=event.srcElement;
        oldElementWidth=event.srcElement.width;
        oldElementHeight=event.srcElement.height;
        event.srcElement.src=imageURL;
        if(hoverwidth){event.srcElement.width=hoverwidth;}
        if(hoverheight){event.srcElement.height=hoverheight;}
    }
    else if(typeof(imageURL)=="undefined")
    {
        if(oldElement)
        {
            oldElement.src=oldImage;
            oldElement.width=oldElementWidth;
            oldElement.height=oldElementHeight;
        }
    }
}
