var request = null;
var response="undefined";
var devCfg="undefined";
var sensorCfg="undefined";
var error="Error";
var g_szCompressType = "mpeg4";
var g_szRotate = "None";
var requestTimeout=30000;
var updateJPG=1;

function CreateRequest(){  
	request = null;
    try {
      request = new XMLHttpRequest();
    } catch (trymicrosoft) {
      try {
        request = new ActiveXObject("Msxml2.XMLHTTP");
      } catch (othermicrosoft) {
        try {
          request = new ActiveXObject("Microsoft.XMLHTTP");
        } catch (failed) {
          request = false;
        }
      }
    }

    if (!request)
        alert("Error initializing XMLHttpRequest!");
    return request;
}
function updatePage(){
        if (request.readyState == 4)
        {
           if (request.status == 200){       
               response = request.responseText
               alert(response); 
               //response = request.responseText.split("\n");
               //alert(request.responseText);
               //alert(response[0]);
           }
           else if (request.status == 404)
               alert("Request URL does not exist");
           else
               alert("Error: status code is " + request.status);
        }
}

function requestAbort(){
  alert(loadLangString("L_ServerNoResponse",false));
	request.abort();
}

function HttpRequest(method, cgistr, cb, async, timeout){ 
    var tempstring = eval("'"+cgistr+"'");
    var timer;
    //alert( method+' '+tempstring );
    request=CreateRequest();
    if ( request === null) { // Sorry, no Ajax
        alert("Ajax not available");
        return null;
    }
    request.open(method, tempstring, async); //synchronous
    //request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
    if(timeout > 0)
    {//alert(timeout);
    	timer = setTimeout("requestAbort()",timeout);
    }
    
    if(async)
    {
        request.onreadystatechange = function(){  
            if (request.readyState == 4)
            {
            	 if(timeout > 0)
            		clearTimeout(timer);
            	
               if (request.status == 200){       
                   response = request.responseText
                   //alert(response); 
                   //devCfg=response;
                   if(cb) cb();
                   //response = request.responseText.split("\n");
                   //alert(request.responseText);
                   //alert(response[0]);
               }
               else if (request.status == 404)
                   alert("Request URL does not exist");
	             else if(request.status == 0){
	                 //alert("Request abort");
	             }
               else {
                   //alert("Error: status code is " + request.status);
               }
            }
        }
    }
    if(method=="POST")
    {
    	//request.setRequestHeader("Content-Type", "multipart/form-data");
        request.send(cgistr);
    }
    else
    {
        request.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" );
        try{
            request.send(null);
        }
        catch(e){
            return ;
        }
    }
    if(async) return;

    if (request.status != 200)
    {
    	  if(timeout > 0){
    	  	//alert("clear timeout error");
          clearTimeout(timer);}
        return error;
    }else{
    	  if(timeout > 0){
    	  	//alert("clear timeout");    	  	
          clearTimeout(timer);}
        return request.responseText;
    }

}
function SendCGICMD(){ 
  if(arguments[0]!=null)
  {
    setLastCGICMD(arguments[0]);
  }
    return HttpRequest("GET", arguments[0], arguments[1]?arguments[1]:null, arguments[2]?arguments[2]:false, arguments[3]?arguments[3]:requestTimeout);
}

/*
* GetDeviceInfo(catalog, level, cb)
*     catalog(must): cgi command
*     level(optional): admin/operator/view
*     cb(optional): call back function
*/
function GetDeviceInfo(){  
    var level = "admin";
	
    if(arguments[1])
        level = arguments[1];
	
    var cgi = eval("'/cgi-bin/"+level+"/param?action=list&group="+arguments[0]+"'");

    devCfg=HttpRequest("GET", cgi, null, false, requestTimeout);   
    if(arguments[2])
	arguments[2]();		
}

