/*
 * Filename : portal.js
 * Company  : Elsevier Inc.
 * Purpose  : This Javascript file describes the methods and submitted the actions for Quick search,
              Advance search,Price search,View cart,Payment,Billing and Shipping ,Quick orders,logout
              checkout.
 *
 ***
 * Author : Satyam
 * Date Created : May 2005
 *
 ***
 * Modification History :
 * -------------------------------------------------------------------------
 * Modified by          Date          Description
 * HCL Technologies     Jan 31 2006   Modified for the Creation of Login Page to the Institutional Portal
 * HCL Technologies     Jan 31 2006   Modified for the Creation of Forgot Password and Change Password Page to the Institutional Portal
 * HCL Technologies     Jan 02 2006   bug 167 (Phone Number data on Billing Information Page) in the Issue Tracker
 * HCL Technologies     Jan 02 2006   bug 151 (Privacy policy and Terms and Conditions) in the Issue Tracker
 * HCL Technologies     Feb 22 2006   ISBN 13 Conversion
 * HCL Technologies     Jul 20 2006   Firefox
 * -------------------------------------------------------------------------
 * */

var changeMessage='Are you sure want to change the password?';
function getDateObject(dateValue){

    var year;
    var month;
    var day;
    var tempDate=dateValue


    month=tempDate.substring(0,tempDate.indexOf('/'));

    tempDate=tempDate.substring(tempDate.indexOf('/')+1);
    day=tempDate.substring(0,tempDate.indexOf('/'));


    tempDate=tempDate.substring(tempDate.indexOf('/')+1);
    year=tempDate

    return new Date(year,month,day);

}
function compareDate(startDate,endDate){
    return (getDateObject(endDate) > getDateObject(startDate));
}
function advanceSearch(formName){
    var formObject=document.forms[formName];
    formObject.action=url+'/AdvanceSearchInitAction';
    formObject.submit();
}
function quickSearch(formName){
    var formObject=document.forms[formName];
    var searchParam = formObject.searchValue.value;
    searchParam=searchParam.replace(/-/g,"");
    formObject.searchValue.value=searchParam;
    if(formObject.searchValue.value==''){
        alert("Please enter keyword name");
        formObject.searchValue.focus();
        return false;
    }else if(isWhitespace(searchParam)){
      alert("White space not Allowed. Please verify.");
      formObject.searchValue.focus();
      return false;
    }else{
        formObject.method.value="quicksearch";
        formObject.action=url+'/SearchAction';
        formObject.submit();
    }
}
function specialitySearch(formName){
    var formObject=document.forms[formName];
    if(formObject.priceValue == null){
        if((formObject.specialtyOption!=null && formObject.specialtyOption.value=='-1')){
            alert("Please select specialty keyword");
            formObject.specialtyOption.focus();
            return false;
        } else if((formObject.specialtyOption.value=='')){
            return false;
        }
        else{
            formObject.method.value="specialitysearch";
            formObject.action=url+'/specialAction';
            formObject.submit();
        }
    }
    if(formObject.specialtyOption == null){
        if((formObject.priceValue!=null && formObject.priceValue.value=='')){
            alert("Please select price keyword");
            formObject.priceValue.focus();
            return false;
        }else{
            formObject.method.value="pricesearch";
            formObject.action=url+'/specialAction';
            formObject.submit();
        }
    }
    else if((formObject.specialtyOption.value=='')){
        return false;
    }
    if((formObject.specialtyOption.value=='-1')&&(formObject.priceValue.value=='')){
        alert("Please select specialty/price keyword");
        formObject.specialtyOption.focus();
        return false;
    }else if (formObject.priceValue!=null) {

        if((formObject.priceValue.value == '')&&(formObject.specialtyOption.value != ''))
            formObject.method.value="specialitysearch";
        else if((formObject.priceValue.value != '')&&(formObject.specialtyOption.value == ''))
            formObject.method.value="pricesearch";
        else
            formObject.method.value="pricespecialitysearch";

        formObject.action=url+'/specialAction';
        formObject.submit();
    }
}
function priceSearch(formName){
    var formObject=document.forms[formName];
    if(formObject.priceValue.value==''){
        alert("Please select price keyword");
        formObject.priceValue.focus();
        return false;
    }else{
        formObject.method.value="pricesearch";
        formObject.action=url+'/priceAction';
        formObject.submit();
    }
}
function goHome(formName){
    var formObject=document.forms[formName];
    //offshore Customer Login
    formObject.mode.value="home";

    formObject.method.value="login";

    formObject.action=url+'/HomeAction';

    formObject.submit();
}
function viewInitialCart(formName){
    var formObject=document.forms[formName];
    formObject.methodname.value="viewCart";
    formObject.submit();
}
function viewCart(formName){

    var formObject=document.forms[formName];
    if(formObject.methodname == null){
        formObject=formObject[1];
    }
    formObject.methodname.value="viewCart";
    formObject.action=url+'/ShoppingCartAction';
    formObject.submit();
}
function openCustomerService(){

            windowName = window.open(hostURL+contextRoot+'/jsp/portal/customerServices.jsp','CustomerService','scrollbars=yes,top=10,left=10,width=400,height=350');
            windowName.focus();
}
function openTOC(formName,isbn){

    windowName = window.open(contextRoot+'/portal/'+portalName+'/ProductAction?moreType=TOC&isbn='+isbn,'TableofContents','scrollbars=yes,top=10,left=10,width=450,height=650');
    windowName.focus();
}
function featureSearch(formName,isbnValue){
    var formObjectArray=document.forms[formName];
    var formObject=formObjectArray[0];
    var agt=navigator.userAgent.toLowerCase();
    var ver=parseInt(navigator.appVersion);
    var index=agt.indexOf('firefox');
    if (index==-1)  {
        formObject=formObjectArray[0];
    } else {
        formObject=document.forms[formName];
    }
    formObject.isbn.value=isbnValue;
    formObject.moreType.value="productInfo";
    formObject.action=url+'/LeftProductAction';
    formObject.submit();
}
function moreProducts(formName,bucketID){
    var formObjectArray=document.forms[formName];
    var formObject=formObjectArray[0];
    var agt=navigator.userAgent.toLowerCase();
    var ver=parseInt(navigator.appVersion);
    var index=agt.indexOf('firefox');
    if (index==-1){
        formObject=formObjectArray[0];
    } else {
        formObject=document.forms[formName];
    }
    formObject.isbn.value=bucketID;
    formObject.moreType.value="moreProducts";
    formObject.action=url+'/LeftProductAction';
    formObject.submit();
}
function resultProductSearch(formName,isbnValue){
    var formObject=document.forms[formName];
    formObject.moreType.value="productInfo";
    formObject.isbn.value=isbnValue;
    formObject.submit();
}
function addCart(formName,method,isbn,fromPage){
    var formObject=document.forms[formName];
    formObject.moreType.value=method;
    formObject.isbn.value=isbn;
    formObject.fromPage.value=fromPage;

    formObject.submit();
}
function quickOrder(formName,method){
    var formObject=document.forms[2];

    if(isEmpty(formObject.isbn.value))
    {
        warnEmpty(formObject.isbn,'ISBN')
        return;
    }
    if(isEmpty(formObject.qty.value))
    {
        warnEmpty(formObject.qty,'Qty')
        return;
    }
    if(!isInteger(formObject.qty.value))
    {
        warnInvalid(formObject.qty,'Please enter a valid quantity')
        return;
    }
    formObject.methodname.value=method;
    formObject.submit();
}
function addCartWithQuantity(formName,method,isbn,fromPage){
    var formObject=document.forms[formName];
    formObject.moreType.value=method;
    formObject.isbn.value=isbn;
    formObject.fromPage.value=fromPage;
    var qty = formObject.elements['qty'+isbn].value;
    if(qty>0)
        formObject.submit();
    else
    {
       alert("Please enter a valid quantity");
        formObject.elements['qty'+isbn].focus();
        return;
    }
}
function addToCartWithQuantity(formName,method,isbn,bucketID,fromPage){
    var formObjectArray=document.forms[formName];
    if(formObjectArray.length >1)
        formObject = document.forms[formName];
    else
        formObject = formObjectArray[0];
    formObject.isbn.value=isbn;
    formObject.bucketID.value=bucketID;
    formObject.moreType.value=method;
    formObject.fromPage.value=fromPage;
    var qty = formObject.elements['qty'+bucketID+isbn].value;
    if(qty>0){
    	formObject.action=url+'/ProductAction?isbn='+isbn;    
		formObject.submit();
    }else
    {
        alert("Please enter a valid quantity");
        formObject.elements['qty'+bucketID+isbn].focus();
        return;
    }
}
function addToCart(formName,method,isbn,fromPage){
    var formObjectArray=document.forms[formName];
    var formObject=formObjectArray[0];
    formObject.moreType.value=method;
    formObject.isbn.value=isbn;
    formObject.fromPage.value=fromPage;
    formObject.submit();
}
function sortSearch(formName,sortby,method){
    if(method=="BUCKETSEARCH" || method=="WITHINRESULTSEARCHBUCKET"){
        var formObject = document.forms[formName];
    }
    else{
        var formObjectArray=document.forms[formName];
        var formObject=formObjectArray[0];
        var agt=navigator.userAgent.toLowerCase();
        var ver=parseInt(navigator.appVersion);
        var index=agt.indexOf('firefox');
        if (index==-1) {
            formObject=formObjectArray[0];
        } else {
            formObject=document.forms[formName];
        }
    }
    
    var searchParam;
    if(document.getElementById("withinSearchLowerValue").value!='')
        searchParam=document.getElementById("withinSearchLowerValue").value;
    else
    	searchParam=document.getElementById("withinSearchHiddenValue").value;
    var oldSortBy = formObject.sortBy.value;
    formObject.sortBy.value=sortby;
    formObject.method.value=method;
    if(formObject.sortByType.value=='' || formObject.sortByType.value=='desc' || oldSortBy!=sortby)
        formObject.sortByType.value='asc';
    else
        formObject.sortByType.value='desc';
    
    formObject.pageNo.value='0';
    var oldSortBylower = document.getElementById("sortByLower").value;
    document.getElementById("sortByLower").value=sortby;
    document.getElementById("methodLower").value=method;
    if(document.getElementById("sortByTypeLower").value=='' || document.getElementById("sortByTypeLower").value=='desc' || oldSortBylower!=sortby)
        document.getElementById("sortByTypeLower").value='asc';
    else
        document.getElementById("sortByTypeLower").value='desc';
    document.getElementById("pageNoLower").value='0';
    
    document.getElementById("withinSearchHiddenLowerValue").value=searchParam;
    document.getElementById("withinSearchHiddenValue").value=searchParam;	
    formObject.submit();
}

