var ul;
var upreq;
var uploadkey;
var responsediv;
var uploadprogress=0;
var map;
var IE = document.all?true:false;
if (!IE) document.captureEvents(Event.MOUSEMOVE)
document.onmousemove = getMouseXY;
var mX = 0;
var mY = 0;

function getMouseXY(e) {
	if (IE) { // grab the x-y pos.s if browser is IE
	mX = event.clientX + document.body.scrollLeft;
	mY = event.clientY + document.body.scrollTop;
}
else {  // grab the x-y pos.s if browser is NS
	mX = e.pageX;
	mY = e.pageY;
}  
	if (mX < 0){tempX = 0;}
	if (mY < 0){tempY = 0;}  
return true;
}

function load()
{
  if (GBrowserIsCompatible()) 
  {
    map = new GMap2(document.getElementById("map"));
    map.addControl(new GSmallMapControl());
  }
}
    function showAddress(address, repName)
    {
      var geocoder = new GClientGeocoder();   
      if (geocoder) {
        geocoder.getLatLng(
          address,
          function(point) 
          {
            if (!point) {
              //no address found
            } else {
              var marker = new GMarker(point);
              map.addOverlay(marker);
              GEvent.addListener(marker, "click", function() { marker.openInfoWindowHtml(unescape(repName.replace(/\+/g," ")))});
            }
          }
        );
      }
    }
function waitforiframe(js,iframename,returndiv)
{
	var z=window.setTimeout('waitforiframe2('+z+',"'+js+'","'+iframename+'","'+returndiv+'");',250);
}

function waitforupload(js)
{
	var z=window.setTimeout('waitforupload2('+z+',"'+js+'");',250);
}

function waitforupload2(z,js)
{
	var iframeData = window.frames['uploadpane'].document.getElementById('feedback');
	if (iframeData != null) 
	{	
		window.clearTimeout(z)	
		uploadFeedback=iframeData.innerHTML;
		document.getElementById('uploadcontainer').innerHTML='';
		//document.getElementById('uploadmessage').innerHTML='<input type="hidden" name="uploadresults" value="'+uploadFeedback+'"> Upload Complete...Importing Contacts';
		document.getElementById('uploadmessage').innerHTML='<input type="hidden" name="uploadresults" value="'+uploadFeedback+'"><img src="images/icons/icon_indicator.gif" align="absmiddle">Upload Complete...Processing Data';
		eval(unescape(js.replace(/\+/g," ")));
	}
else
	{
		var y=waitforupload(js);
	}
}

function waitforiframe2(z,js,iframename,returndiv)
{
	var iframeData = window.frames[iframename].document.getElementById('feedback');
	if (iframeData != null) 
	{	
		window.clearTimeout(z)	
		iframeFeedback=iframeData.innerHTML;
		document.getElementById(returndiv).innerHTML=iframeFeedback;
	//	eval(unescape(js.replace(/\+/g," ")));
	}
else
	{
		var y=waitforiframe(js,iframename,returndiv);
	}

}



function pulljava()
{
  var randomnumber=Math.floor(Math.random()*100000);
  upreq = false;
  try { upreq = new ActiveXObject("Msxml2.XMLHTTP");}
  catch (e) 
  { try {upreq = new ActiveXObject("Microsoft.XMLHTTP");}
  catch (E) {upreq = false; }}
  if (!upreq) upreq = new XMLHttpRequest();
  var url="Includes/commoncode.asp?pulljava=1&rnd="+randomnumber;
  upreq.open("Get", url, true);
  upreq.onreadystatechange = processpulljava;
  upreq.send(null);

}

function processpulljava() 
{
  if(upreq.readyState == 4)
  {
    if(upreq.status == 200)
    {						
//      alert (upreq.responseText);
	eval (upreq.responseText);
    }
  }
}



