var cursor_x;
var cursor_y;
var IE = document.all?true:false
if (!IE) document.captureEvents(Event.MOUSEMOVE)

function waitScreen() {
    document.getElementById('pleasewaitScreen').style.visibility='visible';
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}

function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}

function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}

/* This function is used to change the style class of an element */
function swapClass(obj, newStyle) {
    obj.className = newStyle;
}

function isUndefined(value) {
    var undef;
    return value == undef;
}

/* Function for showing and hiding elements that use 'display:none' to hide */
function toggleDisplay(targetId)
{
    if (document.getElementById) {
        target = document.getElementById(targetId);
    	if (target.style.display == "none"){
    		target.style.display = "";
    	} else {
    		target.style.display = "none";
    	}
    }
}

// toggle visibility 
function toggleVisibility(targetId) {
    if (document.getElementById) {
        target = document.getElementById(targetId);
    	if (target.style.visibility == "hidden"){
    		target.style.visibility = "visible";
    	} else {
    		target.style.visibility = "hidden";
    	}
    }
}

function checkAll(theForm) { // check all the checkboxes in the list
  for (var i=0;i<theForm.elements.length;i++) {
    var e = theForm.elements[i];
		var eName = e.name;
    	if (eName != 'allbox' &&
            (e.type.indexOf("checkbox") == 0)) {
        	e.checked = theForm.allbox.checked;
		}
	}
}

/* Function to clear a form of all it's values */
function clearForm(frmObj) {
	for (var i = 0; i < frmObj.length; i++) {
        var element = frmObj.elements[i];
		if(element.type.indexOf("text") == 0 ||
				element.type.indexOf("password") == 0) {
					element.value="";
		} else if (element.type.indexOf("radio") == 0) {
			element.checked=false;
		} else if (element.type.indexOf("checkbox") == 0) {
			element.checked = false;
		} else if (element.type.indexOf("select") == 0) {
			for(var j = 0; j < element.length ; j++) {
				element.options[j].selected=false;
			}
            element.options[0].selected=true;
		}
	}
}

/* Function to get a form's values in a string */
function getFormAsString(frmObj) {
    var query = "";
	for (var i = 0; i < frmObj.length; i++) {
        var element = frmObj.elements[i];
        if (element.type.indexOf("checkbox") == 0 ||
            element.type.indexOf("radio") == 0) {
            if (element.checked) {
                query += element.name + '=' + escape(element.value) + "&";
            }
		} else if (element.type.indexOf("select") == 0) {
			for (var j = 0; j < element.length ; j++) {
				if (element.options[j].selected) {
                    query += element.name + '=' + escape(element.value) + "&";
                }
			}
        } else {
            query += element.name + '='
                  + escape(element.value) + "&";
        }
    }
    return query;
}

/* Function to hide form elements that show through
   the search form when it is visible */
function toggleForm(frmObj, iState) // 1 visible, 0 hidden 
{
	for(var i = 0; i < frmObj.length; i++) {
		if (frmObj.elements[i].type.indexOf("select") == 0 || frmObj.elements[i].type.indexOf("checkbox") == 0) {
            frmObj.elements[i].style.visibility = iState ? "visible" : "hidden";
		}
	}
}

/* Helper function for re-ordering options in a select */
function opt(txt,val,sel) {
    this.txt=txt;
    this.val=val;
    this.sel=sel;
}

/* Function for re-ordering <option>'s in a <select> */
function move(list,to) {
    var total=list.options.length;
    index = list.selectedIndex;
    if (index == -1) return false;
    if (to == +1 && index == total-1) return false;
    if (to == -1 && index == 0) return false;
    to = index+to;
    var opts = new Array();
    for (i=0; i<total; i++) {
        opts[i]=new opt(list.options[i].text,list.options[i].value,list.options[i].selected);
    }
    tempOpt = opts[to];
    opts[to] = opts[index];
    opts[index] = tempOpt
    list.options.length=0; // clear

    for (i=0;i<opts.length;i++) {
        list.options[i] = new Option(opts[i].txt,opts[i].val);
        list.options[i].selected = opts[i].sel;
    }

    list.focus();
}

/*  This function is to select all options in a multi-valued <select> */
function selectAll(elementId) {
    var element = document.getElementById(elementId);
	len = element.length;
	if (len != 0) {
		for (i = 0; i < len; i++) {
			element.options[i].selected = true;
		}
	}
}

/* This function is used to select a checkbox by passing
 * in the checkbox id
 */
function toggleChoice(elementId) {
    var element = document.getElementById(elementId);
    if (element.checked) {
        element.checked = false;
    } else {
        element.checked = true;
    }
}

/* This function is used to select a radio button by passing
 * in the radio button id and index you want to select
 */
function toggleRadio(elementId, index) {
    var element = document.getElementsByName(elementId)[index];
    element.checked = true;
}


/* This function is used to open a pop-up window */
function openWindow(url, winTitle, winParams) {
	winName = window.open(url, winTitle, winParams);
    winName.focus();
}

/* This function is used to open a pop-up window */

function openDetailWindow(url, winTitle) {
	winName = window.open(url, winTitle, 'width=800,height=600,toolbar=0,scrollbars=yes,location=0,statusbar=0,menubar=0,resizable=0');
    winName.focus();
}



/* This function is to open search results in a pop-up window */
function openSearch(url, winTitle) {
    var screenWidth = parseInt(screen.availWidth);
    var screenHeight = parseInt(screen.availHeight);

    var winParams = "width=" + screenWidth + ",height=" + screenHeight;
        winParams += ",left=0,top=0,toolbar,scrollbars,resizable,status=yes";

    openWindow(url, winTitle, winParams);
}

/* This function is used to set cookies */
function setCookie(name,value,expires,path,domain,secure) {
  document.cookie = name + "=" + escape (value) +
    ((expires) ? "; expires=" + expires.toGMTString() : "") +
    ((path) ? "; path=" + path : "") +
    ((domain) ? "; domain=" + domain : "") + ((secure) ? "; secure" : "");
}

/* This function is used to get cookies */
function getCookie(name) {
	var prefix = name + "="
	var start = document.cookie.indexOf(prefix)

	if (start==-1) {
		return null;
	}

	var end = document.cookie.indexOf(";", start+prefix.length)
	if (end==-1) {
		end=document.cookie.length;
	}

	var value=document.cookie.substring(start+prefix.length, end)
	return unescape(value);
}

/* This function is used to delete cookies */
function deleteCookie(name,path,domain) {
  if (getCookie(name)) {
    document.cookie = name + "=" +
      ((path) ? "; path=" + path : "") +
      ((domain) ? "; domain=" + domain : "") +
      "; expires=Thu, 01-Jan-70 00:00:01 GMT";
  }
}

// This function is for stripping leading and trailing spaces
function trim(str) {
    if (str != null) {
        var i;
        for (i=0; i<str.length; i++) {
            if (str.charAt(i)!=" ") {
                str=str.substring(i,str.length);
                break;
            }
        }

        for (i=str.length-1; i>=0; i--) {
            if (str.charAt(i)!=" ") {
                str=str.substring(0,i+1);
                break;
            }
        }

        if (str.charAt(0)==" ") {
            return "";
        } else {
            return str;
        }
    }
}

