// Place your application-specific JavaScript functions and classes here
// This file is automatically included by javascript_include_tag :defaults


Element.addMethods({
  loading: function(Element, formid, waiting) {
	if (typeof waiting == 'undefined') waiting = '请稍后...'
  	Element.update(waiting);
  	Element.addClassName('loader');
	if (formid != 'undefinded') {
		$(formid).disable();
	} 
  },
  loaded: function(Element, formid) {
  	Element.update('');
  	Element.removeClassName('loader');
	if (formid != 'undefinded') {
		$(formid).enable();
	} 
  },
  interchange: function(hideElement, showElement) {
  	$(hideElement).hide();
	$(showElement).show();
  }
});

var Admin = {
	profileLink: function(Element) {
		$$('#profilenav li.curr').each(function(e) {
			e.removeClassName('curr');
		});
		$(Element).className = 'curr';
	},
	showCover: function(id) {
		if(!$(id) || !$(id).value) return;
		var patn = /\.jpg$|\.jpeg$|\.gif$|.png$|.bmp$/i;
		var coverimg = $('familycover').down('img');
		if(patn.test($(id).value)){
			if (!Prototype.Browser.IE) return;
			coverimg.src = "file:///" + $(id).value;
			coverimg.width = 435;
			coverimg.height = 220;
			coverimg.style.visibility = "visible";
		} else {
			$(id).value = '';
			$(id).outerHTML  = $(id).outerHTML;
			alert("您选择的似乎不是图像文件。");
		}
	},
	removehr: function(Element) {
		if(typeof($(Element).previous(0)) != 'undefined' && $(Element).previous(0).tagName == 'HR')
			$(Element).previous(0).remove();
		else if(typeof($(Element).next(0)) != 'undefined' && $(Element).next(0).tagName == 'HR')
			$(Element).next(0).remove();
	}
};
var Friend = {
	addfriend: function(Element) {
		$(Element).hide();
		new Insertion.After($(Element), "<span id='link-loader'></span>");
		$('link-loader').loading();
	},
	addfalse: function(Element) {
		$(Element).show();
		$('link-loader').remove();
		Alerter.collectfalse();
	},
	added: function(Element) {
		$(Element).show();
		$('link-loader').remove();
		$(Element).update('已是好友');
	}
};
var User = {
	showIcon: function(id) {
		if(!$(id) || !$(id).value) return;
		var patn = /\.jpg$|\.jpeg$|\.gif$|.png$|.bmp$/i;
	//	var userimg = $$(tag)[0].down('img');
		var userimg = $(id).next('img');
		if(patn.test($(id).value)){
			if (!Prototype.Browser.IE) return;
			userimg.src = "file:///" + $(id).value;
			//userimg.width = 140;
			userimg.height = 140;
			userimg.style.visibility = "visible";
			userimg.up(tag).setStyle({'height':'160px'});
			userimg.up(tag).down('label').setStyle({'height':'160px'});
		} else {
			$(id).value = '';
			$(id).outerHTML  = $(id).outerHTML;
			alert("您选择的似乎不是图像文件。");
		}
	},
	toolbar_loading: function(Element) {
		$(Element).hide();
		new Insertion.After($(Element), "<li id='loading'><img src='/images/user_toolbar_loading.gif'></li>");
	},
	toolbar_loaded: function(Element) {
		$(Element).show();
		$('loading').remove();
	},
	login_win: function() {
		contentWin = new Window({className:'greylighting', width:300, height:270, zIndex:100, minimizable: false, maximizable: false, resizable: false, 
				hideEffect:Effect.SwitchOff, showEffect:Effect.BlindDown, minWidth: 10, destroyOnClose: true, title: '用户登陆<span id="login_loader"></span>'})
		contentWin.setHTMLContent($('loginwindow').innerHTML)
		contentWin.showCenter(true);
	},
	toolbar_toggle: function(tElement, oElement) {
		new Effect.toggle(tElement, 'blind',{duration:0.5});
		$(oElement).down('span').toggleClassName('hover');
	},
	move_friends: function(to) {
		ELheight = $('friend_roll').getHeight();
		ShowHeight = 260;
		marginTop = (parseInt($('friend_roll').getStyle('marginTop'))).abs();
		if(ELheight <= ShowHeight) return false;
		if(to == 'down') {
			if((ELheight - marginTop) < ShowHeight) return false;
			newmarginTop = marginTop+ShowHeight;
			$('friend_roll').setStyle({'marginTop': '-'+String(newmarginTop)+'px'})
			if(newmarginTop+ShowHeight > ELheight)
				$('friends_next').down('img').src = 'images/down0.gif';
			else
				$('friends_prev').down('img').src = 'images/up.gif';
		} else if (to == 'up') {
			if (marginTop <= ShowHeight) {
				$('friend_roll').setStyle({'marginTop': '0'})
				$('friends_prev').down('img').src = 'images/up0.gif'
			}
			else {
				$('friend_roll').setStyle({'marginTop': '-' + String(marginTop - ShowHeight) + 'px'});				
				$('friends_next').down('img').src = 'images/down.gif'
			}
		}
	},
	fav_family: function(Element) {
		if(typeof(curr_el) == 'undefined') {
			$(Element).addClassName('hover');
			new Effect.BlindDown($(Element).next(0), {duration:0.3});
		} else {
			$(curr_el).removeClassName('hover');
			new Effect.BlindUp($(curr_el).next(0), {duration:0.3});
			if(Element != curr_el) {
				$(Element).addClassName('hover');
				new Effect.BlindDown($(Element).next(0), {duration:0.3});
			}
		}
		curr_el = Element;
	}
}
var Signup = {
	agreement: function() {
		if ($('agreement').checked == true) $('signupbutton').enable();
		else $('signupbutton').disable();
	}
};

