//用于在页面中查找某个对象（来自Dreamweaver）
function findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function getUrlParameters(url){
  if(!url)return null;
  
  var params = null;
  var url_str = url;
  
  //去掉#号后面的字符
  var u = url_str.indexOf("#");
  if(u >=0){
    url_str = url_str.substring(0, u);
  }
  
  //只要问号后面的参数
  var q = url.indexOf("?");
  if(q >=0){
    url_str = url_str.substring(q + 1);
    
    if(url_str && url_str != ""){
      var strs = url_str.split("&");
      if(strs && strs.length > 0){
        params = new Array();
        for(var i = 0; i < strs.length; i++){
          var vps = strs[i].split("=");
          if(vps.length == 0){
            //do nothing
          } else if(vps.length == 1){
            params[vps[0]] = null;
          } else {
            params[vps[0]] = unescape(vps[1]);
          }
        }
      }
    }
  }
  return params;
}

function setUrlParameter(url, key, value){
  if(!url)return null;
  if(!key)return url;
  
  var str =url;
  var q = url.indexOf("?");
  if(q < 0){
    str += "?";
  } else {
    str += "&";
  }
  
  value = (value ? value : "");
  value = escape(value);
  
  str += key + "=" + value;
  
  return str;
}

function showHidObject(objectName){
  var obj = findObj(objectName);
  if(!obj) return;
  
  if(obj.style.display == "none"){
    obj.style.display = "block";
  } else {
    obj.style.display = "none";
  }
}


function isUndefined(v)
{
	return typeof(v) == 'undefined';
}

function isDefined(v)
{
	return typeof(v) != 'undefined';
}

function fillTemplate(template)
{
	var result = template;
	for (var i = 1; i< arguments.length; i+= 2)
	{
		var name = arguments[i];
		var rexp = new RegExp('\\$\\{' + name + '\\}', 'g');
		var value = arguments[i + 1];
		result = result.replace(rexp, value);
	}

	return result;
}

function toggleOpen(modelSource)
{
	var openFlagName = modelSource + '_open';
	var open = eval(openFlagName);
	if (open == undefined) open = false;
	eval(openFlagName + '=' + !open);
}

function refreshElement(id)
{
	var elm = document.getElementById(id);
	if (elm)
	{
		var widget = ElementWidgetMap[id];
		if (widget)
		{
			widget.updateModel();
			elm.innerHTML = widget.render();
		}
	}
}

function isAllCharsEmpty(s)
{
	for (var i = 0; i < s.length; i++)
	{
		if (s.charCodeAt(i) > 32)
			return false;
	}

	return true;
}

function isEmpty(s)
{
	return isUndefined(s) || s == null || s.length == 0 || isAllCharsEmpty(s);
}

function processEmpty(s)
{
	return isEmpty(s) ? '' : s;
}

function nbsp(s)
{
	return isEmpty(s) ? '&nbsp;' : s;
}

function addStaticContentPrefix(rest)
{
	if (isDefined(staticContentPrefix) && staticContentPrefix != null)
		return staticContentPrefix + rest;
	else
		throw "global variable staticContentPrefix undefined or null";
}

function renderWidgetWrapper(widget)
{
	return fillTemplate(
		Template.widgetWrapperElement,
		'elementId', widget.elementId,
		'content', widget.render()
	);
}

function getToday()
{
	var today = new Date();
	return today.getDate() + '/' + MonthMap[today.getMonth()] + '/' + today.getFullYear();
}

var MonthMap = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];