function GetSensorInfo(){  
    var level = "admin";
	
    if(arguments[1])
        level = arguments[1];
	
    var cgi = eval("'/cgi-bin/"+level+"/param_option?ImageSource="+arguments[0]+"'");

    sensorCfg=HttpRequest("GET", cgi, null, false, requestTimeout);   
    if(arguments[2])
	arguments[2]();		
}

function GetSensorVariable(variable){
    //alert(devCfg);
    //alert(variable);
    if(sensorCfg==undefined)
    {
    	vars="";
        return vars
    }
    var vars = sensorCfg.split(variable+"="); 
    if(vars[1]==undefined)
    {
        //alert("Error: Undefined!");
        vars="";
        return vars
    }
    var pair = vars[1].split("\n"); 
    //alert(pair[0]);

    return pair[0];
}

function GetQueryVariable(variable){
    //alert(devCfg);
    //alert(variable);
    if(devCfg==undefined)
    {
    	vars="";
        return vars
    }
    var vars = devCfg.split(variable+"="); 
    if(vars[1]==undefined)
    {
        //alert("Error: Undefined!");
        vars="";
        return vars
    }
    var pair = vars[1].split("\n"); 
    //alert(pair[0]);

    return pair[0];
}

function GetQueryVariableEx2(variable,cfg){
    //alert(devCfg);
    //alert(variable);
    if(cfg==undefined)
    {
    	vars="";
        return vars
    }
    var vars = cfg.split(variable+"="); 
    if(vars[1]==undefined)
    {
        //alert("Error: Undefined!");
        vars="";
        return vars
    }
    var pair = vars[1].split("\n"); 
    //alert(pair[0]);

    return pair[0];
}
function doCheckEmpty(strTxt)
{
	if(get_Length(strTxt) <= 0){
		return false;
	}
	if(chk_Empty(strTxt)){
		return false;
	}
	
	return true;
	
}

function pausecomp(millis) 
{
    var date = new Date();
    var curDate = null;

    do { curDate = new Date(); } 
    while(curDate-date < millis);
} 

function GetFWUpgradeStatus(){
	var rsp=HttpRequest("GET", "/cgi-bin/admin/firmwareupgrade?action=progress", null, false, requestTimeout);
	var progress = rsp.split("Progress=");
	var vars = "";

	if( rsp.indexOf("Error") > 0)
	{
    return (progress[1]);
	}

  vars = progress[1].split("%"); 
	//alert(vars[0]);
    return (vars[0]);
}
//Qmik added start, Scott Chang, 2007/4/10
function replaceEscapes(strTxt){
    return(escape(strTxt));
}

function saveData(strPath, strData) {
   if(strData=="") strData="None";
   var cgi=eval("'/cgi-bin/operator/filewrite?SAVE.filePath="+strPath+"'");
   cgi+=eval("'&SAVE.fileData="+strData+"'");
   SendCGICMD(cgi);
}

function readData(strPath){         
    var cgi=eval("'/cgi-bin/operator/fileread?READ.filePath="+strPath+"'");
    var data=HttpRequest("GET", cgi, null, false, requestTimeout);
    if(data=="None") data="";
    return (data);
}
//Qmik added end, Scott Chang, 2007/4/10
//Qmik added start, Scott Chang, 2007/4/20
function Clear_Seq(strType, strValue)
{
    var cgi=eval("'/cgi-bin/operator/seqclear?Clear."+strType+"="+strValue+"'");
    UpdateParam(cgi);
}
function getCookies(name)
{
  var arr = document.cookie.match(new RegExp("(^| )"+name+"=([^;]*)(;|$)"));
  if(arr != null) return unescape(arr[2]); return null;
}
function delCookies(name)
{
  var exp = new Date();
  exp.setTime(exp.getTime() - 1);
  var cval=getCookie(name);
  if(cval!=null) document.cookie=name +"="+cval+";expires="+exp.toGMTString();
} 
function getVideoFmt()
{ 
	fmt=getCookies("VideoIdx");
	if(fmt==null)
	{
	    setCookies("VideoIdx","0");
	    return "0";
	}
	if(fmt!="0" && fmt!="1" && fmt!="2" && fmt!="3")
	{
	    setCookies("VideoIdx","0");
	    return "0";
	}
	if(GetQueryVariable("Image.VideoOut.Enabled")=="on" && GetQueryVariable("Image.VideoOut.Index")==fmt 
	  && ProfileImageSource != "ov9715")
	{
		if(fmt=="0")
			fmt="1";
		else if(fmt=="1" || fmt=="2")
			fmt="0";
		setCookies("VideoIdx",fmt);
	}
	return fmt;
}
function setVideoFmt(fmt)
{ 
	if(fmt!="0" && fmt!="1" && fmt!="2" && fmt!="3")
	    return;
	setCookies("VideoIdx",fmt);
	g_szCompressType=fmt;
}

