/** Browser object **/
var browser = new Object();
var tp;

//**** Property Definition
browser.appName = navigator.appName;
browser.userAgent = navigator.userAgent;
//Document Body
//browser.db = (document.compatMode && document.compatMode.toLowerCase() != "backcompat")?document.documentElement: (document.body || null);
browser.op = !!(window.opera && document.getElementById);
browser.op6 = !!(browser.op && !(browser.db && browser.db.innerHTML));
tp = browser.userAgent.toLowerCase();
browser.ie = !!(tp.indexOf("msie") >= 0 && document.all && !browser.op); // && browser.db: is null here.

//**** Method Definition
browser.toString = function(){
	var str="";
	str =  "" +
	"appName : " + this.appName + " [browser name]<br>" +
//	"db : " + this.db + "[document:body]<br>" +	
	"ie : " + this.ie + "[Is Browser Internet Explorer]<br>" +
	"op : " + this.op + "[?]<br>" +
    "userAgent : " + this.userAgent + "<br>" +
    "";
	return str;
}
//short reference name for browser
var br = browser;
/*************  END OF Browser object      ****************/
/**
Get object for Ajax.
**/
function GetXmlHttpObject()
{
	var xmlHttp=null;
	try
	{
 	// Firefox, Opera 8.0+, Safari
 		xmlHttp=new XMLHttpRequest();
 	}
	catch (e)
 	{
 	//Internet Explorer
 		try
 		 {
 			xmlHttp=new ActiveXObject("Msxml2.XMLHTTP");
  		}
 		catch (e)
  		{
  			xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
  		}
 	}
	return xmlHttp;
}

function getQueryVariable(variable) {  var query = window.location.search.substring(1);  var vars = query.split("&");  for (var i=0;i<vars.length;i++) {    var pair = vars[i].split("=");    if (pair[0] == variable) {      return pair[1];    }  } }

/**
open calendar : pop_calendar.htm
IE: open by showModalDialog, Other: open by window.open
**/
function open_calendar(txtDateId)
{
	var tp = getQueryVariable('profile_id');
	var txt = document.getElementById(txtDateId);
				
	if(br.ie){
		var val=window.showModalDialog("pop_calendar.htm", txt.value, "dialogWidth:260px;dialogHeight:250px;left:300;top:300;status:no;");
		if(val != null)
		{
			txt.value = val;
		}
	}
	else{
		var val=window.open("pop_calendar.htm?txtDateId="+txtDateId, "Select a Date", "width=260,height=250,left=200,top=200,toolbar=no,menubar=no");
	}
}
//open picture window.
function img_new_window(name,title, img_view_file_url, site_url) {
	if(name=='')
		return;
	var x=screen.width/2-150/2; //Set window center of screen
	var y=(screen.height-30)/2-150/2;
	if(site_url== null) site_url = "";
	var url = site_url + "skin/shared/img_view.php";
	if(img_view_file_url) url = img_view_file_url;
	window.open(url + '?image='+name+'&title='+title,'','width=150,height=150,scrollbars=1,resizable=1,top='+y+',left='+x)
}

//return true if birthday is older than target Age.
function IsOrderEnough(varBirthDate, targetAge){
	var age = GetHowOld(new Date(), varBirthDate);
	var tpArr = age.split(" ");
	if(tpArr.length > 0){
		age = tpArr[0];
		if(age >= targetAge)
			return true;
	}
	return false;
}

