//$Id: CommonFunctions.js,v 1.49 2008/03/28 13:08:53 karuppannan Exp $

function isSpecialCharacter(dnsname)
{
    for (i=0; i<dnsname.length; i++)
    {
        var ipChar = dnsname.charCodeAt(i);
        if ((ipChar < 48 && ipChar != 45 && ipChar != 46) || (ipChar > 57 && ipChar < 65) || (ipChar > 90 && ipChar != 95 && ipChar < 97 ) || (ipChar > 122 && ipChar <= 125) || ipChar == 126)
        {
            return false;
        }
    }
	return true;
}

function isSpecialCharacterForMAC(dnsname)
{
    for (i=0; i<dnsname.length; i++)
    {
        var ipChar = dnsname.charCodeAt(i);
        if ((ipChar < 48 && ipChar != 45 && ipChar != 32) || (ipChar > 57 && ipChar < 65 && ipChar != 58) || (ipChar > 70 && ipChar < 97 ) || (ipChar > 102 && ipChar <= 125) || ipChar == 126)
        {
            return false;
        }
    }
    return true;
}

function isNumber(str)
{ 
	str = trim(str);
	if(str.length==0) return false;
	numdecs = 0; 
	for (i = 0; i < str.length; i++) 
	{
		mychar = str.charAt(i); 
		if ((mychar >= "0" && mychar <= "9") || mychar == "." )
		{ 
		if (mychar == ".") 
		numdecs++; 
		} 
		else return false; 
	} 
		if (numdecs > 1){return false;} 
		return true; 
}

function trim(value) {
// Remove leading spaces and carriage returns
 var s = value;
 while ((s.substring(0,1) == ' ') || (s.substring(0,1) == '\n') || (s.substring(0,1) == '\r'))
 {
    s = s.substring(1,s.length);
 }
 // Remove trailing spaces and carriage returns
  while ((s.substring(s.length-1,s.length) == ' ') || (s.substring(s.length-1,s.length) == '\n') || (s.substring(s.length-1,s.length) == '\r'))
  {
    s = s.substring(0,s.length-1);
  }
  return s;
}

function getObj(n,d) {
 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=getObj(n,d.layers[i].document);

 if(!x && d.getElementById)
     x=d.getElementById(n);

 return x;
}

function showProgress()
{
	var obj=getObj("response_layer");
	if(obj)
	{
		obj.style.visibility="visible";
	}
}
function showProgressFromID(elementid)
{
	var obj=getObj(elementid);
	if(obj)
	{
		obj.style.visibility="visible";
	}
}
/*
//will be considered later
function showProgressMsg(msg)
{
	var obj=getObj("response_layer");
	var obj1=getObj("loadingImage");
	if(obj)
	{
		obj.style.visibility="visible";
		obj1.style.visibility="visible";
		obj.style.color="#000cFF";
		obj.size = msg.length;
		obj.value = msg;
	}
}

*/

function isFirstIsGreaterThanSecond(ipAddr1 , ipAddr2)
{
	ipAddrArray1 = ipAddr1.split(".");
	ipAddrArray2 = ipAddr2.split(".");
	
	if(ipAddrArray1.length != 4 && ipAddrArray2.length != 4)
	{
		return false;
	}

	for(var i = 0 ; i < 4 ; i ++)
	{

		if(!(parseInt(ipAddrArray1[i], 10) >= parseInt(ipAddrArray2[i], 10)))
		{
			if(parseInt(ipAddrArray1[2], 10) < parseInt(ipAddrArray2[2], 10))
                        {
                                return false;
                        }

			if(parseInt(ipAddrArray1[2], 10) != parseInt(ipAddrArray2[2], 10))
                        {
                                return true;
                        }
			return false;
		}
	}
	return true;
}

function stopAction(f)
{
	f.stopButton.disabled=true;
	f.startButton.disabled=false;
    
	f.stopButton.className= "buttonDisabled";
    f.startButton.className= "Button";

	var obj=getObj("response_layer");
	if(obj)
	{
		obj.style.visibility="hidden";
	}

    if(navigator.appName == 'Microsoft Internet Explorer')
      {
                document.execCommand("Stop");
      }
      else
     {
                window.stop();
     }
}

function startAction(f)
{
		f.startButton.disabled=true;
        f.stopButton.disabled=false;
        f.stopButton.className= "Button";
	    f.startButton.className= "buttonDisabled";
}

function defaultAction(f)
{
	f.startButton.disabled=false;
    f.stopButton.disabled=true;
    f.startButton.className= "Button";
    f.stopButton.className= "buttonDisabled";
}