function getProfileFmt()
{
	fmt=getCookies("ProfileIdx");
	if(fmt==null)
	{
    setCookies("ProfileIdx","0");
    return "0";
	}
	return fmt;
}

function setProfileFmt(stream)
{
  if(parseInt(stream,10)<0) 
  {
    return;
  }
  setCookies("ProfileIdx",stream);
}

function getDisplayFmt()
{
	fmt=getCookies("DisplayIdx");
	if(fmt==null)
	{
    setCookies("DisplayIdx","1");
    return "1";
	}
	return fmt;
}

function setDisplayFmt(format)
{
  if(parseInt(format,10)<0) 
  {
    return;
  }
  setCookies("DisplayIdx",format);
}

function getImageRotate()
{ 
	rotate=getCookies(g_szRotate);
	
	if(rotate==null)
	{
	    setCookies(g_szRotate,"None");
	    return "None";
	}
	if(rotate!="None" && rotate!="Mirror" && rotate!="Flip" && rotate!="MirrorFlip")
	{
	    setCookies(g_szRotate,"None");
	    return "None";
	}
	return rotate;
}
function setImageRotate(rotate)
{ 
	if(rotate!="None" && rotate!="Mirror" && rotate!="Flip" && rotate!="MirrorFlip")
	    return;
	setCookies(g_szRotate,rotate);
	g_szRotate=rotate;
}

function setProtocol(protocol)
{ 
	setCookies("ProtocolType",protocol);
	g_szProtocolType=protocol;
}

function getProtocol()
{ 
	var protocol=getCookies("ProtocolType");
  if(protocol != "1" && protocol != "2" && protocol!= "3" && protocol!= "4"){
    protocol="3"; //set as HTTP
  }
	return protocol;
}
function setBufferEn(En)
{ 
	setCookies("Buffering",En);
	Buffer_Enable=En;
}
function getBufferEn()
{ 
	var buff=getCookies("Buffering");
	if(buff==null)
      buff="0"; //set as disable
	return buff;
}
function setViewSize(size)
{ 
	setCookies("ViewSize",size);
	VIEW_SIZE=size;
}
function getViewSize()
{ 
	var size=getCookies("ViewSize");
	if(size==null)
      size="fit"; //set as 1X
	return size;
}

var CGICMD="";

function setLastCGICMD(str)
{
  CGICMD += (str + "\n \n");
  if(CGICMD.length > 1000)
  {
    return;
  }
  setCookies("LastCGICMD",CGICMD);
}

function getLastCGICMD()
{
  var cgi = getCookies("LastCGICMD");
  if(cgi!=null)
  {
    return cgi;
  }else{
    return "empty";
  }
}

function ExtractString(str, start, end)
{
	var re1,re2;
	re1 = str.split(start);
	if(re1[1]==undefined)
		return re1;
	re2 = re1[1].split(end);
	return re2[0];

}