// ---------------------------------------------------------------------------|
// qryHowOld                                                                  |
// Description: How old someone is in the format:                             |
// XXX Years XX Months X Weeks X Days                                         |
// Birth Date could be specified like Date.UTC(2002,8,16,17,42,0)             |
//                                                                            |
// Arguments:                                                                 |
//    varAsOfDate: as of date : Today.                                             |
//    varBirthDate: birth date                                                |
//                                                                            |
function GetHowOld(varAsOfDate, varBirthDate)
{
   var dtAsOfDate;
   var dtBirth;
   var dtAnniversary;
   var intSpan;
   var intYears;
   var intMonths;
   var intWeeks;
   var intDays;
   var intHours;
   var intMinutes;
   var intSeconds;
   var strHowOld;

   // get born date
   dtBirth = new Date(varBirthDate);
   
   // get as of date
   dtAsOfDate = new Date(varAsOfDate);

   // if as of date is on or after born date
   if ( dtAsOfDate >= dtBirth )
      {

      // get time span between as of time and birth time
      intSpan = ( dtAsOfDate.getUTCHours() * 3600000 +
                  dtAsOfDate.getUTCMinutes() * 60000 +
                  dtAsOfDate.getUTCSeconds() * 1000    ) -
                ( dtBirth.getUTCHours() * 3600000 +
                  dtBirth.getUTCMinutes() * 60000 +
                  dtBirth.getUTCSeconds() * 1000       )

      // start at as of date and look backwards for anniversary 

      // if as of day (date) is after birth day (date) or
      //    as of day (date) is birth day (date) and
      //    as of time is on or after birth time
      if ( dtAsOfDate.getUTCDate() > dtBirth.getUTCDate() ||
           ( dtAsOfDate.getUTCDate() == dtBirth.getUTCDate() && intSpan >= 0 ) )
         {

         // most recent day (date) anniversary is in as of month
         dtAnniversary = 
            new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                                dtAsOfDate.getUTCMonth(),
                                dtBirth.getUTCDate(),
                                dtBirth.getUTCHours(),
                                dtBirth.getUTCMinutes(),
                                dtBirth.getUTCSeconds() ) );

         }

      // if as of day (date) is before birth day (date) or
      //    as of day (date) is birth day (date) and
      //    as of time is before birth time
      else
         {

         // most recent day (date) anniversary is in month before as of month
         dtAnniversary = 
            new Date( Date.UTC( dtAsOfDate.getUTCFullYear(),
                                dtAsOfDate.getUTCMonth() - 1,
                                dtBirth.getUTCDate(),
                                dtBirth.getUTCHours(),
                                dtBirth.getUTCMinutes(),
                                dtBirth.getUTCSeconds() ) );

         // get previous month
         intMonths = dtAsOfDate.getUTCMonth() - 1;
         if ( intMonths == -1 )
            intMonths = 11;

         // while month is not what it is supposed to be (it will be higher)
         while ( dtAnniversary.getUTCMonth() != intMonths )

            // move back one day
            dtAnniversary.setUTCDate( dtAnniversary.getUTCDate() - 1 );

         }

      // if anniversary month is on or after birth month
      if ( dtAnniversary.getUTCMonth() >= dtBirth.getUTCMonth() )
         {

         // months elapsed is anniversary month - birth month
         intMonths = dtAnniversary.getUTCMonth() - dtBirth.getUTCMonth();

         // years elapsed is anniversary year - birth year
         intYears = dtAnniversary.getUTCFullYear() - dtBirth.getUTCFullYear();

         }

      // if birth month is after anniversary month
      else
         {

         // months elapsed is months left in birth year + anniversary month
         intMonths = (11 - dtBirth.getUTCMonth()) + dtAnniversary.getUTCMonth() + 1;

         // years elapsed is year before anniversary year - birth year
         intYears = (dtAnniversary.getUTCFullYear() - 1) - dtBirth.getUTCFullYear();

         }

      // to calculate weeks, days, hours, minutes and seconds
      // we can take the difference from anniversary date and as of date

      // get time span between two dates in milliseconds
      intSpan = dtAsOfDate - dtAnniversary;

      // get number of weeks
      intWeeks = Math.floor(intSpan / 604800000);

      // subtract weeks from time span
      intSpan = intSpan - (intWeeks * 604800000);
      
      // get number of days
      intDays = Math.floor(intSpan / 86400000);

      // subtract days from time span
      intSpan = intSpan - (intDays * 86400000);

      // get number of hours
      intHours = Math.floor(intSpan / 3600000);
    
      // subtract hours from time span
      intSpan = intSpan - (intHours * 3600000);

      // get number of minutes
      intMinutes = Math.floor(intSpan / 60000);

      // subtract minutes from time span
      intSpan = intSpan - (intMinutes * 60000);

      // get number of seconds
      intSeconds = Math.floor(intSpan / 1000);

      // create output string     
      if ( intYears > 0 )
         if ( intYears > 1 )
            strHowOld = intYears.toString() + ' Years';
         else
            strHowOld = intYears.toString() + ' Year';
      else
         strHowOld = '';

      if ( intMonths > 0 )
         if ( intMonths > 1 )
            strHowOld = strHowOld + ' ' + intMonths.toString() + ' Months';
         else
            strHowOld = strHowOld + ' ' + intMonths.toString() + ' Month';
           
      if ( intWeeks > 0 )
         if ( intWeeks > 1 )
            strHowOld = strHowOld + ' ' + intWeeks.toString() + ' Weeks';
         else
            strHowOld = strHowOld + ' ' + intWeeks.toString() + ' Week';

      if ( intDays > 0 )
         if ( intDays > 1 )
            strHowOld = strHowOld + ' ' + intDays.toString() + ' Days';
         else
            strHowOld = strHowOld + ' ' + intDays.toString() + ' Day';

      if ( intHours > 0 )
         if ( intHours > 1 )
            strHowOld = strHowOld + ' ' + intHours.toString() + ' Hours';
         else
            strHowOld = strHowOld + ' ' + intHours.toString() + ' Hour';
 
      if ( intMinutes > 0 )
         if ( intMinutes > 1 )
            strHowOld = strHowOld + ' ' + intMinutes.toString() + ' Minutes';
         else
            strHowOld = strHowOld + ' ' + intMinutes.toString() + ' Minute';

      if ( intSeconds > 0 )
         if ( intSeconds > 1 )
            strHowOld = strHowOld + ' ' + intSeconds.toString() + ' Seconds';
         else
            strHowOld = strHowOld + ' ' + intSeconds.toString() + ' Second';

      }
   else
      strHowOld = '-1'; //Not Born Yet

   // return string representation
   return strHowOld
}
/** return true if input string contains special character rather than number and alphabets. **/
function HasSpecialChar(inputString) {
	var good="0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ";
    for (var i = 0; i < inputString.length; i++) {
       if (good.indexOf(inputString.charAt(i)) == -1) {
          return true; 
		}
	}
	return false;
}

