var site_url="";
if(site_url=="")site_url="http://"+location.host+"/";
var txtmaxchar = 1000;

function hiddendiv(id){
	if(document.getElementById(id).style.display=='none'){
		document.getElementById(id).style.display='block';
		document.getElementById(id).focus();
	}
	else if(document.getElementById(id).style.display=='block'){
		document.getElementById(id).style.display='none';
	}
}

function displayToggle(id){
	if($(id).style.display=='none')$(id).style.display='';
	else if($(id).style.display=='')$(id).style.display='none';
}
	
function displayShow(id){
	if($(id))$(id).style.display='';
}
function displayHide(id){
	if($(id))$(id).style.display='none';
}
	
function leapyear(y) {
	if ( ( (y%4==0)&&(y%100 != 0) ) || (y%400==0) ) { // leap year
		return true
	}
	else{
		return false;	
	}
}

function checkRadioChecked(obj){
	for(i=0; i<obj.length; i++) if(obj[i].checked) return true;
	return false;
}

function reloadCaptcha(url){
	var captcha=$('captchaimg');
   $('captchaimg').src=site_url+'captcha.php?rand='+Math.random();
}
	
function selectAll(form, prefix, selectall) {
	var selectall = selectall ? selectall : 'selall';
	for(var i = 0; i < form.elements.length; i++) {
		var e = form.elements[i];
		if(e.name != selectall && (!prefix || (prefix && e.name.match(prefix))) && !e.disabled) {
			e.checked = form.elements[selectall].checked;
		}
	}
}

function validateEmailFormat(email){
	var filter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if(filter.test(email)){
		return true;
	}
	return false;
}

function getAbsPos(obj){
        var objResult = new Object();
        objResult.top = obj.offsetTop;
        objResult.left = obj.offsetLeft;
        objResult.width = obj.offsetWidth;
        objResult.height = obj.offsetHeight;
		while( obj = obj.offsetParent){
            objResult.top += obj.offsetTop;
            objResult.left += obj.offsetLeft;
        }
       return objResult;
}

function stripHtmlTags(strContent) { return strContent.replace(/(<([^>]+)>)/ig, ""); }

function addLoadEvent(func) 
{   
    var oldonload = window.onload; 
    if (typeof window.onload != 'function'){ 
      window.onload = func; 
    } else { 
      window.onload = function(){ 
      oldonload(); 
      func(); 
      } 
    } 

} 
String.prototype.Trim = function()
{
return this.replace(/(^\s*)|(\s*$)/g, "");
}

String.prototype.LTrim = function()
{
return this.replace(/(^\s*)/g, "");
}

String.prototype.RTrim = function()
{
return this.replace(/(\s*$)/g, "");
} 

function fetchOffset(obj) {
	var left_offset = obj.offsetLeft;
	var top_offset = obj.offsetTop;
	while((obj = obj.offsetParent) != null) {
		left_offset += obj.offsetLeft;
		top_offset += obj.offsetTop;
	}
	return { 'left' : left_offset, 'top' : top_offset };
}

function parentOffset(obj,el){
	var left_offset =obj.offsetParent.offsetLeft;
	var top_offset =obj.offsetParent.offsetTop;
	return { 'left' : left_offset, 'top' : top_offset };
}

function currentOffset(obj){
	var left_offset =obj.offsetLeft;
	var top_offset =obj.offsetTop;
	return { 'left' : left_offset, 'top' : top_offset };	
}

function sfetchOffset(obj) {
	var wrap_left = $('wrapper').offsetLeft;
	var wrap_top = $('wrapper').offsetTop;
	var left_offset = obj.offsetLeft;
	var top_offset = obj.offsetTop;
	alert(obj.offsetParent.id);
//	alert(obj.offsetParent.offsetTop);
/*
	while((obj = obj.offsetParent) != null) {
		left_offset += obj.offsetLeft;
		top_offset += obj.offsetTop;
	}*/
	return { 'left' : left_offset, 'top' : top_offset, 'wrap_left' : wrap_left, 'wrap_top' : wrap_top};
}
function check(obj){

var pos=sfetchOffset(obj);
alert('left '+pos.left+' top'+pos.top);
$('album_sub_menu').style.position='absolute';
$('album_sub_menu').style.left=pos.left;
$('album_sub_menu').style.top=pos.top;
$('album_sub_menu').style.zIndex='1001';
}