function selected(cal, date) {
  cal.sel.value = date; // just update the date in the input field.
  if (cal.sel.id == "sel1" || cal.sel.id == "sel3")
    // if we add this call we close the calendar on single-click.
    // just to exemplify both cases, we are using this only for the 1st
    // and the 3rd field, while 2nd and 4th will still require double-click.
    cal.callCloseHandler();
}

// And this gets called when the end-user clicks on the _selected_ date,
// or clicks on the "Close" button.  It just hides the calendar without
// destroying it.
function closeHandler(cal) {
  cal.hide();                        // hide the calendar
}


function showCalendar(id, format) {
  var el = document.getElementById(id);
  if (calendar != null) {
    // we already have some calendar created
    calendar.hide();                 // so we hide it first.
  } else {
    // first-time call, create the calendar.
    var cal = new Calendar(false, null, selected, closeHandler);
    // uncomment the following line to hide the week numbers
    // cal.weekNumbers = false;
    calendar = cal;                  // remember it in the global var
    cal.setRange(1900, 2070);        // min/max year allowed.
    cal.create();
  }
  calendar.setDateFormat(format);    // set the specified date format
  calendar.parseDate(el.value);      // try to parse the text in field
  calendar.sel = el;                 // inform it what input field we use
  calendar.showAtElement(el);        // show the calendar below it

  return false;
}

	function addField(that) {
		var el = document.getElementById(that);
//		alert (el);
//		alert (el.id);
		categoryCounter++;
		var elName = el.id;
		elNum = elName.substring(elName.length-1, elName.length);		
		var newFields = document.getElementById('file0').cloneNode(true);
		newFields.id = '';
		newFields.innerHTML = newFields.innerHTML + "<input type='button' value='Remove' class=uploadbox onClick='this.parentNode.parentNode.removeChild(this.parentNode);categoryCounter--;'>";
		newFields.style.display = 'block';	
			var newField = newFields.childNodes;
			for(var i=0; i<newField.length; i++)
			{
				var newName = newField[i].name;
				if(newName)
				{
					
					newField[i].name = newName + categoryCounter;
					
				}
			}
			var insertElement = document.getElementById('placeHolder');
			insertElement.parentNode.insertBefore(newFields, insertElement);
		
	}
function showUserPanel2(userid)
{
//		alert (oldX);
//		alert (mouseX);
	getMousePos;
	if ((oldX <= mouseX+10 && oldX >=mouseX-10) && (oldY <= mouseY+10 && oldY >=mouseY-10))
		{
		var x = uC('ajaxutils.asp', '&uid=' + userid, 'userpanel');
		document.getElementById('userpanel').style.left=mouseX;
		document.getElementById('userpanel').style.top=mouseY;
		document.getElementById('userpanel').style.display='block';
		}
}
     
function showUserPanel(userid)
{
	// do your stuff here
	oldX=mouseX;
	oldY=mouseY;
	window.setTimeout('showUserPanel2('+userid+')', 750);
}

function SwapMenu(obj)
{
	var divs = document.getElementsByTagName("div");
	for (var i = 0; i < divs.length; i++)
	{
		//alert (divs[i].className);
		if (divs[i].className == "incidentpanel" && divs[i].id !=obj)
			divs[i].style.display = "none";
	}
	if(document.getElementById)
	{
		var el = document.getElementById(obj);	
		if(el.style.display != "block")
		{ 
			for (var i=0; i < el.length; i++)
			{
				if (el[i].className=="submenu")
					el[i].style.display = "none";
			}
			el.style.display = "block";
			}
		else
		{
			el.style.display = "none";
		}
	}
}
function checkall(fieldname, ch)
{
	var cb=document.getElementsByName(fieldname);
	for (i = 0; i < cb.length; i++) cb[i].checked = ch ;
}



function showdiv(obj)
{
	document.getElementById(obj).style.display = "block";
}
function hidediv(obj)
{
	document.getElementById(obj).style.display = "none";
}