// This function is used by the login screen to validate user/pass
// are entered. 
function validateRequired(form) {
    var bValid = true;
    var focusField = null;
    var i = 0;
    var fields = new Array();
    oRequired = new required();

    for (x in oRequired) {
        if ((form[oRequired[x][0]].type == 'text' || form[oRequired[x][0]].type == 'textarea' || form[oRequired[x][0]].type == 'select-one' || form[oRequired[x][0]].type == 'radio' || form[oRequired[x][0]].type == 'password') && form[oRequired[x][0]].value == '') {
           if (i == 0)
              focusField = form[oRequired[x][0]];

           fields[i++] = oRequired[x][1];

           bValid = false;
        }
    }

    if (fields.length > 0) {
       focusField.focus();
       alert(fields.join('\n'));
    }

    return bValid;
}

// This function is a generic function to create form elements
function createFormElement(element, type, name, id, value, parent) {
    var e = document.createElement(element);
    e.setAttribute("name", name);
    e.setAttribute("type", type);
    e.setAttribute("id", id);
    e.setAttribute("value", value);
    parent.appendChild(e);
}

function confirmDelete(obj) {
    var msg = "Are you sure you want to delete this " + obj + "?";
    ans = confirm(msg);
    return ans;
}

function confirmDelete2(obj) {
    var msg = "Are you sure you want to delete the " + obj + "?";
    ans = confirm(msg);
    return ans;
}

function confirmDeleteCampaign(obj) {
    var msg = "Do you want to remove this prospect from " + obj + "?";
    ans = confirm(msg);
    return ans;
}

function confirmDeleteCompanyWatch() {
    var selected = 0;

    for (var i = 0; i < $('selectedCompanyWatch').vid.length ; i++) {
        if ($('selectedCompanyWatch').vid[i].checked) {
            selected ++;
        }
    }
    var msg = "You are about to delete the selected " + selected + " records from the company watch list.  Are you sure?";
    ans = confirm(msg);
    return ans;
}

function highlightTableRows(tableId) {
    var previousClass = null;
    var table = document.getElementById(tableId);
    var tbody = table.getElementsByTagName("tbody")[0];
    if (tbody == null) {
        var rows = table.getElementsByTagName("tr");
    } else {
        var rows = tbody.getElementsByTagName("tr");
    }
    // add event handlers so rows light up and are clickable
    for (i=0; i < rows.length; i++) {
        //previousClass=this.className;
        rows[i].onmouseover = function() {
            previousClass=this.className;
            if( this.className.indexOf("over") == -1 ){
                this.className+=' over'
            }
        };
        rows[i].onmouseout = function() {
            if(previousClass!=null){
                if( previousClass.endsWith(" over") ){
                    var rowClass = previousClass.split(' ');
                    if(rowClass.length >0)
                        previousClass = rowClass[0];
                }
                this.className=previousClass;
            }else{
                var string = this.className;
                var index = string.indexOf("over");
                string = string.substring(0,index);
                this.className=string;
            }
        };

    }
}

function highlightFormElements() {
    // add input box highlighting
    addFocusHandlers(document.getElementsByTagName("input"));
    addFocusHandlers(document.getElementsByTagName("textarea"));
}

function addFocusHandlers(elements) {
    for (i=0; i < elements.length; i++) {
        if (elements[i].type != "button" && elements[i].type != "submit" &&
            elements[i].type != "reset" && elements[i].type != "checkbox") {
            elements[i].onfocus=function() {this.className='focus';this.select()};
            elements[i].onclick=function() {this.select()};
            elements[i].onblur=function() {this.className=''};
        }
    }
}

function radio(clicked){
    var form = clicked.form;
    var checkboxes = form.elements[clicked.name];
    if (!clicked.checked || !checkboxes.length) {
        clicked.parentNode.parentNode.className="";
        return false;
    }

    for (i=0; i<checkboxes.length; i++) {
        if (checkboxes[i] != clicked) {
            checkboxes[i].checked=false;
            checkboxes[i].parentNode.parentNode.className="";
        }
    }

    // highlight the row
    clicked.parentNode.parentNode.className="over";
}

//window.onload = highlightFormElements;

// Show the document's title on the status bar
window.defaultStatus=document.title;

function popUp(URL) {
day = new Date();
id = day.getTime();
eval("page" + id + " = window.open(URL, '" + id + "', 'toolbar=0,scrollbars=0,location=0,statusbar=0,menubar=0,resizable=0,width=650,height=500');");
}

function getposOffset(overlay, offsettype) {
    var totaloffset = (offsettype == "left") ? overlay.offsetLeft : overlay.offsetTop
    var parentEl = overlay.offsetParent
    while (parentEl != null) {
        totaloffset = (offsettype == "left") ? totaloffset + parentEl.offsetLeft : totaloffset + parentEl.offsetTop
        parentEl = parentEl.offsetParent
    }
    return totaloffset
}

function isShowPopUp(id) {
    var tr = window.document.getElementById(id).parentNode.parentNode;
    var x = getposOffset(tr,"left");
    var y = getposOffset(tr,"top");
    var height = tr.offsetHeight;
    var width = tr.offsetWidth;
//    alert("height = " + height + " width = " + width + " x = " + x + " y = " + y +"\n" + "cursor_x = " + cursor_x + "cursor_y = " + cursor_y)
    return (x <= cursor_x) && ((x + width) >= cursor_x) && (y <= cursor_y) && ((y + height) >= cursor_y);
}

/**
 * For use this function necessary to include
 * <script type="text/javascript"> addListener(document, "mousemove",getMouseXY, false); </script>.
 */
function getMouseXY(e) {
  if (IE) { // grab the x-y pos.s if browser is IE
    cursor_x = event.clientX + document.body.scrollLeft;
    cursor_y = event.clientY + document.body.scrollTop;
  } else {  // grab the x-y pos.s if browser is NS
    cursor_x = e.pageX;
    cursor_y = e.pageY;
  }
  // catch possible negative values in NS4
  if (cursor_x < 0){cursor_x = 0;}
  if (cursor_y < 0){cursor_y = 0;}
  return true;
}

/**
 * For use this function necessary to include
 * <script type="text/javascript" src="<c:url value='/scripts/overlib.js'/>"></script> and
 * <div id="overDiv" style="position:absolute; visibility:hidden; z-index:1000;"></div> on page.
 */
function showResponse(originalRequest)
{
    var str = new String(originalRequest.responseText);
    var id = str.substring(0, str.indexOf("\n") - 1);
    if(isShowPopUp(id)){
        var text = str.substring(id.length + 1, str.length);
        return overlib(text, VAUTO, FGCOLOR, '#FFF');
    }
}

/**
 * For use this function necessary to include
 * <script type="text/javascript" src="<c:url value='/scripts/prototype.js'/>"></script> on page. And include javascript
 * for showResponse function.
 * @param id element id
 */
function sendAjaxRequestShortUserDetails(id, row_id)
{
    var ser = '/ajaxUserDetailsServlet';
    var url = 'http://'+ document.location.host + '/webtracker-console' + ser;
    var pars = 'visitor_id=' + id + "&row_id=" + row_id ;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'post',
        postBody: pars,
        onComplete: showResponse
    });

}