function showDiv(obj,id,parent){
	if(!$(id))return;
	if($(id).style.display=='none'){
		$(id).style.display='';
	}
	else{
		$(id).style.display='none';
	}
	
	if(parent){
		var pos =currentOffset(obj);
	}
	else{
		var pos =getAbsPos(obj);
	}
	
//	alert(pos.left+' '+pos.top);
	$(id).style.position='absolute';
	$(id).style.left=pos.left+'px';
	$(id).style.top=(pos.top+obj.offsetHeight-1)+'px';
	$(id).style.zIndex='1001';
	
	var timer;
	$(id).onmouseout = function(){
		return function(){
			timer&&clearTimeout(timer);
			timer = setTimeout(function(){
				$(id).style.display='none';
			},5000)
		}
	}()
	$(id).onmousemove = function(){
		timer&&clearTimeout(timer);
	}				
}//func

function hideDiv(id){
	$(id).style.display='none';
}

function slideDiv(id,obj){
	var dslide = new Fx.Slide(id,{
	duration: 1000,
	onComplete: function(){
	if(dslide.open){
	obj.src=site_url+'/images/icon_expanded.gif';
	}else{
	obj.src=site_url+'/images/icon_collapsed.gif';
	
	}
		}

	});

	if($(id).style.display=='none'){
		$(id).style.display='block';
		dslide.hide();
	}
	dslide.toggle();
}
		
function promptDelete(){
	$$('input.delete', 'a.delete').addEvent('click', function(){
		if(!confirm("Are you sure to delete?")){
			return false;
		}
	});
}		


function showSubMenu(obj,id){
	var pos= fetchOffset(obj);
	$(id).style.display='';
	$(id).style.position='absolute';
	$(id).style.top=pos.top+obj.offsetParent.offsetTop+obj.offsetHeight;
	$(id).style.left=pos.left-10;

	var timer;
	$(id).onmouseout = function(){
		return function(){
			timer&&clearTimeout(timer);
			timer = setTimeout(function(){
				$(id).style.display='none';
			},5000)
		}
	}()
	$(id).onmousemove = function(){
		timer&&clearTimeout(timer);
	}	
} 
  
//addLoadEvent(promptDelete); 

//----menu nav----//
function showNav(element) {
	var ul = element.getElementsByTagName('UL');
	if(ul.length>0)ul[0].style.left='auto';
	element.getElementsByTagName('A')[0].className='menutop menuhover';
}

function hideNav(element) {
	var ul = element.getElementsByTagName('UL');
	if(ul.length>0)ul[0].style.left='-999em';
	element.getElementsByTagName('A')[0].className='menutop';
}

navHover = function() {
	if(document.getElementById("menubar")){
	var mels = document.getElementById("menubar").getElementsByTagName("LI");
	for (var i=0; i<mels.length; i++) {
		mels[i].onmouseover=function() {
			showNav(this);
		}
		mels[i].onmouseout=function() {
			hideNav(this);
		}
	}
	}
}

// Example: gup('cat') will give you "meow" if the URL is http://example.com/?cat=meow
// get url params
function gup( name )
{
  name = name.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regexS = "[\\?&]"+name+"=([^&#]*)";
  var regex = new RegExp( regexS );
  var results = regex.exec( window.location.href );
  if( results == null )
    return "";
  else
    return results[1];
}

function isValueInArray(arr, val) {
	inArray = false;
	for (i = 0; i < arr.length; i++)
		if (val == arr[i])
			inArray = true;
	return inArray;
}
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("你使用的FF瀏覽器,複製功能被瀏覽器拒絕！\n請在瀏覽器地址欄輸入'about:config'並回車\n然後將 'signed.applets.codebase_principal_support'設置為'true'");
			   return;
		  }
          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);
     }
}