function ReplaceAll(strSource, strFind, strRepl) {
    var str5 = new String(strSource);
    while (str5.indexOf(strFind) != -1) {
          str5=str5.replace(strFind, strRepl);
    }
   return str5;
} 
var portCfg="";
function checkPortAssignment(type, curPort)
{
  var i = 0;
  var vport;
  var pArray = new Array(
  "General.System.HTTPPort",
  "Syslog.ServerPort",
  "General.Network.RTSP.Port",
  /*"General.Network.UPnP.NATTraversal.HTTPPort",
  "General.Network.UPnP.NATTraversal.HTTPSPort",
  "General.Network.UPnP.NATTraversal.RTSPPort",*/
  
  "General.Network.RTP.R0.AudioPort",
  "General.Network.RTP.R1.AudioPort",
  "General.Network.RTP.R2.AudioPort",
  "General.Network.RTP.R3.AudioPort",
  "General.Network.RTP.R4.AudioPort",
  "General.Network.RTP.R5.AudioPort",
  "General.Network.RTP.R6.AudioPort",
  "General.Network.RTP.R7.AudioPort",
  "General.Network.RTP.R8.AudioPort",
  "General.Network.RTP.R9.AudioPort",
  
  "General.Network.RTP.R0.VideoPort",
  "General.Network.RTP.R1.VideoPort",
  "General.Network.RTP.R2.VideoPort",
  "General.Network.RTP.R3.VideoPort",
  "General.Network.RTP.R4.VideoPort",
  "General.Network.RTP.R5.VideoPort",
  "General.Network.RTP.R6.VideoPort",
  "General.Network.RTP.R7.VideoPort",
  "General.Network.RTP.R8.VideoPort",
  "General.Network.RTP.R9.VideoPort"
  );

  var langAry = new Array(
  "Please check HTTP Port",
  "Please check System Log Port",
  "Please check RTSP Port",

  /*"Please check HTTP Port",
  "Please check HTTPS Port",
  "Please check RTSP Port",*/

  "Please check Profile 1 RTSP Multicast Audio Port",
  "Please check Profile 2 RTSP Multicast Audio Port",
  "Please check Profile 3 RTSP Multicast Audio Port",
  "Please check Profile 4 RTSP Multicast Audio Port",
  "Please check Profile 5 RTSP Multicast Audio Port",
  "Please check Profile 6 RTSP Multicast Audio Port",
  "Please check Profile 7 RTSP Multicast Audio Port",
  "Please check Profile 8 RTSP Multicast Audio Port",
  "Please check Profile 9 RTSP Multicast Audio Port",
  "Please check Profile 10 RTSP Multicast Audio Port",
  
  "Please check Profile 1 RTSP Multicast video Port",
  "Please check Profile 2 RTSP Multicast video Port",
  "Please check Profile 3 RTSP Multicast video Port",
  "Please check Profile 4 RTSP Multicast video Port",
  "Please check Profile 5 RTSP Multicast video Port",
  "Please check Profile 6 RTSP Multicast video Port",
  "Please check Profile 7 RTSP Multicast video Port",
  "Please check Profile 8 RTSP Multicast video Port",
  "Please check Profile 9 RTSP Multicast video Port",
  "Please check Profile 10 RTSP Multicast video Port"
  );

  if(portCfg=="")
  {
    portCfg = SendCGICMD("/cgi-bin/operator/param?action=list&group=General.Network.RTSP&group=General.Network.RTP&group=General.Network.UPnP&group=General.System&group=Syslog.ServerPort")
  }

  for(i=0;i < pArray.length; i++)
  {
    if( type.indexOf("AudioPort") > 0 &&
        pArray[i].indexOf("AudioPort") > 0
    )
    {
      continue;
    }
    
    if( type.indexOf("VideoPort") > 0 &&
        pArray[i].indexOf("VideoPort") > 0
    )
    {
      continue;
    }
    if(type!=pArray[i])
    {
      vport=GetQueryVariableEx2(pArray[i], portCfg);
      if(vport==curPort)
      {
        alert(langAry[i]);
        return false;
      }

      if(pArray[i].indexOf("VideoPort") > 0 || pArray[i].indexOf("AudioPort") > 0)
      {
        if(parseInt(vport)+1 == curPort)
        {
          alert(langAry[i]);
          return false;
        }
      }
    }
  }

  return "OK";
}
var addressCfg = "";
function checkMCAddressAssignment(type, curIP)
{
	if(addressCfg=="")
	    addressCfg = SendCGICMD("/cgi-bin/operator/param?action=list&group=General.Network.RTP.R0.IPAddress&group=General.Network.RTP.R1.IPAddress");
    if(type!="General.Network.RTP.R0.IPAddress")
       if(GetQueryVariableEx2("General.Network.RTP.R0.IPAddress", addressCfg)==curIP)
           return loadLangString("L_ComputerView",false) + " - " + loadLangString("L_MulticastStreaming",false)+ " - " + loadLangString("L_MulticastAddress",false);
    if(type!="General.Network.RTP.R1.IPAddress")
       if(GetQueryVariableEx2("General.Network.RTP.R1.IPAddress", addressCfg)==curIP)
           return loadLangString("L_MobileView",false) + " - " + loadLangString("L_MulticastStreaming",false)+ " - " + loadLangString("L_MulticastAddress",false);
    return "OK";
}
function StyleCustomize(curframe)
{
	var style = SendCGICMD("/cgi-bin/view/param?action=list&group=Layout");
	var BGColorEnabled;
	var BGColor;
	var TextColorEnabled;
	var TextColor;
	if(curframe == "menu") {
	    BGColorEnabled = GetQueryVariableEx2('Layout.OwnMenuBGColorEnabled',style);
	    BGColor = GetQueryVariableEx2('Layout.OwnMenuBGColor',style);
	    TextColorEnabled = GetQueryVariableEx2('Layout.OwnMenuTextColorEnabled',style);
	    TextColor = GetQueryVariableEx2('Layout.OwnMenuTextColor',style);
/*	} else if(curframe == "banner") {
		BGColorEnabled = GetQueryVariableEx2('Layout.Banner.OwnBGColorEnabled',style);
	    BGColor = GetQueryVariableEx2('Layout.Banner.OwnBGColor',style);
	    TextColorEnabled = GetQueryVariableEx2('Layout.OwnTextColorEnabled',style);
	    TextColor = GetQueryVariableEx2('Layout.OwnTextColor',style);
*/	} else {
		BGColorEnabled = GetQueryVariableEx2('Layout.OwnBGColorEnabled',style);
	    BGColor = GetQueryVariableEx2('Layout.OwnBGColor',style);
	    TextColorEnabled = GetQueryVariableEx2('Layout.OwnTextColorEnabled',style);
	    TextColor = GetQueryVariableEx2('Layout.OwnTextColor',style);
	}
	var BGPictureAddr = GetQueryVariableEx2('Layout.BGPicture.Address',style);
	var BGPicturePath = GetQueryVariableEx2('Layout.BGPicture.Path',style);
    var BGPictureSource = GetQueryVariableEx2('Layout.BGPicture.Source',style);
	if(BGColorEnabled=="yes")
	    document.body.style.backgroundColor=BGColor;
	if(TextColorEnabled=="yes")
	    document.body.style.color=TextColor;
	var url;
	if(BGPictureSource=="own") 
	{
	    url=eval('"url(style/user/image/'+BGPicturePath+')"');
		if(BGPicturePath!="none")
		    document.body.style.backgroundImage=url;
	}
    else if(BGPictureSource=="external")
	{
	    url=eval('"url('+BGPictureAddr+')"');
	    document.body.style.backgroundImage=url;
	}
}