/**
 * For use this function necessary to include
 * <script type="text/javascript" src="<c:url value='/scripts/prototype.js'/>"></script> on page. And include javascript
 * for showResponse function.
 * @param id element id
 */
function sendAjaxRequestShortLeadReportUserDetails(id, row_id)
{
    var ser = '/ajaxLeadReportUserDetailsServlet';
    var url = 'http://'+ document.location.host + '/webtracker-console' + ser;
    var pars = 'visitor_id=' + id + "&row_id=" + row_id ;
    var myAjax = new Ajax.Request(
            url,
    {
        method: 'post',
        postBody: pars,
        onComplete: showResponse
    });

}

// Cross-browser implementation of element.addEventListener()
function addListener(element, type, expression, bubbling)
{
	bubbling = bubbling || false;

	if(window.addEventListener)	{ // Standard
		element.addEventListener(type, expression, bubbling);
		return true;
	} else if(window.attachEvent) { // IE
		element.attachEvent('on' + type, expression);
		return true;
	} else return false;
}

function showUserDetailsTableRows(tableId) {
    var previousClass = null;
    var table = document.getElementById(tableId);
    var tbody = table.getElementsByTagName("tbody")[0];
    if (tbody == null) {
        var rows = table.getElementsByTagName("tr");
    } else {
        var rows = tbody.getElementsByTagName("tr");
    }
    // add event
    for (i = 0; i < rows.length; i++) {
        addListener(rows[i], "mouseover", function() {
            var a = this.getElementsByTagName("td")[0];
            var input = a.getElementsByTagName( "input")[0];
            sendAjaxRequestShortUserDetails(input.name, input.id);
        }, false);
        addListener(rows[i], "mouseout", function() {
           return nd();
        }, false);
    }
}


    function salesRepresentativeForm(form){
      if (form.email.value != "")
      { if (form.email.value.indexOf("@") == -1 || form.email.value.indexOf(".") == -1 || form.email.value.indexOf(" ") != -1 || form.email.value.length < 6)
        { alert("Sorry, the email address does not appear to be valid.");
          return false;
        }
      }

      if (form.email.value == "")
      { alert("Please enter your email address.");
        return false;
      }
      return true;
    }

    function processSubmitSalesRepresentative(action, url,id){
        if(action == "save"){
            if(salesRepresentativeForm($('salesRepresentativeForm'))) {
                $('salesRepresentativeForm').submit();
                Windows.closeAll();
            }
        }
        else{
            if(action =='delete'){
                if (confirmDelete('Sales Rep')) {
                    var params = "";
                    Windows.closeAll();
                    new Ajax.Request(url, {
                            asynchronous:true,
                            onComplete:function(request) {
                                onRemoveSalesRep(request,id)
                            },
                            parameters:params});

                }
            }
            else{
                if(action== "cancel"){
                    Windows.closeAll();
                }
            }
        }
    }

    function processSubmit(action,sourcePage,url,indicator ) {

        if (action == 'save') {
                if(sourcePage != 'dashboardc' && sourcePage != 'dashboardp') $(indicator).style.display="inline";
                var form = $('visitorInfoForm');
                var params = Form.serialize('visitorInfoForm');
                params += "&method=Save&sourcePage="+sourcePage;
                Windows.closeCurrentWindow();
                new Ajax.Request('ajaxLabelVisitor.html?', {
                    asynchronous:true,
                    onComplete:function(request) {
                        onSaved(request,sourcePage, form)
                    },
                    parameters:params});
        }
        else if (action == 'delete') {
            if (confirmDelete('Visitor Label')) {
                window.location = url;
            }
        }
        else if (action == 'cancel') {
             Windows.closeCurrentWindow();
        }
    }

    function onSaved(request,sourcePage, form) {
        if(request.status != 200) {
            alert("The time entry could not be saved. "+request.status);
            return
        }
         if(sourcePage != 'dashboardc' && sourcePage != 'dashboardp') {
            var validrow= request.getResponseHeader('X-Valid-Row');
            var id = request.getResponseHeader('X-Entry-Id')
            $('indicator_'+id).style.display="none";
            var tableRow = $(id).parentNode.parentNode;
            Element.hide(tableRow);
            if(validrow == 'true'){
                tableInsert(tableRow, 'After', request.responseText);
            }
            Element.remove(tableRow);
            tableRow = $(id).parentNode.parentNode;
            new Effect.Highlight(tableRow, {startcolor:'#fcac11',duration: 1.6});
            ajaxifyTable();
        }
        
        if ($('alertVisitor' + form.id.value) != null && $('alertVisitor' + form.id.value) != 'undefined') {
            $('alertVisitor' + form.id.value).innerHTML = form.firstName.value + " " + form.lastName.value + "(" + form.companyName.value + ")" ;
            new Effect.Highlight($('alertVisitor' + form.id.value).parentNode, {startcolor:'#fcac11',duration: 1.6});
        }
    }

	function onRemoveSalesRep(request,id){
        if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return
        }
        var rowFound = $(id).parentNode.parentNode;
        Element.remove(rowFound);
        highlightTableRows("salesRepList");
        ajaxifyTable();
    }

    function tableInsert(which, position, text) {
        if(navigator.userAgent.toLowerCase().indexOf("msie") >= 0) {
            var div = document.createElement("div")
            div.innerHTML = "<table>" + text + "</table>"
            var row = div.children[0].rows[0]
            var parent = $(which).parentNode
            var target = $(which)
            if(position == "After") {
                position = "Before"
                target = target.nextSibling
            }
            parent['insert' + position](row, target)
        } else {
        new Insertion[position](which, text)
        }
    }

    /**
     * The 'hidden' paramater defines if the edited response must fit for a hidden Form.
     * If the current form does not contain hidden components, do not sent this parameter.
     */
    function showEditLabel(row, id, rowType, sourcePage) {
        var classes ='';
        if ($('visitorInfoList') || $('visitorInfoListProspect') || $('visitorInfoListQualified') || $('visitorInfoListCompany')) {
	        var tableRow = $(id).ancestors();
	        var cssClasses = tableRow[1].className.split(" ");
            classes = cssClasses[0];
            if (cssClasses[1] && cssClasses[1] != 'over') {
                classes += "%20"+cssClasses[1];
            }
        } else {
            classes = '';
        }
        Dialog.info({url: 'ajaxLabelVisitor.html?method=edit&sourcePage='+sourcePage+'&rtype='+rowType+'&class='+classes+'&row='+row+'&id='+id, options: {method: 'get'}}, {className: 'alphacube', width:460, height:314, closable:true, resizable:true, draggable:true});
    }

    function showEditLabelSales(row, id, rowType, sourcePage) {
        var classes ='';
        if ($('visitorInfoList')|| $('visitorInfoListProspect') || $('visitorInfoListQualified') || $('visitorInfoListCompany')) {
	        var tableRow = $(id).ancestors();
	        var cssClasses = tableRow[1].className.split(" ");
            classes = cssClasses[0];
            if (cssClasses[1] && cssClasses[1] != 'over') {
                classes += "%20"+cssClasses[1];
            }
        } else {
            classes = '';
        }

        Dialog.info({url: 'ajaxLabelVisitor.html?method=edit&sourcePage='+sourcePage+'&rtype='+rowType+'&class='+classes+'&row='+row+'&id='+id+'&isSales=true', options: {method: 'get'}}, {className: 'alphacube', width:460, height:314, closable:true, resizable:true, draggable:true});
    }

    function showLabelForm(id, from) {
        Dialog.info({url: 'ajaxVisitorCookie.html?method=showForm&from='+from+'&id='+id, options: {method: 'get'}}, {className: 'alphacube', width:460, height:314, closable:true, resizable:true, draggable:true});
    }

    function completeUpdateVisitorOwner(request){
        if(request.status != 200) {
            alert("The time entry could not be saved owner "+request.status);
            return
        }
    }



    /** hidden = 1 => to hide element
     *  hidden = 0 => to show element
     *  the order of hidden and source may change at the form. Check odd order of parameters.
     */
    function hideEditLabel(row, id, rowType, source){
	    if($('visitorInfoList') == null ){
			source = "inDashboard";
        }
		var params = "rowNumber="+row+"&idVisitor="+id+'&method=update&hidden=1&source='+source;
		new Ajax.Request(
		   "ajaxUpdateHiddenVisitor.html?",
		   {asynchronous:true,onComplete:function(request){ onHide(request,source)},parameters:params}
		);
    }

    function trim(stringToTrim) {
        return stringToTrim.replace(/^\s+|\s+$/g,"");
    }

    function hideEditLabel2(row, id, rowType, source, linkId){
            var classes ='';
            classes='odd';

            var text = $(linkId).textContent;
            text= trim(text);
            if( text == "Hide Visitor" ) {
                var params = "rowNumber="+row+"&idVisitor="+id+'&method=update&hidden=1&source='+source;
                new Ajax.Request(
                   "ajaxUpdateHiddenVisitor.html?",
                   {asynchronous:true,onComplete:function(request){ onHide(request,source)},parameters:params}
                );
            }
            else{
                var params = "rowNumber="+row+"&idVisitor="+id+'&method=update&hidden=0&source='+source+"&rtype="+rowType+"&class="+classes;
                new Ajax.Request(
                   "ajaxUpdateHiddenVisitor.html?",
                   {asynchronous:true,onComplete:function(request){ addRow(request, row)},parameters:params}
                );
            }
         Windows.closeAll();
    }

	function hideEditLabelDashboard(id, rowType, source, linkId, update){
		var classes ='';
		if(update == 'company'){
			$('indicatorCompany').style.display="inline";
			$('companyDashboard').removeChild($('companyDashboardTable'));
		}
		else{
			$('indicatorProspect').style.display="inline";
			$('prospectDashboard').removeChild($('prospectDashboardTable'));
		}

		var params = "idVisitor="+id+'&method=updateCompaniesInDashboard&hidden=1&source='+source+"&update="+update;
			new Ajax.Request(
			   "ajaxUpdateHiddenVisitor.html?",
			   {asynchronous:true,onComplete:function(request){ onHideDashboard(request,update)},parameters:params}
		);

	    Windows.closeAll();
    }

    function addRow(request, row ){
        if( $('visitorInfoList') != null )
        {
            var tableRow = $('visitorInfoList').childElements()[1].childElements()[row-1];
            new Insertion["Before"](tableRow, request.responseText);
        }
    }

    function changeEditLabel(row, id, indicator, rowType, hidden) {
            var params = "rowNumber="+row+"&idVisitor="+id+'&method=update&hidden='+hidden+'&source='+rowType;
            new Ajax.Request(
               "ajaxUpdateHiddenVisitor.html?",
               {asynchronous:true,onComplete:function(request){ onShow(request,hidden,row, rowType, indicator)},parameters:params}
            );
	}

    function changeEditLabel2(row, id, indicator, rowType, hidden, idLink) {
        var content = trim( $(idLink).textContent);
        if ( content == "Hide Visitor" ){
            hidden='1';
            $(idLink).textContent = "Show Visitor";
        }
        else{
            hidden='0';
            $(idLink).textContent = "Hide Visitor";
        }
        var params = "rowNumber="+row+"&idVisitor="+id+'&method=update&hidden='+hidden+'&source='+rowType;
        new Ajax.Request(
               "ajaxUpdateHiddenVisitor.html?",
               {asynchronous:true,onComplete:function(request){ onShow(request,hidden,row, rowType, indicator)},parameters:params}
        );

    }

    function updateHiddenLink( linkId, text ){
        $(linkId).textContent = text;
    }

    /**
    * This method handles the requested page and hide the selected row at table.
    */
    function onHide(request,source){
         if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return
        }
        var id = request.getResponseHeader('X-Entry-Id');
	    if(source == "inDashboard") {
			var rowFound = $(id).parentNode;
	    }
	    else {
			var rowFound = $(id).parentNode.parentNode;
	    }

        Element.remove(rowFound);
        ajaxifyTable();
        Windows.closeAll();
    }

	 /**
    * This method handles the requested page and hide the selected row and update table.
    */
    function onHideDashboard(request,update){
         if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return
        }

	    if(update == "company") {
		    $('indicatorCompany').style.display="none";
			addDivScript(request, 'companyDashboard');
	    }
	    else {
		    $('indicatorProspect').style.display="none";
			addDivScript(request, 'prospectDashboard');
	    }

        Windows.closeAll();
    }

    function onShow(request,hidden,row,source, indicator){
         if(request.status != 200) {
            alert("The time entry could not be updated on show" +request.status)
            return
        }
        var id = request.getResponseHeader('X-Entry-Id');
	    if(hidden == '1') {
            //row, id, indicator, rowType, hidden, source
            $(indicator).onclick=function(){changeEditLabel(row,id, indicator, source, '0');return false;};
		    Element.firstDescendant(indicator).src="images/icon_hide.gif";
            Element.firstDescendant(indicator).alt="Show Visitor";
            $(indicator).title="Show Visitor";
        }
	    else {
		    $(indicator).onclick=function(){changeEditLabel(row,id, indicator, source,'1');return false;};
		    Element.firstDescendant(indicator).src="images/icon_show.gif";
            Element.firstDescendant(indicator).alt="Hide Visitor";
            $(indicator).title="Hide Visitor";
        }
    }

	function showPreviewHtml(html,template) {
	   Dialog.info({url: 'editCampaign.html?', options: {parameters: 'method=previewHtml&html='+escape(html)+'&template='+template}},
	                        {className: 'alphacube', width:750, height:350, closable:true, resizable:true, draggable:true});
	   return false;
	}

	function showPreviewText(text) {
        Dialog.info({url: 'editCampaign.html?', options: {parameters: 'method=previewText&text='+encodeURIComponent(text.value)}},
							{className: 'alphacube', width:750, height:350, closable:true, resizable:true, draggable:true});
		return false;
	}

	function updatedaysAfterFill(checkB,daysAfterFill,sendTime) {
		if(checkB.checked == true) {
			daysAfterFill.disabled=true;
			sendTime.disabled=true;
		}
		else {
			daysAfterFill.disabled=false;
			sendTime.disabled=false;
		}
	}
	function finishForm(form,e,method) {
		var keynum;
		if (window.event) // IE
		{
			keynum = e.keyCode
		}
		else if (e.which) // Netscape/Firefox/Opera
		{
			keynum = e.which
		}
		if(keynum==13) {
			submitForm(form,method);
		}
	}
	function submitForm(form,method) {
		form.method.value=method;
		form.submit();
	}

    /** hidden = 1 => to hide element
     *  hidden = 0 => to show element
     *  the order of hidden and source may change at the form. Check odd order of parameters.
     */
    function removeItem(row, id){
        if( $('visitorInfoList') ){
            var params = "rowNumber="+row+"&id="+id+"&method=delete&from=list&row="+row;
            new Ajax.Request(
               "visitorinfo.html?",
               {asynchronous:true,onComplete:function(request){ onRemove(request,id)},parameters:params}
            );
        }
    }

	/**
    * This method handles the requested page and hide the selected row at table.
    */
    function onRemove(request,id){
        if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return
        }
        var rowFound = $(id).parentNode.parentNode;
        Element.remove(rowFound);
        highlightTableRows("visitorInfoList");
        ajaxifyTable();
    }

    function showAddtable(id){
        $(id).style.display= 'block';
    }

    function addRule( idAutomationRule, idDiv, counterRule ){

        $(counterRule).value= parseInt($(counterRule).value) + 1;
        var counter = $(counterRule).value;
        var params = "method=update&type=rule&counter="+counter;
        if( idAutomationRule != "" ){
            params = params + "&idAutoRule="+idAutomationRule;
        }

        new Ajax.Request(
               "ajaxAutomationRuleContent.html",
               {asynchronous:true,onComplete:function(request){ addDivScript(request, idDiv)},parameters:params}
            );
    }

    function addDivScript ( request, idDiv ){
        var div=$(idDiv);
        new Insertion['Bottom'](div, request.responseText);
    }

   function removeAutomationFormElement( idRule ){
        var item =  $(idRule);
        Element.remove(item);
    }


    function updateRuleValues( kindRule, kindValue, operator, kindRuleValue, itemValue, operatorValue   ){

      var kindRule_value = $F(kindRule);
      if( kindRuleValue!= null && kindRuleValue != 'undefined' ){
         kindRule_value = kindRuleValue;
      }
      var params ="method=retrieveOptionList&type=kindValue&id="+kindRule_value+"&itemId="+kindValue+"&itemName="+kindValue;
      new Ajax.Updater( $(kindValue),"ajaxAutomationRuleContent.html",
             {asynchronous:true,onComplete:function(request){ updateKindValue(request, kindRule, kindRule_value, kindValue, itemValue )},parameters:params}
          );
      if( operatorValue !=null && operatorValue !='undefined'  ){
           operator_value = operatorValue;
      }

      var params ="method=retrieveOptionList&type=operator&id="+kindRule_value+"&itemId="+operator+"&itemName="+operator;
      new Ajax.Updater($(operator), "ajaxAutomationRuleContent.html",
             {asynchronous:true,onComplete:function(request){ updateOperator(request, operator, operator_value)},parameters:params}
              );
       return 0;
  }


   function updateKindValue(request, kindRule, kindRuleValue, kindValue , itemValue ){
        $(kindRule).value = kindRuleValue;
        $(kindValue).firstDescendant().value = itemValue;
   }

   function updateOperator(request, operatorId, operatorValue){
        $(operatorId).firstDescendant().value = operatorValue;
   }


    function addAction(idAutomationRule, idDiv, counterAction  ){
        $(counterAction).value= parseInt($(counterAction).value) + 1;
        var counter = $(counterAction).value;
        var params = "method=update&type=action&counter="+counter;
        if( idAutomationRule != "" ){
            params = params + "&idAutoRule="+idAutomationRule;
        }

        new Ajax.Request(
               "ajaxAutomationRuleContent.html",
               {asynchronous:true,onComplete:function(request){ addDivScript(request, idDiv)},parameters:params}
            );
    }

    function updateValuesAction(kindAction, actionItem, kindActionValue, itemValue){
       var kindAction_value = $F(kindAction);
        if(kindActionValue != null &&  kindActionValue!='undefined' ){
            kindAction_value = kindActionValue;
       }

       var params ="method=retrieveOptionList&type=actionItem&id="+kindAction_value+"&itemName="+actionItem+"&itemId="+actionItem;
       new Ajax.Updater( actionItem, "ajaxAutomationRuleContent.html",
              {asynchronous:true,onComplete:function(request){ updateAction(request,kindAction, actionItem, kindActionValue, itemValue)}, parameters:params}
               );
        return 0;
    }

    function updateAction(request, kindAction, actionItem, kindAction_value, itemValue){
        if(kindAction_value!='undefined' && kindAction_value!=null){
            $(kindAction).value = kindAction_value;
        }
        if(itemValue!='undefined' && itemValue!=null){
            $(actionItem).firstDescendant().value = itemValue;
        }
    }

    function validateFieldsForm( form ){

        if(bCancel == true){
            return true;
        }

        var ruleCounter = parseInt(form.ruleCounter.value);
        var passed= true;

        for( var i=1; i<=ruleCounter; i++){
            var value = $F('input_value_'+i);
            if(value == null || value == "" || value.length==0){
                passed = false;
                break;
            }
        }
        if(!passed){
            alert("An input field does not have a valid entry or is empty.");
        }
        return passed;
    }

	function unblockIP(ip) {
        var params = "method=unblock&ip="+ip;
        new Ajax.Request(
               "ajaxBlockIp.html",
               {asynchronous:true,onComplete:function(request){ onUnblock(request,ip)},parameters:params}
            );
	}

	function onUnblock(request,ip) {
		var unblockLink = $("unblockIP");
		var td = $("hostName");
		td.removeChild(unblockLink);
		td.innerHTML = ip + "<a class=\"red_link\" id=\"blockIP\" href=\"#\" onclick=\"blockIP('"+ip+"'); return false;\">[Block IP]</a>";
	}

	function blockIP(ip) {
        var params = "method=block&ip="+ip;
        new Ajax.Request(
               "ajaxBlockIp.html",
               {asynchronous:true,onComplete:function(request){ onBlock(request, ip)},parameters:params}
            );
	}

	function onBlock(request,ip) {
		var blockLink = $("blockIP");
		var td = $("hostName");
		td.removeChild(blockLink);
		td.innerHTML =ip + "<a class=\"red_link\" id=\"unblockIP\" href=\"#\" onclick=\"unblockIP('"+ip+"'); return false;\">[Unblock IP]</a>";
	}

	function showRep() {
        var params = "method=showRep";
		$('salesRepDiv').style.display="block";
		$('indicatorSelectedSalesRep').style.border = "1px solid #000000";
		$('indicatorSelectedSalesRep').style.display="block";
		$('indicatorSelectedSalesRep').style.width="100%";
		$('indicatorSelectedSalesRep').style.background="#E6E6E6";
		$('indicatorSelectedSalesRep').style.position="absolute";
        new Ajax.Request(
               "selectedVisitor.html",
               {asynchronous:true,onComplete:function(request){ onShowRep(request)},parameters:params}
            );
	}

	function onShowRep(request) {
		var div = $("salesRepDiv");
		$('salesRepDiv').style.display="inline";
		$('indicatorSelectedSalesRep').style.display="none";
		if (request.getResponseHeader('X-session-expired') == 'true') {
			window.location.reload();
			return;
		}
        div.innerHTML = request.responseText;
	}

    function showRepCustom(salesRepDiv, indicatorSelectedSalesRep, tableId) {
        var params = "method=showRep&tableId="+tableId;
		$(salesRepDiv).style.display="block";
        if($(indicatorSelectedSalesRep)){
            $(indicatorSelectedSalesRep).style.border = "1px solid #000000";
		    $(indicatorSelectedSalesRep).style.display="block";
		    $(indicatorSelectedSalesRep).style.width="100%";
		    $(indicatorSelectedSalesRep).style.background="#E6E6E6";
		    $(indicatorSelectedSalesRep).style.position="absolute";
        }
        new Ajax.Request(
               "selectedVisitor.html",
               {asynchronous:true,onComplete:function(request){ onShowRepCustom(request, salesRepDiv, indicatorSelectedSalesRep)},parameters:params}
            );
	}

	function onShowRepCustom(request, salesRepDiv, indicatorSelectedSalesRep) {
		var div = $(salesRepDiv);
		$(salesRepDiv).style.display="inline";
		$(indicatorSelectedSalesRep).style.display="none";
		if (request.getResponseHeader('X-session-expired') == 'true') {
			window.location.reload();
			return;
		}
        div.innerHTML = request.responseText;
	}

    function checkAssignRep(formId) {
        var list = $$("#" + formId + " *[name='vid']");
        for(var i = 0; i < list.length;i++) {
			if(list[i].checked){
				return true;
			}
		}
		alert("You need to select at least one item from the list.");
		return false;
	}

    function showEditLabelSalesRep(row, id, from) {
		var classes ='';
		var tableRow = $(id).ancestors();
		var cssClasses = tableRow[1].className.split(" ");
		classes = cssClasses[0];
		if (cssClasses[1] && cssClasses[1] != 'over') {
			classes += "%20"+cssClasses[1];
		}
        Dialog.info({url: 'salesRepresentative.html?method=edit&from='+from+'&id='+id+'&class='+classes+'&row='+row, options: {method: 'get'} },{className: 'alphacube',  width:400, height:274, closable:true, resizable:true, draggable:true});
	}

    function validateCampaignForm(form) {
        if(bCancel == true){
            return true;
        }
        var name = form.name.value;
        var selectedMailingList = form.mailingList.value;
        var message = "";
        var response = true;
        if(name== ""){
            message = "'Campaign Name' is required\n";
            response = false;
        }
        if(selectedMailingList < 0 ){
            message=message+"'Mailing list' is required\n";
            response = false;
        }

        if(response){
           return true;
        }
        else{
            alert(message);
            return false;
        }
      }

      function setSettings() {
          var settings = {
           tl: { radius: 10 },
           tr: { radius: 10 },
           bl: { radius: 10 },
           br: { radius: 10 },
           antiAlias: false,
           autoPad: true
         }
          return settings;
      }

      function isValidPath (code) {
          var regex = new RegExp("^([0-9a-zA-Z]+\/?)*[0-9a-zA-Z\\.]+\/?$");
          if(!regex.test(code)) {
              alert("Location is invalid");
              return false;
          }
          return true;
      }

        function inicializeTootipManager() {
            TooltipManager.init("tooltip", {url: "ajaxVisitorDetails.html", options: {method: 'get', width:620}}, {delayOver: 700, delayOut: 200, shiftX: -640, shiftY: -50, showEffect: Element.show, hideEffect: Element.hide});
        }

        function validateLandingPageTemplateSelection() {
        	var list = document.getElementById("templateListHTML");
        	if(!bCancel && list.selectedIndex < 0) {
        		alert("Please select a Template.");
        		return false;
        	}
        	return true;
        }

    function changeGraphicToPie(change) {
        if(change) {
            $('linkPie').style.fontWeight = 'bold';
            $('linkTime').style.fontWeight = 'normal';

            $('statsPie').style.display='block';
            $('statsTime').style.display='none';
            $('tableStatsTime').style.display='none';
            $('tableStatsPie').style.display='block';
        } else {
            $('linkPie').style.fontWeight = 'normal';
            $('linkTime').style.fontWeight = 'bold';

            $('statsTime').style.display='block';
            $('statsPie').style.display='none';

            $('tableStatsTime').style.display='block';
            $('tableStatsPie').style.display='none';
        }
    }

    function processSubmitFeedback(action) {

        if (action == 'save') {
            var form = $('feedbackForm');
            var params = Form.serialize('feedbackForm');
            params += "&method=sendFeedback";
            Windows.closeCurrentWindow();
            new Ajax.Request('ajaxFeedback.html?', {
                    asynchronous:true,
                    onComplete:function(request) {
                        onSentFeedback(request,form)
                    },
                    parameters:params});
        }
        else if (action == 'cancel') {
             Windows.closeCurrentWindow();
        }
    }

