javaeye3/public/javascripts/javaeye_misc.js

516 lines
18 KiB
JavaScript
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

String.prototype.trim = function() { return this.replace(/^\s+|\s+$/g, ''); };
function multiple_upload_attachment(ele, max_size) {
Event.observe(ele, 'change', function() {
addAttachmentDiv(ele, max_size);
});
if (multiple_upload_attachment_counter >= max_size) ele.disabled = true;
}
var attachment_template = new Template('<table><tr><th>文件:</th><td><span>#{filename}</span><span class="more"><a href="#" class="delete">删除</a></span><div class="clear"></div></td></tr><tr><th>描述:</th><td><textarea name="attachments[][remark]" cols="" rows=""></textarea></td></tr></table>');
function addAttachmentDiv(ele, max_size) {
if (!$A(['jpg','jpeg','bmp','png','gif','rar','zip', 'tar', 'gz', 'jar', 'war', 'bz2', '7z']).any(function(extName){return new RegExp('\\.'+extName+'$','i').test(ele.value);})){
alert("如果您上传图片请上传JPG、BMP、PNG或者GIF格式的图片\n如果您上传附件请先压缩再上传");
return false;
}
multiple_upload_attachment_counter++;
var div = attachment_template.evaluate({filename: ele.value});
var new_input = new Element("input", { type: "file", name: ele.name, id: ele.id, disabled: multiple_upload_attachment_counter >= max_size});
Event.observe(new_input, 'change', function() {
addAttachmentDiv(new_input, max_size);
});
$('groups_upload_button').insert({before : div});
ele.insert({after: new_input});
ele.id = ele.id + multiple_upload_attachment_counter;
ele.name = "attachments[][uploaded_data]";
div = $('groups_upload_button').previous();
div.down('.delete').observe('click', function(event) {
removeAttachmentDiv(this);
});
div.appendChild(ele.hide());
}
function removeAttachmentDiv(link) {
multiple_upload_attachment_counter--;
link.up('table').remove();
$('attachment_upload').disabled = false;
}
function multiple_upload_picture(ele, max_size, tags) {
Event.observe(ele, 'change', function() {
addPictureDiv(ele, max_size, tags);
});
if (multiple_upload_picture_counter >= max_size) ele.disabled = true;
}
function addPictureDiv(ele, max_size, tags) {
if (!$A(['jpg','jpeg','bmp','png','gif']).any(function(extName){return new RegExp('\\.'+extName+'$','i').test(ele.value);})){
alert("您上传的图片格式不支持请您上传JPG、BMP、PNG或者GIF格式的图片");
return false;
}
multiple_upload_picture_counter++;
//fix for opera
var file_name = ele.value;
try {file_name = ele.value.match(/(.*)[\/\\]([^\/\\]+)\.\w+$/)[2];} catch(e) {}
var tag_select = "";
if(tags.length > 0) {
var tag_select = "<select onchange='Element.previous($(this)).value = this.value;'><option value=''>选择已有标签</option>";
for (var i = 0; i < tags.length; i++)
tag_select += "<option value='" + tags[i] + "'>" + tags[i] + "</option>";
tag_select += "</select>";
}
var div = new Element("div").update("<ul><li>文件: " + ele.value + " <a href='#' onclick='removePictureDiv(this, \"" + ele.id + "\");return false;'>删除</a></li><li>名称: <input type='text' name='pictures[][name]' value='" + file_name + "' size='50' class='text'/></li><li>描述: <textarea name='pictures[][description]' style='width:400px;height:80px;'></textarea></li></ul>");
var new_input = new Element("input", { type: "file", name: ele.name, id: ele.id, disabled: multiple_upload_picture_counter >= max_size});
Event.observe(new_input, 'change', function() {
addPictureDiv(new_input, max_size, tags);
});
ele.insert({after : div});
div.insert({after : new_input});
ele.id = ele.id + multiple_upload_picture_counter;
ele.name = "pictures[][uploaded_data]";
div.appendChild(ele.hide().remove());
}
function removePictureDiv(link, eleId) {
multiple_upload_picture_counter--;
link.parentNode.parentNode.parentNode.remove();
$(eleId).disabled = false;
}
function move_messages(dest) {
$('dest').value = dest;
$('messages_form').submit();
}
function digg(type, id, bury) {
var url = '/' + type + (bury ? '/bury' : '/digg');
var small_button = !!$('d' + id);
if(small_button) $('d'+id).innerHTML = "<h3><img src='/images/spinner.gif'/><br/><span>...</span></h3>";
if($('digg_bottom')){
$$('#digg_bottom div').each(function(div){div.innerHTML="<img src='/images/spinner.gif'/>";});
new Ajax.Request(url,{asynchronous:true,evalScripts:true,parameters:{"id":id, "bottom":true, small_button:small_button}});
}else{
new Ajax.Request(url,{asynchronous:true,evalScripts:true,parameters:{"id":id, small_button:small_button}});
}
}
function bury_blog(blog_id) {
$('b' + blog_id).innerHTML = "<h3><img src='/images/spinner.gif'/><br/><span>...</span></h3>";
if($('digg_bottom') != undefined) {
$$('#digg_bottom div').each(function(div){div.innerHTML="<img src='/images/spinner.gif'/>";});
new Ajax.Request('/blogs/bury',{asynchronous:true,evalScripts:true,parameters:{"id":blog_id, "bottom":true}});
}else{
new Ajax.Request('/blogs/bury',{asynchronous:true,evalScripts:true,parameters:{"id":blog_id}});
}
}
function fix_image_size(images, maxW) {
if(images.length > 0) {
Event.observe(window,'load',function() {
images.each(function(img) {
var w = img.width;
var h = img.height;
if (w > maxW) {
var f = 1-((w - maxW) / w);
img.title = "点击查看原始大小图片";
img.addClassName("magplus");
img.onclick = function() {window.open(this.src);};
img.width = w * f;
img.height = h * f;
}
});
});
}
}
function highlight_suggested_tags(tags) {
if ($('suggested_tags_panel') !== null) {
$('suggested_tags_panel').select('a').each( function(el) {
var exist_tag = tags.find(function(tag){
return tag.match(new RegExp('^' + el.text + '$', 'i'));
});
if (exist_tag) {
el.addClassName('added');
} else {
el.removeClassName('added');
}
});
}
}
function extract_tag_list(value) {
var tags = value.trim().split(/,\s*|\s*/).without('');
highlight_suggested_tags(tags);
tag_list = tags.map(function(tag) {
return "<span>" + tag + "</span>";
}).join('');
if (!tag_list.empty()) {
tag_list = '当前标签:' + tag_list;
}
if ($("current_tags_panel") !== null) {
$("current_tags_panel").update(tag_list);
}
}
function observe_tag_list(id) {
extract_tag_list($(id).value);
new Form.Element.Observer(
id,
0.2,
function(el, value) {
extract_tag_list(value);
}
)
}
function trigger_suggested_tag() {
var tag_list_input = this.parentNode.previous("input");
var current_value = tag_list_input.value.trim();
if (this.hasClassName('added')) {
var tag_regex = new RegExp('^' + this.text + '$', 'i')
tag_list_input.value = current_value.split(/,\s*|\s*/).findAll(function(tag){
tag = tag.trim();
if (tag !== '' && !tag_regex.match(tag)) {
return true;
}
}).join(', ');
this.removeClassName('added');
} else {
if(current_value !== "" && current_value[current_value.length-1] !== ","){
tag_list_input.value += ", ";
}
tag_list_input.value += this.innerHTML;
this.addClassName('added');
}
Validation.validateElement($(tag_list_input));
}
function check_category_list(checkboxes, category_list){
checkboxes.each(function(element){
element.checked = category_list.split(',').any(function(name){
return name.trim().toLowerCase() == this;
}, element.value.toLowerCase());
});
}
document.observe("dom:loaded",function(){
$$("div.quick_menu").each(function(ele) {
Event.observe(ele.previous(), 'mouseover', function(e) {
$$("div.quick_menu").invoke('hide');
ele.style.left = ele.previous().positionedOffset()[0] + "px";
ele.show();
});
Event.observe(ele.previous(), 'mouseout', function(e) {
if(!Position.within(ele,Event.pointerX(e),Event.pointerY(e) + 5))
ele.hide();
});
Event.observe(ele, 'mouseout', function(e) {
if(!Position.within(ele,Event.pointerX(e),Event.pointerY(e)))
ele.hide();
});
});
$$("div.nav_side > ul > li:not(.select)").each(function(ele) {
Event.observe(ele, 'mouseover', function(e) {
Event.findElement(e, 'LI').addClassName('select');
});
Event.observe(ele, 'mouseout', function(e) {
Event.findElement(e, 'LI').removeClassName('select');
});
});
$$('#blog_category_checkbox input[type=checkbox]').each(function(element){
element.observe('change', function(ev){
var current_value = $('blog_category_list').value.trim();
if(this.checked) {
if(current_value == '' || current_value[current_value.length -1] == ',')
$('blog_category_list').value += this.value;
else
$('blog_category_list').value += (','+this.value);
} else {
$('blog_category_list').value = current_value.split(',').reject(function(name){
return name.trim() == this;
}, this.value).join(',');
}
});
});
});
//IE6 background image cache fix
try {document.execCommand('BackgroundImageCache', false, true);} catch(e) {}
//resume
function add_work_experience(button, content){
var new_id = new Date().getTime();
$(button).up().insert({before: content.replace(/new_work_experiences/g, new_id)});
}
function add_project_experience(link, content){
var new_id = new Date().getTime();
$(link).up().insert({before: content.replace(/new_project_experiences/g, new_id)});
}
function add_education(button, content){
var new_id = new Date().getTime();
$$('.editing .educations')[0].insert({bottom: content.replace(/new_educations/g, new_id)});
}
function add_training(button, content){
var new_id = new Date().getTime();
$$('.editing .trainings')[0].insert({bottom: content.replace(/new_trainings/g, new_id)});
}
function add_certificate(button, content){
var new_id = new Date().getTime();
$$('.editing .certificates')[0].insert({bottom: content.replace(/new_certificates/g, new_id)});
}
function add_skill(button, content){
$$('.editing .skills')[0].insert({bottom: content});
}
function add_language(button, content){
$$('.editing .languages')[0].insert({bottom: content});
}
document.observe("dom:loaded",function(){
$$('#my_resume .control .expand').each(function(el){
el.hide();
});
document.observe('click', function(event){
if(el = event.findElement('#my_resume .control .expand')){
el.up('h1').next('.view_con').show();
el.previous('.contract').show();
el.hide();
event.stop();
} else if(el = event.findElement('#my_resume .control .contract')){
el.up('h1').next('.view_con').hide();
el.next('.expand').show();
el.hide();
event.stop();
} else if (el = event.findElement('#my_resume .control .edit')){
if($('profile_invalid_flag') && !(/myresume\/edit$/.test(el['href']))){
alert("个人资料不完整,请先完善个人资料");
}else{
new Ajax.Request(el['href'], {
method: 'get',
onSuccess: function(res){
el.up('.view').replace(res.responseText);
}
});
}
event.stop();
} else if (el = event.findElement('.work_exp > .del_work a.del')){
if(confirm("确定要删除该工作经验吗?")){
if(/\#$/.test(el['href'])){
el.up('.work_exp').remove();
} else {
new Ajax.Request(el['href'], {
method: 'delete',
onSuccess: function(res){
el.up('.work_exp').remove();
}
});
}
}
event.stop();
} else if(el = event.findElement('.project_exp > .del_project a.del')) {
if(confirm("确定要删除该项目经验吗?")){
if(/\#$/.test(el['href'])){
el.up('.project_exp').remove();
} else {
new Ajax.Request(el['href'], {
method: 'delete',
onSuccess: function(res){
el.up('.project_exp').remove();
}
});
}
}
event.stop();
} else if(el = event.findElement('.edu_exp a.del')){
if(confirm("确定要删除吗?")){
if(/\#$/.test(el['href'])){
el.up('.edu_exp').remove();
} else {
new Ajax.Request(el['href'], {
method: 'delete',
onSuccess: function(res){
el.up('.edu_exp').remove();
}
});
}
}
event.stop();
} else if (el = event.findElement('.skills a.del')){
if(confirm("确定要删除该技能吗?")){
if(/\#$/.test(el['href'])){
el.up('li').remove();
} else {
var form = el.up('form');
el.up('li').getElementsBySelector('.level input[type=radio]').each(function(radio){
radio['name'] = 'destroied';
});
new Ajax.Request(el['href'], {
method: 'delete',
parameters: form.serialize(),
onSuccess: function(){
el.up('li').remove();
}
});
}
}
event.stop();
} else if (el = event.findElement('.languages a.del')) {
if (confirm("确定要删除该语种吗?")) {
if(/\#$/.test(el['href'])){
el.up('li').remove();
}else{
var form = el.up('form');
el.up('li').getElementsBySelector('.level select').each(function(select_elem){
select_elem['name'] = 'destroied';
});
new Ajax.Request(el['href'], {
method: 'delete',
parameters: form.serialize(),
onSuccess: function(){
el.up('li').remove();
}
});
}
}
event.stop();
}
});
var resume_submit_precess = function(event){
if(form = event.findElement('#my_resume .editing form.remote')){
form.request({
onSuccess: function(res){
var prev = form.up('.editing').previous();
prev.insert({after: res.responseText});
prev.next().down('.expand').hide();
form.up('.editing').remove();
}
});
event.stop();
}
};
if(Prototype.Browser.IE){
document.observe('focusin', function(event){
var form = event.findElement("#my_resume form");
if(form && !form.submit_bubbles_on_ie){
form.submit_bubbles_on_ie = true;
form.observe('submit', resume_submit_precess);
}
});
}else{
document.observe('submit', resume_submit_precess);
}
var resume_change_process = function(event){
if(select = event.findElement('#my_resume .skills .title .skill_option_one')){
var two_elem = select.next();
var skill_title = '';
if('手动添加' == select['value']){
two_elem.replace('<input class="skill_option_two" name="skill_option_two" style="width:80px;" type="text">');
}else{
if(two_elem.nodeName.toUpperCase() == "SELECT"){
two_elem.length = 0;
}else{
two_elem.replace(new Element('select', {'class':'skill_option_two', 'name': 'skill_option_two'}));
}
window.skill_options_two.get(select['value']).each(function(v){ select.next().appendChild(new Element('option', { 'value': v }).update(v)); });
skill_title = window.skill_options_two.get(select['value'])[0];
}
select.up('.title').next('.level').getElementsBySelector('input').each(function(radio){
radio.checked = false;
radio['name'] = 'resume[skills][' + skill_title + ']';
});
}else if(select = event.findElement('#my_resume .skills .title .skill_option_two')){
select.up('.title').next('.level').getElementsBySelector('input').each(function(radio){
radio.checked = false;
radio['name'] = 'resume[skills][' + select['value'] + ']';
});
}else if(select = event.findElement('#my_resume .languages .title select')){
select.up('.title').next('.level').getElementsBySelector('select').each(function(select_elem){
select_elem['name'] = 'resume[languages]['+ select['value'] +'][]';
});
}else if(select = (event.findElement('#my_resume .work_exp select.company_industry') || event.findElement('#company_industry_search'))){
if(select['value'] == '其它'){
var elem_str = "<input type='text' class='input_1 required' style='margin-left: 10px;' name='" + select['name'] + "' />"
if(select['id'] == 'company_industry_search'){elem_str = "<input type='text' class='text' style='margin-left: 10px;' name='" + select['name'] + "' />"}
select.insert({'after': elem_str});
select['name'] = '';
}else{
var ci_text_elem = select.next('input');
if(ci_text_elem){
select['name'] = ci_text_elem['name'];
select.next('input').remove();
}
}
}else if(select = event.findElement('#skills_search')){
if(select['value'] == '其它'){
select.insert({'after': "<input type='text' class='text' style='margin-left:10px;' name='"+ select['name'] +"' />"})
select['name'] = '';
}else{
var ci_text_elem = select.next('input');
if(ci_text_elem){
select['name'] = ci_text_elem['name'];
select.next('input').remove();
}
}
}
};
if(Prototype.Browser.IE){
document.observe('focusin', function(event){
var select = event.findElement("#my_resume select");
if(select && !select.change_bubbles_on_ie){
select.change_bubbles_on_ie = true;
select.observe('change', resume_change_process);
}
});
}else{
document.observe('change', resume_change_process);
}
});
function add_vote_option(btn, html_str){
var new_id = new Date().getTime();
$(btn).up().previous().insert({bottom: html_str.replace(/new_vote_option_id/g, new_id)});
}
function del_vote_option(vote_option){
vote_option = $(vote_option);
var tr1 = vote_option.up(1);
var tr2 = tr1.next();
var vote_option_url = vote_option.getAttribute('url');
if(vote_option_url){
if(confirm('慎用,如投票选项下有很多投票,会删除其所有投票,而增加服务器压力')){
new Ajax.Request(vote_option_url, {
method: 'delete',
onSuccess: function(transport){ tr1.remove(); tr2.remove();}
});
}
}else{
tr1.remove();
tr2.remove();
}
}