/************************************************
REQUIREMENT: The page uses this method need to include object.js. (Not Mandatory)
PARAMETERS:
   value - Type: String. A value to be tested for validity.
   valueType - Type: Integer. Type of validation. Must be one of the Type defined above.
RETURNS:
   true if valid, otherwise false.   
EXAMPLE:
function bt1onclick() {
		var txt = document.getElementById("testTxt");
		var result = Validate(txt.value, "Email");
		alert("Result: " + result);
}
*************************************************/
function Validate(value, valueType){
	var objRegExp;
	try{value = value.trim();}
	catch(e){}//depending on object.js
	if(value == "") return true;
	valueType = valueType.toLowerCase();
	switch(valueType){
		case "id":
			objRegExp = /([0-9a-zA-Z_-]+)/;
			break;
		case "email":
			objRegExp = /([0-9a-zA-Z_-]+)@([0-9a-zA-Z_-]+)\.([0-9a-zA-Z_-]+)/;
			break;
		case "url":
			objRegExp = new RegExp("http://([\\w-]+\\.)+[\\w-]+(/[\\w- ./?%&=]*)?");
			break;
		case "phone":
			objRegExp = /^\D?(\d{3})\D?\D?(\d{3})\D?(\d{4})$/;
			// /\([2-9]\d{2}\)\s?[2-9]\d{2}\s?-\s??\d{4}/; //(###) ###-#### format
			//; //original one
			break;
		case "ssn":
			objRegExp =  /\d{3}-\d{2}-\d{4}/;
			break;
		case "zipcode":
			objRegExp = /\d{5}(-\d{4})?/;
			break;
		case "zipcode_4digit":
			objRegExp = /\d{4}/;
			break;
		case "phone_frc":
			objRegExp = /(0( \d|\d ))?\d\d \d\d(\d \d| \d\d )\d\d/; 
			break;
		case "numeric":
			objRegExp = /(^-?\d\d*\.\d*$)|(^-?\d\d*$)|(^-?\.\d\d*$)/; 
			break;
		case "integer":
			objRegExp = /(^-?\d\d*$)/; 
			break;
		case "datetime":
			objRegExp = /(^(((((((0?[13578])|(1[02]))[\.\-/]?((0?[1-9])|([12]\d)|(3[01])))|(((0?[469])|(11))[\.\-/]?((0?[1-9])|([12]\d)|(30)))|((0?2)[\.\-/]?((0?[1-9])|(1\d)|(2[0-8]))))[\.\-/]?(((19)|(20))?([\d][\d]))))|((0?2)[\.\-/]?(29)[\.\-/]?(((19)|(20))?(([02468][048])|([13579][26])))))$)/; 
			break;
		case "money":
			objRegExp = /^([1-9]{1}[\d]{0,2}(\,[\d]{3})*(\.[\d]{0,2})?|[1-9]{1}[\d]{0,}(\.[\d]{0,2})?|0(\.[\d]{0,2})?|(\.[\d]{1,2})?)$/; 
			break;
		//Credit Card Validation. Matches Switch/Solo, Visa, MasterCard and Discover in 4-4-4-4/4 4 4 4/4444 format and Amex in 4-6-5/4 6 5/465 format.
		//Includes checks for prefixes, (67 for switch/solo, 4 for visa, 51-55 for MasterCard, 37/34 for Amex and 6011 for Discover. 
		//Matches all major UK debit and credit cards with spaces dashes or as a continous number
		case "creditcard":
			objRegExp = /^((67\d{2})|(4\d{3})|(5[1-5]\d{2})|(6011))(-?\s?\d{4}){3}|(3[4,7])\d{2}-?\s?\d{6}-?\s?\d{5}$/; 
			break;
		case "password":
			if(value.length < 6) return false;
			objRegExp = /\W/; //if contains invalid char. prevent non english.
			
			if(objRegExp.test(value))
				return false;
			else
				return true;
		default:
			alert("Value type: " + valueType + " is not supported");
			return false;
	}
	return objRegExp.test(value);
}