function onSentFeedback(request,form) {
    if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return
    }
    $('feedbackMessage').style.display = 'block';
    $('activitySuccessMessage').innerHTML = 'Your feedback has been submitted to ActiveProspects support team. Thank you!';
}

function confirmReset() {
    var msg = "Are you sure you want to reset the counter?";
    ans = confirm(msg);
    if (ans) {
        return true;
    } else {
        return false;
    }
}

function isValidURLPath(code) {
  var regex = new RegExp("^[-_.!~*'()a-zA-Z0-9;\/?:\@&=+\$,%#]+$")
  if (!regex.test(code)) {
    return false;
  }
  return true;
}

function isValidIdentifier(code, isUrl) {
  var param = isUrl? 'Location' : 'Unique Campaign Identifier';
  if (code == null || code.length == 0) {
     alert("'"+ param +"' is a required field.");
     return false;
  }
  var regex = new RegExp("^[^&:/?@=+$,;]*$")
  if (!isUrl) {
    if (!regex.test(code)) {
         alert("'"+ param +"' has special characters.");
         return false;
    }
  }
  return true;
}

function showEditSubscriber(visitorId,campaignId) {
    Dialog.info({url: 'editSubscriber.html?method=editVisitor&visitorId='+visitorId+'&campaignId='+campaignId, options: {method: 'get'}}, {className: 'alphacube', width:460, height:314, closable:true, resizable:true, draggable:true});
}

