/*
  Scripts related to form integration and JS-based web services clients.
*/

$(document).ready(function() {

    /* puts the 'username' cookie in the login field of the login form */
    if (document.cookie.length > 0) {
	c_start = document.cookie.indexOf('username=');
	if (c_start != -1) {
	    c_start = c_start + 9 /* 'username='.length */;
	    c_end = document.cookie.indexOf(";",c_start);
	    if (c_end == -1) 
		c_end = document.cookie.length;
	    $("#login_email").val(unescape(document.cookie.substring(c_start,c_end)));
	}
    }

    /* traps carriage-return to submit initially-hidden form for IE */
    $("#login_passwd").keydown(function(event) {
	if (event.which == '13') {
	    event.preventDefault();
	    if (logInRememberUsername())
		this.form.submit();
	}
    });

});

/* submit handler for login form that sets a cookie to hold user name */
function logInRememberUsername() {

    if (window.disableLoginSubmit) 
	return false; // prevent double-submit

    window.disableLoginSubmit = true;

    var expy = new Date();
    expy.setDate(expy.getDate() + 1000 /* days */);
    var cname = 'username';
    var value = $("#login_email").val();
    document.cookie = cname + "=" + escape(value) + ";expires=" + expy.toUTCString();
    return true;
}


/* submit handler for top-menu-search */
function searchFromMenu() {
    // the anchor tag element, jqueried.
    var clazz = $("#icon_search").attr("class");
    if (clazz == '' || clazz == "button_search_nextmarksite") {
	location.href="/?s=" + escape( $("input#header_search").val() );
	return false;
    } else if (clazz == "button_search_glossary") {
	alert("No glossary search available yet.");
	return false;
    } else if (clazz == "button_search_directoryproviders") {
	location.href = "/resources/directory-of-providers/section/?keyword=" + 
	    escape( $("input#header_search").val() );
    } else {
	var formAction = "/media-finder/results/?searchText=" + 
	    escape( $("input#header_search").val() ) + "&finder_media=";

	if (clazz == "button_search_allmedia") {
	    location.href = formAction + "*";
	} else if (clazz == "button_search_postallists") {
	    location.href = formAction + "postalMail";
	} else if (clazz == "button_search_phonelists") {
	    location.href = formAction + "telephone";
	} else if (clazz == "button_search_packageinsert") {
	    location.href = formAction + "insert";
	} else if (clazz == "button_search_emaillists") {
	    location.href = formAction + "eMail";
	} else if (clazz == "button_search_smstext") {
	    location.href = formAction + "smsText";
	} else if (clazz == "button_search_mobiledisplay") {
	    location.href = formAction + "mobileDisplay";
	} else if (clazz == "button_search_onlinedisplay") {
	    location.href = formAction + "onlineDisplay";
	}
    } 
    return false;
}

/* submit handler for free trial form */
function validateFreeTrial() {
    var formOk = true;
    $("span.note", document.webToLeadForm).remove();

    $("input[type='text'][name!='fax'],textarea", document.webToLeadForm).each(function() {
        var $elem = $(this);
        var elemVal = jQuery.trim($elem.val());

        if (elemVal == '') {
            $elem.after('<span class="note">Required field.</span>');
            if (formOk) $elem.focus();
            formOk = false;
        } else if ($elem.attr('name') == 'email') {
            // simple email test
            if (! isValidEmail(elemVal)) {
                $elem.after('<span class="note">Invalid email.</span>');
                if (formOk) $elem.focus();
                formOk = false;
            }
        } else if ($elem.attr('name') == 'email2') {
            // test that the emails match
            if (elemVal != jQuery.trim( $("input[name='email']", document.webToLeadForm).val() )) {
                $elem.after('<span class="note">Emails don\'t match.</span>');
                if (formOk) $elem.focus();
                formOk = false;
            }
        }
    });
    if (! formOk) 
        $("p:last", document.webToLeadForm).addClass("error_message");

    if (formOk)
	$('#00N00000006uaRA').val(document.location);

    //alert("validateFreeTrial returns: " + formOk);
    return formOk;
}

/* submit handler for info-request form */
function validateInfoRequest() {
    var formOk = true;
    $("span.note", document.requestInfoForm).remove();

    $("input[type!='hidden'],select[name='industry']", document.requestInfoForm).each(function() {
        var $elem = $(this);
        var elemVal = jQuery.trim($elem.val());

	if (this.name == 'title')
	    return; // not required.

        if (elemVal == '') {
            $elem.after('<span class="note">Required field.</span>');
            if (formOk) $elem.focus();
            formOk = false;
        } else if ($elem.attr('name') == 'email') {
            // simple email test
            if (! isValidEmail(elemVal)) {
                $elem.after('<span class="note">Invalid email.</span>');
                if (formOk) $elem.focus();
                formOk = false;
            }
        }
    });
    if (! formOk) 
        $("p:last", document.requestInfoForm).addClass("error_message");

    //alert("validateFreeTrial returns: " + formOk);
    return formOk;
}

/* submit handler for media-pulse signup. just validate email. */
function validateMediaPulse() {
    $("form#get_free_account span.note").remove();

    var $elem = $("form#get_free_account input[name=subscriberEmail]");
    var elemVal = jQuery.trim( $elem.val() );
    if (! isValidEmail(elemVal)) {
	$elem.after('<span class="note">Valid email required.</span>');
	$elem.focus();
	return false;
    }
    return true;
}

/* our own somewhat restrictive email validator. trim the data before passing it in. */
function isValidEmail(rawInput) {
    if (rawInput && rawInput.match)
	return rawInput.match(/^[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]{2,4}$/i);
    else
	return false;
}

/* Handle MediaPulse unsubscribe form submissions. */
function handleMediaPulseUnsub() {
    /*
      Not working due to cross-site scripting prevention in IE and FF. Default to normal form behavior.
    // turn cursor to watch
    $("*").css("cursor","wait");
    // post the data in the form
    var $form = $(document.mediaPulseUnsubForm);
    $.post($form.attr('action'), $form.serialize(), function() {
	$("table", document.mediaPulseUnsubForm).html("<tr><td>You have been successfully unsubscribed.</td></tr>");
	$("*").css("cursor","");
    });
    return false;
    */
    return true;
}

/* function to download the firefox media-finder plugin */
function addFirefoxEngine() {
    if ((typeof window.sidebar == "object") && (typeof window.sidebar.addSearchEngine == "function")) {
        window.sidebar.addSearchEngine(
            "http://www.nextmark.com/firefox/nextmark.src",
            "http://www.nextmark.com/firefox/nextmark.gif", 
            "nextmark", "Business"
        );
    } else {
        alert("You will need a browser which supports Sherlock to install this plugin.");
    }
}

/* function to add the IE media-finder plugin */
function addIEEngine() {
    window.external.AddSearchProvider("/ie/mediafinderplugin.xml");
}