function sortSearchMore(formName,sortby,method){
    if(method=="BUCKETSEARCH" || method=="WITHINRESULTSEARCHBUCKET"){
        var formObject = document.forms[formName];
    }
    else{
        var formObjectArray=document.forms[formName];
        var formObject=formObjectArray[0];
        var agt=navigator.userAgent.toLowerCase();
        var ver=parseInt(navigator.appVersion);
        var index=agt.indexOf('firefox');
        if (index==-1) {
            formObject=formObjectArray[0];
        } else {
            formObject=document.forms[formName];
        }
    }
    var oldSortBy = formObject.sortBy.value;
    formObject.sortBy.value=sortby;
    formObject.method.value=method;
    if(formObject.sortByType.value=='' || formObject.sortByType.value=='desc' || oldSortBy!=sortby)
        formObject.sortByType.value='asc';
    else
        formObject.sortByType.value='desc';
    formObject.pageNo.value='0';
    formObject.submit();
}

function pageNoSearch(formName,pageNo,method){
    var formObjectArray=document.forms[formName];
    var formObject=formObjectArray[0];

    var agt=navigator.userAgent.toLowerCase();
    var ver=parseInt(navigator.appVersion);
    var index=agt.indexOf('firefox');
    if (index==-1){
        formObject=formObjectArray[0];
    } else {
        formObject=document.forms[formName];
    }
	var searchParam;
	if(document.getElementById("withinSearchLowerValue").value!='')
    searchParam=document.getElementById("withinSearchLowerValue").value;
	else
		searchParam=document.getElementById("withinSearchHiddenValue").value

	document.getElementById("withinSearchHiddenLowerValue").value=searchParam;
	document.getElementById("withinSearchHiddenValue").value=searchParam;
	
    formObject.pageNo.value=pageNo;
    formObject.method.value=method;
	document.getElementById("pageNoLower").value=pageNo;
    document.getElementById("methodLower").value=method;
    formObject.submit();
}
function productSearch(formName,isbnValue){
    var formObjectArray=document.forms[formName];
    if(formObjectArray.length >1)
        formObject = document.forms[formName];
    else
        formObject = formObjectArray[0];
    formObject.isbn.value=isbnValue;    
	formObject.moreType.value="productInfo";
	formObject.action=url+'/ProductAction?isbn='+isbnValue;	
    formObject.submit();
}
function productSearchWithoutLeft(formName,isbnValue){
    var formObject=document.forms[2];
    formObject.isbnProduct.value=isbnValue;
    formObject.moreType.value="productInfo";
    formObject.action=url+'/ProductAction?isbn='+isbnValue;
    formObject.submit();
}
function productSearchFromMoreProducts(formName,isbnValue){
    var formObject=document.forms[formName];
    formObject.isbn.value=isbnValue;
    formObject.moreType.value="productInfo";
    formObject.submit();
}
function withinResultsSearch(formName,methodname){
    if(methodname=="WITHINRESULTSEARCHBUCKET"){
        var formObject=document.forms[formName];
    }else{
        var formObjectArray=document.forms[formName];
        var formObject=formObjectArray[0];

        var agt=navigator.userAgent.toLowerCase();
        var ver=parseInt(navigator.appVersion);
        var index=agt.indexOf('firefox');
        if (index==-1) {
            formObject=formObjectArray[0];
        } else {
            formObject=document.forms[formName];
        }
    }
    var searchParam;
    searchParam=formObject.withinSearchValue.value;
    var result=true;
    if(searchParam==''){
        alert("Please enter at least one search term.");
        result= false;
    }else if(isWhitespace(searchParam)){
      alert("White space not Allowed");
      result= false;
    }else if(!(isAlphanumericWithSpace(searchParam))){
      alert("Special Character not Allowed");
      result= false;
    }else{		
        formObject.method.value=methodname;
        formObject.pageNo.value='0';
        formObject.sortByType.value='';
        formObject.withinSearchHiddenValue.value=searchParam;
		formObject.submit();
		//result= true;
    }
    return result;
}