//** MOved from skin/shared/script.js -- need to be linked before page start. **/
	function popup_id(frm_name, dir, frm_id, id)
	{		
			if( id.value == '' ) {
				alert("Input member id.")
				id.focus();
				return false;
			}
			
			if(HasSpecialChar(id.value)){
				alert('Member id cannot contain special character!');
				f.mb_id.focus();
				return false;
			}
			if(id.value.indexOf(" ") > 0){
				alert('Member id cannot contain blank space.');
				id.focus();
				return false;
			}
			url = dir+'confirm_id.php?frm_name='+frm_name+'&frm_id='+frm_id+'&id='+id.value;
			opt = 'scrollbars=no,width=355,height=200';
			window.open(url, "", opt);
	}

	function popup_nick(frm_name, dir, frm_nick, nick)
	{	
			if( nick.value == '' ) {
				alert("Input nick name.");
				nick.focus();
				return false;
			}
			url = dir+'confirm_nick.php?frm_name='+frm_name+'&frm_nick='+frm_nick+'&nick='+nick.value;
			opt = 'scrollbars=no,width=420,height=200';
			window.open(url, "mbwriter", opt);
	}
	
	function popup_zip(frm_name, dir, frm_zip1, frm_zip2, frm_addr1, frm_addr2)
	{
			url = dir+'confirm_zip.php?frm_name='+frm_name+'&frm_zip1='+frm_zip1+'&frm_zip2='+frm_zip2+'&frm_addr1='+frm_addr1+'&frm_addr2='+frm_addr2;
			opt = 'scrollbars=yes,width=500,height=300';
			window.open(url, "mbzip", opt);
	}
		
	function popup_mb_list(frm_name, dir, frm_id, frm_num, key, multi)
	{		
			if(!multi) multi=1
			if(!key) key=''
			url = dir+'popup_member_list.php?frm_name='+frm_name+'&frm_id='+frm_id+'&frm_num='+frm_num+'&key='+key+'&multi='+multi;
			opt = 'scrollbars=no,width=400,height=500';
			window.open(url, "popup_mb_list", opt);
	}

	function popup_passwd(dir)
	{	
			url = dir+'send_passwd.php';
			opt = 'scrollbars=no,width=450,height=380';
			window.open(url, "mbpasswd", opt);
	}
		
	function del(href) 
	{
			if(confirm("Do you want to delete permanently?")) 
					document.location.href = href;
	}
	function warning_msg(type)
	{	
		switch(type) {
			case 'login' : alert("Try it again after login.")
				break;
			}
		return;			
	}

	function before_login(dir)
	{	
		alert("Try it again after login.");
		location.href=dir+'login.php?url='+location.href;
	}
	
	/*
	This function checks or unchecks all checkboxes 
	within form.
	*/
	function CheckBox_ToggleAll(control)
	{	
		var checkedValue = control.checked;			
		var frm = document.forms[0];			
		var len = frm.elements.length;			
		for (var i=0; i<len; i++)
		{						
			if ( frm.elements[i].type != null &&  frm.elements[i].type.indexOf("checkbox") != -1)
			{			
				if (frm.elements[i].checked != checkedValue)
					frm.elements[i].click();
			}
		}	
	}
	function CheckBox_ToggleAll2(myForm, checkBoxName, checked)
	{
		//checks all checkboxes with a specified name in the form
		for(i=0; i<myForm.elements.length; i++)
		{
			if( myForm.elements[i].type == "checkbox" && myForm.elements[i].name == checkBoxName )
			{
				myForm.elements[i].checked = checked;
			}
		}
	}

	function CheckBox_ToggleAll3(frm, checkedValue)
	{		
		var len = frm.elements.length;			
		for (var i=0; i<len; i++)
		{						
			if ( frm.elements[i].type != null &&  frm.elements[i].type.indexOf("checkbox") != -1)
			{			
				if (frm.elements[i].checked != checkedValue)
					frm.elements[i].checked = checkedValue;
			}
		}	
	}
	function CheckBox_ToggleAll4(name, checked){
		var chkList = document.getElementsByName(name);
		for(i=0; i<chkList.length; i++)
		{
			chkList[i].checked = checked;
		}
	}
	
	function CheckBox_SelectedCount(myForm, checkBoxName)
	{
		var count = 0;
		//checks all checkboxes with a specified name in the form
		for(var i=0; i<myForm.elements.length; i++)
		{
			if( myForm.elements[i].type == "checkbox" && myForm.elements[i].name == checkBoxName && myForm.elements[i].checked)
			{
				count++;
			}
		}
		return count;
	}
	
	function CheckBox_SelectedValues(chkName, delimeter){
		var chkList = document.getElementsByName(chkName);
		var values="";
		for(i=0; i<chkList.length; i++)
		{
			if(chkList[i].checked)
			{
				if(values != "")
					values += delimeter;
				values += chkList[i].value;
			}
		}
		return values;
	}
	function list_checkbox(form,fname) {
		var Check_List=false;
		for(i=0;i<form.length;i++) {
			if(form[i].type=="checkbox" && form[i].name==fname) {
				if(form[i].checked) Check_List=true;
			}
		}
		return Check_List;
	}

	function list_checkbox_value(form,fname) {
		var _reslut='';
		for(i=0;i<form.length;i++) {
			if(form[i].type=="checkbox" && form[i].name==fname) {
				if(form[i].checked) {
					if(_reslut=='')
						_reslut = form[i].value
					else
						_reslut = _reslut + ','+form[i].value
				}
			}
		}
		return _reslut;
	}
	
	/**
	 returns the array number of the selected radio button or -1 if no button is selected
	**/
	function radio_selected_button_index(buttonGroup){
	   if (buttonGroup[0]) { // if the button group is an array (one button is not an array)
		  for (var i=0; i<buttonGroup.length; i++) {
			 if (buttonGroup[i].checked) {
				return i
			 }
		  }
	   } else {
		  if (buttonGroup.checked) { return 0; } // if the one button is checked, return zero
	   }
	   // if we get to this point, no radio button is selected
	   return -1;

	}
	/**
	 returns the value of the selected radio button or "" if no button is selected
	**/
	function radio_selected_value(radioButtonGroupName){
	   var buttonGroup = document.getElementsByName(radioButtonGroupName);
	   var i = radio_selected_button_index(buttonGroup);
	   if (i == -1) {
		  return "";
	   } else {
		  if (buttonGroup[i]) { // Make sure the button group is an array (not just one button)
			 return buttonGroup[i].value;
		  } else { // The button group is just the one button, and it is checked
			 return buttonGroup.value;
		  }
	   }
	}
	
	
	// rg_layer related methods: on mouse click of member id.
	// moved from shared/script.js since when page is loaded slowly, js err occurs.
	var layername = 'rg_layer_div'

	function rg_layer_action(name, status)
	{
		var obj = document.all[name];

		if (typeof(obj) == 'undefined') {
			return;
		}

		if (status) {
			obj.style.visibility = status;
		} else {
			if(obj.style.visibility == 'visible')
				obj.style.visibility='hidden';
			else
				obj.style.visibility='visible';
		}
	}

	function rg_layer(dir,bbs_id, id, name, email, homepage, profile, petspace_id)
	{		
		
		// event.clientX : click X point
		// event.clientY : click Y point
		// obj.offsetWidth  : DIV object width
		// obj.offsetHeight : DIV object height
		// document.body.clientWidth  : browser width
		// document.body.clientHeight : browser height
		// document.body.scrollLeft : scroll Left
		// document.body.scrollTop  : scroll Top
		// obj.style.posLeft : DIV object X point
		// obj.style.posTop  : DIV object Y point
		//alert(layername);
		var obj = document.getElementById(layername);// document.all[layername];
		
		var x, y;
		var body = "";
		var height = 0;
		if(!window.event) return;
		x = event.clientX + document.body.scrollLeft - 20;
		y = event.clientY + document.body.scrollTop - 20;
		obj.style.posLeft = x;
		obj.style.posTop = y;
		if (petspace_id) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"location.href='"+dir+"petspace_view.php?id="+petspace_id+"';\"><td align=center height=20>&nbsp;&nbsp;Go to PET SPACE&nbsp;&nbsp;</td></tr>";
			height += 20;
		}
		if (id) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"location.href='"+dir+"memo.php?mode=write&subpg=mail_write&mo_recv_mb_id="+id+"';\"><td align=center height=20>&nbsp;&nbsp;Send Pet Mail&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (name && bbs_id) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"location.href='"+dir+"list.php?bbs_id="+bbs_id+"&ss[sn]=1&ss[kw]="+name+"';\"><td align=center height=20>&nbsp;&nbsp;Search by Name&nbsp;&nbsp;</td></tr>";
			height += 20;
		}
		
		if (email) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"location.href='mailto:"+email+"'\"><td align=center height=20>&nbsp;&nbsp;Send email&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (homepage) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+homepage+"');\"><td align=center height=20>&nbsp;&nbsp;Homepage&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (parseInt(profile)) {
			body += "<tr onmouseover=this.style.backgroundColor='#ffffff' onmouseout=this.style.backgroundColor='#e5e5e5' onmousedown=\"window.open('"+dir+"mb_profile.php?mb_id="+id+"', 'profile', 'left=50,top=50,width=500,height=400,scrollbars=1');\"><td align=center height=20>&nbsp;&nbsp;Introduction&nbsp;&nbsp;</td></tr>";
			height += 20;
		}

		if (body) {
			var layer_body = "<table border=0 width=100%><tr><td colspan=3 height=10></td></tr><tr><td width=5></td><td bgcolor=222222 style='cursor:hand'><table class='userPopup' border=0 cellspacing=0 cellpadding=3 width=100% height=100% bgcolor=e5e5e5>"+body+"</table></td><td width=10></td></tr><tr><td colspan=3 height=10></td></tr></table>";
			obj.innerHTML = layer_body;
			obj.style.width = 150;
			obj.style.height = height;
			obj.style.visibility='visible';
		}
	}


	function rg_init_layer(layername)
	{
		document.writeln("<div id="+layername+" style='position:absolute; left:1px; top:1px; width:1px; height:1px; z-index:1; visibility: hidden' onmousedown=\"rg_layer_action('"+layername+"', 'hidden')\" onmouseout=\"rg_layer_action('"+layername+"', 'hidden')\" onmouseover=\"rg_layer_action('"+layername+"', 'visible')\">");
		document.writeln("</div>");
	}
	
	rg_init_layer('rg_layer_div');