function UpdateParam(){  
  if(arguments[0]!=null)
  {
    setLastCGICMD(arguments[0]);
  }
  var re = HttpRequest("GET", arguments[0], null, false, requestTimeout);
  if((re.search(/OK/g) >= 0)||arguments[1]==false)
  {
  	alert(loadLangString("L_ApplySuccess",false));
  	return true;
  }else{
  	alert(re);
  	return false;
  }
}

function IframeResize()
{
  if(parent.document.getElementById("setPage") != undefined)
  {
    if( document.body.offsetHeight  < 450)
    {
      parent.document.getElementById("setPage").height = 450;
    }else{
      parent.document.getElementById("setPage").height=document.body.offsetHeight + 30;
    }
  }
  FixStyle();
}

function FixStyle()
{
  if(getOs().indexOf("IE") < 0)
  {
    CSS_Change("radio","margin","8px 6px 0px 0px");
    CSS_Change("checkbox","margin","8px 6px 0px 0px");
  }
}

function CSS_Change(class1,tag,val)
{
  var all = document.getElementsByTagName('*');
  for(var i=0; i<all.length; i++)
  {
    if(all[i].className == class1)
    {
      switch(tag)
      {
        case "margin":
          all[i].style.margin = val;
          break; 
      }
    }
  }
}