function validateEmail(email) 
{
var emailStr = email;
var emailPat=/^(.+)@(.+)$/;
var matchArray=emailStr.match(emailPat);

	if (matchArray==null) 
	{
			alert("Please enter a valid email address.");
			return false;
	}
	return true;
}

function makeVisible(id)
{
	var obj=getObj(id);
	if(obj)
	{
		obj.style.visibility="visible";
	}
}

function makeInVisible(id)
{
	var obj=getObj(id);
	if(obj)
	{
		obj.style.visibility="hidden";
	}

}

function enableSaveButton(saveButton, oldValue, newValue)
{
	if(oldValue != newValue)
	{
		saveButton.disabled = false;
		saveButton.className = "Button";
	}
	else
	{
		saveButton.disabled = true;
		saveButton.className = "buttonDisabled";
	}
	makeInVisible("response_layer");
}

function isValidOID(oid)
{
	var part = oid.split(".");
	var len = part.length;
	var le = part.length - 1;

	if(part.length > 1)
	{
   		if(part[0] != "")
		{
			if(parseInt(part[0]) == part[0])
        	{
    			return false;
			}
		}

		if(part[le] == "")
			return false;

		for(var i=1 ; i<len ; i++)
		{
			if(!isNumber(part[i]))
				return false;
			
		}
	}
	else
	{
		if(parseInt(oid) == oid)
		{
			return false;
		}
	}
	return true;
}
//will return boolean only
function validateEmailAddress(email) 
{
var emailStr = email;
var emailPat=/^(.+)@(.+)$/;
var matchArray=emailStr.match(emailPat);

	if (matchArray==null) 
	{
			return false;
	}
	return true;
}
function resizeIFrame(iFrameID)
{
	i = parent.document.getElementById(iFrameID);
	if(i)
	{
		iHeight = document.body.scrollHeight;
		i.style.height = iHeight + 8 + "px";
	}
}


// ######################### for IDC #############################################################

//var availabelNetworks = new Array("192.168.195.0", "192.168.196.0", "192.168.197.0", "192.168.198.0", "192.168.199.0");

// no alerts here

function isValidIDCIPRange(startIPElement, endIPElement)
{
	startIP = startIPElement.value;
	endIP = endIPElement.value;
	
	if(!validateIDCNetwork(startIPElement))
		return false;

	if(!validateIDCNetwork(endIPElement))
		return false;
	return true;
}

function validateIDCNetwork(ipElement)
{
	parts = ipElement.value.split(".");
	//network idc check
	if(parseInt(parts[2]) != 195)
	{
		alert("Please enter 192.168.195.0 network IPs only.\n(192.168.195.1 - 192.168.195.1.254)");
		ipElement.focus();
		return false;
	}
	return true;
}

function validateIDCSNMPRange(ipElement)
{
	parts = ipElement.value.split(".");
	//network idc check
	if(parseInt(parts[2]) != 195)
	{
		alert("Please enter IPs between 192.168.195.1 and 192.168.195.30");
		ipElement.focus();
		return false;
	}
	if(parseInt(parts[3]) > 30)
	{
		alert("Please enter IPs between 192.168.195.1 and 192.168.195.30");
		ipElement.focus();
		return false;
	}
	return true;
}

function validateIDCRouter(ipElement)
{
	if(ipElement.value != "192.168.195.1")
	{
		alert("Demo version can accept 192.168.195.1(router) only");
		ipElement.focus();
		return false;
	}
	return true;
}

function validateIDCNetworkIP(ipElement)
{
	if(ipElement.value != "192.168.195.0")
	{
		alert("Demo version can accept 192.168.195.0 network only");
		ipElement.focus();
		return false;
	}
	return true;
}

function validateIDCSwitch(ipElement)
{
	if(ipElement.value != "192.168.195.2")
	{
		alert("Demo version can accept 192.168.195.1(switch) only");
		ipElement.focus();
		return false;
	}
	return true;
}
// ######################### for IDC #############################################################