//** END OF MOved from skin/shared/script.js -- need to be linked before page start. **/	
	
	/************** Div moving : only one div is supported per page **/
	var div_moving_stmnLEFT = 715; // Left Pos
	var div_moving_stmnGAP1 = 250;//127; // Top Pos
	if(!br.ie) div_moving_stmnGAP1 += 10; //Since netscape body margin has 10px gap
	var div_moving_stmnGAP2 = 30; // Scrolling header margin
	var div_moving_stmnBASE = 150; // initial scroll Pos
	var div_moving_stmnActivateSpeed = 10; // Monitoring frequency
	var div_moving_stmnScrollSpeed = 10; // Scroll speed
	var div_moving_stmnTimer;
	
	function div_moving_RefreshStaticMenu(divId) {
		var div_moving_stmnStartPoint, div_moving_stmnEndPoint, div_moving_stmnRefreshTimer;
		var div = document.getElementById(divId);
		div_moving_stmnStartPoint = parseInt(div.style.top, 10);
		div_moving_stmnEndPoint = document.body.scrollTop + div_moving_stmnGAP2;
		if (div_moving_stmnEndPoint < div_moving_stmnGAP1) div_moving_stmnEndPoint = div_moving_stmnGAP1;
	
		div_moving_stmnRefreshTimer = div_moving_stmnActivateSpeed;
	
		if ( div_moving_stmnStartPoint != div_moving_stmnEndPoint ) {
			div_moving_stmnScrollAmount = Math.ceil( Math.abs( div_moving_stmnEndPoint - div_moving_stmnStartPoint ) / 15 );
			div.style.top = parseInt(div.style.top, 10) + ( ( div_moving_stmnEndPoint<div_moving_stmnStartPoint ) ? -div_moving_stmnScrollAmount : div_moving_stmnScrollAmount );
			div_moving_stmnRefreshTimer = div_moving_stmnScrollSpeed;
		}	
		div_moving_stmnTimer = setTimeout ("div_moving_RefreshStaticMenu('"+divId+"');", div_moving_stmnRefreshTimer);
	}
	
	function div_moving_InitializeStaticMenu(divId) {
		var div = document.getElementById(divId);
		div.style.left = div_moving_stmnLEFT;
		div.style.top = document.body.scrollTop + div_moving_stmnBASE;
		div_moving_RefreshStaticMenu(divId);
	}	
	
	function GetUID(){
	   var now    = new Date();
	   var dt = now.getDate();
	   var hour   = now.getHours();
	   var minute = now.getMinutes();
	   var second = now.getSeconds();
	   var milSecond = now.getMilliseconds();
	   var id = dt+"_"+hour+"_"+minute+"_"+second+"_"+milSecond;
	   return id;
	}
	
	/** How to use : Example	
	div_moving_stmnLEFT = 715; // Left Pos
	div_moving_stmnGAP1 = 250;//127; // Top Pos
	if(!br.ie) div_moving_stmnGAP1 += 10; //Since netscape body margin has 10px gap
	div_moving_stmnGAP2 = 30; // Scrolling header margin
	div_moving_stmnBASE = 150; // initial scroll Pos
	
	<DIV id="div_gotop" style="POSITION: absolute">
	<a href="#top"><img src="images/go_top.gif" border="0"></a>
	</DIV>
	div_moving_InitializeStaticMenu("div_gotop");
	**/
	/**************** End of Div_moving ***/
	