function StrExtend(element, length)
{
  var txtidx;
  
  length = CalculateBit(element,length);
  if(element.length >= length)
  {
    element=element.substr(0,length-4);
    element+='...';
  }
  for(txtidx=element.length;txtidx<length;txtidx++)
  {
	  element+='&nbsp;';
  }
  return element;
}

function CalculateBit(text,length)
{
  for(var i=0;i< text.length;i++)
  {
    var reg = /^[\u4E00-\u9FA5]+$/g;
    var val = reg.test(text);
    if(val)
    {
      length--;
    }
  }
  return length;
}

var snapshotReady = 1;
var ImgObj;

function updateImg(obj,w,h)
{
  if(updateJPG)
  {
    ImgObj=obj;
    if(snapshotReady == 1)
    {
      ImgObj=obj;
      if(location.hostname.indexOf(":") != -1)
      {
      	if(location.hostname.indexOf("[") != -1)
        	EID(obj).src = location.protocol + "//" + location.hostname + ':' + location.port + '/cgi-bin/view/image?res='+w+'x'+h+'&'+(new Date()).getTime();
        else
        	EID(obj).src = location.protocol + "//[" + location.hostname + ']:' + location.port + '/cgi-bin/view/image?res='+w+'x'+h+'&'+(new Date()).getTime();
      }
      else
        EID(obj).src = location.protocol + "//" + location.hostname + ':' + location.port + '/cgi-bin/view/image?res='+w+'x'+h+'&'+(new Date()).getTime();
      snapshotReady = 0;
    }
    setTimeout(function(){updateImg(obj,w,h);} , 100);
  	EID(obj).onload=SanpshotEvent;
  	EID(obj).onerror=function aaError()
      	{
      	    //Error
            snapshotReady = 1;
            //setTimeout(function(){updateImg(obj,w,h);} , 100);
        
        };
  }
}

var imageProfile = 0;
var snapshotFlag;

function updateImgByProfile(obj)
{
  if(updateJPG)
  {
    if(snapshotReady == 1)
    {
      ImgObj=obj;
      if(location.hostname.indexOf(":") != -1)
      {
      	if(location.hostname.indexOf("[") != -1)
        	EID(obj).src = location.protocol + "//" + location.hostname + ':' + location.port + '/cgi-bin/view/image?pro_'+imageProfile+'&'+(new Date()).getTime();
        else
         	EID(obj).src = location.protocol + "//[" + location.hostname + ']:' + location.port + '/cgi-bin/view/image?pro_'+imageProfile+'&'+(new Date()).getTime();		
			}
      else
        EID(obj).src = location.protocol + "//" + location.hostname + ':' + location.port + '/cgi-bin/view/image?pro_'+imageProfile+'&'+(new Date()).getTime();
      snapshotReady = 0;
    }
    snapshotFlag = setTimeout(function(){updateImgByProfile(obj);} , 100);
  	EID(obj).onload=SanpshotEvent;
  	EID(obj).onerror=SanpshotEvent;
  }  
}