var Photo = {
	addFileInput: function () {
		i = (typeof i == "undefined") ? 1 : i+1;
		if(i >= 5) alert('最多只能同时上传5张照片');
		else new Insertion.Bottom($('file_field'), '<input name="photos['+i+']" size="7" style="width: 135px;" type="file" />');
	},
	changeIcon: function(Element, hidefield) {
		current_pic = (typeof current_pic == "undefined") ? "medium" : current_pic;
	//	if($('photos').innerHTML == "") return false;
		var content = $('photos').innerHTML.gsub(current_pic, Element);
		var sortby_content = $('sortby').innerHTML.gsub(current_pic, Element);
		current_pic = Element;
		if (typeof hidefield != "undefined" && $(hidefield)) {
			$(hidefield).value = Element;
		}
		$('photos').update(content);
		$('sortby').update(sortby_content);
		if (Element == 'thumb') {
			$('photos').className = 'thumb-photos';
			$('little').src = "/images/family/littleon.gif";
			$('medium').src = "/images/family/mediumoff.gif";
			$('large').src = "/images/family/largeoff.gif";
		} else if (Element == 'large') {
			$('photos').className = 'large-photos';
			$('little').src = "/images/family/littleoff.gif";
			$('medium').src = "/images/family/mediumoff.gif";
			$('large').src = "/images/family/largeon.gif";
		} else {
			$('photos').className = 'medium-photos';
			$('little').src = "/images/family/littleoff.gif";
			$('medium').src = "/images/family/mediumon.gif";
			$('large').src = "/images/family/largeoff.gif";
		}
	},
	selectCover: function(Element) {
		var url = Element;		
		var loadFunc = function() {
			$('selectcover').loading('undefinded');
		};		
		var handlerFunc = function(t) {
			var win = new Window('window-albumcover',{className:'greylighting', width:440, height:400, zIndex: 100, resizable: false, 
					title: '选择相册封面(建议大小：140x140)<span id="cover_loader"></span>', showEffect:Effect.BlindDown, hideEffect: Effect.SwitchOff, draggable:true, wiredDrag: true, destroyOnClose: true});
		    win.setHTMLContent(t.responseText);
			win.showCenter(true);
			$('selectcover').loaded('undefinded');
		};		
		var errFunc = function(transport) {
			if (403 == transport.status) {
				alert(transport.responseText);
			} else {
			    Alerter.collectfalse();
				$('selectcover').loaded('undefinded');			
			}
		};
		new Ajax.Request(url, {onLoading: loadFunc, onSuccess: handlerFunc, onFailure: errFunc});
	}
};