/** Post Copy related **/
var postCopyPopup_xmlHttp;
var postCopyPopup_redirect_url;
function postCopyPopup_show(item_id){
	var sp = document.getElementById("spPostCopyPopup_dropdown_"+item_id);
	sp.style.display = '';
}
function postCopyPopup_hide(item_id){
	document.getElementById("spPostCopyPopup_dropdown_"+item_id).style.display = 'none';			
}
// 1: family, 2: group, 3: event
function postCopyPopup_copy(site_url, item_id, from_type, from_id, my_family_id){
	if(my_family_id == null){
		alert("Please login first!");
		return false;
	}
	var profile = $("copy_sel_profile_"+item_id);
	profile = profile.options[profile.selectedIndex].value;
	var cat = $("copy_sel_category_"+item_id);
	cat = cat.options[cat.selectedIndex].value;
	var view = $("copy_sel_viewLevel_"+item_id);
	view = view.options[view.selectedIndex].value;
	var copy = $("copy_chk_"+item_id).checked ? "1": "0";
	
	postCopyPopup_redirect_url = site_url + "petspace_view.php?id="+my_family_id+"&profile_id="+profile+"&mode=post_view_item&category_id="+cat+"&display_type=2&filter=all&sort=ru&search=&page=1&item_id=";
	
	postCopyPopup_xmlHttp=GetXmlHttpObject();
	if (postCopyPopup_xmlHttp==null)
 	{
 		alert ("Browser does not support HTTP Request");
 		return false;
 	}
	var url=site_url+"petspace_action.php";
	url += "?mode=post_copy&from_type="+from_type+ "&from_id="+from_id+ "&item_id="+item_id+ "&profile_id="+profile+"&category_id="+cat+"&view_level="+view + "copy="+copy;
	postCopyPopup_xmlHttp.onreadystatechange=postCopyPopup_copyDone ;
	postCopyPopup_xmlHttp.open("GET",url,true);
	postCopyPopup_xmlHttp.send(null);
}
function postCopyPopup_copyDone(item_id){
	if (postCopyPopup_xmlHttp.readyState==4 || postCopyPopup_xmlHttp.readyState=="complete")
 	{
		var txt = postCopyPopup_xmlHttp.responseText;
		if(txt.length < 1) return;
		if(txt.substring(0,1)=="@"){
			alert(txt.substring(1));
			return;
		}
		if(confirm("Copied, Do you want to check it?")){
			window.location.href = postCopyPopup_redirect_url + txt;
		}
	}
}
function img_adjust_width(imgObj){
	if(imgObj.width > 600){
		imgObj.width = 600;
	}
}