function SwitchMenu(obj) {
  var el = document.getElementById(obj);
  if(el.style.display != "block") {
    el.style.display="block";
  }
  else {
    el.style.display="none";
  }
}
function ExpandMenu(obj) {
  var e1 = document.getElementById(obj);
  var e2 = document.getElementById(obj+'content');
  var e3 = document.getElementById(obj+'toggle');
  
  if(e2.style.display != "block") {
	e3.src="images/small_down.gif";
    e2.style.display = "block";
  }
  else {
	e3.src="images/small_right.gif";
    e2.style.display = "none";
  }
}
	var thedivid;
	var req;
	var xmlpage;
	var categoryCounter;
	var morejava='';

function uC(xmlpage, varText, divid, validatelist)
{
// **************************************************
// ** uC AJAX engine v0.3                          **
// ** Mike Howles                                  **
// **                                              **
// **************************************************
// Declare and initialize required variables

pdarr = new Array(100);		// postdata array
var pdcount=-1;			// postdata count starts as -1
var fe=-1;			// set found flag as -1
var validated = true;		// assume postdata is validated at beginning

// If the validatelist is not empty, scan all form elements for values
if (validatelist.length > 0)	
{
  var arrval=validatelist.split(",");
  for (var i=0;i<arrval.length;i++)
  {
    //20080822 - must field exists
	//alert(arrval[i]);
	//alert(document.getElementsByName(arrval[i]).length);
    var v = document.getElementsByName(arrval[i])[0].value;
    if (v == '')
    {
      document.getElementsByName(arrval[i])[0].style.background="#F8F8C0";
      validated = false;
      //20080822 - break when this occurs
      alert("Missing Required Information");
      break;
    }
  }
  //if (validated == false) 
  //  {alert ('One or more required fields are blank.');return false;}
}
// End of form validation	
  req = false;

// Create a new XMLHttp Object, check for Moz or IE type
  try { req = new ActiveXObject("Msxml2.XMLHTTP");}
  catch (e) 
  { try {req = new ActiveXObject("Microsoft.XMLHTTP");}
  catch (E) {req = false; }}
  if (!req) req = new XMLHttpRequest();
//alert (req);
// Process querystring postdata
  var url= xmlpage;
  var purl= varText.split("&");
  var postdata='';
  var autopost=1;
  var frmlist;
  var pd=0;
  morejava='';
  for (p=0; p<purl.length; p++)
  {
    var vurl=purl[p].split("=");
    if (vurl[0]=='java') morejava=vurl[1];
    if (vurl[0]=='autopost') autopost=vurl[1];
    if (vurl[0]=='frmlist') 
    {
    frmlist=vurl[1];
    varflist=vurl[1].split(",")
    for (var x=0; x<varflist.length; x++)
    {
      var odivs = document.getElementsByName(varflist[x]);
      objVal=odivs[0].value;
      var objVal=objVal.replace(/&/g, "~and~");
      var objVal=objVal.replace(/,/g, "~cma~");
      if (objVal !='') postdata=postdata+'&'+varflist[x]+'='+objVal;
    }
    }
  }
  if (autopost==1)
  {
// INPUT ELEMENTS
  var odivs = document.getElementsByTagName("input");
  if (odivs.length > 0)	pd=1;
  for(var i=0; i<odivs.length;i++)
  {
    currObj =  odivs[i];
    if (currObj.name != ''  && ( ((currObj.type == 'checkbox' || currObj.type == 'radio') && currObj.checked == true) || (currObj.type != 'checkbox' && currObj.type != 'radio')) )
    {
      fe=-1;
      for (var xp=0; xp<=pdcount; xp++) if (pdarr[xp][0] == currObj.name) fe=xp;
      if (fe==-1)
      {
        pdcount=pdcount+1;
        fe=pdcount;
        pdarr[fe] = new Array(2);
        pdarr[fe][0] = currObj.name;
        pdarr[fe][1] = '';
      }		
      var objVal=currObj.value;
      var objVal=objVal.replace(/&/g, "~and~");
      var objVal=objVal.replace(/,/g, "~cma~");
      pdarr [fe][0] = currObj.name;	
      if (pdarr[fe][1].length > 0) pdarr[fe][1]=pdarr[fe][1]+', ';
      pdarr [fe][1] = pdarr [fe][1]+objVal;	
    }
  }

// PASSWORD ELEMENTS
  var odivs = document.getElementsByTagName("password");
  if (odivs.length > 0)	pd=1;
  for(var i=0; i<odivs.length;i++)
  {
    currObj =  odivs[i];
    if (currObj.name != ''  && ( (currObj.type == 'checkbox' && currObj.checked == true) || currObj.type != 'checkbox') )
    {
      fe=-1;
      for (var xp=0; xp<=pdcount; xp++) if (pdarr[xp][0] == currObj.name) fe=xp;
      if (fe==-1)
      {
        pdcount=pdcount+1;
        fe=pdcount;
        pdarr[fe] = new Array(2);
        pdarr[fe][0] = currObj.name;
        pdarr[fe][1] = '';
      }		
      var objVal=currObj.value;
      var objVal=objVal.replace(/&/g, "~and~");
      var objVal=objVal.replace(/,/g, "~cma~");
      pdarr [fe][0] = currObj.name;	
      if (pdarr[fe][1].length > 0) pdarr[fe][1]=pdarr[fe][1]+', ';
      pdarr [fe][1] = pdarr [fe][1]+objVal;	
    }
  }
  for (var x=0; x<=pdcount; x++) postdata = postdata + '&' + pdarr [x][0] + '=' + pdarr [x][1];

// TEXTAREA ELEMENTS
  var odivs = document.getElementsByTagName("textarea");
  if (odivs.length > 0) pd=1;
  for(var i=0; i<odivs.length;i++)
  {
    currObj =  odivs[i];
    if (currObj.name != '' && currObj.value != '')
    {
      var objVal=currObj.value;
      var objVal=objVal.replace(/&/g, "~and~");
      var objVal=objVal.replace(/,/g, "~cma~");
      postdata = postdata + '&' + currObj.name + '=' + objVal;
    }
  }

// SELECT ELEMENTS
  var odivs = document.getElementsByTagName("select");
  if (odivs.length > 0) pd=1;
  for(var i=0; i<odivs.length;i++)
  {
    currObj =  odivs[i];
    if (currObj.name != '')
    {

      var mc='';
      var objVal='';
      for (var ii = 0; ii < currObj.options.length; ii++)
      {
        if (currObj.options[ii].selected) {
          objVal=objVal + mc +currObj.options[ii].value;
          var mc=', ';
        }
      }

      var objVal=objVal.replace(/&/g, "~and~");
      var objVal=objVal.replace(/,/g, "~cma~");
      postdata = postdata + '&' + currObj.name + '=' + objVal;
    }
  }
  }

for (var x=0; x<=pdcount; x++) postdata = postdata + '&' + pdarr [x][0] + '=' + pdarr [x][1];

//20080728 - increase postdata length from 1000 to 2000
if (postdata.length >=2000) postdata=postdata.substring(0,2000);
// Construct URL to pass to XMLHttp object
// alert(postdata.length);
  var url=url + varText;
/* 
   Force pd to 1 for now to add rnd to end of URL.
   This is a temporary fix for caching problem
*/
  pd=1;
  if ( pd==1 )
  {
    url=url+'&pdata='+escape(postdata)
    var randomnumber=Math.floor(Math.random()*100000);
    var url=url+escape('&rnd='+randomnumber);
  }

  thedivid=divid;
  if(req) 
  {
    var tdiv=document.getElementById(thedivid);
    //if (thedivid != 'nowhere' && url.indexOf('noflicker')==-1) tdiv.innerHTML="<img src='images/hourglass.gif' align='middle'> Loading, please wait...";
    document.body.style.cursor='wait';
    //tdiv.style.opacity='.4';
    //tdiv.style.width='100%';
    //tdiv.style.filter="alpha(opacity=40)";
    if (thedivid == 'modalTarget') showPopWin('Popup Window',400,-1, null, null);
    req.open("Get", url, true);
    if (url.indexOf('override')==-1) req.onreadystatechange = processContent;			
    req.send(null);
    //return maxobj;
  }		
}
// **************************************************
// ** End of uC function
// **************************************************