function SanpshotEvent()
{
  snapshotReady = 1;
  //EID(ImgObj).onload=SanpshotEvent;
  //EID(ImgObj).onerror=SanpshotEvent;
}


function EID(strId){return document.getElementById(strId)}
function EName(strName){return document.getElementsByName(strName)}
function EShow(strId,show){EID(strId).style.display=show;IframeResize();}
function EVisible(strId,visible){EID(strId).style.visibility=visible;}

function SetSlider(item,val){EID(item).value = val;}

function EffectShow(style,effect,id) 
{
  if(effect!="blind" && effect!="fold")
  {
  return false;
  }

  // run the effect : Blind / Fold
  if(style=='')
  {
    if(EID(id).style.display=="none")
    {
      EID(id).style.display="";
    }
  }else if(style=='hide'){
    if(EID(id).style.display=="")
    {
      EID(id).style.display="none";
    }
  }
}

var openHelpFlag = 0;
var openHelpWin;

function OpenHelp()
{
  var href0 = location.href;
  var popW,popAry,idx=0,i;
  idx=href0.indexOf("/");

  popAry = href0.split("/");
  
  for(i=0; i< popAry.length;i++)
  {
    if(popAry[i].indexOf(".htm")>0)
    {
      popW = popAry[i];
      break;
    }
  }
  popW = "help/help_"+popW;
  
  
  if(openHelpFlag==1)
  {
    if(openHelpWin)
    {
      if(openHelpWin.closed == false) {openHelpWin.close();}
    }
  }
  openHelpFlag = 1;
  openHelpWin = window.open(popW,"help",getWinFeature(550,700,1,1,0));
}

function checkValidChar(str)
{
  var reg = /[+=\s]/g;
  if(str != "")
  {
    var val = reg.test(str);
    if(val)
    {
      alert(loadLangString("L_Warn_The_Character_Not_Allowed",false) + "\"+ , = , and space.\"");
    }
    return val;
  }else{
    return false;
  }  
}

function checkValidChar2(str) /* allow space */
{
  var reg = /[+=]/g;
  if(str != "")
  {
    var val = reg.test(str);
    if(val)
    {
      alert(loadLangString("L_Warn_The_Character_Not_Allowed",false) + "\"+ , =.\"");
    }
    return val;
  }else{
    return false;
  }  
}

function checkValidParam(str,param,error)
{
  if(str != "")
  {
    var val = param.test(str);
    if(val)
    {
      alert(loadLangString("L_Warn_The_Character_Not_Allowed",false) + error);
    }
    return val;
  }else{
    return false;
  }
}

