  function dpi()
  {
    $('<div id="dpi_div_id" style="position:absolute; width:1in; padding:0px; visibility:hidden;"></div>').appendTo('#content');
	var w = document.getElementById('dpi_div_id').offsetWidth;
	return w;
  }

  //
  function show(n)
  {
    var url = "/book/shelfMgt/showShelvesAndBooks";

    $.ajax({
    url: url,
    type: "post",
    dataType: "html",
    timeout: 20000,
    data: {
      shelf_type: $('#shelf_type_id').val()
    },
    success: function(msg) {
      $('#content1').html(msg);
    }
    });
  }

  var coord_width = 240;
  var coord_height = 300;
  var jcrop_api = null;
  function upload_tmp_file()
  {
    if ( jcrop_api != null )
    {
      $('#crop_image_id').empty();
    }

    if ($('#upload_file').val() == '')
    {
      alert('请您选择上传的图片');
      $('#upload_file').focus();
      return;
    }
    else if ( /jpg|jpeg|png|gif|bmp/i.test( $('#upload_file').val().match(/\.(\w+)$/)[0] )==false )
    {
      alert("您只能上传图片文件");
      return false;
    }

    var url = "/userupload/upload/upload_tmp_file";
    $.ajaxFileUpload({
      url: url,
      secureuri: false,
      fileElementId: 'upload_file',
      dataType: 'json',
      success: function (data) {
        if ( data.result!=null )
        {
          var result = data.result;
          var img_width  = data.width;
          var img_height = data.height;
          var sign = result.substr(0, 1);
          if (sign == "N")
          {
            var message = result.substr(1);
            alert(message);
          }
          else
          {
            $('#preview_div_id').show();
            $('#save_crop_image').show();

            $('#file_name_id').attr('value', data.file_name);

            coord_width = img_width;
            coord_height = img_height;
            $('#crop_image_id').show();
            $('#crop_image_id').css({
              width:  img_width + 'px',
              height: img_height + 'px'
            });

            $('<img id="upload_image_id" />').appendTo('#crop_image_id');
            $('#upload_image_id').attr("src", data.image_path);
            $('#upload_image_id').css({
              width:  img_width + 'px',
              height: img_height + 'px'
            });

            $('#preview_image').attr("src", data.image_path);
            $('#preview_image').css({
              width:  img_width + 'px',
              height: img_height + 'px'
            });

            jcrop_api = $.Jcrop('#upload_image_id');
            jcrop_api.setSelect([ 50, 50, 150, 175 ]);
            jcrop_api.setOptions({
              allowSelect: !!this.checked,
              onChange: showPreview,
              onSelect: showPreview,
              aspectRatio: 0.8,
              minSize: [40, 50]
            });
            jcrop_api.focus();
          }
        }
        else
        {
          $('#group_image_message').html(data);
          $('#group_image_helper').show();
        }
      }
    });
  }

  function updateCoords(c)
  {
    $('#crop_image_x').attr('value', c.x);
    $('#crop_image_y').attr('value', c.y);
    $('#crop_image_w').attr('value', c.w);
    $('#crop_image_h').attr('value', c.h);
  };

  function showPreview(coords)
  {
    if (parseInt(coords.w) > 0)
    {
      updateCoords(coords);

      var rx = 100 / coords.w;
      var ry = 100 / coords.h;

      jQuery('#preview_image').css({
        width: Math.round(rx * coord_width) + 'px',
        height: Math.round(ry * coord_height * 1.25) + 'px',
        marginLeft: '-' + Math.round(rx * coords.x) + 'px',
        marginTop: '-' + Math.round(ry * coords.y * 1.25) + 'px'
      });
    }
  }

  function save_image(type)
  {
    var url = "/userupload/upload/save_image";

    var application_id = '0';
    if ( type=='group' )
      application_id = $('#group_id_id').val();
    else if ( type=='user' )
      application_id = $('#user_id_id').val();
    else
      application_id = $('#shelf_id_id').val();

    var i_x = $('#crop_image_x').val();
    var i_y = $('#crop_image_y').val();
    var i_w = $('#crop_image_w').val();
    var i_h = $('#crop_image_h').val();
    var file_name = $('#file_name_id').val();

    $.ajax({
      url: url,
      type: "post",
      dataType: "html",
      timeout: 20000,
      data: {
        application_id: application_id,
        application_type: type,
        file_name: file_name,
        src_x: i_x,
        src_y: i_y,
        src_w: i_w,
        src_h: i_h
      },
      success: function(msg) {
        var sign = msg.substr(0, 1);
        var message = msg.substr(1);
        if (sign == "Y")
        {
          $('#profile_image_id').attr('src', message);
          $('#group_image_message').html('头像保存成功！');
        }
        else if (sign == "N")
        {
          $('#group_image_message').html(message);
        }
        else
        {
          $('#group_image_message').html('头像保存没有成功，请您再尝试保存！');
        }
        $('#group_image_helper').show();
      },
      error: function (data, status, e) {
        $('#group_image_message').html(e);
        $('#group_image_helper').show();
      }
    });
  }

  function hide_message(id, indicate)
  {
    if ($('#'+id).is(':visible'))
    {
      $('#'+id).hide();
      $('#'+indicate).attr('src', 'http://static.qidimo.com/images/comp_close.gif');
    }
    else
    {
      $('#'+indicate).attr('src', 'http://static.qidimo.com/images/comp_open.gif');
      $('#'+id).show();
    }
  }

  function hide_and_show(first_id, second_id)
  {
    if ($('#'+first_id).is(':visible'))
    {
      $('#'+first_id).hide();
      $('#'+second_id).show();
    }
    else
    {
      $('#'+second_id).hide();
      $('#'+first_id).show();
    }
  }

  function trige(elem_id, div_id)
  {
    if ($('#'+elem_id).is(':visible'))
    {
      $('#'+elem_id).hide();
      $('#'+div_id).attr('src', 'http://static.qidimo.com/images/comp_close.gif');
    }
    else
    {
      $('#'+elem_id).show();
      $('#'+div_id).attr('src', 'http://static.qidimo.com/images/comp_open.gif');
    }
  }

  function find_my_send_message()
  {
    var url = "/mailbox/mailboxMgt/find_my_send_message";

    $.ajax({
    url: url,
    type: "post",
    dataType: "html",
    timeout: 20000,
    data: {
    },
    success: function(msg) {
      $('#send_mailbox_pagination_id').html(msg);
      $('#send_flag_id').attr('value', 'yes');
    }
    });
  }

  function find_my_accepte_message()
  {
    var url = "/mailbox/mailboxMgt/find_my_accepte_message";

    $.ajax({
    url: url,
    type: "post",
    dataType: "html",
    timeout: 20000,
    data: {
      current_page_id: $('#accept_page_id_id').val()
    },
    success: function(msg) {
      $('#accept_mailbox_pagination_id').html(msg);
      $('#accept_flag_id').attr('value', 'yes');
      tb_init('a.thickbox, area.thickbox, input.thickbox');
    }
    });
  }

  function delete_accept_message(message_id)
  {
    if ( confirm('您确定要删除这条信息？')==true )
    {
      var url = "/mailbox/mailboxMgt/delete_message";

      $.ajax({
      url: url,
      type: "post",
      dataType: "html",
      timeout: 20000,
      data: {
        current_page_id: $('#message_current_page_id_id').val(),
        message_id: message_id,
        message_type: 'accept'
      },
      success: function(msg) {
        var accept_message_num = '0';
        if ( $('#accept_message_num_id').val() == '1' )
          accept_message_num = '0';
        else
          accept_message_num = $('#accept_message_num_id').val()-1;
        $('#accept_message_num_id').attr('value', accept_message_num);
        $('#accept_message_num_div_id').html(accept_message_num);
        $('#accept_mailbox_pagination_id').html(msg);
      }
      });
    }
  }

  function delete_send_message(message_id)
  {
    if ( confirm('您确定要删除这条信息？')==true )
    {
      var url = "/mailbox/mailboxMgt/delete_message";

      $.ajax({
      url: url,
      type: "post",
      dataType: "html",
      timeout: 20000,
      data: {
        current_page_id: $('#message_current_page_id_id').val(),
        message_id: message_id,
        message_type: 'send'
      },
      success: function(msg) {
        var send_message_num = '0';
        if ( $('#send_message_num_id').val() == '1' )
          send_message_num = '0';
        else
          send_message_num = $('#send_message_num_id').val()-1;

        $('#send_message_num_id').attr('value', send_message_num);
        $('#send_message_num_div_id').html(send_message_num);
        $('#send_mailbox_pagination_id').html(msg);
      }
      });
    }
  }

  function accept_message_view(message_id)
  {
    var url = "/mailbox/mailboxMgt/accept_message_view";

    $.ajax({
      url: url,
      type: "post",
      dataType: "html",
      timeout: 20000,
      data: {
        current_page_id: $('#message_current_page_id_id').val(),
        message_id: message_id,
        message_type: 'accept'
      },
      success: function(msg) {
        $('#accept_flag_id').attr('value', 'no');
        $('#accept_page_id_id').attr('value', $('#message_current_page_id_id').val());
        $('#accept_mailbox_pagination_id').html(msg);
        tb_init('a.thickbox, area.thickbox, input.thickbox');
      }
    });
  }

  function send_message_view(message_id)
  {
    var url = "/mailbox/mailboxMgt/send_message_view";

    $.ajax({
      url: url,
      type: "post",
      dataType: "html",
      timeout: 20000,
      data: {
        current_page_id: $('#message_current_page_id_id').val(),
        message_id: message_id,
        message_type: 'send'
      },
      success: function(msg) {
        $('#send_flag_id').attr('value', 'no');
        $('#send_mailbox_pagination_id').html(msg);
        tb_init('a.thickbox2');
      }
    });
  }

  function handleEnter()
  {
    document.onkeydown=myKeyEvent;
  }

  function myKeyEvent(e)
  {
    var key = window.event ? event.keyCode : e.which;
    if (key==13)
    {
      login();
    }
  }

  function login()
  {
    if ($('#email_id').val()=='')
    {
      alert('邮件不能为空');
      $('#email_id').focus();
      return;
    }

    if ($('#password_id').val()=='')
    {
      alert('密码不能为空');
      $('#password_id').focus();
      return;
    }

    if ( document.getElementById('remember_id').checked==true )
    {
      $('#remember_id').attr('value', '1');
    }

    $('#loginFormId').attr('action', '/userLogin/onLogin');
    $('#loginFormId').submit();
  }

  function check_register(form1)
  {
    if ( document.getElementById('user_terms_of_use').checked==false )
    {
      alert('您不同意用户声明吗？');
      return;
    }
    else
      document.getElementById('registerFormId').submit();
  }

  function delete_notification(notification_id)
  {
    if ( confirm('您确定要删除这些通知?')==true )
    {
      $.ajax({
        url:"/userLogin/delete_notification",
        type:"post",
        dataType:"html",
        timeout:20000,
        data: {
          notification_id: notification_id
        },
        success: function(msg) {
          var notification_num = '0';
          if ( $('#notification_num_id').val() == '1' )
            notification_num = '0';
          else
            notification_num = $('#notification_num_id').val()-1;

          $('#notification_num_id').attr('value', notification_num);
          $('#notification_num_div_id').html(notification_num);
          $('#notification_'+notification_id).remove();
        }
      });
    }
    else
      return;
  }

  function show_book_info(helper_id, book_name)
  {
    $('#'+helper_id).css('top', mpy+'px');
    $('#'+helper_id).css('left', mpx+'px');
    $('#'+helper_id).css('position','absolute');

    var book_info = '书名：'+book_name;
    $('#'+helper_id).html(book_info);
    $('#'+helper_id).show();
  }

  function show_book_helper(helper_id)
  {
    $('#'+helper_id).css('top', mpy+'px');
    $('#'+helper_id).css('left', mpx+'px');
    $('#'+helper_id).css('position','absolute');
    $('#'+helper_id).show();
  }

  function hide_book_helper(helper_id)
  {
    $('#'+helper_id).hide();
  }

  var mpx=0,mpy=0;
  function mouseMove(ev){
   ev=ev||window.event;
   var mousePos = mouseCoords(ev);
   mpx=mousePos.x+6;
   mpy=mousePos.y+6;
  }
  function mouseCoords(ev){
   if(ev.pageX||ev.pageY){return {x:ev.pageX, y:ev.pageY};}
   return {x:ev.clientX + document.documentElement.scrollLeft,y:ev.clientY + document.documentElement.scrollTop}
  }
  document.onmousemove=mouseMove;

  function open_book_window(group_id)
  {
    window.open ('/book/bookMgt/open_book_view/'+group_id, '开放新书', 'height=500, width=830, top=100, left=250, toolbar=no, menubar=no, scrollbars=yes, resizable=no, location=no, status=no');
  }

  function send_email()
  {
    if ( $('#recipient_list').val()!='' )
    {
      $('#email_message_id').html('正在发送邮件，请稍候...');
      $('#email_page_helper').show();
      $.ajax({
        url:"/emailMgt/send_email",
        type:"post",
        dataType:"html",
        async:true,
        timeout:20000,
        data: {
          recipient_list: $('#recipient_list').val(),
          personal_message: $('#personal_message').val()
        },
        success: function(msg) {
          $('#email_message_id').html(msg);
        }
      });
    }
    else
    {
      $('#email_message_id').html('请输入Email地址！')
      $('#email_page_helper').show();
      $('#recipient_list').focus();
      $('#indicate_image_id').hide();
    }

    $('#indicate_image_id').hide();
  }

  function display_book_info(helper_id, book_info_id)
  {
    $('#'+helper_id).css('top', mpy-100+'px');
    $('#'+helper_id).css('left', mpx-100+'px');
    $('#'+helper_id).css('position','absolute');

    var book_info = $('#'+book_info_id).html();
    $('#'+helper_id).html(book_info);
    $('#'+helper_id).show();
  }

  function get_check_code()
  {
    $.ajax({
      url:"/checkCode",
      type:"post",
      dataType:"html",
      async:false,
      timeout:20000,
      data: {
        id: 1
      },
      success: function(msg) {
        $('#check_code_image_id').attr('src', 'http://www.qidimo.com/checkCode');
      }
    });
  }

  function getElementPos(elementId)
  {
    var ua = navigator.userAgent.toLowerCase();

    var isOpera = (ua.indexOf('opera') != -1);

    var isIE = (ua.indexOf('msie') != -1 && !isOpera); // not opera spoof

    var el = document.getElementById(elementId);

    if(el.parentNode === null || el.style.display == 'none')
    {
      return false;
    }

    var parent = null;
    var pos = [];
    var box;

    if(el.getBoundingClientRect) //IE
    {
      box = el.getBoundingClientRect();
      var scrollTop = Math.max(document.documentElement.scrollTop, document.body.scrollTop);
      var scrollLeft = Math.max(document.documentElement.scrollLeft, document.body.scrollLeft);
      return {x:box.left + scrollLeft, y:box.top + scrollTop};
    }
    else if(document.getBoxObjectFor) // gecko
    {
      box = document.getBoxObjectFor(el);
      var borderLeft = (el.style.borderLeftWidth)?parseInt(el.style.borderLeftWidth):0;
      var borderTop = (el.style.borderTopWidth)?parseInt(el.style.borderTopWidth):0;
      pos = [box.x - borderLeft, box.y - borderTop];
    }
    else // safari & opera
    {
      pos = [el.offsetLeft, el.offsetTop];
      parent = el.offsetParent;
      if (parent != el)
      {
        while (parent)
        {
          pos[0] += parent.offsetLeft;

          pos[1] += parent.offsetTop;

          parent = parent.offsetParent;
        }
      }
      if (ua.indexOf('opera') != -1 || ( ua.indexOf('safari') != -1 && el.style.position == 'absolute' ))
      {
        pos[0] -= document.body.offsetLeft;
        pos[1] -= document.body.offsetTop;
      }
    }

    if (el.parentNode) { parent = el.parentNode; }
    else { parent = null; }

    while (parent && parent.tagName != 'BODY' && parent.tagName != 'HTML')
    {
      // account for any scrolled ancestors
      pos[0] -= parent.scrollLeft;

      pos[1] -= parent.scrollTop;

      if (parent.parentNode) { parent = parent.parentNode; }

      else { parent = null; }
    }

    return {x:pos[0], y:pos[1]};
  }

  function get_location()
  {
    return window.location.href;
  }

  function copyToClipboard(txt)
  {
        if(window.clipboardData) {
                window.clipboardData.clearData();
                window.clipboardData.setData("Text", txt);
        } else if(navigator.userAgent.indexOf("Opera") != -1) {
             window.location = txt;
        } else if (window.netscape) {
             try {
                  netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
             } catch (e) {
                  alert("被浏览器拒绝！\n请在浏览器地址栏输入'about:config'并回车\n然后将'signed.applets.codebase_principal_support'设置为'true'");
             }
             var clip = Components.classes['@mozilla.org/widget/clipboard;1'].createInstance(Components.interfaces.nsIClipboard);
             if (!clip)
                  return;
             var trans = Components.classes['@mozilla.org/widget/transferable;1'].createInstance(Components.interfaces.nsITransferable);
             if (!trans)
                  return;
             trans.addDataFlavor('text/unicode');
             var str = new Object();
             var len = new Object();
             var str = Components.classes["@mozilla.org/supports-string;1"].createInstance(Components.interfaces.nsISupportsString);
             var copytext = txt;
             str.data = copytext;
             trans.setTransferData("text/unicode",str,copytext.length*2);
             var clipid = Components.interfaces.nsIClipboard;
             if (!clip)
                  return false;
             clip.setData(trans,null,clipid.kGlobalClipboard);
        }
  }

  function find_system_book(condition_str)
  {
    $('<form action="/searchMgt" id="searchFormId" name="searchForm" method="POST"> <input type="hidden" name="condition_str" value="'+condition_str+'" /> </form>').appendTo('body');

    document.searchForm.action = "/searchMgt";
    document.searchForm.submit();
  }

  function loadJs(file)
  {
     var scriptTag = document.getElementById('loadScript');
     var head = document.getElementsByTagName('head').item(0);
     if(scriptTag) head.removeChild(scriptTag);
     script = document.createElement('script');
     script.src = "/scripts/"+file;
     script.type = 'text/javascript';
     script.id = 'loadScript';
     head.appendChild(script);
  }

  function login_system()
  {
    $('<form action="" name="loginForm" method="POST"> </form>').appendTo('#content');

    document.loginForm.action = "/userLogin/onLogin";
    document.loginForm.submit();
  }

  function get_report(object_type, application_id)
  {
    window.open('/reportMgt/get_report/'+object_type+'/'+application_id, 'newwindow', 'height=300, width=350, top=300, left=300, toolbar=no, menubar=no, scrollbars=no, resizable=no,location=no, status=no');
  }

  function rand_css(em_id)
  {
    var rand_num = Math.ceil( Math.random()*10000 );

    if ( rand_num>=0 && rand_num<2500 )
      $('#'+em_id).css("background", "transparent url(/images/blue.gif) no-repeat scroll 0 0");
    else if ( rand_num>=2500 && rand_num<5000 )
      $('#'+em_id).css("background", "transparent url(/images/green.gif) no-repeat scroll 0 0");
    else if ( rand_num>=5000 && rand_num<7500)
      $('#'+em_id).css("background", "transparent url(/images/orange.gif) no-repeat scroll 0 0");
    else
      $('#'+em_id).css("background", "transparent url(/images/red.gif) no-repeat scroll 0 0");
  }

  function rand_image()
  {
    var rand_num = Math.ceil( Math.random()*5 );
    if ( rand_num>5 || rand_num<0 )
      rand_num = 1;

    return "http://static.qidimo.com/images/login" +rand_num+ ".jpg";
  }