function processSubmitVisitorDripCampaign(action,visitorId) {
    if (action == 'save') {
        var form = $('visitorSubscriberForm');
        var params = Form.serialize('visitorSubscriberForm');
        params += "&method=saveVisitor";
        Windows.closeCurrentWindow();
        new Ajax.Request('editSubscriber.html?', {
            asynchronous:true,
            onComplete:function(request) {
                onSavedVisitorDripCampaign(request, visitorId, form)
            },
            parameters:params});
    }
    else if (action == 'cancel') {
         Windows.closeCurrentWindow();
    }
}

function onSavedVisitorDripCampaign(request, visitorId, form) {
    if(request.status != 200) {
            alert("The time entry could not be updated on hide" +request.status)
            return;
    }
    var fullNameSpan = $(visitorId);
    fullNameSpan.innerHTML = form.firstName.value + " " + form.lastName.value;
    new Effect.Highlight(fullNameSpan.parentNode.parentNode, {startcolor:'#fcac11',duration: 1.6});
}


function createDragable() {

    if($("checkOnlineForm") != null) {
        if ($("checkOnlineForm").checked) {
            $('dragdrop').show();
        } else {
            $('dragdrop').hide();
        }
    }
    else {
        $('dragdrop').show();
    }

    Sortable.create($('sorteredItems'), {
        tag:'li',
        dropOnEmpty:true,
        containment:["sorteredItems","unsorted"],
        constraint:false,
        handle:'dragable',
        onUpdate:function() {
            getElementsAndSort();
        },
        onChange:function() {
            getElementsAndSort();
        }
    });

    Sortable.create('unsorted', {
        tag:'li',
        dropOnEmpty: true,
        containment:["sorteredItems","unsorted"],
        constraint:false,
        handle:'dragable',
        onUpdate:function() {
            hideDeleteUpdateValue();
        }});
}