function checkValidPath(str)
{
  var reg = /[+=\\\/\:\*\?\"\<\>\|\s\(\)\&\#\%]/g;
  if(str != "")
  {
    var val = reg.test(str);
    if(val)
    {
      alert(loadLangString("L_Warn_The_Character_Not_Allowed",false) + " + , = , \\ , / , : , * , ? , \" , \< , \> , | , ( , ) , & , # , % and space.");
    }
    return val;
  }else{
    return false;
  }  
}

function checkValidPath1(str)
{
  var reg = /[\\\/\:\*\?\"\<\>\|\s\(\)\%]/g;
  if(str != "")
  {
    var val = reg.test(str);
    if(val)
    {
      alert(loadLangString("L_Warn_The_Character_Not_Allowed",false) + " \\ , / , : , * , ? , \" , \< , \> , | , ( , ) , % and space.");
    }
    return val;
  }else{
    return false;
  }  
}
function checkAllowedStr(str)
{
  if(str.length == 0) return true;
  var tmp = str.match(/[0-9a-zA-Z.]+/g);

  if(tmp==null)
  {
    alert(loadLangString("L_Warn_Only_Allow_Characters",false) + " 0-9 , a-z , A-Z ,  \".\"");
    return false;    
  }   

  if(tmp[0] == str)
  {
  }else{
    alert(loadLangString("L_Warn_Only_Allow_Characters",false) + " 0-9 , a-z , A-Z ,  \".\"");
    return false;
  }
  return true;
}

function checkAllowedStr1(str) /* allow _ */
{
  if(str.length == 0) return true;
  var tmp = str.match(/[0-9a-zA-Z._]+/g);

  if(tmp==null)
  {
    alert(loadLangString("L_Warn_Only_Allow_Characters",false) + " 0-9 , a-z , A-Z ,  \".\" , \"_\"");
    return false;    
  } 
  
  if(tmp[0] == str)
  {
  }else{
    alert(loadLangString("L_Warn_Only_Allow_Characters",false) + " 0-9 , a-z , A-Z ,  \".\" , \"_\"");
    return false;
  }
  return true;
}

function checkAllowedMail(str)
{
	if(str.length == 0) return false;
	
	if(str.search(/^[\w-]+(\.[\w-]+)*@[\w-]+(\.[\w-]+)+$/)==-1) 
	{
  	alert(loadLangString("L_Warn_InputWrong",false));
  	return false;
	} 
	
	return true;
}

function getWinFeature(winWidth,winHeight)
{
  var PosX = (screen.width-winWidth)/2; 
  var PosY = (screen.height-winHeight)/2; 
  var resize = arguments[2]==undefined?0:arguments[2];
  var scrollbar = arguments[3]==undefined?0:arguments[3];
  var status = arguments[4]==undefined?0:arguments[4];
  var feature = eval("'width="+winWidth+"px,height="+winHeight+"px,top="+PosY+",left="+PosX+
                     ",resizable=1"+//for https recommand
                     ",scrollbars="+scrollbar+
                     ",status="+status+"'"); 
  return feature;
}

function DetectMobile()
{
  var mobile = (/iphone|ipad|ipod|android|blackberry|mini|windows\sce|palm|transform/i.test(navigator.userAgent.toLowerCase()));
  return mobile;
}

function GetNewEventMedia(re)
{
  var media = "";
  re = re.replace("S","");
  //Check new media add success.
  GetDeviceInfo("Event.Media.M" + re,"operator");
  media = GetQueryVariable("Event.Media.M" + re + ".Type");

  return media;
}

function EventAddServer(cgi, ServerAct)
{
  var addCgi = cgi, addRe = "";
  var removeCgi = "";
  var re = SendCGICMD(addCgi);

  if((re.search(/OK/g) >= 0))
  {
    if(ServerAct != "mod")
    {
      re = re.split("OK")[1].replace(/\s/g,""); //get server/media index
      // If add media fail, remove this setting
      if(GetNewEventMedia(re) == "")
      {
        removeCgi = "/cgi-bin/operator/param?action=remove&group=Event.Server.S" + re.replace("S","") + "&group=Event.Media.M" + re.replace("S","");
        re = SendCGICMD(removeCgi);
        
        // Add again
        re = SendCGICMD(addCgi);

        if((re.search(/OK/g) >= 0))
        {
          re = re.split("OK")[1].replace(/\s/g,""); //get server/media index
          // If add media fail, remove this setting
          if(GetNewEventMedia(re) == "")
          {
            re = SendCGICMD(removeCgi);

            // Add again
            re = SendCGICMD(addCgi);
            addRe = re;

            if((re.search(/OK/g) >= 0))
            {
              re = re.split("OK")[1].replace(/\s/g,""); //get server/media index
              // If add media fail, remove this setting
              if(GetNewEventMedia(re) == "")
              {
                re = SendCGICMD(removeCgi);
                alert("Retry Fail: "+ addRe+
                "addCgi"+addCgi+
                "---\nremoveCgi"+removeCgi
                );
                return false;
              }
            }
          }
        }
      }
    }
    return re;
  }else{
  	alert(loadLangString("L_Warn_InputWrong",false));
    return false;
  }
}