function withinResultsSearchLower(formName,methodname){
    if(methodname=="WITHINRESULTSEARCHBUCKET"){
        var formObject=document.forms[formName];
    }else{
        var formObjectArray=document.forms[formName];
        var formObject=formObjectArray[0];

        var agt=navigator.userAgent.toLowerCase();
        var ver=parseInt(navigator.appVersion);
        var index=agt.indexOf('firefox');
        if (index==-1) {
            formObject=formObjectArray[0];
        } else {
            formObject=document.forms[formName];
        }
    }
    var searchParam;
    searchParam=document.getElementById("withinSearchLowerValue").value;
	var result=true;
    if(searchParam==''){
        alert("Please enter at least one search term.");
        result= false;
    }else if(isWhitespace(searchParam)){
      alert("White space not Allowed");
      result= false;
    }else if(!(isAlphanumericWithSpace(searchParam))){
      alert("Special Character not Allowed");
      result= false;
    }else{
		document.getElementById("methodLower").value=methodname;
		document.getElementById("pageNoLower").value='0';
		document.getElementById("sortByTypeLower").value='';
		document.getElementById("withinSearchHiddenLowerValue").value=searchParam;
		document.getElementById("method").value=methodname;
		document.getElementById("pageNo").value='0';
		document.getElementById("sortByType").value='';
		document.getElementById("withinSearchHiddenValue").value=searchParam;
		result= true;		
    }
    return result;
}


