javaeye3/public/javascripts/javaeye_misc.js

516 lines
18 KiB
JavaScript
Raw Permalink Normal View History

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();
}
}