/****************************************************************************************

    Copyright (c) 2002 Urchin Software Corporation. All rights reserved.
    The javascript contained herein is the property of Urchin Software   
    Corporation, San Diego, CA. It may not be used outside the Urchin
    application without written consent.

*****************************************************************************************/

   /*------------------------------------------------------------------
   --- handle errors
   ------------------------------------------------------------------*/
/*
   function uErrorHandler() {
      return true;
   }
   window.onerror = uErrorHandler;
*/

   /******************************************* 
      get browser and versions
   *******************************************/
   var isNav = (navigator.appName == "Netscape") ? true : false;
   var isIE  = (navigator.appName.indexOf("Microsoft") != -1) ? true : false;
   var isOp  = (navigator.appName.indexOf("Opera") != -1) ? true : false;
   var isSaf = (navigator.appVersion.indexOf("Safari")!=-1) ? true : false;
   var isMac = (navigator.appVersion.indexOf("Mac") != -1) ? true : false;
   var isVersion = parseInt(navigator.appVersion.charAt(0));
   var ns4 = (document.layers)? true:false;
   var ie4 = (document.all)? true:false;
   var ns6 = (!document.all && document.getElementById) ? true:false;
   var urchinwin = true;
   var myDir; 

   if (((isNav) && (isVersion < 3)) || ((isIE) && (isVersion < 2))) {alert("Warning: Urchin requires at least a 3.0 browser!");}

   /******************************************* 
      mouse over images 
   *******************************************/
   var imgArray = new Array();
   var onImgArray = new Array();
   var offImgArray = new Array();

   var onActionArray = new Array();
   var offActionArray = new Array();
   function loadImages() {
     if (document.images) {
        onImgArray[0] = new Image(33,33);
        onImgArray[1] = new Image(33,33);
        onImgArray[2] = new Image(33,33);
        onImgArray[3] = new Image(27,27);
        onImgArray[4] = new Image(27,27);
        onImgArray[5] = new Image(27,27);
        onImgArray[6] = new Image(27,27);
        onImgArray[7] = new Image(27,27);

        onImgArray[0].src = "uicons/"+skin+"/icon_vreport.gif";
        onImgArray[1].src = "uicons/"+skin+"/icon_config.gif";
        onImgArray[2].src = "uicons/"+skin+"/icon_prefs.gif";
        onImgArray[3].src = "uicons/"+skin+"/icon_add.gif";
        onImgArray[4].src = "uicons/"+skin+"/icon_import.gif";
        onImgArray[5].src = "uicons/"+skin+"/icon_edit.gif";
        onImgArray[6].src = "uicons/"+skin+"/icon_delete.gif";
        onImgArray[7].src = "uicons/"+skin+"/icon_view.gif";

        offImgArray[0] = new Image(33,33);
        offImgArray[1] = new Image(33,33);
        offImgArray[2] = new Image(33,33);
        offImgArray[3] = new Image(27,27);
        offImgArray[4] = new Image(27,27);
        offImgArray[5] = new Image(27,27);
        offImgArray[6] = new Image(27,27);
        offImgArray[7] = new Image(27,27);

        offImgArray[0].src = "uicons/"+skin+"/icon_vreport2.gif";
        offImgArray[1].src = "uicons/"+skin+"/icon_config2.gif";
        offImgArray[2].src = "uicons/"+skin+"/icon_prefs2.gif";
        offImgArray[3].src = "uicons/"+skin+"/icon_add2.gif";
        offImgArray[4].src = "uicons/"+skin+"/icon_import2.gif";
        offImgArray[5].src = "uicons/"+skin+"/icon_edit2.gif";
        offImgArray[6].src = "uicons/"+skin+"/icon_delete2.gif";
        offImgArray[7].src = "uicons/"+skin+"/icon_view2.gif";

        onActionArray[0] = new Image(20,20);
        onActionArray[1] = new Image(20,20);
        onActionArray[2] = new Image(20,20);
        onActionArray[3] = new Image(20,20);
        onActionArray[4] = new Image(20,20);
        onActionArray[5] = new Image(20,20);
        onActionArray[6] = new Image(20,20);
        onActionArray[0].src = "uicons/"+skin+"/edit1.gif";
        onActionArray[1].src = "uicons/"+skin+"/delete1.gif";
        onActionArray[2].src = "uicons/"+skin+"/duplicate1.gif";
        onActionArray[3].src = "uicons/"+skin+"/minirun1.gif";
        onActionArray[4].src = "uicons/"+skin+"/viewr1.gif";
        onActionArray[5].src = "uicons/"+skin+"/add1.gif";
        onActionArray[6].src = "uicons/"+skin+"/whelp1.gif";

        offActionArray[0] = new Image(20,20);
        offActionArray[1] = new Image(20,20);
        offActionArray[2] = new Image(20,20);
        offActionArray[3] = new Image(20,20);
        offActionArray[4] = new Image(20,20);
        offActionArray[5] = new Image(20,20);
        offActionArray[6] = new Image(20,20);
        offActionArray[0].src = "uicons/"+skin+"/edit.gif";
        offActionArray[1].src = "uicons/"+skin+"/delete.gif";
        offActionArray[2].src = "uicons/"+skin+"/duplicate.gif";
        offActionArray[3].src = "uicons/"+skin+"/minirun.gif";
        offActionArray[4].src = "uicons/"+skin+"/viewr.gif";
        offActionArray[5].src = "uicons/"+skin+"/add.gif";
        offActionArray[6].src = "uicons/"+skin+"/whelp.gif";

        imgArray[0] = new Image(21,19); 
        imgArray[1] = new Image(21,19); 
        imgArray[2] = new Image(21,19); 
        imgArray[3] = new Image(21,19); 
        imgArray[0].src = 'uicons/'+skin+'/fin_active.gif'; 
        imgArray[1].src = 'uicons/'+skin+'/fin_inactive.gif'; 
        imgArray[2].src = 'uicons/'+skin+'/fout_active.gif'; 
        imgArray[3].src = 'uicons/'+skin+'/fout_inactive.gif'; 
     }
   }

   function imageOn(e,i) {
      if (document.images && e && onImgArray[i]) e.src = onImgArray[i].src;
   }

   function imageOff(e,i) {
      if (document.images && e && offImgArray[i]) e.src = offImgArray[i].src;
   }

   function actionOn(e,i) {
      if (document.images && e && onActionArray[i]) e.src = onActionArray[i].src;
   }

   function actionOff(e,i) {
      if (document.images && e && offActionArray[i]) e.src = offActionArray[i].src;
   }

   /******************************************* 
     grab URI and Query 
   *******************************************/
   function getURI() {
      var uri = location.href;
      if (uri.indexOf('?') != -1)  return uri.substring(0,uri.indexOf('?')); 
      return uri;
   }
   function getQuery() {
      var query = location.search;
      if (query.charAt(0) == '?') return query.substring(1,query.length);
      return params;
   }

   /******************************************* 
      set control option functions
   *******************************************/
   function fToggle(toggle,base,nr,type,level) { 

      var form1 = document.forms[0];   
      var ftype = form1.ftype;
      if (toggle) { 
         document.fin.src  = imgArray[1].src; 
         document.fout.src = imgArray[2].src; 
         ftype.value = 1; 
      } else { 
         document.fin.src  = imgArray[0].src; 
         document.fout.src = imgArray[3].src; 
         ftype.value = 0; 
      } 
    
      var query = form1.uquery.value; 
      if (query && query != "") { setQuery(); } 
      return void(0); 
   } 

   function setLength() {
      var query = basequery;
      var uri = getURI();

      var form = document.length;
      num = form.elements[0].options[form.elements[0].selectedIndex].value;
      if (num == null || num == "") num = 10;

      query = replace(query,"ns="+num);
      location.href = uri+"?"+query;
   }

   function setQuery() {
      var query = basequery;
      var uri = getURI();

      var form   = document.search;
      var uquery = form.uquery.value;
      var filter = form.ftype.value;

      if (!isSaf) {
         uquery = encodeURI(uquery);
      }
      uquery = uescapeChr(uquery,'+',"%2B");
      query = replace(query,"uquery="+uquery+"&ftype="+filter+"&sn=0&aid=");
      location.href = uri+"?"+query;
   }

   function setClient(em) {
      var query = basequery;
      var uri = getURI();

      var scid = em.options[em.selectedIndex].value;
      if (scid == null || scid == "") scid = 0;

      query = replace(query,"scid="+scid+"&aid=");
      location.href = uri+"?"+query;
   }

   /******************************************* 
      open & close wizard functions
   *******************************************/
   function openWizard(param,wname) {
      if (!wname) wname = "UrchinConf";
      var url = appname+"?"+session+"&"+param; 
      var mywin = window.open('',wname,'scrollbars=yes,menubar=no,location=no,width=750,height=500,resizable=yes');
      mywin.location.href = url;
      mywin.focus();
   }

   function openGoalWizard(param) {
      var url = appname+"?"+session+"&"+param; 
      var mywin = window.open('','UrchinGoalWizard','scrollbars=yes,menubar=no,location=no,width=750,height=550,resizable=yes');
      mywin.location.href = url;
      mywin.focus();
   }
   function closeWiz(win) {
      if (win) { win.close(); }
   }

   function openWizHelp(help,help_link,mtitle,title) {
      if (!help) return;
      var nw = window.open("","UrchinWizHelp","location=no,menubar=no,scrollbars=yes,resizable=yes,width=350,height=500");
      if (nw.document && (nw.document.title == "" || !nw.document.title)) {
         nw.moveTo(screen.availWidth-360,0);
      }
      nw.focus();


      var nr = "";
      nr += "<HEAD><TITLE>Urchin Wizard Help</TITLE>";
      nr += "<META http-equiv='Content-Type' content='text/html; charset=utf-8>'";
      nr += "<STYLE TYPE='text/css'><!-- A {text-decoration:none;} A.ulink {text-decoration:underline;color:black;} A.normal {text-decoration:underline;color:blue;} A.normal:hover  {color:maroon;} --> </STYLE><SCRIPT Language='JavaScript' src='./ujs/admin.js'></SCRIPT>";
      nr += '<link rel="stylesheet" type="text/css" href="ucss/ugen.css" />';
      nr += '<link rel="stylesheet" type="text/css" href="ucss/unav.css" />';
      nr += "</HEAD><BODY bgcolor=#EEEEEE topmargin=0 leftmargin=0 marginheight=0 marginwidth=0 link=000000 alink=000000 vlink=000000>";

      nr += '<table cellpadding=0 cellspacing=0 border=0 width=100%>';
      nr += '<tr><td class="unav_mtitle" align="right"><b><nobr>'+mtitle+'</b></td></tr>';
      nr += '<tr><td background="uicons/report/bottom_shadow.gif"><img src="uicons/report/tspace.gif" width="175" height="7" border="0"></td></tr>';
      nr += '<tr><td valign=top>&nbsp;&nbsp;&nbsp;&nbsp;<IMG SRC="uicons/'+skin+'/wiz_urchin.gif" WIDTH="100" HEIGHT="50" border=0>';
      nr += "<tr><td><table cellpadding=2><tr>";
      nr += "<td><IMG SRC='uicons/"+skin+"/tspace.gif' WIDTH=1 HEIGHT=250></td>";
      nr += "<td valign=top>"+font1;
      nr += "<BR><P>"+help.value;
      nr += "</td></tr></table></td></tr>";
      nr += "<tr><td align=center><BR>"+help_link.value+"</td></tr>";
      nr += "</table>";
      nr += "</BODY></HTML>";

      nw.document.write(nr);
      nw.document.close();
   }

   /******************************************* 
     various form functions 
   *******************************************/
   function setVID(id) {
      var myid = document.forms[0].vid;
      if (!myid.value || myid.value == "") myid.value = id;
   }
   function submitForm() {
      document.forms[0].submit();
   }
   function setNID(id) {
      var myid = document.forms[0].nid;
      //if (!myid.value || myid.value == "") myid.value = id;
      myid.value = id;
   }
   function setAID(id) {
      var myid = document.forms[0].aid;
      if (!myid.value || myid.value == "") myid.value = id;
   }
   function setRID(id) {
      var myid = document.forms[0].rid;
      if (!myid.value || myid.value == "") myid.value = id;
   }

   /******************************************* 
      report list update functions
   *******************************************/
   function updateReportSet(svalue,stext) {
      if (!stext || stext == "") return;

      var mye = document.forms[0].rlist_active;
      if (!mye) return;
      if (mye.selectedIndex < 0) return 0;

      var myv = mye.options[mye.selectedIndex].text;
      var idx = myv.lastIndexOf('(');
      var idx2 = myv.lastIndexOf(')');

      if (idx < 0 || idx2 < 0 || idx2 < idx) {
         if (svalue  && svalue != "") myv += "("+stext+")";
      } else {
         if (svalue && svalue != "") myv = myv.substring(0,idx) + "("+stext+")";
         else                        myv = myv.substring(0,idx);
      }
      mye.options[mye.selectedIndex].text = myv;
      mye.options[mye.selectedIndex].selected = true;

      updateReportList(svalue,mye.options[mye.selectedIndex].value);
   }

   function updateReportList(svalue,id) {
      if (!id || id == "") return;

      var mye   = document.forms[0].cs_rslist;
      var myv   = mye.value;
      var idx   = mye.value.indexOf("!"+id+"|");

      if (!svalue || svalue == "") {
         if (idx > -1) myv = deleteRSList(myv,id);
      } else {
         if (idx > -1) myv = deleteRSList(myv,id);
         myv = addRSList(myv,id+"|"+svalue);
      }
      mye.value = myv;
   }

   function deleteRSList(list,id) {
      if (!list || list == "" || !id || id == "") return list;
      var mylist = "";
      var mylist2 = "";
      var myid = "!"+id+"|";

      var found = list.indexOf(myid);
      if (found < 0) return list;

      mylist = list.substring(0,found); 
      mylist2 = list.substring(found+myid.length,list.length);
      mylist2 = mylist2.substring(mylist2.indexOf("!"),mylist2.length);
      mylist += mylist2;

      if (mylist == "!") mylist = "";
      return mylist;
   }

   function addRSList(list,value) {
      if (!value || value == "") return list;
      var mylist = list;

      if (mylist && mylist != "") mylist+= value+"!";
      if (!mylist || mylist == "") mylist+= "!"+value+"!";
      
      return mylist;
   }

   /******************************************* 
     various open win functions 
   *******************************************/
   function openAbout() {
      var myAbout;
      myAbout = window.open("","urchinabout4","scrollbar=no,menubar=no,width=500,height=400,resizable=no");
      myAbout.location.href = appname+"?"+session+"&vid=1002"; 
      myAbout.focus();
   }

   function openUserReportSetup(emsg) {
      var mye = document.forms[0].rlist_active;
      if (!mye) return 0;
      if (mye.selectedIndex < 0) { alert(emsg);  return 0; }
      var id = mye.options[mye.selectedIndex].value; 
      if (!id || id == "") return 0;
      var myWin;
      myWin = window.open("","UrchinRSSetup","scrollbar=no,menubar=no,width=450,height=250,resizable=no");
      myWin.location.href = appname+"?"+session+"&nid=1204&aid=2103&vid=1050&rid="+id; 
      myWin.focus();
   }

   function openHistoryTask(type, id) {
      var url;

      if (!id || id == "") return;
      if (!type || type == "") return;

      if (type == "profile")  url = appname+"?"+session+"&"+"vid=2661&rid="+id;
      else if (type == "geo") url = appname+"?"+session+"&"+"vid=2861&rid="+id;
      else if (type == "cpc") url = appname+"?"+session+"&"+"vid=2961&rid="+id;
      else return;

      var mywin = window.open('','UrchinTask_'+id,'scrollbars=yes,menubar=no,'+
                              'location=no,width=550,height=480,resizable=yes');
      mywin.location.href = url;
      mywin.focus();
   }

   function openHistory(id) {
      if (!id || id == "") return;
      var param = "vid=2561&rid="+id;
      var url = appname+"?"+session+"&"+param;
      var mywin = window.open('','UrchinHistory','scrollbars=no,menubar=no,location=no,width=550,height=450,resizable=no');
      mywin.location.href = url;
      mywin.focus();
   }

   var url;
   var mywin;
   function openReport(rid,type,nparams) {
      if (!rid || rid == "") return;

      var mysession = getParam(session,"sid");
      var myaction = getParam(session,"action");
      var myapp = "";
      var param="";
      var myname="";

      if (type==1) {
         myapp = "app=rollup.cgi";
         param = mysession+"&"+myaction+"&"+myapp+"&uid="+rid;
         if (nparams) param += "&"+nparams;
         myname = "urchinrollup";
      } else {
         myapp = "app=urchin.cgi";
         param = mysession+"&"+myaction+"&"+myapp+"&rid="+rid;
         myname = "urchinreport_"+rid;
      }

      url = appname+"?"+param; 


/*
      document.location.href = url;
*/
      mywin = window.open('',myname);

      mywin.location.href = url;
      mywin.focus();

      if ((isNav) && (isVersion == 4)) { 
         setTimeout("navReload()",1000);
      }
   }

   function navReload() {
      mywin.location.reload();
   }

   function openHelp(url,name) {
      if (!url) return;
      var myname = name;
      if (!myname) myname = "urchinhelp";
      var mywin = window.open('',myname);
      mywin.location.href = url;
      mywin.focus();
   }

   function openImport(param,name) {
      var href = location.href;
      var params = "";
      if (href.indexOf('?') != -1) { 
          params = href.substring(href.indexOf('?')+1,href.length);
          href = href.substring(0,href.indexOf('?')); 
      }
      params = replace(params,"aid=0&rid=0");
   
      var wname = name;
      if (!param) return; 
      if (!wname) wname = "UrchinConf";

      var url = appname+"?"+session+"&"+param; 
      var mywin = window.open('',wname,'scrollbars=yes,menubar=no,location=no,width=900,height=600,resizable=yes');
      mywin.location.href = url;
      location.href = href+'?'+params;
      mywin.focus();
   }

   function openConf(param,u,a,type,name) {
      var wname = name;
      if (!param || !u || !a) return;
      if (!wname) wname = "UrchinConf";
   
      var url = appname+"?"+session+"&"+param; 
      var found = 0;
   
      var active = a.options;
      var inactive = u.options;
   
      var alength = active.length;
      var ilength = inactive.length;
   
      if (a.selectedIndex > -1) {
         if (!type || (type && active[a.selectedIndex].text.indexOf(type) != -1))  {
            url += '&rid='+active[a.selectedIndex].value;
            found = 1;
         }
      } else if (u.selectedIndex > -1) {
         if (!type || (type && inactive[u.selectedIndex].text.indexOf(type) != -1))  {
            url += '&rid='+inactive[u.selectedIndex].value;
            found = 1;
         }
      }

      if (!found) { alert(term217); return; }
   
      var mywin = window.open('',wname,'scrollbars=yes,scrollable=yes,menubar=no,location=no,width=725,height=600,resizable=yes');
      mywin.location.href = url;
      mywin.focus();
   }

   function openBrowser(e,id,params) {
      if (!e) return;
      if (!id) return;

      myDir = e;
   
      var nhref = ""; 
      var myvalue = ""; 
      var myfile = ""; 
      var mywin = window.open('',"Urchin_DBrowser",'scrollbars=no,menubar=no,location=no,width=640,height=330,resizable=yes');

      if (e.value && os == "WIN32" && (id == 5000 || id == 5002 || id == 5005)) {
         myvalue = e.value.substring(0,e.value.lastIndexOf("\\")+1);
         myfile = e.value.substring(e.value.lastIndexOf("\\")+1,e.value.length);
      } else if (e.value) {
         myvalue = e.value.substring(0,e.value.lastIndexOf("/")+1);
         myfile = e.value.substring(e.value.lastIndexOf("/")+1,e.value.length);
      }
      if (params && params != "") params = replace(params,"",1);
      if (!isSaf) {
         myvalue = escape(myvalue);
         myfile = escape(myfile);
      }
      myvalue = uescapeChr(myvalue,'+',"%2B");
      myfile  = uescapeChr(myfile,'+',"%2B");

      if (myvalue && myvalue != "") { nhref = "&cdir="+myvalue; }
      if (myfile && myfile != "")   { nhref += "&cfile="+myfile; }
      if (params && params != "")   { nhref += "&"+params; }

      mywin.location.href = appname+"?"+session+"&vid="+id+nhref;
      mywin.focus();
   }

   function openvBrowser(file,dir,id) {
      if (!id) return id;
      var mywin = window.open('',"Urchin_VBrowser",'scrollbars=no,menubar=no,location=no,width=550,height=395,resizable=yes');
      var nhref = ""; 
  
      var myfile = file;
      var mydir = dir;
      if (!isSaf) {
         myfile = escape(file); 
         mydir = escape(dir); 
      }
      myfile = uescapeChr(myfile,'+',"%2B");
      mydir  = uescapeChr(mydir,'+',"%2B");

      if (mydir && mydir != "") {
         nhref = "&cdir="+mydir+myfile;
      }
      mywin.location.href = appname+"?"+session+"&vid="+id+nhref;
      mywin.focus();
   }

   /******************************************* 
     form verification Functions 
   *******************************************/
   function verifyPassword(token) {
      var form = document.forms[0];
      var pass1 = eval("form."+token+"_password");
      var pass2 = form.password;
      if (!pass1 || !pass2)                  return true;
      if (!pass1.value || pass1.value == "") return false;
      if (!pass2.value || pass2.value == "") return false;
      if (pass1.value != pass2.value)        return false;
      if (pass1.value.length < 8)            return false;
      return true;
   }
   function verifyPasswordFields(password, retype_password, nullallowed) {
      var form = document.forms[0];
      var pass1 = eval("form." + password);
      var pass2 = eval("form." + retype_password);

      if (!pass1 || !pass2)                               return false;
      if ((!pass1.value || !pass2.value) && !nullallowed) return false;
      if (nullallowed == true && pass1.value == "" &&
          pass2.value == "")                              return true;
      if (pass1.value == "" || pass2.value == "")         return false;
      if (pass1.value != pass2.value)                     return false;
      return true;
   }
   function verifyEmail(token) {
      var form = document.forms[0];
      var email = eval("form."+token);
      var myRegex = /^.+@.+(\..+){1,2}$/;
      if (!email || !email.value) return true;
      email.value = removeSpaces(email.value);
      if (email.value == "") return true;
      email = email.value;
      if (email == "" || myRegex.test(email) == false) return false;
      return true;
   }
   function verifyLogPassword(type) {
      if (type) { 
         var form = document.forms[0];
         if (form.ublo_same_as_remote && form.ublo_same_as_remote[1].checked) {
            var pass1 = form.uclo_local_password;
            var pass2 = form.lpassword;
            if (pass1.value != pass2.value)        return false;
         }
      } else {
         var form = document.forms[0];
         var pass1 = form.uclo_remote_password;
         var pass2 = form.password;
         if (pass1.value != pass2.value)        return false;
      }
      return true;
   }
   function verifyPort() {
      var form = document.forms[0];
      var port = form.ct_port;
      if (!port) return true;
      if (port.value <=0 || port.value > 65536) return false;
      if (isNumeric(port.value) == false) return false;
      return true;
   }

   function verifyElement(name) {
      var em = eval("document.forms[0]."+name);

      if (!em)       return false;
      if (!em.value || em.value.length < 1) return false;

      em.value = removeSpaces(em.value);
      if (em.value == "") return false;

      var regex;
      try {
        regex = new RegExp(em.value);
      } catch(e) {
        return false;
      }

      return true;
   }

   function verifyPath(name) {
      var em = eval("document.forms[0]."+name);

      if (!em)       return true;
      if (!em.value || em.value.length < 1) return false;

      em.value = removeSpaces(em.value);
      if (em.value == "") return false;

      if (em.value.indexOf("\"") != -1 || em.value.indexOf("<") != -1  ||
          em.value.indexOf(">") != -1  ) { return false; }

      return true;
   }

   function isPosInteger(num) {
      num = num.toString();
      for (var i=0; i < num.length; i++) {
         var mychar = num.charAt(i);
         if (mychar < "0" || mychar > "9") {
            return false;
         }
      }
      return true;
   }
   function isFloatValue(num) {
      num = num.toString();
      for (var i=0; i < num.length; i++) {
         var mychar = num.charAt(i);
         if ((mychar < "0" || mychar > "9") && mychar != '.') {
            return false;
         }
      }
      return true;
   }

   function removeSpaces(value) {
     var myvalue = new String;
     myvalue = value;
     var mylength  = myvalue.length;  
     var count = 0;
     if (mylength < 1) return false;

      while (myvalue.indexOf(" ") == 0) {
         myvalue = myvalue.substring(1,myvalue.length);
         count++;
         if (count >= mylength) break;
      }

      if (myvalue.length < 1) return "";

      count = 0;
      while (myvalue.lastIndexOf(" ") == myvalue.length-1) {
         myvalue = myvalue.substring(0,myvalue.lastIndexOf(" "));
         count++;
         if (count >= mylength) break;
      }
     return myvalue;
   }

   function confirmDelete(url,msg) {
      if (!url || url == "") return;
      if (!msg || msg == "") return;

      if (confirm(msg)) { 
         location.href = url;
      }
   }

   /******************************************* 
      param list handlers
   *******************************************/
   function getParam(plist,name) {

      if (!plist || plist == "") return;
      if (!name || name == "") return;
      var myplist = plist;
      var idx = myplist.indexOf(name+"=");
      var value = "";
      if (idx == -1) return;
 
      value = myplist.substring(idx,myplist.length);
      idx = value.indexOf("&");
      if (value.length < 3) return;

      if (idx > -1) {
         value = value.substring(0,idx); 
      }

      return value;
   }

   function replace(s1,s2,encode) {
      var idx = 0;
      var i=0,j=0;
      var c1=0,c2=0;
      var name1  = new Array();
      var value1 = new Array();
   
      var name2  = new Array();
      var value2 = new Array();
   
      var pair;
   
      // -- s1 orig string
      while (idx != -1) {
         idx = s1.indexOf('&',0);
         if (idx == -1) break;       
   
         pair = s1.substring(0,idx);       
         name1[c1] = pair.substring(0,pair.indexOf('='));
         value1[c1] = pair.substring((pair.indexOf('=')+1),pair.length);
   
         s1 = s1.substring((idx+1),s1.length);    
         c1++;
      }
   
      if (s1.indexOf('=') != -1) {
         name1[c1] = s1.substring(0,s1.indexOf('='));
         value1[c1] = s1.substring((s1.indexOf('=')+1),s1.length);
      }
      idx = 0;
   
      // -- s2 orig string
      while (idx != -1) {
         idx = s2.indexOf('&',0);
         if (idx == -1) break;       
   
         pair = s2.substring(0,idx);       
         name2[c2] = pair.substring(0,pair.indexOf('='));
         value2[c2] = pair.substring((pair.indexOf('=')+1),pair.length);
   
         s2 = s2.substring((idx+1),s2.length);    
         c2++;
      }
   
      if (s2.indexOf('=') != -1) {
         name2[c2] = s2.substring(0,s2.indexOf('='));
         value2[c2] = s2.substring((s2.indexOf('=')+1),s2.length);
      }

      s1 = "";
      var found;
      var count = c1;
   
      // -- recreate 
      for (i=0;i<=c2;i++) {
         found = 0;
         for (j=0;j<=c1;j++) {
            if (name1[j] == name2[i]) {
               value1[j] = value2[i];
               found = 1;
               break;
            }
         }
         if (!found) { 
            if (name2[i] && value2[i]) {
               count++;
               name1[count] = name2[i]; 
               value1[count]  = value2[i];
            }
         }
      }
   
      for (i=0;i<=count;i++) {
         if (name1[i] && value1[i]) {
            if (encode) { 
               var tc = 0;
               if (!isSaf) {
                  name1[i] = escape(name1[i]); 
                  value1[i] = escape(value1[i]); 
               }
               name1[i] = uescapeChr(name1[i],'+',"%2B");
               value1[i] = uescapeChr(value1[i],'+',"%2B");
            }
            s1 += name1[i] + '=' + value1[i];
            if (i != count) s1 += '&';
         }
      }

      if (s1.lastIndexOf("&") == s1.length-1) s1 = s1.substring(0,s1.length-1);

      return (s1);
   }

   function uescapeChr(str,rc,hexchar) {
      if (!str || str == "") return str;
      if (!rc || rc == "") return str;
      if (!hexchar || hexchar == "") return str;

      var tc = 0;
      while (str.indexOf(rc) != -1) {
         var idx = str.indexOf(rc);
         str = str.substr(0,idx)+hexchar+str.substr((idx+1),(str.length-idx));
         if (++tc >= 100) break;
      }
      return str;
   }
   /******************************************* 
      list handlers
   *******************************************/

   var list_active = new Array();
   var list_inactive = new Array();

   function updateList(d,limit,lmsg) {
      var form = document.forms[0];
      var u = form.inactive_list;
      var a = form.active_list;

      var i = 0,j=0;
      var flimit=0;
      var form = document.forms[0];
      var to;
      var from;
   
      if (d == 1) {
         to =   u.options;
         from = a.options;
      } else {
         to =   a.options;
         from = u.options;
      }

      var tlength = to.length;
      var flength = from.length;

      var list = new Array(); 
      var newlist = new Array();

      for (i=0;i<flength;i++) {
         if (from[i] == null) continue;
         if (from[i].selected) {
            if (!d && limit && limit < tlength+1) { flimit=1; list[j] = i;j++; continue; }
            to[tlength++]  = new Option(from[i].text,from[i].value);
         } else {
            list[j] = i; 
            j++;
         }
      }

      //-- save from list 
      for (i=0,j=0;i<list.length;i++,j++) {
         newlist[j] = new Option(from[list[i]].text,from[list[i]].value);
      }

      //-- zero out the from list 
      from.length = 0;

      //-- repopulate the from list 
      for (i=0,j=0;i<newlist.length;i++,j++) {
         from[j] = new Option(newlist[i].text,newlist[i].value);
      }
      if (flimit && lmsg) { alert(lmsg); }

      //updatePlist(a,helement);
   }

   function createList() {
      var form = document.forms[0];
      if (!form || !form.active_list) return;

      var mye = form.active_list.options;
      var addlist = "";
      for (ii=0;ii<mye.length;ii++) {
         if (mye[ii] == null) continue;
         if (!list_active[mye[ii].value]) {
            if (addlist != "") addlist += ",";
            addlist += mye[ii].value;
         }
      }
      var list =  addlist.split(',');
      list.sort(sortNumber);
      form.list_add.value = list;

      var mye = form.inactive_list.options;
      var rmlist = "";
      for (ii=0;ii<mye.length;ii++) {
         if (mye[ii] == null) continue;
         if (!list_inactive[mye[ii].value]) {
            if (rmlist != "") rmlist += ",";
            rmlist += mye[ii].value;
         }
      }
      var list =  rmlist.split(',');
      list.sort(sortNumber);
      form.list_remove.value = list;
      return;
   }
   function sortNumber(a, b){ return (a-b); }
   
   function updatePlist(a,helement) {
      var i = 0,j=0;
      var form = document.forms[0];
      var active   = a.options;
      var alength = active.length;
      var nlist = "";

      for (i=0;i<alength;i++) {
         if (active[i] == null) continue;
         nlist += active[i].value;
         nlist += '!';
      }

      if (nlist != "" && nlist) nlist = '!' + nlist;
      else nlist = '0'; 
      helement.value = nlist;
   }

   function setList(name,id) {
      if (!name || name == "") return;
      if (!id || id == "" || id == "0") return;

      var mylist = eval("document.forms[0]."+name);
      if (mylist && mylist.value && mylist != "")    mylist.value += id+"!";
      if (mylist && (!mylist.value || mylist == "")) mylist.value += "!"+id+"!";

      if (mylist.value.length < 3) mylist.value = "";
   }

   function deleteList(name,id) {
      var list = eval("document.forms[0]."+name);
      var myid = "!"+id+"!";
      var mylist = list.value;
 

      var found = mylist.indexOf(myid);
      mylist = mylist.substring(0,found+1) + mylist.substring(found+myid.length,mylist.length);
      if (mylist.length <= 2) mylist = "0";
      list.value = mylist;

      //redrawForm(document.forms[0]);
      document.forms[0].submit();
   }

   /******************************************* 
     special form functions 
   *******************************************/
   function redrawForm(form,em,win,lflag) { 
      var nquery = new String;
      nquery = "";
      var s1 = ""; 
      var s2 = "";
      var s3 = "";
      var href = "";
      var i;
      var e;
   
      if (win) href = win.location.href;
      else     href = location.href;
      
      s1 =   href.substring(href.indexOf('?')+1,href.length);
      href = href.substring(0,href.indexOf('?')); 
 
      for (i=0;i<form.elements.length;i++) {
         e = form.elements[i]; 
   
         if (e.type == "hidden" && e.name.substring(0,3) != "cs_" && e.name.substring(0,3) != "ct_"
         && e.name != "rid" && e.name != "vid" && e.name != "cr_frequency") continue;

         //if (e.type == "hidden" && e.name.substring(0,3) != "cs_" && e.name != "rid" && e.name != "vid") continue;
         //if (e.type == "hidden" && e.name.substring(0,3) != "cs_") continue;

         if (e.type == "submit") continue;
         if (e.type == "select-multiple") continue;
         if (e.type == "text" && e.value != "") {
            var myvalue = e.value;
            if (!isSaf) myvalue = escape(myvalue);
            myvalue = uescapeChr(myvalue,'+',"%2B");
            s2 += e.name + '=' + myvalue + '&';
         }

         if (e.type == "password" && e.value != "") {
            var myvalue = e.value;
            if (!isSaf) myvalue = escape(myvalue);
            myvalue = uescapeChr(myvalue,'+',"%2B");
            s2 += e.name + '=' + myvalue + '&';
         }

         if (e.type == "radio" && e.value != "") {
            var myvalue = e.value;
            if (!isSaf) myvalue = escape(myvalue);
            myvalue = uescapeChr(myvalue,'+',"%2B");
            if (e.checked == true) s2 += e.name + '=' + myvalue + '&';
         }
         if (e.type == "select-one") {
            var idx = 0;
            idx = e.selectedIndex;
            if (e.options[idx].value != "") s2 += e.name + '=' + e.options[idx].value + '&';
         }

         if (e.type == "hidden") {
            if (e.name && e.name != "" && e.value && e.value != "")  {
               var myvalue = e.value;
               if (!isSaf) myvalue = escape(myvalue);
               myvalue = uescapeChr(myvalue,'+',"%2B");
               s2 += e.name + '=' + myvalue + '&';
            } else {
               s2 += e.name + '=' + '' + '&';
            }
            if (lflag && e.name == "ct_logmap" || e.name == "ct_separator") {
               s3 += '&' + e.name + '=' + '';
            }
         }
      }
   
      if (s2.lastIndexOf('&') == (s2.length-1)) { 
         s2 = s2.substring(0,(s2.length-1));
      }
   
      s1 = replace(s1,s2);
      s1 += s3;
      if (win) win.location.href = href+'?'+s1; 
       else    location.href = href+'?'+s1; 
   }

   function openDashboard(params,msg,msg2) {
      var form = document.forms[0];
      var rid="";

      if (form.active_list.selectedIndex != -1) {
         rid=form.active_list[form.active_list.selectedIndex].value;
      } 
      if (!rid || rid == "") { alert(msg); return; }
      if (!list_active[rid]) { alert(msg2); return; }

      var url = appname+"?"+session+"&rid="+rid+"&"+params;
      var mywin = window.open('','Dashborad','scrollbars=no,menubar=no,location=no,width=605,height=375,resizable=yes');
      mywin.location.href = url;
      mywin.focus();
   }

   function updateOpener(win,nparams) {
      if (!opener) return;
      var query = opener.basequery;
      if (nparams && nparams != "") {
         query = replace(query,nparams);
      }
      opener.location.href = appname+"?"+query;
      if (win) win.close();
   }

   function goToView(nparams) {
      var query = basequery;
      if (nparams && nparams != "") {
         query = replace(query,nparams);
      }
      location.href = appname+"?"+query;
   }

   function goToEdit(nparams,msg) {
      var form = document.forms[0];
      var rid="";

      if (form.active_list.selectedIndex != -1) {
         rid="rid="+form.active_list[form.active_list.selectedIndex].value;
      } else if (form.inactive_list.selectedIndex != -1) {
         rid="rid="+form.inactive_list[form.inactive_list.selectedIndex].value;
      } 

      if (!rid || rid == "") { alert(msg); return; }
      var query = basequery;
      if (nparams && nparams != "") query = replace(query,nparams);
      query = replace(query,rid);
      location.href = appname+"?"+query;
   }

   function isNumeric(num) {
      if (!num || num == "") return false;
      var ValidChars = "0123456789.";
      var isnum=true;
      var Char;
   
      for (i = 0; i < num.length && isnum == true; i++) { 
         Char = num.charAt(i); 
         if (ValidChars.indexOf(Char) == -1) {
            isnum = false;
         }
      }
      return isnum;
      
   }

   /******************************************* 
      goal wizard setup
   *******************************************/
  function gwizInit() {
     if (!opener) return;
     var form = opener.document.forms[0];
     var mye1=null,mye2=null;
     if (!form || !form.uigo_number) return;
     cgoal = form.uigo_number.value;
     if (!cgoal || cgoal <= 0 || cgoal == "") cgoal = 1;
     cstep = 1;

     gwizSetStep(1);

     for (var ii=1;ii<11;ii++) {
        if (!(mye1 = eval("form.ucgo_step"+ii+"_path"))) continue;
        if (!(mye2 = eval("form.ucgo_step"+ii+"_name"))) continue;
        mye1.value = mye2.value = "";
     }
  }

  function gwizSetStep(init) {
     var mye=null;

     if (!cgoal) cgoal = 1;
     if (!cstep) cstep = 1;

     /*--- set the titles ---*/
     if (!(mye = document.getElementById("gstitle"))) return;
     mye.innerHTML = gtitles[cgoal-1];
     if (!(mye = document.getElementById("gstitle2"))) return;
     mye.innerHTML = stitles[cstep-1] ;

     if (!(mye = document.getElementById("cf_wnext"))) return;
     mye.value = next + ": " + cstep + " >";
     if (!(mye = document.getElementById("cf_wback"))) return;
     if (cstep > 1)  mye.style.display = "";
     else            mye.style.display = "none";
     if (!(mye = document.getElementById("cf_wnext"))) return;
     if (cstep < 11) mye.style.display = "";
     else            mye.style.display = "none";

     /*--- current page ---*/
     if (init) {
        var form = opener.document.forms[0];
        var mye = eval("form.ucgo_step"+cstep+"_path");
        if (mye.value && mye.value != "") gwizSetURL(mye.value);
        else gwizSetURL("/"); 
        if (!(mye = eval("form.ucgo_step"+cstep+"_path"))) return;
        mye.value = "";
        if (!(mye = eval("form.ucgo_step"+cstep+"_name"))) return;
        mye.value = "";
     }
  }

  function gwizToggleStep(cmd) {
     var mye1=null,mye2=null;
     var form = opener.document.forms[0];
     var form2 = document.forms[0];
     var reset=0;
     if (!form || !form2) return;

     if (cmd == 1) {
        if (!(mye1 = eval("form.ucgo_step"+cstep+"_path"))) return;
        if (!(mye2 = document.getElementById("url"))) return;
        mye1.value = mye2.value;

        if (!(mye1 = eval("form.ucgo_step"+cstep+"_name"))) return;
        if (!(mye2 = document.getElementById("urlname"))) return;
        mye1.value = mye2.value;
        cstep++; reset=0;
     }
     else if (cmd == -1) {
        cstep--; reset = 1;
     }
     else if (cmd == 2) {
        if (!(mye1 = eval("form.ucgo_path"))) return;
        if (!(mye2 = document.getElementById("url"))) return;
        mye1.value = mye2.value;

        if (!(mye1 = eval("form.ucgo_name"))) return;
        if (!(mye2 = document.getElementById("urlname"))) return;
        mye1.value = mye2.value;
        gwizFinish();
        return;
     }
     
     gwizSetStep(reset);
  }

  function gwizMarkPage() {
     var frame = parent.tframe;
     if (!frame || !frame.document.body) return;
     var links = frame.document.links;     
     var images = frame.document.images;
     var mye;
  
     if (!(mye = document.getElementById("urlname"))) return;
     mye.value = frame.document.title;
  
     if (!(mye = document.getElementById("url"))) return;
     mye.value = website;
  
     /*------------------------------------------------------------------
     --- modified the image links
     ------------------------------------------------------------------*/
     for (var ii=0;ii<images.length;ii++) {
        if (isIE && images[ii].complete == true) continue;
  
        /*--- obtain the outer source ---*/
        var html = images[ii].offsetParent.innerHTML;
        var nsrc = images[ii].src;
  
        var idx = nsrc.indexOf("://");
        nsrc = nsrc.substring(idx+3,nsrc.length);
        idx = nsrc.indexOf("/");
        nsrc = nsrc.substring(idx+1,nsrc.length);
  
        /*--- find the actual source ---*/
        idx=0;
        mysrc = "";
        found=0;
        while ((idx = html.indexOf("src=")) > -1 || (idx = html.indexOf("SRC=")) > -1) {
           html = html.substring(idx+4,html.length);
           if (html.charAt(0) == "\"" || html.charAt(0) == "'") { html = html.substring(1,html.length); }
           var mysrc = html; var jj=1;
           while (html.charAt(jj) && html.charAt(jj) != "\"" 
              && html.charAt(jj) != "'" && html.charAt(jj) != " ") { jj++; }
           if (jj > 1) { mysrc = html.substring(0,jj); }
           if (mysrc.indexOf(nsrc) > -1) { found=1; break; }
        }
        if (found) {
           if (mysrc.indexOf("http")==0) {
              images[ii].src = mysrc;
           } else {
              if (mysrc.charAt(0) == "/") images[ii].src = mainw+mysrc;
              else { 
                 var mytoken = website;
                 if (mytoken.charAt(mytoken.length-1) != "/") {
                    mytoken = mytoken.substring(0,mytoken.lastIndexOf("/")+1);
                 }
                 images[ii].src = mytoken+mysrc;
              }
           }
           images[ii].onload = function() { return; }
        }
     }
    
     /*------------------------------------------------------------------
     --- loop over the links and draw layer
     ------------------------------------------------------------------*/
     var foundexit=0;
     for (var ii=0;ii<links.length;ii++) {
       var mlink = links[ii].href;
       if (mlink.indexOf("javascript") > -1) continue;

       if ((idx = mlink.indexOf("://")) > -1) {
          mlink = mlink.substring(idx+3,mlink.length);
          if ((idx = mlink.indexOf("/")) > -1) mlink = mlink.substring(idx,mlink.length);
       }

       var mlink2 = mlink.substring(1,mlink.length);
       var flink=0;
       var html=""; 
       var mysrc="";
       if (isIE) html = links[ii].outerHTML;
       else { if (links[ii].offsetParent) html = links[ii].offsetParent.innerHTML; }

       if (html && html != "") {
          while ((idx = html.indexOf("href=")) > -1 || (idx = html.indexOf("HREF=")) > -1) { 
             html = html.substring(idx+5,html.length); 
             if (html.charAt(0) == "\"" || html.charAt(0) == "'") { html = html.substring(1,html.length); }
             var mysrc = html;
             var jj=0;
             while (html.charAt(jj) && html.charAt(jj) != "\"" && html.charAt(jj) != "'" && html.charAt(jj) != " ") { jj++; }
             if (jj > 0) { mysrc = mysrc.substring(0,jj); } 
             if (mysrc.indexOf(mlink2) > -1) { flink=1; break; }
          }
          if (flink) {
             if ((idx = mysrc.indexOf("://")) > -1) {
                mysrc = mysrc.substring(idx+3,mysrc.length);
                if ((idx = mysrc.indexOf("/")) > -1) mysrc = mysrc.substring(idx,mysrc.length);
                else mysrc = "/";
             }
             mlink = mysrc;
             if (mlink.charAt(0) != "/") { 
                var token2 = website;
                if ((idx=token2.lastIndexOf("/")) > 0 && idx != (token2.length-1)) { token2 = token2.substring(0,idx); } 
                if (token2.charAt(token2.length-1) != "/") token2 += "/";
                mlink = token2+mlink;
             }
          }
       }
       links[ii].href = "javascript: parent.gwizSetURL('"+mlink+"'); ";
     }
   }

   /******************************************* 
     Report Set handler functions
   *******************************************/
   function initDashboard() {
     var form = document.forms[0];
     var ddash = form.uipr_default_dashboard;
     var dash = form.uipr_dashboards.value;
     var sections = form.uipr_sections.value;

     if (form.dashboard_exec && (dash&1)) { ddash[0].disabled = false; form.dashboard_exec.checked = true; }
     if (form.dashboard_market && (dash&2)) { ddash[1].disabled = false; form.dashboard_market.checked = true; }
     if (form.dashboard_web && (dash&4)) { ddash[2].disabled = false; form.dashboard_web.checked = true; }

     if (form.section_market && (sections&1)) form.section_market.checked = true;
     if (form.section_content && (sections&2)) form.section_content.checked = true;
     if (form.section_ecomm && (sections&4)) form.section_ecomm.checked = true;
     if (form.section_it && (sections&8)) form.section_it.checked = true;
   }

   function setDashboard() {
     var form = document.forms[0];

     var dash = 0;
     var section = 0;

     if (form.dashboard_exec && form.dashboard_exec.checked == true) dash += 1;
     if (form.dashboard_market && form.dashboard_market.checked == true) dash += 2;
     if (form.dashboard_web && form.dashboard_web.checked == true) dash += 4;

     if (form.section_market && form.section_market.checked == true) section += 1;
     if (form.section_content && form.section_content.checked == true) section += 2;
     if (form.section_ecomm && form.section_ecomm.checked == true) section += 4;
     if (form.section_it && form.section_it.checked == true) section += 8;

     if (dash == 0) dash = 1;

     if (form.uipr_dashboards) form.uipr_dashboards.value = dash;
     if (form.uipr_sections) form.uipr_sections.value = section;
   }

   function checkDashboard(mye) {
     var form = document.forms[0];

     var dash = 0;
     var section = 0;

     if (form.dashboard_exec && form.dashboard_exec.checked == true) dash += 1;
     if (form.dashboard_market && form.dashboard_market.checked == true) dash += 2;
     if (form.dashboard_web && form.dashboard_web.checked == true) dash += 4;

     if (!dash && mye) {
        mye.checked = true;
        if (mye.name == "dashboard_exec") dash = 1;
        else if (mye.name == "dashboard_market") dash = 2;
        else if (mye.name == "dashboard_web") dash = 4;
     }

     var ddash = form.uipr_default_dashboard;
     if (!ddash) return;

     var jj=0;
     for (var ii=0;ii<ddash.length;ii++) {
        if (ddash[ii].checked) { jj=ii; break; }
     }

     if (!(ddash[jj].value&dash)) {
        for (var ii=0;ii<ddash.length;ii++) {
           if (ddash[ii].value&dash) {
              ddash[ii].checked = true;
              break;
           }
        }
     }

     for (var ii=0;ii<ddash.length;ii++) {
        if (ddash[ii].value&dash) {
           ddash[ii].disabled = false;
        } else {
           ddash[ii].disabled = true;
        }
     }
   }

   function checkOverrideDash() {
      var form = document.forms[0];
      var odbutton=null;
      var rid=0;
      if (!(odbutton = document.getElementById("od"))) return -1;
      if (form.active_list.selectedIndex != -1) {
         rid=form.active_list[form.active_list.selectedIndex].value;
      } 
      if (!rid || rid == "") { odbutton.disabled = true; return; }
      if (list_active[rid]) { odbutton.disabled = false; }
      else { odbutton.disabled = true; }
      return;
   }

   /******************************************* 
     HTML "select" sorting functions
   *******************************************/
   function compareText (option1, option2) {
      return option1.text < option2.text ? -1 : 
        option1.text > option2.text ? 1 : 0;
   }
  
   function compareValue (option1, option2) {
      return option1.value < option2.value ? -1 :
        option1.value > option2.value ? 1 : 0;
   }

   function compareTextAsFloat (option1, option2) {
      var value1 = parseFloat(option1.text);
      var value2 = parseFloat(option2.text);
      return value1 < value2 ? -1 :
        value1 > value2 ? 1 : 0;
   }

   function compareValueAsFloat (option1, option2) {
      var value1 = parseFloat(option1.value);
      var value2 = parseFloat(option2.value);
      return value1 < value2 ? -1 :
        value1 > value2 ? 1 : 0;
   }  

   function sortSelect (select, compareFunction, selectedIndexCriteria, format) {
      var first_duplicate   = -1;
      var last_duplicate    = -1;
      var selected_index    = -1;
      var last_index        = -1;
      var last_option_index = -1;
      var last_option;

      if (select.options.length > 0) {
        last_option = select.options[select.options.length-1];
        if(format == true && isNaN(last_option.text) == false) {
          last_option.text =
            formatNumber(last_option.text,0,',','','','','-','');
          select.options[select.options.length-1].text = last_option.text;
        }
      }

      if (!compareFunction) compareFunction = compareText;
      var options = new Array (select.options.length);
      
      for (var i = 0; i < options.length; i++)
        options[i] = new Option ( select.options[i].text,
                                  select.options[i].value,
                                  select.options[i].defaultSelected,
                                  select.options[i].selected
                                );

      options.sort(compareFunction);
      for (var i = 0; i < options.length; i++) {
        if( (i == 0) || (options[i].value != options[i-1].value) ) {
          last_index++;
          select.options[last_index].text = options[i].text;
          select.options[last_index].value = options[i].value;
          select.options[last_index].selected = options[i].selected;
          select.options[last_index].defaultSelected =
                                                  options[i].defaultSelected;

          if(last_option_index == -1 && last_option.value == options[i].value)
            last_option_index = last_index;
        }
        else if (first_duplicate == -1){ 
          first_duplicate = last_index;
          last_duplicate = last_index;
        } else {
          last_duplicate = last_index;
        }
        
      }

      select.options.length = last_index+1;

      if (!selectedIndexCriteria) 
        selected_index = -1;
      else if (selectedIndexCriteria == "Index0")
        selected_index = 0;
      else if (selectedIndexCriteria == "FirstDuplicateORLastIndex") {
        if(first_duplicate != -1)
          selected_index = first_duplicate;
        else
          selected_index = last_option_index;
      } else if (selectedIndexCriteria == "LastDuplicateORLastIndex") {
        if(last_duplicate != -1)
          selected_index = last_duplicate;
        else
          selected_index = last_option_index;
      }

      if (selected_index != -1)
        select.selectedIndex = selected_index;
   }

   /******************************************* 
     Number Formatting Function
     Copyright : Stephen Chapman 24th March 2006, 10th February 2007
                 Permission to use this function is granted provided
                 that this copyright notice is retained intact
   *******************************************/
   function formatNumber(num,dec,thou,pnt,curr1,curr2,n1,n2) {
   
      var x = Math.round(num * Math.pow(10,dec));
      if (x >= 0) 
        n1=n2='';

      var y = (''+Math.abs(x)).split('');
      var z = y.length - dec;
  
      if (z<0)
        z--;
      
      for(var i = z; i < 0; i++)
        y.unshift('0');
  
      y.splice(z, 0, pnt);
  
      while (z > 3) {
        z-=3;
        y.splice(z,0,thou);
      }
  
      var r = curr1+n1+y.join('')+n2+curr2;
      return r;
  }

   /*******************************************
     Test CPC Source Settings from the form.
   *******************************************/
  function test_cpc_connection() {
     var type;
     var mye;

     mye = document.forms[0].ucco_type;
     if (!mye)
        type = 'adwords';
     else
        type = mye.value;

     var url = appname + "?" + session + "&aid=1507&vid=1520&ucco_type=" + type;

     if (type == 'adwords') {
        mye = document.forms[0].ucco_adwords_loginName;
        if (!mye || !mye.value) return;
        url += "&ucco_adwords_loginName=" + mye.value;

        mye = document.forms[0].ucco_adwords_loginPassword;
        if (!mye || !mye.value) return;
        url += "&ucco_adwords_loginPassword=" + mye.value;

        mye = document.forms[0].ucco_adwords_devToken;
        if (mye && mye.value) url += "&ucco_adwords_devToken=" + mye.value;

        mye = document.forms[0].ucco_adwords_appToken;
        if (mye && mye.value) url += "&ucco_adwords_appToken=" + mye.value;

        mye = document.forms[0].ucco_adwords_clientEmail;
        if (mye && mye.value) url += "&ucco_adwords_clientEmail=" + mye.value;

        mye = document.forms[0].ucco_adwords_customerId;
        if (mye && mye.value) url += "&ucco_adwords_customerId=" + mye.value;
     } else {
        // TODO: Implement the logic for adCenter and yahoo.
        return;
     }

     var mywin = window.open('','UrchinTask','scrollbars=yes,menubar=no,'+
                             'location=no,width=550,height=210,resizable=no');
     mywin.location.href = url;
     mywin.focus();
  }