function OpUtilsSupportBrowser(ieversion,netscapeversion,mozillaversion,operaversion)
{
	var bname = navigator.userAgent;
	if(navigator.appName == "Netscape")
	{
		var browsername = navigator.userAgent;
		if(browsername.indexOf("Netscape") != -1)
		{
			var str1 = browsername.indexOf("Netscape");
			var str2 = browsername.substring(str1+9,str1+12);

			if(parseFloat(str2) < parseFloat(netscapeversion))
			{
				return false;
			}
			else
			{
				return true;
			}
		}
		else
		{
			var str1 = browsername.indexOf("rv:");
			var str2 = browsername.substring(str1+3,str1+6);

			if(parseFloat(str2) < parseFloat(mozillaversion))
			{
				return false;
			}
			else
			{
				return true;
			}
		}

	}
	else if(navigator.appName == "Microsoft Internet Explorer")
	{
		var browsername = navigator.userAgent;
		var str1 = browsername.indexOf("MSIE");
		var str2 = browsername.substring(str1+5,str1+8);

		if(parseFloat(str2) < parseFloat(ieversion))
		{
			return false;
		}
		else
		{
			return true;
		}
	}
	else if(bname.indexOf("Opera") != -1) 
	{
		var version = parseFloat(navigator.appVersion);
		if(parseFloat(version) < parseFloat(operaversion))
		{
			return false;
		}
		else
		{
			return true;
		}
	}

	return false;
}