var Calendar = {
	eventopen: function(Element) {
		screen_width = document.body.offsetWidth;
		position = Position.cumulativeOffset($(Element));
		x = position.first();
		x = x - (screen_width/2 - 430) + 30;
		if( x > 600 ) {
			x = x - 200;
			$('event').className = 'eventright';
		} else {
			$('event').className = 'eventleft';
		}
		y = position.last() - 260;
		if (typeof currentFocus != "undefined")
		{
			$(currentFocus).removeClassName('focus');
		}
		$('event').show();
		$('event').setStyle({'top': y+'px', 'left': x+'px'});
		$(Element).addClassName('focus');
		currentFocus = Element;
		Form.Element.focus('event_content');
		Form.reset('event-form');
		$('event_event_on').value = $(Element).id;
	},
	eventclose: function() {
		$('event').hide();
		if (typeof currentFocus != "undefined")
		{
			$(currentFocus).removeClassName('focus');
		}
		$('event-form').reset(  );
	},
	selectMonth: function(year, month) {
		if( month > 12 ) {
			year = year+1
			month = 1;
		} else if( month < 1) {
			year = year-1;
			month = 12;
		}
		$('date_year').value = year;
		$('date_month').value = month;
		$("formsubmit").click();
		$("event").hide();
	}	
}

var Diary = {
	toggle: function(Element, Element2) {
		Element.toggle();
		$(Element2).toggleClassName('open');
		$(Element2).title = Element2.hasClassName('open') ? '展开' : '闭合';
	},
	showall: function() {
		$('content').getElementsBySelector('[class="diarylist"]').each(function(d) {
			d.show();
		});
		$('content').getElementsBySelector('[class="close"]', '[class="close open"]').each(function(d) {
			d.removeClassName('open');
		});
	},
	hideall: function() {
		$('content').getElementsBySelector('[class="diarylist"]').each(function(d) {
			d.hide();
		});
		$('content').getElementsBySelector('[class="close"]', '[class="close open"]').each(function(d) {
			d.addClassName('open');
		});
	},
	addTag: function (tag){
		$('diary_tag_list').value = $('diary_tag_list').value == '' ? tag : $('diary_tag_list').value+' '+tag
	}
}
var Family = {
	hidePhoto: function(eventElement, hideElement) {
		if (Prototype.Browser.IE) {
			if (!eventElement.contains(event.toElement)) 
				$(hideElement).hide();
		} else {
			$(hideElement).hide();
		}
	},
	showbaby: function(Element) {
		$('babyfile').immediateDescendants().each(function(d){d.hide();})
		$(Element).show();
	},
	changeRemind: function(pos) {
		if (typeof(curr_elnum) == "undefined") curr_elnum = 0;
		elnum = (pos == 'prev') ? curr_elnum-1 : curr_elnum+1;
		el = 'reminds'+elnum;
		if (!$(el)) return false;
		$$('#remind ul').each(function(e) {
			e.hide();
		});
		$(el).show();
		curr_elnum = (pos == 'prev') ? curr_elnum-1 : curr_elnum+1;
	},
	shortcutBar: function() {
		if($('shortcut').visible() == false) NavIMG_back($('shortcut_bar'));
	},
	shortcutShow: function() {
		short_hot=true;
		NavIMG_curr($('shortcut_bar'));
		new Effect.SlideDown($('shortcut'))
	},
	shortcutHide: function() {
		short_hot=false;
		NavIMG_back($('shortcut_bar'));
		new Effect.SlideUp($('shortcut'))
	}
}