function matchField(orderField, fieldValue, fieldId) {
    var fieldNumber = orderField.value;
    if(fieldNumber != undefined && fieldNumber != null){
        if(fieldNumber.length > 0){
            if(isNaN(fieldNumber)){
                alert("Field is invalid. It must be a number");
                orderField.focus();
            }
            else{
                var numberFields = $('numberFields').value;
                if(fieldNumber > 0 && fieldNumber<= parseInt(numberFields)){

                    var item = $('item_'+fieldId);
                    var unsortedField = $('unsorted'+fieldId);
                    var emptyField = $('empty_'+fieldNumber);

                    if(emptyField.firstDescendant() != null){
                        alert("Mapped Field is not empty");
                        orderField.focus();
                    }else
                    {
                        var mappedField = $('field_mapped'+fieldNumber);

                        var customField = $('custom_field_name'+fieldId);
                        var mappedName = $('mapped_name'+fieldId);

                        var x = $('dropDragable'+fieldId);

                        if(mappedField != null && mappedField != undefined){
                            mappedField.value=customField.value;
                        }

                        mappedName.removeClassName('itemBox');

                        item.remove();
                        emptyField.update();
                        emptyField.appendChild(item);
                        new Effect.Pulsate(emptyField.id, { pulses: 2, duration: 1.0 });
                        emptyField.style.background_color='#FFFFFF';
                        emptyField.removeClassName('itemEmptyMultipleList');
                        emptyField.addClassName('itemContentMultipleList');

                        if(x != null){
                            var close = $(x.id);
                            close.toggle();
                        }

                        unsortedField.toggle();
                        orderField.value = "";
                    }
                }else{
                    alert("Field number must be less than " + (parseInt(numberFields)+1));
                    orderField.focus();
                }
            }
        }else{
            alert("Field is invalid. It must be a number");
            orderField.focus();
        }
    }
}