function isValidDate(dateStr, format) {
   if (format == null) { format = "MDY"; }
   format = format.toUpperCase();
   if (format.length != 3) { format = "MDY"; }
   if ( (format.indexOf("M") == -1) || (format.indexOf("D") == -1) ||
      (format.indexOf("Y") == -1) ) { format = "MDY"; }
   if (format.substring(0, 1) == "Y") { // If the year is first
      var reg1 = /^\d{2}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
      var reg2 = /^\d{4}(\-|\/|\.)\d{1,2}\1\d{1,2}$/
   } else if (format.substring(1, 2) == "Y") { // If the year is second
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{2}\1\d{1,2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{4}\1\d{1,2}$/
   } else { // The year must be third
      var reg1 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{2}$/
      var reg2 = /^\d{1,2}(\-|\/|\.)\d{1,2}\1\d{4}$/
   }
   // If it doesn't conform to the right format (with either a 2 digit year or 4 digit year), fail
 //  if ( (reg1.test(dateStr) == false) && (reg2.test(dateStr) == false) ) { return false; }
   if (  (reg2.test(dateStr) == false) ) { return false; }
   var parts = dateStr.split(RegExp.$1); // Split into 3 parts based on what the divider was
   // Check to see if the 3 parts end up making a valid date
   if (format.substring(0, 1) == "M") { var mm = parts[0]; } else 
      if (format.substring(1, 2) == "M") { var mm = parts[1]; } else { var mm = parts[2]; }
   if (format.substring(0, 1) == "D") { var dd = parts[0]; } else 
      if (format.substring(1, 2) == "D") { var dd = parts[1]; } else { var dd = parts[2]; }
   if (format.substring(0, 1) == "Y") { var yy = parts[0]; } else 
      if (format.substring(1, 2) == "Y") { var yy = parts[1]; } else { var yy = parts[2]; }
   if (parseFloat(yy) <= 50) { yy = (parseFloat(yy) + 2000).toString(); }
   if (parseFloat(yy) <= 99) { yy = (parseFloat(yy) + 1900).toString(); }
   var dt = new Date(parseFloat(yy), parseFloat(mm)-1, parseFloat(dd), 0, 0, 0, 0);
   if (parseFloat(dd) != dt.getDate()) { return false; }
   if (parseFloat(mm)-1 != dt.getMonth()) { return false; }
   return true;
}

function isValidTime(value) {
   var colonCount = 0;
   var hasMeridian = false;
   for (var i=0; i<value.length; i++) {
      var ch = value.substring(i, i+1);
      if ( (ch < '0') || (ch > '9') ) {
         if ( (ch != ':') && (ch != ' ') && (ch != 'a') && (ch != 'A') && (ch != 'p') && (ch != 'P') && (ch != 'm') && (ch != 'M')) {
            return false;
         }
      }
      if (ch == ':') { colonCount++; }
      if ( (ch == 'p') || (ch == 'P') || (ch == 'a') || (ch == 'A') ) { hasMeridian = true; }
   }
 //  if ( (colonCount < 1) || (colonCount > 2) ) { return false; }
   if ( (colonCount != 2) ) { return false; }
   var hh = value.substring(0, value.indexOf(":"));
   if ( (parseFloat(hh) < 0) || (parseFloat(hh) > 23) ) { return false; }
   if (hasMeridian) {
      if ( (parseFloat(hh) < 1) || (parseFloat(hh) > 12) ) { return false; }
   }
   if (colonCount == 2) {
      var mm = value.substring(value.indexOf(":")+1, value.lastIndexOf(":"));
   } else {
      var mm = value.substring(value.indexOf(":")+1, value.length);
   }
   if ( (parseFloat(mm) < 0) || (parseFloat(mm) > 59) ) { return false; }
   if (colonCount == 2) {
      var ss = value.substring(value.lastIndexOf(":")+1, value.length);
   } else {
      var ss = "00";
   }
   if ( (parseFloat(ss) < 0) || (parseFloat(ss) > 59) ) { return false; }
   return true;
}

 
function ShowHide1(divId)
{
	var id = document.getElementById(divId);
	toggleImage(divId);
	var inputs = id.getElementsByTagName("input");
	
	if (id.style.display == "none")
	{
	//	for(var i=0; i < inputs.length; i++) {
	//		inputs[i].disabled = false;
	//	}
		id.style.display = "block";
		//alert ("Show hide loop : blocked"+"\n"+divId+" "+readCookie(id));
	}
	else
	{
	//	for(var i=0; i < inputs.length; i++) {
	//		inputs[i].disabled = true;
	//	}
		id.style.display = "none";
	}
}

function toggleImage(imgid){
	
	var img = document.getElementById(imgid+"image");
	if(img.src .indexOf('/images/arrow1.gif') != -1){
		img.src = '/images/arrow2.gif';
		img.width="8";
		img.height="6";
	}
	else{
		img.src = '/images/arrow1.gif';
		img.width="4";
		img.height="8";
	}	
}

function toggleImage1(imgid, type){
	
	var img = document.getElementById(imgid+"image");
	if(type == 'block'){
		img.src = '/images/arrow2.gif';
		img.width="8";
		img.height="6";
	}
	else{
		img.src = '/images/arrow1.gif';
		img.width="4";
		img.height="8";
	}	
}

function ShowHide2(divId)
{
	var id = document.getElementById(divId);
	var img = document.getElementById(divId+"image");
	var onceonly = document.getElementById("onceonly");
	var minhr= document.getElementById("minhr");
	var daily = document.getElementById("daily");
	var weekly= document.getElementById("weekly");
	var monthly= document.getElementById("monthly");
	if(divId == 'onceonly'){
		minhr.style.display = "none";
		daily.style.display = "none";
		weekly.style.display = "none";
		monthly.style.display = "none";
		document.addtaskrepeatpattern.selectedPattern.value="Once Only";
		toggleImage1("onceonly", "block");
		toggleImage1("minhr", "none");
		toggleImage1("daily", "none");
		toggleImage1("weekly", "none");
		toggleImage1("monthly", "none");

	}
	else if(divId == 'minhr'){
		onceonly.style.display = "none";
		daily.style.display = "none";
		weekly.style.display = "none";
		monthly.style.display = "none";
		document.addtaskrepeatpattern.selectedPattern.value="Hourly";
		toggleImage1("onceonly", "none");
		toggleImage1("minhr", "block");
		toggleImage1("daily", "none");
		toggleImage1("weekly", "none");
		toggleImage1("monthly", "none");

	
	}else if(divId == 'daily'){
		onceonly.style.display = "none";
		minhr.style.display = "none";
		weekly.style.display = "none";
		monthly.style.display = "none";
		document.addtaskrepeatpattern.selectedPattern.value="Daily";
		toggleImage1("onceonly", "none");
		toggleImage1("minhr", "none");
		toggleImage1("daily", "block");
		toggleImage1("weekly", "none");
		toggleImage1("monthly", "none");


	}else if(divId == 'weekly'){
		onceonly.style.display = "none";
		minhr.style.display = "none";
		daily.style.display = "none";
		monthly.style.display = "none";
		document.addtaskrepeatpattern.selectedPattern.value="Weekly";
		toggleImage1("onceonly", "none");
		toggleImage1("minhr", "none");
		toggleImage1("daily", "none");
		toggleImage1("weekly", "block");
		toggleImage1("monthly", "none");

	}else if(divId == 'monthly'){
		onceonly.style.display = "none";
		minhr.style.display = "none";
		daily.style.display = "none";
		weekly.style.display = "none";
		document.addtaskrepeatpattern.selectedPattern.value="Monthly";
		toggleImage1("onceonly", "none");
		toggleImage1("minhr", "none");
		toggleImage1("daily", "none");
		toggleImage1("weekly", "none");
		toggleImage1("monthly", "block");
	}
	
	if (id.style.display == "none")
	{
		id.style.display = "block";
		//alert ("Show hide loop : blocked"+"\n"+divId+" "+readCookie(id));
	}
}

function ShowHide(divId)
{
	var id = document.getElementById(divId);
	if (id.style.display == "none")
	{
		createCookie(id, 'show', 30);
		eval("id.style.display = 'block';");
		//alert ("Show hide loop : blocked"+"\n"+divId+" "+readCookie(id));
	}
	else
	{
		createCookie(id, 'hide', 30);
		eval("id.style.display = 'none';");
		//alert ("Show hide loop : None "+"\n"+divId+" "+readCookie(id));
	}
}



function createCookie(name, value, days)
{
  if (days) {
    var date = new Date();
    date.setTime(date.getTime()+(days*24*60*60*1000));
    var expires = "; expires="+date.toGMTString();
    }
  else var expires = "";
  document.cookie = name+"="+value+expires+"; path=/";
}

function readCookie(name)
{
  var ca = document.cookie.split(';');
  var nameEQ = name + "=";
  for(var i=0; i < ca.length; i++) {
    var c = ca[i];
    while (c.charAt(0)==' ') c = c.substring(1, c.length);
    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
    }
  return null;
}

function eraseCookie(name)
{
  createCookie(name, "", -1);
}


function Show(divId)
{
	var id = document.getElementById(divId);
	if (id.style.display == "none")
	{
		createCookie(id, 'show', 30);
		eval("id.style.display = 'block';");
		//alert ("Show hide loop : blocked"+"\n"+divId+" "+readCookie(id));
	}
	else
	{
		createCookie(id, 'hide', 30);
		eval("id.style.display = 'block';");
		//alert ("Show hide loop : None "+"\n"+divId+" "+readCookie(id));
	}
}

function NewWindow(mypage,myname,w,h,scroll,pos,x,y)
{
ind = myname.indexOf("-");
var temp = myname.substring(0,ind)+myname.substring(ind+1);
myname = temp;
var win=null;
if(scroll!='No' && scroll!='no' && scroll!='NO'){
	scroll="yes"
}
if(pos=="random"){LeftPosition=(screen.width)?Math.floor(Math.random()*(screen.width-w)):100;TopPosition=(screen.height)?Math.floor(Math.random()*((screen.height-h)-75)):100;}
if(pos=="center"){LeftPosition=(screen.width)?(screen.width-w)/2:100;TopPosition=(screen.height)?(screen.height-h)/2:100;}
else if((pos!="center" && pos!="random") || pos==null){LeftPosition=x;TopPosition=y}
settings='width='+w+',height='+h+',top='+TopPosition+',left='+LeftPosition+',screenX='+x+', screenX='+y+',scrollbars='+scroll+',location=no,directories=no,status=no,menubar=no,toolbar=no,resizable=yes';
//openWins[curWin++] = window.open(mypage,myname,settings);
win = window.open(mypage,myname,settings);
navapp = navigator.appVersion
if(navapp.indexOf("MSIE 5.0")== -1){
win.focus();
}
}

function hideThisTable(status, tool, cookie){
if(status == 'true')
{
        document.getElementById("inputTable").className='hide';
        document.getElementById("showLink").className='';
if(cookie == 'true'){
	createCookie(tool, "hide");
}
}
else
{
        document.getElementById("inputTable").className='';
        document.getElementById("showLink").className='hide';
if(cookie == 'true'){
	createCookie(tool, "show");
}
}
}

function checkInputStatus(tool){

var status = readCookie(tool);
if(status == null || status == 'show'){
	status = "false";
}
else{
	status = "true";
}
hideThisTable(status, tool, "false");
}


//Its use to moving a div (used in SnmpTable columnchooser, MibBrowser parameter)
var moving=false
var IE=document.all
var divId;
function Dragnow(e,id)
{
    divId=id;
    curposx=(IE ? event.clientX : e.pageX) // Cursorx Start Position
    curposy=(IE ? event.clientY : e.pageY) // Cursory Start Position
    objectx=parseInt(document.getElementById(id).style.left) // Objectx Start Position
    objecty=parseInt(document.getElementById(id).style.top) // Objecty Start Position
    moving=true
    document.onmousemove=Moveto
}

function Moveto(e){
xx=(IE ? event.clientX : e.pageX)
yy=(IE ? event.clientY : e.pageY)
if (moving==true){
document.getElementById(divId).style.left=xx-(curposx-objectx) 
document.getElementById(divId).style.top=yy-(curposy-objecty) 
return false
}
}