var Alerter = {
	collectfalse: function() {
  		alert('连接失败，请稍后再试');
  	}
}
var p_curr = '';
var Former = {
	highlightReadme: function(Element) {
		if(typeof(Element)!= "undefined") {
			Element.addClassName("readme_focus");
			if(p_curr != "" && p_curr != Element) {
				p_curr.removeClassName('readme_focus');
			}
			p_curr = Element;
		}
	},
	tableob: function(tableid)  {
		$$('#'+tableid+' tr').each(function(p) {
			Event.observe(p, 'mouseover', function(event) {
				Former.highlightReadme(p.down("span.readme"));

			});
			if (typeof(p.down('th')) != "undefined") {
				if (typeof(p.down('input')) != 'undefined') v = p.down('input');
				else if(typeof(p.down('select')) != 'undefined')  v = p.down('select');
				else if(typeof(p.down('textarea')) != 'undefined')  v = p.down('textarea');
				else return;
				Event.observe(v, 'focus', function(event) {
					var pr = $(Event.element(event));
					Former.highlightReadme(pr.up('td').down("span.readme"))
				});
			}
		});
	}
}

function NavIMG_curr(Element) {
	img = $(Element).getElementsBySelector('img')[0];
	img.src = img.src.gsub(/(\d)\.jpg/, '#{1}b.jpg')
}
function NavIMG_back(Element) {
	img = $(Element).getElementsBySelector('img')[0];
	img.src = img.src.gsub(/(\d)b\.jpg/, '#{1}.jpg')
}

function copyToClipboard(copy){
    if (window.clipboardData) {
        window.clipboardData.setData("Text", copy);
    }
    else 
        if (window.netscape) {
            try {
                netscape.security.PrivilegeManager.enablePrivilege("UniversalXPConnect");
            } 
            catch (e) {
                alert("您的浏览器不支持复制到剪贴板，\n请用鼠标或键盘快捷键自行复制此链接地址");
            }
            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 = copy;
            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);
        }
    alert("已将此地址（"+ copy + "）复制至您的剪贴板")
    return false;
}

function preview_pic(imgid, previd) {
	if(!$(imgid) || !$(imgid).value) return;
	var patn = /\.jpg$|\.jpeg$|\.gif$|.png$|.bmp$/i;
	if(patn.test($(imgid).value)){
		if (!Prototype.Browser.IE) return;
		$(previd).src = "file:///" + $(imgid).value;
		//userimg.width = 140;
		$(previd).height = 140;
		$(previd).style.visibility = "visible";
	} else {
		$(imgid).value = '';
		$(imgid).outerHTML  = $(imgid).outerHTML;
		alert("您选择的似乎不是图像文件。");
	}
}

picFadeObjects = new Object();
picFadeTimers = new Object();
function picFade(object, destOp, rate, delta){
    if (!document.all)
        return
    if (object != "[object]"){ 
        setTimeout("picFade("+object+","+destOp+","+rate+","+delta+")",0);
        return;
    }
    clearTimeout(picFadeTimers[object.sourceIndex]);
    diff = destOp-object.filters.alpha.opacity;
    direction = 1;
    if (object.filters.alpha.opacity > destOp){
        direction = -1;
    }
    delta=Math.min(direction*diff,delta);
    object.filters.alpha.opacity+=direction*delta;
    if (object.filters.alpha.opacity != destOp){
        picFadeObjects[object.sourceIndex]=object;
        picFadeTimers[object.sourceIndex]=setTimeout("picFade(picFadeObjects["+object.sourceIndex+"],"+destOp+","+rate+","+delta+")",rate);
    }
}