function withinResultsSearchMore(formName,methodname){
    var formObject=document.forms[formName];
    var searchParam;
    searchParam=formObject.withinSearchValue.value;
    var result=true;
    if(searchParam==''){
        alert("Please enter at least one search term.");
        result= false;
    }else if(isWhitespace(searchParam)){
      alert("White space not Allowed");
      result= false;
    }else if(!(isAlphanumericWithSpace(searchParam))){
      alert("Special Character not Allowed");
      result= false;
    }else{
        formObject.method.value=methodname;
        formObject.pageNo.value='0';
        formObject.sortByType.value='';
        formObject.withinSearchHiddenValue.value=searchParam;
        result= true;
    }
    return result;
}
function disableShipDetail(formName) {
        var form=document.forms[formName];
        form.sfirstname.disabled=false;
        form.slastname.disabled=false;
        form.sattn.disabled=false;
        form.saddress1.disabled=false;
        form.saddress2.disabled=false;
        form.scity.disabled=false;
        form.sstate.disabled=false;
        form.scountry.disabled=false;
        form.szip.disabled=false;
        form.stitle.disabled=false;
        form.sorganization.disabled=false;

    }
function disableOnLoad(formName) {
    var form=document.forms[formName];
    for (var i=0; i<form.billtoshiptosame.length; i++)
        if (form.billtoshiptosame[ i ].checked)
            status=form.billtoshiptosame[ i ].value;

    if (status=="true")
        disableShippingDetails(form);
    else
        enableShippingDetails(form);
}
function shipAsBill(radio,formName) {
     var form=document.forms[formName];
     if(radio.value=="true")
     {
        form.sfirstname.value=form.bfirstname.value;
        form.slastname.value=form.blastname.value;
        form.sattn.value=form.battn.value;
        form.saddress1.value=form.baddress1.value;
        form.saddress2.value=form.baddress2.value;
        form.scity.value=form.bcity.value;
        form.sstate.value=form.bstate.value;
        form.stitle.value=form.customerType.value;
        form.sorganization.value=form.borganization.value;
        var choice = form.bcountry.selectedIndex;
        form.scountry.selectedIndex = choice;
        form.szip.value=form.bzip.value;

        form.sfirstname.disabled=true;
        form.slastname.disabled=true;
        form.sattn.disabled=true;
        form.saddress1.disabled=true;
        form.saddress2.disabled=true;
        form.scity.disabled=true;
        form.sstate.disabled=true;
        form.scountry.disabled=true;
        form.szip.disabled=true;
        form.stitle.disabled=true;
        form.sorganization.disabled=true;
     }
     else {
        enableShippingDetails(form);
        form.sfirstname.value="";
        form.slastname.value="";
        form.sattn.value="";
        form.saddress1.value="";
        form.saddress2.value="";
        form.scity.value="";
        form.sstate.value="";
        form.scountry.selectedIndex = 0;
        form.szip.value="";
        form.stitle.value="";
        form.sorganization.value="";

     }
}
function enableShippingDetails(form) {
    form.sfirstname.disabled=false;
    form.slastname.disabled=false;
    form.sattn.disabled=false;
    form.saddress1.disabled=false;
    form.saddress2.disabled=false;
    form.scity.disabled=false;
    form.sstate.disabled=false;
    form.scountry.disabled=false;
    form.szip.disabled=false;
    form.stitle.disabled=false;
    form.sorganization.disabled=false;

}
function disableShippingDetails(form) {
    form.sfirstname.disabled=true;
    form.slastname.disabled=true;
    form.sattn.disabled=true;
    form.saddress1.disabled=true;
    form.saddress2.disabled=true;
    form.scity.disabled=true;
    form.sstate.disabled=true;
    form.scountry.disabled=true;
    form.szip.disabled=true;
    form.stitle.disabled=true;
    form.sorganization.disabled=true;

}
function instGoPayment(formName,method) {
    var formObject = document.forms[formName];
    formObject.method.value=method;
    if( formObject.purchaseOrderNumber.value ) {
      var iChars = "#*";
      for (var i = 0; i < formObject.purchaseOrderNumber.value.length; i++) {
        if (iChars.indexOf(formObject.purchaseOrderNumber.value.charAt(i)) != -1) {
        alert ("Purchase Order should not have # or * special characters.");
        return;
        }
      }
    }
    if(isEmpty(formObject.purchaseOrderNumber.value))
    {
        warnEmpty(formObject.purchaseOrderNumber,'PO Number and then Continue')
        return;
    }

    formObject.submit();
}
function goPayment(formName,method){
    
    var notAllowedCharsInAddress="!#*<>?+=";
    var notAllowedCharsInAttn="!#*<>?+=";
    var notAllowedCharsInName="`!@#$%^&*()_+={}[]|\\\":;<>?1234567890";
    var notAllowedCharsInCity="`~!@#$%^*()_+={}[]|\\'\":;<>?/1234567890";
    var notAllowedCharsInFax="abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    var notAllowedCharsInOrg="!#*<>?+=";
    
    var formObject=document.forms[formName];
    formObject.method.value=method;
    
    ///////// BILLING ADDRESS VALIDATIONS
    
    if(isEmpty(formObject.bfirstname.value) || isCharsInBag(notAllowedCharsInName,formObject.bfirstname.value))
    {
        if(isEmpty(formObject.bfirstname.value)){
            warnEmpty(formObject.bfirstname,'a first name for billing purposes.')
        }else{
            warnInvalid(formObject.bfirstname,'Billing - First Name \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
        }
        return;
    }
    if(isEmpty(formObject.blastname.value) || isCharsInBag(notAllowedCharsInName,formObject.blastname.value))
    {
        if(isEmpty(formObject.blastname.value)){
            warnEmpty(formObject.blastname,'a last name for billing purposes.')
        }else{
            warnInvalid(formObject.blastname,'Billing - Last Name \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
        }
        return;
    }
    if(!isEmpty(formObject.borganization.value) && isCharsInBag(notAllowedCharsInOrg,formObject.borganization.value) )
    {
        warnInvalid(formObject.borganization,'Billing - Organization/Company \n\nThe following characters are not permitted in this field: \n- "#" or "*" or "!" ')
        return;
    }
    if(!isEmpty(formObject.battn.value) && isCharsInBag(notAllowedCharsInAttn,formObject.battn.value))
    {
        warnInvalid(formObject.battn,'Billing - Attention \n\nThe following characters are not permitted in this field: \n- "#" or "*" or "!" ')
        return;
    }
    if(isEmpty((formObject.baddress1.value)))
    {
        warnEmpty(formObject.baddress1,'a street address for billing purposes.')
        return;
    }
    if( isCharsInBag(notAllowedCharsInAddress,formObject.baddress1.value) )
    {
        alert('Billing - Street Address 1 \n\nThe following characters are not permitted in this field: \n- "#" or "*" or "!" ');
        return;
    }
    if(!isEmpty((formObject.baddress2.value)) && isCharsInBag(notAllowedCharsInAddress,formObject.baddress2.value) )
    {
        warnInvalid(formObject.baddress2,'Billing - Street Address 2 \n\nThe following characters are not permitted in this field: \n- "#" or "*" or "!" ')
        return;
    }
    if(isEmpty(formObject.bcity.value))
    {
        warnEmpty(formObject.bcity,'a city for your billing address.')
        return;
    }
    if( isCharsInBag(notAllowedCharsInCity,formObject.bcity.value) )
    {
        warnInvalid(formObject.bcity,'Billing - City \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- special characters (except "." and "-") ')
        return;
    }
    if(isEmpty(formObject.bstate.value))
    {
        warnEmpty(formObject.bstate,'a state abbreviation for your billing address.')
        return;
    }
    if(!isAlphabetic(formObject.bstate.value))
    {
        warnInvalid(formObject.bstate,'Invalid characters used in billing address state.')
        return;
    }
    if(formObject.bstate.value.length!=2)
    {
        warnInvalid(formObject.bstate,'Please enter 2 valid characters in billing address state.')
        return;
    }
    if(isEmpty(formObject.bcountry.value))
    {
        warnEmpty(formObject.bcountry,'billing address country')
        return;
    }
    if(isEmpty(formObject.bzip.value))
    {
        warnEmpty(formObject.bzip,'a zip code for your billing address.')
        return;
    }
    if(formObject.bzip.value.length!=5)
    {
        warnInvalid(formObject.bzip,'Please enter a five digit zip code for your billing address.')
        return;
    }    
    else {
        if(formObject.bcountry.value=='US')
        {
            if(!checkZIPCode(formObject.bzip,false))
            return;
        }
        else
        {
            if(!isNonnegativeInteger(formObject.bzip.value))
            {
                alert("Please enter a valid billing zip or postal code ");
                formObject.szip.focus();
                return;
            }
        }
    }
    if(isEmpty(formObject.bphonenumber.value))
    {
        warnEmpty(formObject.bphonenumber,'a phone number we can use to contact you for billing purposes.')
        return;
    }
    if(formObject.bphonenumber.value.length!=10)
    {
        warnInvalid(formObject.bphonenumber,'Please enter a valid 10 digit billing phone number.')
        return;
    }
    if(!isEmpty(formObject.bphonenumber.value)&& isCharsInBag(notAllowedCharsInFax,formObject.bphonenumber.value))
    {
        warnInvalid(formObject.bphonenumber,'Please enter a valid phone number we can use to contact you for billing purposes.');;
        formObject.bphonenumber.focus();
        return;
    }
    if(!isEmpty(formObject.bextension.value)&&isCharsInBag(notAllowedCharsInFax,formObject.bextension.value))
    {
        warnInvalid(formObject.bextension,'Please enter a valid billing extension.');
        return;
    }
    if(isEmpty(formObject.bemail.value))
    {
        warnEmpty(formObject.bemail,'your email address.')
        return;
    }
    else
    {
         if (formObject.bemail.value.length >0) {
             i=formObject.bemail.value.indexOf("@")
             j=formObject.bemail.value.indexOf(".",i)
             k=formObject.bemail.value.indexOf(",")
             kk=formObject.bemail.value.indexOf(" ")
             jj=formObject.bemail.value.lastIndexOf(".")+1
             len=formObject.bemail.value.length

            if ((i>0) && (j>(1+1)) && (k==-1) && (kk==-1) && (len-jj >=2) && (len-jj<=3)) {
            }
            else {
                alert("Please enter a valid email address.");
                return;
            }

         }
    }
    if(!isEmpty(formObject.bfaxnumber.value)&& formObject.bfaxnumber.value.length!=10)
    {
        warnInvalid(formObject.bfaxnumber,'Please enter a valid 10 digit fax number.')
        return;
    }
    if(!isEmpty(formObject.bfaxnumber.value)&& isCharsInBag(notAllowedCharsInFax,formObject.bfaxnumber.value))
    {
        warnInvalid(formObject.bfaxnumber,'Invalid characters are being used in fax number.');
        return;
    }
    
    
    ///////// SHIPPING ADDRESS VALIDATIONS
    
    if(formObject.sfirstname.disabled==false)
    {
        if(isEmpty(formObject.sfirstname.value) || isCharsInBag(notAllowedCharsInName,formObject.sfirstname.value))
        {
            if(isEmpty(formObject.sfirstname.value)){
                warnEmpty(formObject.sfirstname,'a first name for shipping purposes.')
            }else{
                warnInvalid(formObject.sfirstname,'Shipping - First Name \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
            }
            return;
        }
        if(isEmpty(formObject.slastname.value) || isCharsInBag(notAllowedCharsInName,formObject.slastname.value))
        {
            if(isEmpty(formObject.slastname.value)){
                warnEmpty(formObject.slastname,'a last name for shipping purposes.')
            }else{
                warnInvalid(formObject.slastname,'Shipping - Last Name \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
            }
            return;
        }
        if(!isEmpty(formObject.sorganization.value)&& isCharsInBag(notAllowedCharsInOrg,formObject.sorganization.value) )
        {
            warnInvalid(formObject.sorganization,'Shipping - Organization/Company \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
            return;
        }
        if(!isEmpty(formObject.sattn.value)&& isCharsInBag(notAllowedCharsInAttn,formObject.sattn.value))
        {
            warnInvalid(formObject.sattn,'Shipping - Attention \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
            return;
        }
        if(isEmpty((formObject.saddress1.value)) )
        {
            warnEmpty(formObject.saddress1,'an address for shipping purposes.')
            return;
        }
        if( isCharsInBag(notAllowedCharsInAddress,formObject.saddress1.value) )
        {
            alert('Shipping - Street Address 1 \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ');
            return;
        }
        if(!isEmpty((formObject.saddress2.value))&&isCharsInBag(notAllowedCharsInAddress,formObject.saddress2.value) )
        {
            warnInvalid(formObject.saddress2,'Shipping - Street Address 2 \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- "#" or "*" or "!" ')
            return;
        }
        if(isEmpty(formObject.scity.value))
        {
            warnEmpty(formObject.scity,'a city for your shipping address.')
            return;
        }
        if( isCharsInBag(notAllowedCharsInCity,formObject.scity.value) )
        {
            warnInvalid(formObject.scity,'Shipping - City \n\nThe following characters are not permitted in this field: \n- numeric characters (0-9) \n- special characters (except "." and "-") ')
            return;
        }
        if(isEmpty(formObject.sstate.value))
        {
            warnEmpty(formObject.sstate,'a state abbreviation for your shipping address.')
            return;
        }
        if(formObject.sstate.value.length!=2)
        {
            warnInvalid(formObject.sstate,'Please enter valid 2 characters in shipping address state.')
            return;
        }
        if(!isAlphabetic(formObject.sstate.value))
        {
            warnInvalid(formObject.sstate,'Please enter valid 2 characters in shipping address state.')
            return;
        }
        if(isEmpty(formObject.scountry.value))
        {
            warnEmpty(formObject.scountry,'shipping country')
            return;
        }

        if(isEmpty(formObject.szip.value))
        {
            warnEmpty(formObject.szip,'a zip code for your shipping address.')
            return;
        }
        if(formObject.szip.value.length!=5)
        {
            warnInvalid(formObject.szip,'Please enter a valid 5 digit shipping zip or postal code')
            return;
        }        
        else
        {
            if(formObject.bcountry.value=='US')
            {
                if(!checkZIPCode(formObject.szip,false))
                return;
            }
            else
            {
                if(!isNonnegativeInteger(formObject.szip.value))
                {
                    alert("Please enter a valid shipping zip or postal code");
                    formObject.szip.focus();
                    return;
                }
            }
        }
    }
    enableShippingDetails(formObject);
    formObject.submit();
}
function updatePaymentCart(formName,method){
    var formObject=document.forms[formName];
    formObject.method.value=method;
    enableShippingDetails(formObject);
    formObject.submit();
}
function removeCartFromPayment(formName,isbn){
    var formObject=document.forms[formName];
    formObject.method.value="removeCart";
    formObject.removeIsbn.value=isbn;
    formObject.submit();
}
function instProcessOrder(formName,method,totalPrice){
    var formObject=document.forms[formName];
    formObject.method.value=method;
    formObject.total.value=totalPrice;
    formObject.submit();
}
function updateInstPaymentCart(formName,method){
    var formObject=document.forms[formName];
    formObject.method.value=method;
    formObject.submit();
}
function processOrder(formName,method,totalPrice){
    var formObject=document.forms[formName];
    formObject.method.value=method;
    formObject.total.value=totalPrice;
    enableShippingDetails(formObject);
    currentDate=new Date() ;
    currentMonth=currentDate.getMonth() + 1;
    currentYear=currentDate.getYear() ;
    if( totalPrice > 0 ){
        if(formObject.ccnumber.value == ''){
          alert("Please enter credit card number");
          formObject.ccnumber.focus();
          return;
        }
        if ( currentYear > formObject.yy.options[formObject.yy.selectedIndex].text ) {
            alert("Please check your expiration date.");
        }
        else {
            if ( currentYear == formObject.yy.options[formObject.yy.selectedIndex].text
                    && currentMonth > formObject.mm.options[formObject.mm.selectedIndex].text ){
                alert("Please check your expiration date.");
            }
            else {
                formObject.submit();
            }
        }
    } else {
        formObject.submit();
    }
}
function removeCart(formName,isbn){
    var formObject=document.forms[2];
    formObject.methodname.value="removeCart";
    formObject.removeIsbn.value=isbn;
    formObject.submit();
}
function updateCart(formName){
    var formObject=document.forms[2];
    formObject.methodname.value="updateCart";
    formObject.submit();
}
function continueCart(formName){
    var formObject=document.forms[2];
    formObject.methodname.value="continueshopping";
    formObject.submit();
}
function checkoutCart(formName){
    var formObject=document.forms[2];
    formObject.methodname.value="checkoutCart";
    formObject.action=secureURL+'/ShoppingCartAction';
    formObject.submit();
}
function addCoupon(formName){
    var formObject=document.forms[2];
    if(isEmpty(formObject.certnumber.value))
    {
        alert("Certificate number should not be empty. Please verify");
        formObject.certnumber.focus();
        return;
    }
    if(!isAlphanumeric(formObject.certnumber.value))
    {
        warnInvalid (formObject.certnumber,'The gift certificate number you have entered is invalid');
        return;
    }
    formObject.methodname.value="addCoupon";
    formObject.submit();
}
function removeCoupon(formName,isbn)
{
    var formObject=document.forms[2];
    formObject.methodname.value="removeCoupon";
    formObject.removeCouponIsbn.value=isbn;
    formObject.submit();
}
function removeCouponFromPayment(formName,isbn)
{
    var formObject=document.forms[2];
    formObject.method.value="removeCoupon";
    formObject.removeCouponIsbn.value=isbn;
    formObject.submit();
}
function submitAdvanceForm(formName){
    var notAllowedChars = "%_+=|\\:;\"'?><";
    var formObject=document.forms[formName];

    if((formObject.wordsInTitle.value == '') && (formObject.authorname.value == '') && (formObject.isbn.value == '') && (formObject.wordsintable.value == '') && (formObject.startDate.value == '') && (formObject.endDate.value == '') && (formObject.category.value == '')  && (formObject.medium.value == '')){
    if ( formObject.price != null ) {
        if ( formObject.price.value == '' ) {
            alert("Please enter at least one search term.");
            return false;
        }
    } else {
        alert("Please enter at least one search term.");
        return false;
    }
    }
    if(formObject.wordsInTitle.value != ''){
         if(isWhitespace(formObject.wordsInTitle.value)){
          alert("Spaces are not allowed");
          formObject.wordsInTitle.focus();
          return false;
        }
        if(isCharsInBag(notAllowedChars,formObject.wordsInTitle.value))
        {
            warnInvalid(formObject.wordsInTitle,'Invalid title')
            return false;
        }
    }
    if(formObject.authorname.value != ''){
        if(isWhitespace(formObject.authorname.value)){
            alert("Spaces are not Allowed");
            formObject.authorname.focus();
            return false;
        }
        if(isCharsInBag(notAllowedChars,formObject.authorname.value))
        {
            warnInvalid(formObject.authorname,'Invalid author name')
            return false;
        }
    }
    if(formObject.wordsintable.value != ''){
        if(isWhitespace(formObject.wordsintable.value)){
            alert("Spaces are not Allowed");
            formObject.wordsintable.focus();
            return false;
        }
        if(isCharsInBag(notAllowedChars,formObject.wordsintable.value))
        {
            warnInvalid(formObject.wordsintable,'Invalid table of content')
            return false;
        }
    }
    if(formObject.isbn.value != ''){
        var searchParam = formObject.isbn.value;
        searchParam=searchParam.replace(/-/g,"");
        searchParam=searchParam.replace(/ /g,"");
        formObject.isbn.value=searchParam;
        if(isCharsInBag(notAllowedChars,formObject.isbn.value))
        {
              alert("Special characters are not allowed for ISBN, please change the value");
              formObject.isbn.focus();
              return false;
        }
    }
    if((formObject.startDate.value != '') && (formObject.endDate.value == '')){
         alert("Please enter End Date");
         formObject.endDate.focus();
         return false;
    }else if((formObject.startDate.value == '') && (formObject.endDate.value != '')){
        alert("Please enter Start Date");
        formObject.startDate.focus();
        return false;

    }else if((formObject.startDate.value != '') || (formObject.endDate.value != '')){
        var startDate =formObject.startDate.value;
        var endDate =formObject.endDate.value;
        if(!compareDate(startDate,endDate)){
            alert('End date should be greater than the start date. Please verify the end date');
            formObject.endDate.focus();
            return false;
        }

    }
    formObject.method.value="advanceSearch";
    return true;
}
function removeChars(formName) {
    var form=document.forms[formName];
    var ccnum = form.ccnumber.value;
    while(ccnum.indexOf(" ") > -1) {
        ccnum = ccnum.replace(" ","");
    }
    while(ccnum.indexOf("-") > -1) {
        ccnum = ccnum.replace("-","");
    }
    form.ccnumber.value = ccnum;
}
function isCharsInBag (s, bag) {
    var i;
    for (i = 0; i < s.length; i++)
    {
        var c = s.charAt(i);
        if (bag.indexOf(c) != -1) return true;
    }
    return false;
}
function isAlphanumericWithSpace (s) {
    var i;
    if (isEmpty(s))
        if (isAlphanumeric.arguments.length == 1)
            return defaultEmptyOK;
    else
        return (isAlphanumeric.arguments[1] == true);
    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number or letter.
        var c = s.charAt(i);
        if (! (isLetter(c) || isDigit(c) || c==" " ) )
        return false;
    }
    // All characters are numbers or letters.
    return true;
}
function continueCartFromProduct(formName){

    var formObject=document.forms[formName];
    formObject.methodname.value="continueshopping";
    formObject.action=url+'/ShoppingCartAction';
    formObject.submit();
}
function validateUserForm(formName,amethod){
    var formObject=document.forms[formName];
    var userName=formObject.userName.value;
    var password = formObject.password.value ;
    if(userName == ''){
        alert('Please enter username');
        formObject.password.value='';
        formObject.userName.focus();
    }else if(password == ''){
        alert('Please enter password');
        formObject.password.focus();
    }
    formObject.method.value=amethod;
    formObject.action=url;
    formObject.submit();
}
function forgotPassword(formName,method){
    var formObject =document.forms[formName];
    formObject.method.value=method;
    formObject.action=url+"/ForgotPasswordAction";
    formObject.submit();
}
function validateForgotPasswordForm(formName,method){
    var formObject=document.forms[formName];
    var user_name=stripWhitespace(formObject.userName.value);
    var e_mail_id=stripWhitespace(formObject.emailId.value);
    formObject.method.value=method;
    if(user_name == ''){
        alert("Please enter your Login Name to proceed");
        formObject.userName.focus();
        return;
    }else if(e_mail_id == ''){
        alert("Please enter an email address to proceed");
        formObject.emailId.focus();
        return;
    }
    else if(!isEmail(formObject.emailId.value,false)){
        alert("Please enter valid email address");
        formObject.emailId.focus();
        return;
    }else{
        formObject.action=url+"/ForgotPasswordAction";
        formObject.submit();
    }
}
function isEmail (s)
{   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
       else return (isEmail.arguments[1] == true);

    if (isWhitespace(s)) return false;

    // there must be >= 1 character before @, so we
    // start looking at character position 1
    // (i.e. second character)
    var i = 1;
    var sLength = s.length;
    // look for @
    while ((i < sLength) && (s.charAt(i) != "@"))
    { i++
    }
    if ((i >= sLength) || (s.charAt(i) != "@")) return false;
    else i += 2;
    // look for .
    while ((i < sLength) && (s.charAt(i) != "."))
    { i++
    }
    // there must be at least one character after the .
    if ((i >= sLength - 1) || (s.charAt(i) != "."))
        return false;
    else
        return true;
}
function openLogout() {
    var message="Are you sure you want to logout?";
    if(confirm(message)){
        closeAll();
        window.location=url;
    }
}
openWins = new Array();
    curWin = 0;

function openWin(page) {
    openWins[curWin++] = window.open(page,'_blank');
}
function closeAll() {
        for(i=0; i<openWins.length; i++) if (openWins[i] && !openWins[i].closed) openWins[i].close();
}
function openChangePassword(formName){
    var formObject=document.forms[formName];
    formObject.action=url+'/ChangePasswordAction';
    formObject.submit();
}
function validateChangePasswordForm(formName) {
    var formObject=document.forms[formName];
    var userId=formObject.userID.value;
    var oldpassword = formObject.oldPassword.value ;
    var newpassword = formObject.newPassword.value ;
    var confirmpassword = formObject.confirmPassword.value ;
    if(userId == ''){
        alert('Please enter UserName');
        formObject.oldPassword.value='';
        formObject.userID.focus();
    }else if(oldpassword == ''){
        alert('Please enter Current Password');
        formObject.oldPassword.focus();
    }else if(newpassword == ''){
        alert('Please enter New Password');
        formObject.newPassword.focus();

    }else if(newpassword.length < 4 | newpassword.length>10){
        alert('The password must be alphanumeric,be between 4 and 10 characters, and contain at least 2 special characters or numbers, in addition to characters');
        formObject.newPassword.value='';
        formObject.newPassword.focus();
    }else if(oldpassword == newpassword){
        alert('Old password and New password should not be the same. Please enter different New password');
        formObject.newPassword.value='';
        formObject.newPassword.focus();
    }else if(confirmpassword == '' | confirmpassword != newpassword){
        alert('Confirm Password must match the New Password');
        formObject.confirmPassword.value='';
        formObject.confirmPassword.focus();
    }else if(confirm(changeMessage)){
        formObject.action=url+'/ChangePasswordAction';
        formObject.submit();
    }
}
function openPrivacyPolicy() {
    windowName = window.open(hostURL+contextRoot+'/jsp/portal/base/privacy.jsp','PrivacyPolicy','scrollbars=yes,top=10,left=10,width=650,height=650');
    windowName.focus();
}
function openTerms() {
    windowName = window.open(hostURL+contextRoot+'/jsp/portal/base/terms_conditions.jsp','TermsandCondititons','scrollbars=yes,top=10,left=10,width=650,height=650');
    windowName.focus();
}