function processContent() 
{
  if(req.readyState == 4)
  {

    var pastHTML=document.body.innerHTML;
    document.body.style.cursor='auto';
    var div = document.getElementById(thedivid);
    //div.style.filter='alpha(opacity=100)';
	if (thedivid !='nowhere')
	{
	    div.style.opacity='1';
	    div.innerHTML = req.status;
	}
    if(req.status == 200 || req.status == 500)
    {						
      if (thedivid != 'nowhere') div.innerHTML = req.responseText;
      if (thedivid == 'modalTarget') showPopWin('Popup Window',400,-1, null, null);
      if (morejava == 'javabuffer')
      {
        pulljava();
        morejava='';
      }
      if (morejava != '') 
      {
//      alert(morejava);
//      alert(unescape(morejava.replace(/\+/g," ")));
      eval(unescape(morejava.replace(/\+/g," ")));
      }
    }		
  }
}

function processMessage()
	{
		document.newmsgform.messagebody.value=document.getElementById('iView').contentWindow.document.body.innerHTML;
		var msgrecipient = document.getElementsByName('recipient')[0].value;
		var msgsubject = document.getElementsByName('messagesubject')[0].value;
		var msgbody = document.getElementById('iView').contentWindow.document.body.innerHTML;
		var validated=true;
		if (msgrecipient == '') validated=false;
		if (msgsubject == '') validated=false;
		if (msgbody == '') validated=false;
		if (validated == false) {
			alert ('One or more required fields are blank.');
			return (false);
		}
		document.newmsgform.submit();
	}