function video_getVideoImgUrl(videoCode){
	if(videoCode.trim() == "") return "";
	var objRegExp =new RegExp("http:\\/\\/www\.youtube\.com\\/v\\/([^\"][a-zA-Z0-9-_]+)[&\"]");
	var matchArr = objRegExp.exec(videoCode.trim(), "siU");
	if(matchArr == null || matchArr.length < 2) return "";
	
	var videoID = matchArr[1];
	var imgUrl = "http://img.youtube.com/vi/"+videoID+"/default.jpg";
	return imgUrl;
}


function msgOnAction(srcObj, uniqueKey, message){
	if(typeof(msgOnActionCollection) == "undefined"){
		//creating global obj.
		msgOnActionCollection = new Array();
	}
	var parent = Element.up(srcObj);
	if(parent != null){
		srcObj.style.display = "none";			
		var msgObj = document.createElement("span");
		msgObj.className = "msgOnAction";
		msgObj.innerHTML = message;
		parent.appendChild(msgObj);
	}
			
	var collectionItem = new Array();
	collectionItem["srcObj"] = srcObj;
	collectionItem["msgObj"] = msgObj;
	msgOnActionCollection[uniqueKey] = collectionItem;
}
function msgOnActionDone(uniqueKey){
	if(msgOnActionCollection == null){alert("Error");return;}
	var collectionItem = msgOnActionCollection[uniqueKey];
	var srcObj = collectionItem["srcObj"];
	var msgObj = collectionItem["msgObj"];
	srcObj.style.display = "";
	Element.up(srcObj).removeChild(msgObj);
}