function deleteMultipleDragable(x, id){
    if(x != null){
        var close = $(x.id);
        close.toggle();


        var item = $('item_'+id);
        var parent = item.parentNode;
        var sectionId = parent.id.substring("empty_".length);
        var unsorted = $('unsorted'+id);
        var order = $('order'+id);
        var matchField = $('match'+id);

        var mappedField = $('field_mapped'+sectionId);
        if(mappedField != null && mappedField != undefined){
            mappedField.value="";
        }
        new Insertion["Before"](order, parent.innerHTML);
        var mappedName = unsorted.firstDescendant().firstDescendant();
        mappedName.addClassName('itemBox');

        unsorted.toggle();
        new Effect.Pulsate(unsorted.id, { pulses: 2, duration: 1.0 });
        $(parent.id).removeClassName('itemContentMultipleList');
        $(parent.id).addClassName('itemEmptyMultipleList');
        parent.innerHTML='&nbsp;';
    }
}

function getElementsAndSort() {
    var sorteredItems = $('sorteredItems').childElements();
    var sortable = Sortable.sequence('sorteredItems');
    sortable = sortable.toString().split(",");
    var i = 1;
    sorteredItems.each(function(section) {
        var sectionID = section.id;
        if (sectionID) {
            var x = $("dropDragable" + sectionID);
            if (x != null) {
                x.style.display = '';
            }
            var field = $("name" + sectionID);
            field.value = i;
            i++;
        }
    });
}

function hideDeleteUpdateValue() {
    var sorteredItems = $('unsorted').childElements();
    sorteredItems.each(function(section) {
        var sectionID = section.id;
        if (sectionID) {
            var sectionValue = $("req" + sectionID).value;
            if (sectionValue == "true") {
                var field = $("name" + sectionID);
                var object = $(sectionID);
                object.remove();
                var other = $("sorteredItems");
                other.appendChild(object);
                getElementsAndSort();
            } else {
                var field = $("name" + sectionID);
                field.value = 0;
            }
            var x = $("dropDragable" + sectionID);
            if (x != null) {
                x.style.display = 'none';
            }
        }
    });
}

function deleteDragable(idObject, x) {
    var object = $(idObject);

    var left = $("sorteredItems");
    object.remove();

    var other = $("unsorted");
    other.appendChild(object);

    var close = $(x.id);
    close.toggle();

    var propertyvalue = $("name" + idObject);
    propertyvalue.value = 0;
}

function showDragForm() {
    $('dragdrop').toggle();
}

function inicializeTootipManagerForCompany() {
    TooltipManager.init("tooltip3",
    { url: "ajaxVisitorDetails.html?method=showCompanyDetails&rtype=company", options: {method: 'get', width:318}},
    {delayOver: 700, delayOut: 200, shiftX: -150, shiftY: 12, showEffect: Element.show, hideEffect: Element.hide}
    );
}
if(typeof(Utils) == "undefined") {
    Utils = {};
}

Utils._clearPreEnteredText = function(evt) {
    Utils.clearPreEnteredText(Event.element(evt));
}

Utils.clearPreEnteredText = function(input) {
   if(input.value == input.preEnteredText) {
       Element.removeClassName(input, "nameInputHint");
       input.value = "";
   }
}

Utils._showPreEnteredText = function(evt) {
   var input = Event.element(evt);
   Utils.showPreEnteredText(input);
}

Utils.showPreEnteredText = function(input) {
   if(input.value.blank()) {
       Element.addClassName(input, "nameInputHint");
       input.value = input.preEnteredText;
   }
}