String.prototype.trim = function() {
	return this.replace(/^\s+|\s+$/g,"");
}

function showHide(elementid,toggle){
	if (document.getElementById(elementid).style.display == 'none')
	{
		document.getElementById(elementid).style.display = '';
		document.getElementById(toggle).src='images/icons/minus.gif';
	} 
	else 
	{
		document.getElementById(elementid).style.display = 'none';
		document.getElementById(toggle).src='images/icons/plus.gif';
	}
} 

//20080403 - new default search text
function setSearchText(str)
{
	if(str == "byname")
		document.form1.searchkeyword.value="Enter contact name...";
	else if(str == "bycompany")
		document.form1.searchkeyword.value="Enter company name...";
	else if(str == "byphone")
		document.form1.searchkeyword.value="Enter 10 digit phone...";
	else
		document.form1.searchkeyword.value="Enter contact name...";
}

/*20080822 - auto tab 
This script and many more are available free online at
The JavaScript Source!! http://javascript.internet.com
Created by: Cyanide_7 |  */

function autoTab(input,len, e) {
  var isNN = (navigator.appName.indexOf("Netscape")!=-1);
  var keyCode = (isNN) ? e.which : e.keyCode; 
  var filter = (isNN) ? [0,8,9] : [0,8,9,16,17,18,37,38,39,40,46];
  if(input.value.length >= len && !containsElement(filter,keyCode)) {
    input.value = input.value.slice(0, len);
    input.form[(getIndex(input)+1) % input.form.length].focus();
  }

  function containsElement(arr, ele) {
    var found = false, index = 0;
    while(!found && index < arr.length)
    if(arr[index] == ele)
    found = true;
    else
    index++;
    return found;
  }

  function getIndex(input) {
    var index = -1, i = 0, found = false;
    while (i < input.form.length && index == -1)
    if (input.form[i] == input)index = i;
    else i++;
    return index;
  }
  return true;
}