// This function creates a new anchor element and uses location
// properties (inherent) to get the desired URL data. Some String
// operations are used (to normalize results across browsers).
function parseURL(url) {
    var a =  document.createElement('a');
    a.href = url;
    return {
        source: url,
        protocol: a.protocol.replace(':',''),
        host: a.hostname,
        port: a.port,
        query: a.search,
        params: (function(){
            var ret = {},
                seg = a.search.replace(/^\?/,'').split('&'),
                len = seg.length, i = 0, s;
            for (;i<len;i++) {
                if (!seg[i]) { continue; }
                s = seg[i].split('=');
                ret[s[0]] = s[1];
            }
            return ret;
        })(),
        file: (a.pathname.match(/\/([^\/?#]+)$/i) || [,''])[1],
        hash: a.hash.replace('#',''),
        path: a.pathname.replace(/^([^\/])/,'/$1'),
        relative: (a.href.match(/tp:\/\/[^\/]+(.+)/) || [,''])[1],
        segments: a.pathname.replace(/^\//,'').split('/')
    };
}

//chk if an object is an array or not.
function isArray(obj) {
//returns true is it is an array
if (obj.constructor.toString().indexOf("Array") == -1)
return false;
else
return true;
}

//----tips----//
var tip_title="";
function createTip(obj,txt){
var closeButton=true;
	if(!$('tipsd')){
	var pos = getAbsPos(obj);
	var d = document.createElement("div");
		d.id='tipsd';
		d.className='tip-box';
		d.style.position='absolute';
		d.style.left=pos.left+obj.offsetWidth-45+'px';
		d.style.top=pos.top-obj.offsetHeight-35+'px';
	var tbl = document.createElement('table');
		tbl.border='0px solid #CCCCCC';
		tbl.cellPadding ='0';
		tbl.cellSpacing ='0';
	var tbody = document.createElement('tbody');
	
	var tr1 = document.createElement('tr');
	var tr2 = document.createElement('tr');
	var tr3 = document.createElement('tr');
		
	var td_l = document.createElement('td');
		td_l.className='tl';
	var td_c = document.createElement('td');
		td_c.className='t';		
	var td_r = document.createElement('td');
		td_r.className='tr';
		
	var td2_l = document.createElement('td');
		td2_l.className='l';
	var td2_c = document.createElement('td');
		td2_c.className='c';
		var content="";
		if(txt){
			if(isArray(txt)){
				for(var i=0;i<txt.length;i++){
					content+='<p>'+txt[i]+'</p>';
				}		
			}
			else{
				content='<p>'+txt+'</p>';
			}
		}
		else{
			return;
		}
		if(obj.title && obj.title!=""){
			content='<p>'+obj.title+'</p>';
			tip_title=obj.title;
			obj.title="";
			closeButton=false;
		}
		td2_c.innerHTML='<div class="err">'+content+'</div>';
		if(closeButton)td2_c.innerHTML+='<a class="close" onclick="removeTip('+obj+',\''+tip_title+'\')";></a>';
	var td2_r = document.createElement('td');
		td2_r.className='r';
		
	var td3_l = document.createElement('td');
		td3_l.className='bl';
	var td3_c = document.createElement('td');
		td3_c.className='b';		
	var td3_r = document.createElement('td');
		td3_r.className='br';		
		
		tr1.appendChild(td_l);
		tr1.appendChild(td_c);
		tr1.appendChild(td_r);
		
		tr2.appendChild(td2_l);
		tr2.appendChild(td2_c);
		tr2.appendChild(td2_r);
		
		tr3.appendChild(td3_l);
		tr3.appendChild(td3_c);
		tr3.appendChild(td3_r);
		
		tbody.appendChild(tr1);		
		tbody.appendChild(tr2);		
		tbody.appendChild(tr3);	
		tbl.appendChild(tbody);
		d.appendChild(tbl);
		document.body.appendChild(d);	
	}
	else{
		document.body.removeChild();
		createTip(obj,txt);
	}
}
function removeTip(el,txt){
	//alert(txt);
	el.title=txt;
	document.body.removeChild($('tipsd'));
}


function searchClassTip(){
	var anchors = document.getElementsByTagName('a');
	var spans = document.getElementsByTagName('span');
//alert(anchors.length);
	for(var i=0;i<anchors.length;i++){
		if(anchors[i].className && anchors[i].className.indexOf("tip")!="-1"){
			anchors[i].onmouseover=function(){createTip(this,this.title);}
			anchors[i].onmouseout=function(){removeTip(this,tip_title);}
		}
	}
	for(var i=0;i<spans.length;i++){
		if(spans[i].className && spans[i].className.indexOf("tip")!="-1"){
			spans[i].onmouseover=function(){createTip(this,this.title);}
			spans[i].onmouseout=function(){removeTip(this,tip_title);}
		}
	}
}



function addEvent(obj, type, func){
	if (obj.attachEvent) obj.attachEvent("on"+type, func);
	else if(obj.addEventListener)obj.addEventListener(type, func, false); 
}
/*
window.addEvent("domready", function(){
promptDelete();
navHover();
});
*/

addEvent(window,'load',navHover);
addEvent(window,'load',searchClassTip);
addEvent(window,'load',promptDelete);

//window.addEvent('domready', navHover);
//window.addEvent('domready', promptDelete);
/*addEvent(window,'load',promptDelete);
addEvent(window,'load',navHover);
addEvent(window,'load',searchClassTip);*/
//window.addEvent('domready', searchClassTip);

//window.onload=function(){searchClassTip()};
/*
if (window.attachEvent) window.attachEvent("onload", navHover);
else if(window.addEventListener)window.addEventListener('load', navHover, false); 
*/