Utils.getScrollWidth = function() {
    var inner = document.createElement('p');
    inner.style.width = '100%';
    inner.style.height = '200px';

    var outer = document.createElement('div');
    outer.style.position = 'absolute';
    outer.style.top = '0px';
    outer.style.left = '0px';
    outer.style.visibility = 'hidden';
    outer.style.width = '200px';
    outer.style.height = '150px';
    outer.style.overflow = 'hidden';
    outer.appendChild (inner);

    document.body.appendChild (outer);
    var w1 = inner.offsetWidth;
    outer.style.overflow = 'scroll';
    var w2 = inner.offsetWidth;
    if (w1 == w2) w2 = outer.clientWidth;
    
    document.body.removeChild (outer);

    return (w1 - w2);
}

Utils.hasWindowHorizontalScroll = function() {
    return window.innerWidth > document.body.clientWidth    
}

Utils.addPreEnteredText = function(input, text) {
   input.preEnteredText = text;
   input.observe("focus", Utils._clearPreEnteredText.bindAsEventListener());
   input.observe("blur", Utils._showPreEnteredText.bindAsEventListener());
   Utils.showPreEnteredText(input);
}

var hiddenMenuActions = false;
function hideMenuActions(element){
    span = $(element.parentNode.parentNode.parentNode.parentNode.parentNode);
    span.addClassName('hideActionOption');
    hiddenMenuActions = true;
    setTimeout('disabledHiddenMenuActions()', 800);
}

function showMenuActions(element) {
    span = $(element.parentNode.parentNode);
    /*if(hiddenMenuActions) {
        span.addClassName('hideActionOption');
    } else {*/
        box = $(element).getElementsBySelector('ul')[0];
        positionSpan = Position.page(span);
        //height = window.innerHeight || (window.document.documentElement.clientHeight || window.document.body.clientHeight);
        height = WindowUtilities.getPageSize(document.body)['windowHeight'];

        if(height > (positionSpan[1] + span.getHeight() - 2 + box.getHeight())) {
            box.setStyle({top: span.getHeight() - 5 + 'px'});
        } else {
            box.setStyle({top: - box.getHeight() + 3 + 'px'});
        }

        /*if(span.hasClassName('hideActionOption')){
            span.removeClassName('hideActionOption');
        }*/
    /*}*/
}

function disabledHiddenMenuActions(){
    hiddenMenuActions = false;
}

function showAddMessageAsignSalesRep(salesRepId, visitorId, isOverview) {
    if(salesRepId != 0) {
        Dialog.info({url: 'selectedVisitor.html?method=addMessage&salesRepId='+salesRepId+'&isOverview='+isOverview+'&visitorId='+visitorId, options: {method: 'get'}}, {className: 'alphacube', width:460, height:310, closable:false, resizable:true, draggable:true});
    } else {
        changeSalesRepVisitorActivity(salesRepId, visitorId, isOverview, '');
    }
}

function showAddMessageAsignSalesRepCustom(salesRepId, visitorId, isOverview, tableId) {
    if(salesRepId != 0) {
        Dialog.info({url: 'selectedVisitor.html?method=addMessage&salesRepId='+salesRepId+'&isOverview='+isOverview+'&visitorId='+visitorId+'&tableId='+tableId, options: {method: 'get'}}, {className: 'alphacube', width:460, height:310, closable:false, resizable:true, draggable:true});
    } else {
        changeSalesRepVisitorActivity(salesRepId, visitorId, isOverview, '');
    }
}

function processSubmitAssignSalesRep(action,salesRepId, visitorId, isOverview, salesRepIdOld) {
    if (action == 'save') {
        $('selectedVisitor').method.value='assign';
        $('selectedVisitor').enable.value=true;
        $('selectedVisitor').salesRepId.value=salesRepId;
        $('selectedVisitor').message.value=$('selectedVisitorMessage').message.value;
        $('selectedVisitor').submit();
    } else if (action == 'saveOverview') {
         changeSalesRepVisitorActivity(salesRepId, visitorId, isOverview, $('selectedVisitorMessage').message.value);
         Windows.closeCurrentWindow();
    } else if (action == 'cancel') {
         if (visitorId) {
             var options = $A($('salesRep').getElementsByTagName('option'));
             options.each(function(el, indice){
                  if(el.value == salesRepIdOld) $('salesRep').selectedIndex = indice;
             })
         }
         Windows.closeCurrentWindow();
    }
}

function processSubmitAssignSalesRepCustom(action,salesRepId, visitorId, isOverview, salesRepIdOld, selectedVisitor) {
    if (action == 'save') {
        $(selectedVisitor).method.value='assign';
        $(selectedVisitor).enable.value=true;
        $(selectedVisitor).salesRepId.value=salesRepId;
        $(selectedVisitor).message.value=$('selectedVisitorMessage').message.value;
        $(selectedVisitor).submit();
    } else if (action == 'saveOverview') {
         changeSalesRepVisitorActivity(salesRepId, visitorId, isOverview, $('selectedVisitorMessage').message.value);
         Windows.closeCurrentWindow();
    } else if (action == 'cancel') {
         if (visitorId) {
             var options = $A($('salesRep').getElementsByTagName('option'));
             options.each(function(el, indice){
                  if(el.value == salesRepIdOld) $('salesRep').selectedIndex = indice;
             })
         }
         Windows.closeCurrentWindow();
    }
}

function customWaitScreen(element) {
    elementWaitScreen = $('pleasewaitScreen');
    positionElement = Position.page(element);
    positionElementCumulative = Position.cumulativeOffset(element)
    height = WindowUtilities.getPageSize(document.body)['windowHeight'];
    startPosicionY = positionElementCumulative[1] - positionElement[1] + height*0.3;
    elementWaitScreen.style.visibility='visible';
    elementWaitScreen.setStyle({top: startPosicionY + 'px'});
}

function customHiddeWaitScreen() {
    elementWaitScreen = $('pleasewaitScreen');
    elementWaitScreen.style.visibility='hidden';
    elementWaitScreen.setStyle({top: '30%'});
}

function verifyLeadScoreCheckedOnceAtLeast(form) {
    var isEmpty = true;
    if ((form.highFilterScoreLevel != null && form.highFilterScoreLevel.checked) ||
        (form.mediumFilterScoreLevel != null && form.mediumFilterScoreLevel.checked) ||
        (form.lowFilterScoreLevel != null && form.lowFilterScoreLevel.checked) ||
        (form.basicFilterScoreLevel != null && form.basicFilterScoreLevel.checked)) {
        return true;
    }
    alert("You need to select at least one lead score level from the list.");
    return false;
}

function showHideAdvancedOptions() {
    if ($('advancedBox').style.display == 'none') {
        $('visitorFilterSpace').style.display = 'none';
        $('advancedBox').style.display = 'block';
        $('advancedIconHidden').style.display = 'none';
        $('advancedIconExpanded').style.display = 'inline';
    } else {
        $('visitorFilterSpace').style.display = 'block';
        $('advancedBox').style.display = 'none';
        $('advancedIconHidden').style.display = 'inline';
        $('advancedIconExpanded').style.display = 'none';        
    }
}

function getInternetExplorerVersion() {
    var result = -1; // Return value assumes failure.
    if (navigator.appName == 'Microsoft Internet Explorer') {
        var ua = navigator.userAgent;
        var re = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
        if (re.exec(ua) != null) {
            result = parseFloat(RegExp.$1);
        }
    }

    return result;
}

function redirectTo(url) {
	location.href = url;
}
