/*
 * @descr event: click to the tab
 * @author S.Donchenko, <sergey.donchenko@gmail.com>
 **/
function clickMemorialTab(tab,obj){

   Memorial.load_page(tab);
   updateGlobalNav(obj);
   return false;

}
function updateGlobalNav(el)
{
	
	jQuery('#header_menu a.clicked').each(
		function() {
			this.className='';
			jQuery(this).parent().removeClass('clicked');
		}
	)
	
	if (el) {
		el.className='clicked';
		jQuery(el).parent().addClass('clicked');
	}
}

function is_array( mixed_var ) {
    // http://kevin.vanzonneveld.net
    // +   original by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
    // +   improved by: Legaev Andrey
    // +   bugfixed by: Cord
    // *     example 1: is_array(['Kevin', 'van', 'Zonneveld']);
    // *     returns 1: true
    // *     example 2: is_array('Kevin van Zonneveld');
    // *     returns 2: false
 
    return ( mixed_var instanceof Array );
}


/**
 * js needed for add fields link
 */
var showCsvEmailField = function(e) {
	//YAHOO.util.Dom.get("frm_csv_emails_container").innerHTML = YAHOO.util.Dom.get("frm_csv_emails_container").innerHTML + "<input type='text' name='frm_emails[]' class='textbox' /><br /><input type='text' name='frm_emails[]' class='textbox' /><br /><input type='text' name='frm_emails[]' class='textbox' /><br />";
	
	newcontent = jQuery("#frm_csv_emails_container").html() + "<input type='text' name='frm_emails[]' class='textbox' /><br /><input type='text' name='frm_emails[]' class='textbox' /><br /><input type='text' name='frm_emails[]' class='textbox' /><br />";
	jQuery("#frm_csv_emails_container").html( newcontent );
};

var editImg = jQuery("<img />").attr('src', '/lib/img/ico_edit_pencil.gif').addClass('ico-edit-pencil');
var editImgSmall = jQuery("<img />").attr('src', '/lib/img/ico_edit_pencil_small.gif').addClass('ico-edit-pencil');

//  You don't need to change anything in this function:
var tabs_history = new Array();
var tabs_history_length = 3;

var urls = new Array();
var history_length = 5;
var history_load_lock = false;

var flash_notification_displayed = false;

//var chk_eml_rgxp = new RegExp(/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i);
//var chk_eml_rgxp = new RegExp(/^[a-z0-9,!\#\$%&'\*\+/=\?\^_`\{\|}~-]+(\.[a-z0-9,!#\$%&'\*\+/=\?\^_`\{\|}~-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,})/i);
var chk_eml_rgxp = new RegExp(/^[\w-]+(\.[\w-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*\.([a-z]{2,4})$/i);

var xhrPost = function(args, responseElementId, formId, onloadcallback) {
	var el = jQuery("#"+responseElementId);
	opts = {
		success:function(response) {
			// Using this way to place HTML so browser does not scroll up to this element
			//el.get(0).innerHTML = '';
			//el.get(0).innerHTML = response;
			el.html(response);
			if(onloadcallback) onloadcallback();
		},
		type:'post'
	}
	if (typeof(formId)!='undefined') {
		opts.data = jQuery("#"+formId).serialize();
	}
	opts.data += '&internal_ajax_call=1';

	opts = jQuery.extend(opts,args);
	
	el.html('<div class="AJAX_wait"><img src="/lib/sw/img/ajax-loader.gif" alt="Please wait..." /></div>');
	
	jQuery.ajax(opts);
	return false;
}

function get_loader_html()
{
	return '<div class="AJAX_wait"><img src="/lib/sw/img/ajax-loader.gif" alt="Please wait..." /></div>';
}


var xmlhttpPost = function(url, responseEl, onloadcallback, isDialog, formname) {
	for (var i = 0; i < history_length; i++) {
	        urls[i] = urls[i+1];
	}
	urls[history_length] = url;
	
	/*
	if (!isDialog || isDialog == null || isDialog == false) {
		for (var k = 0; k < tabs_history_length; k++) {
			tabs_history[k] = tabs_history[k+1];
		}
		tabs_history[tabs_history_length] = url;
		
		history_load_lock = true;
		
		if (typeof(jQuery.history)!='undefined') {
			jQuery.history.load(url);
		}
		
		history_load_lock = false;
		
	} else {
		
	}
	*/
	
//	if (document.getElementById(responseEl) != null) {
//	} else {
//		return false;
//	}

	var xmlHttpReq = false;
	var self = {};
	// Mozilla/Safari
//	if (window.XMLHttpRequest) {
//		self.xmlHttpReq = new XMLHttpRequest();
//	}
	// IE
//	else if (window.ActiveXObject) {
//		self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
//	}
	try {
		self.xmlHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e) {
		 try {
			 self.xmlHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
		 } catch (E) {
			 self.xmlHttpReq = false;
		 }
	}
	if (!self.xmlHttpReq && typeof XMLHttpRequest!='undefined') {
		try {
			self.xmlHttpReq = new XMLHttpRequest();
		} catch (e) {
			self.xmlHttpReq = false;
		}
		}
		if (!self.xmlHttpReq && window.createRequest) {
		try {
			self.xmlHttpReq = window.createRequest();
		} catch (e) {
			self.xmlHttpReq = false;
		}
	} 
		
	self.xmlHttpReq.open('POST', url, true);
	self.xmlHttpReq.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=utf-8');
	//self.xmlHttpReq.setRequestHeader('Content-Type', 'text/html; charset=utf-8');
	
	
	if (formname != "" && formname != null) {
		m = getquerystring(formname);
	} else {
		m = getquerystring();
	}
	if (m.length > 0) {
		m += '&';
	}
	m += 'internal_ajax_call=1';
	// adding timestamp to identify internal requests
	
	if (document.getElementById(responseEl)) {	
		el = document.getElementById(responseEl);
		el.style.visibility="visible";
		el.style.display="block";
		el.innerHTML = '<div class="AJAX_wait"><img src="/lib/sw/img/ajax-loader.gif" alt="Please wait..." /></div>';
	}
	self.xmlHttpReq.onreadystatechange = function() {
		if (self.xmlHttpReq.readyState == 4) {
			msg = self.xmlHttpReq.responseText;
			if (document.getElementById(responseEl)) {
				updatepage(responseEl, msg);
			}			
			if (onloadcallback) {
				onloadcallback();
			}
		}
	}

	self.xmlHttpReq.send(m);

};


//   The following function obtains two variables from your form (email and message) 

function getquerystring(formname) {
	if (formname != null && form != "") {
		var form = document.getElementById(formname);
		if (!form) {
			// Trying to access by name
			var form = document.forms[formname];
		}
	} else {
		var form = document.getElementById('SWPopup');
	}
	
	qstr = '';
	if (form)
	{
	for (var i=0; i < form.elements.length; i++) {
	   var element = form.elements[i];
	   if (element.type == 'checkbox')
	   {
		   if (element.checked == true)
		   {
			   qstr = qstr + element.name + '=1&';
		   } else {
			   qstr = qstr + element.name + '=0&';
		   }

		} else if (element.type == 'radio') {
			if (element.checked == true) {qstr = qstr + element.name + '=' + encodeURIComponent(element.value) + '&';}
			else { }
		} else {
			qstr = qstr + element.name + '=' + encodeURIComponent(element.value) + '&'; //escape(element.value) + '&';
	   }
		
	}
	}
	//var message = form.message.value;
	//qstr = 'email=' + escape(email) + '&message=' + escape(message); 
	//qstr = 'frm_email=' + escape(email) + '&frm_event=' + escape(event); 
	return qstr;
}
/*
function loadScripts(code) {
  if (!code) return;
  if (window.execScript) {
    return window.execScript(code); // eval in global scope for IE
  }
  return window.eval ? window.eval(code) : eval(code);
}
*/

function updatepage(responseEl, str){
	var script = "";
	str = str.replace(/<script[^>]*>([\s\S]*?)<\/script>/gi, function(){
		if (str !== null) script += arguments[1] + '\n';
		return '';
	});
	
	var el = document.getElementById(responseEl);
	if (el != null) {
		//if (el.fistChild != null) {
		//	el.removeChild(el.firstChild);
		//}
		el.innerHTML = '';
		el.innerHTML = str;
	}
	
	try {
		if(script) (window.execScript) ? window.execScript(script) : window.setTimeout(script, 0);
	} catch (e) {
		alert(e + " " + e.description);
	}

	IE7 = (navigator.appVersion.indexOf('MSIE 7.')==-1 && navigator.appVersion.indexOf('Safari')==-1) ? false : true;

}

function activateGSpell(el) {
	var googie1 = new GoogieSpell("/lib/sw/js/googiespell/", "/lib/sw/js/googiespell/sendReq.php?lang=");
	googie1.decorateTextarea(el);
}

/**
*
*  AJAX IFRAME METHOD (AIM)
*  http://www.webtoolkit.info/
*
**/

AIM = {

    frame : function(c) {
		var n = 'f' + Math.floor(Math.random() * 99999);
        var d = document.createElement('DIV');
        d.innerHTML = '<iframe style="display:none" src="about:blank" id="'+n+'" name="'+n+'" onload="AIM.loaded(\''+n+'\')"></iframe>';
        document.body.appendChild(d);
        var i = document.getElementById(n);
        if (c && typeof(c.onComplete) == 'function') {
            i.onComplete = c.onComplete;
        }

        return n;
    },

    form : function(f, name) {
        f.setAttribute('target', name);

    },

    submit : function(f, c) {
        AIM.form(f, AIM.frame(c));
        if (c && typeof(c.onStart) == 'function') {
			return c.onStart();
        } else {
            return true;
        }

    },

    loaded : function(id) {
        var i = document.getElementById(id);
        if (i.contentDocument) {
            var d = i.contentDocument;
        } else if (i.contentWindow) {
            var d = i.contentWindow.document;
        } else {
            var d = window.frames[id].document;
        }		
	
		if (d.location.href == "about:blank") {
            return;
        }
		
        if (typeof(i.onComplete) == 'function') {
            i.onComplete(d.body.innerHTML);
        }
		i.parentNode.removeChild(i);
    }

}




function startCallback(response) {
	// make something useful before submit (onStart)
	e = document.getElementById('SWForm_AIMelements');
	e.style.display = 'none';
	e = document.getElementById('SWForm_AIMwait');
	e.innerHTML = '<div class="AJAX_wait"><img src="/lib/sw/img/ajax-loader.gif" alt="Please wait..." /></div>';
	e.style.display = 'block';
	return true;
}

function completeCallback(response) {
	// make something useful after (onComplete)
	// Placing to the same block
	if (response) {
		responsetarget = 'SWForm_AIMelements';
		if (document.getElementById(responsetarget)){
			updatepage(responsetarget, response);
			e = document.getElementById('SWForm_AIMelements');
			if (e != null) e.style.display = 'block';
		}
	}
	
	//updatepage('SWForm_AIMresponse', response);
	updatepage('SWForm_AIMwait', '');
	var e = document.getElementById('SWForm_AIMwait');
	if (e != null ) {
		e.innerHTML='';
		e.style.display = 'none';
	}
	//hide_iframe();
}

var hide_iframe = function () {
	var popifrm = document.getElementById('popup_iframe');
	if (popifrm != null) popifrm.style.visibility = 'hidden';
}
var getScrollTop = function () {
	return window.pageYOffset
         || document.documentElement.scrollTop
         || document.body.scrollTop
         || 0;
}
var getScrollLeft = function () {
     return window.pageXOffset
         || document.documentElement.scrollLeft
         || document.body.scrollLeft
         || 0;
}


var resize_iframe = function (width, height) {
	var dialogs_iframe = document.getElementById('popup_iframe');
	var forms_popup = document.getElementById('FormsPopup');
	if (dialogs_iframe != null && forms_popup != null) {
		dialogs_iframe.style.top = getScrollTop() + 10 + 'px';
		dialogs_iframe.style.left = forms_popup.style.left;
		dialogs_iframe.style.margin = forms_popup.style.margin;
		dialogs_iframe.style.visibility = 'visible';
		if (height != null && height != '') {
			dialogs_iframe.style.height = height;
		} else {
			dialogs_iframe.style.height = forms_popup.offsetHeight + 'px';
		}
		if (width != null && width != '') {
			dialogs_iframe.style.width = width;
		} else {
			dialogs_iframe.style.width = forms_popup.offsetWidth + 'px';
		}
	}
}

var showOverlay = function(){jQuery("#popupOverlay").css({"opacity": '0.5'}).show();}
var hideOverlay = function(){jQuery("#popupOverlay").css({cursor:'auto'}).fadeOut('fast');}

var centerPopupForm = function(args){
	var opts = {
		center_horizontal:true,
		center_vertical:true
	};
	var el = 'FormsPopup';
	el = jQuery('#'+el);
	var scroll_top = getScrollTop();
	var scroll_left = getScrollLeft();
	
	var l = Math.floor(( jQuery(window).width() - el.width() )/2);
	if (l < 0) l = 1;
	var t = Math.floor(( jQuery(window).height() - el.height() )/3);
	if (t < 0) t = 1;
	
	if (opts.center_horizontal) {
		el.css({'left': scroll_left + l + 'px'});
	}
	if (opts.center_vertical) {
		el.css({'top' : scroll_top + t + 'px'});
	}
	
	return true;
}

var showPopupForm_center = function(pc, el, margin, width, form_name, url) {
	el = 'FormsPopup';
	showOverlay();
	centerPopupForm();
	var call_url = '/lib/sw/blank.php?pc='+pc+'&pel='+el;
	if (url) call_url = url;
	
	xhrPost({url:call_url}, el, form_name, centerPopupForm);

	el = jQuery('#'+el);
	el.css({
		'width' : width?width:'421px',
		/*'top' : '100px',	*/
		'visibility' : 'visible'
	});

	return false;
}
/*	TOS	*/
var resize = function () {
	var frmcont = document.getElementById('frmcontent');
	var offheight = frmcont.offsetHeight; 
	
	var ifrmtos = document.getElementById('iframe_tos');
	ifrmtos.style.visibility = 'visible';
	ifrmtos.style.height = offheight + 'px';
	var pgcont = document.getElementById('pg_cont');
		pgcont.style.height = offheight + 'px';
}
var resize2 = function () {
	var frmcont = document.getElementById('frmcont');
	var pgcont = document.getElementById('page_cont');
		
		frmcont.style.top = pgcont.offsetTop;
		frmcont.style.left = pgcont.offsetLeft;
		
	var ifrmtos = document.getElementById('iframe_tos');
	ifrmtos.style.visibility = 'visible';
	ifrmtos.style.top = getScrollTop() + 65 + 'px';
}

var showPopupForm_tos = function(el, width) {
	jQuery('#FormsPopup').draggable({handle: '.step_header'});
	showPopupForm_center (false,false,false,'1000px',false, '/lib/pg/terms2.php?popup=yes');
	
	//xmlhttpPost('/lib/pg/terms2.php?popup=yes', el, resize2);
	
	//var ifrmtos = document.getElementById('iframe_tos');
	//ifrmtos.style.visibility = 'visible';
	
	//el = document.getElementById(el);
	//el.style.top =  getScrollTop() + 50 + 'px';
	//el.style.visibility = 'visible';

}

function chkresult(res){
	var chkbox = document.getElementById('reg_tos');
	chkbox.checked = res;
	closeSWForm('FormsPopup');
	/*
	var el = document.getElementById('TOS');
	var ifrmtos = document.getElementById('iframe_tos');
	if (res == true) {
		chkbox.checked = true;
		el.style.visibility = 'hidden';
		ifrmtos.style.visibility = 'hidden';
	} else {
		chkbox.checked = false;
		el.style.visibility = 'hidden';
		ifrmtos.style.visibility = 'hidden';
	}*/
}
/*	/TOS	*/

var closeSWForm = function(el, hide_overlay) {
	if (typeof(el) == 'undefined') el = 'FormsPopup';
	if (typeof(hide_overlay) == 'undefined') hide_overlay = true;
	else hide_overlay = false;
	
	jQuery('#'+el).html('');
	//jQuery('#'+el).css('visibility','hidden');
	
	var dialogs_iframe = document.getElementById('popup_iframe');
	if (dialogs_iframe != null) {
		dialogs_iframe.style.visibility = 'hidden';
	}
	if (hide_overlay) hideOverlay();
}

var isSWFormActive = function(el) {
	if (typeof(el) == 'undefined') el = 'FormsPopup';
	return (jQuery('#'+el).css('visibility') != 'hidden');
}

function swCheckExt(el){
}

function chkbulletin_fields(frm) {
	subject = frm.elements['frm_subject'].value;
	message = frm.elements['frm_text'].value;
	errtext = '';
	result = true;
	
	if (subject == '' || subject == 'Subject') {
		errtext = errtext + 'Please enter subject.\n';
		jQuery("#frm_subject_err").html('Please enter subject.');
		jQuery("#frm_subject").addClass('field_input_error');
		
		result = false;
	} else {
		jQuery("#frm_subject_err").html('');
		jQuery("#frm_subject").removeClass('field_input_error');
	}
	
	if (message == '' || message == 'Message') {
		errtext = errtext + 'Please enter message.\n';
		jQuery("#frm_text_err").html('Please enter message.');
		jQuery("#frm_text").addClass('field_input_error');
		result = false;
	} else {
		jQuery("#frm_text_err").html('');
		jQuery("#frm_text").removeClass('field_input_error');
	}
	
	return result;
}

function chkalbum_fields(frm) {
	var album_name = frm.elements['frm_nme'];
	if (album_name.value != '') {
		return true;
	} else {
		alert('Please enter album name.');
		return false;
	} 
}

function chkmedia_fields(frm) {
	var reg = new RegExp(/[^\\\/]+$/); 
	error = '';
	var description = frm.elements['frm_img_desc'];
	var file_name = frm.elements['frm_img_nme_fileUpload'];
	if (description.value == '') {
		description.value = reg.exec(file_name.value);
	}
	if (file_name.value != '') {
		document.getElementById('add_media_form').submit();
	} else {
		if (file_name.value == ''){
			error = error + 'File is required.\n';
		}
		alert(error);
		return false;
	} 
}
function show_extra_emails(){
	var div = document.getElementById('more_emails_div');
	div.style.visibility = 'visible';
	var dv = document.getElementById('message');
	dv.style.marginTop = '165px';
}

function chkinvitation_fields(frm){
	//var re = new RegExp(/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i);
	var re = chk_eml_rgxp;
	result = true; 
	var msg = '';
	var name = frm.elements['your_name'];
	if (name.value == '') {
		msg = msg + 'Please enter your name.\n';
		jQuery("#your_name_error").html('Please enter your name.');
		jQuery("#your_name").addClass('field_input_error');
		result = false;
	} else {
		jQuery("#your_name_error").html('');
		jQuery("#your_name").removeClass('field_input_error');
	}
	
	var email = frm.elements['your_email'];
	if (email.value == '') {
		msg = msg + 'Please enter your e-mail address.\n';
		jQuery("#your_email_error").html('Please enter your e-mail address.');
		jQuery("#your_email").addClass('field_input_error');
		result = false;
	} else if (re.test(email.value) == false) {
		msg = msg + 'Please enter correct e-mail address.\n';
		jQuery("#your_email_error").html('Please enter correct e-mail address.');
		jQuery("#your_email").addClass('field_input_error');
		result = false;
	} else {
		jQuery("#your_email_error").html('');
		jQuery("#your_email").removeClass('field_input_error');
	}
	
	var subj = frm.elements['subj'];
	if (subj.value == '') {
		msg = msg + 'Please enter subject\n';
		jQuery("#subj_error").html('Please enter subject.');
		jQuery("#subj").addClass('field_input_error');
		result = false;
	} else {
		jQuery("#subj_error").html('');
		jQuery("#subj").removeClass('field_input_error');
	}
	
    var extra = frm.elements['extra_emails'];
    if (extra.value != '') {
		 var extra_email = extra.value.split(/[\s+\,\;]+/);
		 for (var i=0;i<=extra_email.length;i++) {
			if (extra_email[i] != null) {
				var res = re.test(extra_email[i]);
				if (res == true) {
					jQuery("#extra_emails_error").html('');
					jQuery("#extra_emails").removeClass('field_input_error');
				} else {
					extra.focus();
					msg = 'Some addresses in the "Recepient e-mail" field were not recognized. Please make sure that all addresses are properly formed.\n';
					jQuery("#extra_emails_error").html('Some addresses were not recognized.');
					jQuery("#extra_emails").addClass('field_input_error');
					result = false;
				}
			}
		 }
    } else {
    	msg = msg + 'Please add at least 1 recipient.\n';
		jQuery("#extra_emails_error").html('Please add at least 1 recipient.');
		jQuery("#extra_emails").addClass('field_input_error');
		result = false;
    }
	 
    if (result == false) {
    	//alert(msg);
    }
	return result;
}

function chksubscription_fields(frm){
	//var re = new RegExp(/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i);
	var re = chk_eml_rgxp;
	var email = frm.elements['frm_email'];					
	if (email.value == '') {
		alert('Please enter your e-mail address.');
		return false;
	} else {
		var res = re.test(email.value);
		if (res == true) {
			return true;
		} else {
			alert('You have entered invalid e-mail address.')
			return false;
		}
	}
}

function editsiteclick() {
 	var pages = ['main_page_link','gallery__page_link','life_story_page_link','memories_page_link','condolences_page_link'];
 	var i=0;
 	for (i=0;i<=pages.length-1;i++) {
 		if (document.getElementById(pages[i]).className == 'clicked') {
 			document.getElementById('editsitesettings').href += '&visitedfrom='+pages[i];
 		}
 	}
 	return true;
}
 
function moredetails() {
	//jQuery('#more_details').slideToggle('fast');
	
	if( jQuery('#more_details').is(':hidden')) {
		show_moredetails();
	} else {
		hide_moredetails();
	}
	
}
var show_moredetails = function () {
	jQuery('#more_details_status').attr('value','visible');
	jQuery('#m_d_status').html('-');
	jQuery('#more_details').show();
	return true;
	
	var more_details_status = document.getElementById ('more_details_status');
	var personal_info_div = document.getElementById('personal_info_div');
	var more_details_div = document.getElementById('more_details');
	var m_d_s = document.getElementById('m_d_status');
	more_details_div.style.width = personal_info_div.offsetWidth + 'px';
	var div = document.getElementById('more_details');
	var ad = document.getElementById('after_details');
	div.style.visibility = 'visible';
	more_details_status.value = 'visible';
	ad.style.marginTop = '240px';
	m_d_s.innerHTML = '-';
}
function hide_moredetails () {
	jQuery('#more_details_status').attr('value','hidden');
	jQuery('#m_d_status').html('+');
	jQuery('#more_details').hide();
	return true;

	var more_details_status = document.getElementById ('more_details_status');
	var personal_info_div = document.getElementById('personal_info_div');
	var more_details_div = document.getElementById('more_details');
	var m_d_s = document.getElementById('m_d_status');
	var foot_div = document.getElementById('footer');
	more_details_div.style.width = personal_info_div.offsetWidth + 'px';
	var div = document.getElementById('more_details');
	var ad = document.getElementById('after_details');
	div.style.visibility = 'hidden';
	more_details_status.value = 'hidden';
	ad.style.marginTop = '10px';
	m_d_s.innerHTML = '+';
}

function creatememorialchkEml() {
	var eml = document.getElementById('eml');
	var eml2 = document.getElementById('eml2');
	var noteEml = document.getElementById('noteEml');

	if (eml.value == eml2.value) {
		noteEml.style.color = 'green';
		noteEml.innerHTML = 'Email ok';
	} else {
		noteEml.style.color = 'red';
		noteEml.innerHTML = 'Email does not match';
	}
}

function creatememorialchkPw() {
	var pw = document.getElementById('pw');
	var pw2 = document.getElementById('pw2');
	var notePw = document.getElementById('notePw_portal');
	if (pw.value != '') {
		if (pw.value == pw2.value) {
			notePw.style.color = 'green';
			//notePw.innerHTML = 'Password ok';
			notePw.innerHTML = 'OK';
		} else {
			notePw.style.color = 'red';
			notePw.innerHTML = 'Password does not match';
		}
	} else {
		notePw.style.color = 'red';
		notePw.innerHTML = 'Password is empty';
	}
}

function updatememorialchkPw() {
	var pw = document.getElementById('pw');
	var pw2 = document.getElementById('pw2');
	var notePw = document.getElementById('notePw_portal');
	if (pw.value != '' || pw2.value != '') {
		if (pw.value == pw2.value) {
			notePw.style.color = 'green';
			notePw.innerHTML = 'Password matches';
		} else {
			notePw.style.color = 'red';
			notePw.innerHTML = 'Password does not match';
		}
	} else if (pw.value == '' && pw2.value == '') {
		notePw.style.color = 'red';
		notePw.innerHTML = '';
	}
}

;(function($) {
	jQuery.fn.BillingForm = function(args) {
		
		var container = this;
		var opts = {};
		
		function init(){
			opts = jQuery.extend(opts, args);
			jQuery("#country", container).change(function(){
				var elements=jQuery('#billing_st_div input,#billing_st_div select,#billing_zip_container input');
				//if(jQuery(this).val()!='United States'){ elements.attr('disabled','disabled'); }
				//else {
					jQuery('#billing_st_div').load('/lib/php/ajaxRes/getStates.php', {'send':'ctry_d', 'ctry':this.value,'name':'state'},function(){jQuery('#billing_st_div input').attr('class','step_text');jQuery('#billing_st_div select').attr('class','step_select'); /*elements.removeAttr('disabled');*/} );
				//	}
			});
			
			//var elements=jQuery('#billing_st_div input,#billing_st_div select,#billing_zip_container input');
			//if(jQuery("#country", container).val()!='United States'){ elements.attr('disabled','disabled'); }
			//else{elements.removeAttr('disabled')}
			
			
		}
		
		init();
		return container;
	}
})(jQuery);



;(function($) {
	/*if ($.tooltip) {
		$.tooltip.defaults.lock = false;
	}
	if (typeof($.fn.tooltip)=='function') {
		$.fn.tooltip = function(settings) {
			settings = $.extend({}, $.tooltip.defaults, settings);
			createHelper(settings);
			this.each(function() {
					$.data(this, "tooltip", settings);
					this.tOpacity = helper.parent.css("opacity");
					// copy tooltip into its own expando and remove the title
					this.tooltipText = this.title;
					$(this).removeAttr("title");
					// also remove alt attribute to prevent default tooltip in IE
					this.alt = "";
				})
				.mouseover(save)
			//	.mouseout(hide)
				.click(hide);
			if (!settings.lock) {this.each(function(){jQuery(this).mouseout(hide); });}
			else {helper.parent.mouseleave(function(){current = null;jQuery(this).removeClass( settings.extraClass ).hide().css("opacity", "");});}
			return this;
		};
	}*/
	
    jQuery.fn.clearTextLimit=function(){
        return this.each(function(){
            this.onkeydown=this.onkeyup=null;
        });
    };

    jQuery.fn.textLimit=function(limit,callback){
        if(typeof callback!=='function')
            var callback=function(){};
        return this.each(function(){
            this.limit=limit;
            this.callback=callback;
            this.onkeydown=this.onkeyup=function(){
                this.value=this.value.substr(0,this.limit);
                this.reached=this.limit-this.value.length;
                this.reached=(this.reached==0)?true:false;
                return this.callback(this.value.length,this.limit,this.reached);
            }
          }
         );
        };
        
        jQuery.fn.CaroselTestimonialsForm = function(args) {

            var container     = this;
            var elementsCount = 0;
            var currentElement = null;
            var nextElement    = null;
            var isMouseOver     = false;
            
            var opts = {
                 timeout: 2000
            };

            function init(){
                opts = jQuery.extend(opts, args);
                
                //counting 
                jQuery("div", jQuery(container)).each(function(){
                    if (!currentElement){
                        currentElement = this;
                    }
                    
                   //check action 'mouseover'
                   jQuery(this).bind('mouseover',function(){
                       isMouseOver = true; 
                   });

                   //check action 'mouseover'
                   jQuery(this).bind('mouseleave',function(){
                       isMouseOver = false; 
                   });
                   
                    elementsCount++;                   
                });

                if (currentElement && elementsCount > 1){
                   nextElement = jQuery(currentElement).next('div');
                }                
                
               setTimeout(function(){play();}, opts.timeout);
            }

            function play(){


              if (!isMouseOver){
              
               //hide/show
               jQuery(currentElement).animate({opacity: "hide"},1500,function(){
                jQuery(nextElement).css('height','220');
                jQuery(nextElement).animate({opacity: "show"},2500,function(){
                 currentElement = nextElement;
                 
                 nextElement    = jQuery(currentElement).next('div');
                 
                 if (jQuery(nextElement).attr('class') == undefined){
                   nextElement = jQuery(container).children(':first-child');
                 }         
                 
                 setTimeout(function(){play();}, opts.timeout);
                });
               });
              }else{
                    setTimeout(function(){play();}, opts.timeout);
                   }
            }

            init();
	    return container;
        };
	
	
	jQuery.fn.MediaCaptionEditForm = function(args) {
		var container = this;
		var opts = {max_length:100};
		
		var text_field;
		var save_button;
		var chars_counter;
		
		function init() {
			opts = jQuery.extend(opts, args);
			
			text_field = jQuery('textarea', container);
			save_button = jQuery('button', container);
			chars_counter = jQuery('.chars-counter', container);
			
			if (text_field){
				text_field.bind('keydown', chkcharcount);
				text_field.bind('keyup', chkcharcount);
				//chkcharcount(text_field.get(0));
				if (opts.set_focus) {text_field.focus();}
			}
			//update_char_counter();
		}
		
		function chkcharcount(event) {
			if (!text_field) return;
			if (typeof(event.target)!='undefined') {
				target = event.target;
			} else {
				target = event;
			}
			
			if (event.keyCode==13){
				// Enter pressed - save caption
				save();
				return false;
			}
			
			//text_field.val( text_field.val().substr(0,opts.max_length) );
			//update_char_counter();
		}
		/*
		function update_char_counter() {
			if (chars_counter) {
				// Counting chars left
				var chars_left = Math.max(0, count_left_chars());
				
				$(chars_counter).html( opts.chars_counter_template.replace(':chars',chars_left) );
				if (chars_left > 0) {
					chars_counter.removeClass('exceed');
				} else {
					chars_counter.addClass('exceed');
					//event.preventDefault();
				}
			}
		}
		
		function count_left_chars() {
			return (opts.max_length - text_field.val().length );
		}
		*/
		function save(){
			if (save_button) {
				save_button.click();
			}
		}
		
		init();
		return container;
	};
	
	
	jQuery.fn.CandleEditForm = function(args) {
		
		var container = this;
		var text_field;
		var initial_length = 0;
		var save_button;
		var cancel_button;
		var chars_counter;
		
		var chars_per_line = 56;
		var max_lines = 7;
		var max_chars = max_lines * chars_per_line;
		// Maximum # of chars at the moment of overflow
		var current_max_chars = max_chars;
		
		var opts = {
			callback : false,
			target_container : 'pg',
			cancel_url : false
		};
		
		var ERROR_TEXT_EMPTY = 'Text is required';
		var ERROR_TEXT_LONG = 'You have exceeded maximum message length. Please try to make your message shorter. Or you can tell a story instead.';
		
		var text_overflow = false;
		
		function init(){
			opts = jQuery.extend(opts, args);
			
			// Look for input field and buttons
			text_field = jQuery('textarea', container);
			save_button = jQuery('a.button_save_candle', container);
			cancel_button = jQuery('a.button_cancel_candle', container);
			chars_counter = jQuery('.chars-counter', container);
			
			
			if (text_field) {
				/*initial_length = text_field.val().length;*/
				text_field.bind('keydown', chkcharcount);
				text_field.bind('keyup', chkcharcount);
				//text_field.bind('keypress', check_text_overflow );
				// Checking login state at focus. Move to AddCandle form after login
				text_field.focus( 
					function(){ 
						var callback=Memorial.get_login_callback('add_candle');
						jQuery.post(
							'/ajax/set_afterlogin_action/',{'internal_ajax_call':1, 'action':'add_candle'}
						);
						Memorial.check_login(true, callback.callback, true, true );
					});
			}
			
			if (save_button) {
				save_button.click( function(){
					Memorial.check_login(true, save_candle);
					return false;
				});
			}
			
			if (cancel_button) {
				cancel_button.click( function(){
					
					if (opts.cancel_url) {
						xmlhttpPost(opts.cancel_url, opts.target_container, opts.callback, true, container.attr('id') );
					}
					
					return false;
				});
			}
			
			if (chars_counter) {
				init_tooltip(jQuery('img',chars_counter), {'extraClass':'tooltip tooltip-mark edit-candle-form-tooltip',top:-2,left:-2,positionLeft:false,lock:true});
			}
			
			chkcharcount(text_field.get(0));
		};
		
		
		function save_candle() {
			// check zerolength
			if ( jQuery.trim(text_field.val()).length == 0) {
				alert(ERROR_TEXT_EMPTY);
				return false;
			}
			
			if ( !chkcharcount(text_field.get(0)) ) {
				return false;
			}
			
			// All ok - submitting form
			xmlhttpPost(container.attr('action') , opts.target_container, opts.callback, true, container.attr('id') );
			return false;
		}
		
		
		function chkcharcount(event) {
			
			if (event.target) {
				target = event.target;
			} else {
				target = event;
			}
			//console.log(event);
			var chars_left = chars_per_line * max_lines;
			var lines = target.value.split(/\n/);
			var lines_count = lines.length;
			var newlines_count = lines.length;
			
			
			
			for (i in lines) {
				var l = lines[i];
				var nc = Math.floor(l.length / chars_per_line);
				
				newlines_count = newlines_count + nc;
			}
			
			//Log.write( newlines_count );
			
			if (chars_counter) {
				// Counting chars left
				chars_left = Math.max(0, (max_lines - newlines_count) * chars_per_line + (chars_per_line - (lines[lines.length-1].length % chars_per_line)) );
				
				$('.chars-counter-text',chars_counter).html( opts.chars_counter_template.replace(':chars',chars_left).replace(':lines', Math.max(0, (max_lines - newlines_count)) ) );
				if (chars_left > 0) {
					chars_counter.removeClass('exceed');
				} else {
					chars_counter.addClass('exceed');
				}
			}
			
			if ((newlines_count > max_lines) 
				&& (event.keyCode>=32 || event.keyCode==13)
				) {
				//event.preventDefault();
				//event.stopImmediatePropagation();
				text_overflow = true;
			} else {
				text_overflow = false;
			}
			
			if (event.type=='keydown') {
				current_max_chars = target.value.length;
				//console.log(current_max_chars);
			}
			
			if (text_overflow) {
				//console.log(event.type+' ovf');
				//target.value = target.value.substr(0, max_chars);
				//event.preventDefault();
				//event.stopImmediatePropagation();
				
				target.value = target.value.substr(0, current_max_chars);
			} else {
				//console.log(event.type+' no ovf');
				current_max_chars = max_chars;
			}
			
			return !text_overflow;
		};
		
		function check_text_overflow(event) {
			if (event.target) {
				target = event.target;
			} else {
				target = event;
			}
			//Log.write('check_text_overflow');
			if (text_overflow && (event.keyCode>=32 || event.keyCode==13)) {
				if (target.value.length > current_max_chars ) {
					target.value = target.value.substr(0, current_max_chars);
				}
				alert(ERROR_TEXT_LONG);
				event.preventDefault();
				return false;
			}
			return true;
		}
		
		
		function chkcandlefields() {
			
			text = text_field.val();
			if (text.length == 0) {
				alert(ERROR_TEXT_EMPTY);
				return false;
			}
			return true;
		}
		
		init();
		return container;
	}
})(jQuery);



;(function($) {
	jQuery.fn.TextLimitator = function(args) {
		var container = this;
	}
})(jQuery);


function chk_invitation_subj(fname_lname) {
        var subjstr1 = 'Invitation to visit ';
		var subjstr2 = ' online memorial.';
        //var subjstr = ' wants you to visit the ForeverMissed.com Memorial.'; 
	//var name = document.getElementById('your_name');
	var name = fname_lname;
	var subj = document.getElementById('subj');
	if (subj.value == ''  || subj.value.indexOf(subjstr, 0) != -1 ) {
		subj.value = subjstr1 + name.value + subjstr2; 
	}
}

function emails_wrap(el) {
	var str = new String(el.value);
	var newstr = str.replace(/,(\S)/, ', $1')
	el.value = newstr;
}

function remember() {
	var rchkbox = document.getElementById('rememberme');
	if (rchkbox.checked == true) {
		rchkbox.checked = false;
	} else if (rchkbox.checked == false) {
		rchkbox.checked = true;
	}
}

function chk_login_frm() {
	
	var result = true;
	
	if (document.getElementById('useremail').value == '') {
		document.getElementById('useremail_err').innerHTML = '<span style="color: red">Please enter your e-mail address.</span>';
		jQuery("#useremail").addClass('field_input_error');
		result = false;
	} else {
		document.getElementById('useremail_err').innerHTML = '';
		jQuery("#useremail").removeClass('field_input_error');
	}
	
	var customer_new = document.getElementById('customer_new');
	
	if (customer_new && customer_new.checked == true && result == true) {
		
		if (document.getElementById('useremail').value != '') {
			document.getElementById('reg_eml').value = document.getElementById('useremail').value;
		}
		
		document.getElementById('registration_form').style.display = 'block';
		document.getElementById('login_form').style.display = 'none';
		if (document.getElementById('login_page_header') != null) {
			document.getElementById('login_page_header').innerHTML = 'Registration';
		}
		if (document.getElementById('login_page_error') != null) {
			document.getElementById('login_page_error').innerHTML = '';
		}
		
		result = false;
		
	} else if (customer_new && customer_new.checked == true) {
		document.getElementById('password_err').innerHTML = '';
	} else {
		if (document.getElementById('password').value == '') {
			jQuery("#password").addClass('field_input_error');
			document.getElementById('password_err').innerHTML = '<span style="color: red">Please enter password.</span>';
			result = false;
		} else {
			document.getElementById('password_err').innerHTML = '';
			jQuery("#password").removeClass('field_input_error');
		}
	} 
	
	return result;
}


function chk_fields_match(f1,f2,res_f,type) {
	var f1 = document.getElementById(f1);
	var f2 = document.getElementById(f2);
	var res_f = document.getElementById(res_f);
	if (f1.value != '') {
		if (f1.value != f2.value) {
			res_f.innerHTML = '<span style="color:red">'+type+' does not match</span>';
		} else {
			//res_f.innerHTML = '<span style="color:green">'+type+' matches</span>';
			res_f.innerHTML = '<span style="color:green">OK</span>';
		}
	} else if (f1.value == '') {
		res_f.innerHTML = '<span style="color:red">'+type+' is empty</span>';
	}
}

function check_create_acct_data() {
	//var chk_eml_rgxp = new RegExp(/^[\w-]+(\.[\w-]+)*@([0-9a-z][0-9a-z-]*[0-9a-z]\.)+([a-z]{2,4})$/i); 
	var ret_flg = true;
	
	if (document.getElementById('reg_fname').value == '') {
		document.getElementById('reg_fname_err').innerHTML = '<span style="color:red">Please enter your first name.</span>';
		jQuery("#reg_fname").addClass('field_input_error');
		ret_flg = false;
	} else if (document.getElementById('reg_fname').value != ''){
		document.getElementById('reg_fname_err').innerHTML = '';
		jQuery("#reg_fname").removeClass('field_input_error');
	}
	
	if (document.getElementById('reg_lname').value == '') {
		document.getElementById('reg_lname_err').innerHTML = '<span style="color:red">Please enter your last name.</span>';
		jQuery("#reg_lname").addClass('field_input_error');
		ret_flg = false;
	} else if (document.getElementById('reg_lname').value != ''){
		document.getElementById('reg_lname_err').innerHTML = '';
		jQuery("#reg_lname").removeClass('field_input_error');
	}
	
	document.getElementById('reg_eml_match').innerHTML = '';
	jQuery('#reg_eml').removeClass('field_input_error');
	jQuery('#reg_eml_confirm_match').html('');
	jQuery('#reg_eml_confirm').removeClass('field_input_error');
	if (document.getElementById('reg_eml').value == '') {
		document.getElementById('reg_eml_match').innerHTML = '<span style="color:red">Please enter your e-mail address.</span>';
		jQuery("#reg_eml").addClass('field_input_error');
		ret_flg = false;
	} else {
		var testres = chk_eml_rgxp.test(document.getElementById('reg_eml').value);
		if (testres == false) {
			ret_flg = false;
			document.getElementById('reg_eml_match').innerHTML = '<span style="color:red">Please enter correct e-mail address.</span>';
			jQuery("#reg_eml").addClass('field_input_error');
		} else {
			
			
			// Checking match of emails
			if ( jQuery("#reg_eml").attr("value") != jQuery("#reg_eml_confirm").attr("value") ) {
				jQuery('#reg_eml_confirm_match').html("<span style=\"color:red;\">E-mail addresses do not match.</span>");
				jQuery("#reg_eml_confirm").addClass('field_input_error');
				ret_flg = false;
			} else {
				
			}
			
		}
	}
	
	
	jQuery('#reg_pw_confirm_match').html('');
	document.getElementById('reg_pw_match').innerHTML = '';
	jQuery('#reg_pw1').removeClass('field_input_error');
	jQuery('#reg_pw1_confirm').removeClass('field_input_error');
	
	if (document.getElementById('reg_pw1').value == '') {
		document.getElementById('reg_pw_match').innerHTML = '<span style="color:red">Password is empty.</span>';
		jQuery('#reg_pw1').addClass('field_input_error');
		ret_flg = false;
	} else {
		
		
		
		// Checking match of passwords
		if ( jQuery("#reg_pw1").attr("value") != jQuery("#reg_pw1_confirm").attr("value") ) {
			jQuery('#reg_pw_confirm_match').html("<span style=\"color:red;\">Passwords do not match.</span>");
			jQuery('#reg_pw1_confirm').addClass('field_input_error');
			ret_flg = false;
		} else {
			
		}
		
	}
	
	return ret_flg;
}

function chk_field(field_name,err_txt) {
	if (document.getElementById(field_name).value == '') {
		document.getElementById(field_name+'_err').innerHTML = '<span style="color:red">Please enter '+err_txt+'</span>';
	} else if (document.getElementById(field_name).value != ''){
		document.getElementById(field_name+'_err').innerHTML = '';
	}
}

var curr_img = 0;
var img_arr_lenght = 0;
var img_ids = new Array();
var img_desc = new Array();
var img_owner = new Array();

function previous_image() {
	if (curr_img > 0) {
		curr_img = curr_img - 1;
		document.getElementById('show_img').src = 'lib/images/loading.gif';
		document.getElementById('show_img').src = 'lib/pg/show_img.php?img_id='+img_ids[curr_img];
		document.getElementById('photo_desc').innerHTML = img_desc[curr_img];
		document.getElementById('photo_owner').innerHTML = img_owner[curr_img];
		document.getElementById('img_counter').innerHTML = 'Image '+(curr_img+1)+' of '+img_arr_lenght;
	}
}

function next_image(){
	if (curr_img < (img_arr_lenght-1)) {
		curr_img = curr_img + 1;
		document.getElementById('show_img').src = 'lib/images/loading.gif';
		document.getElementById('show_img').src = 'lib/pg/show_img.php?img_id='+img_ids[curr_img];
		document.getElementById('photo_desc').innerHTML = img_desc[curr_img];
		document.getElementById('photo_owner').innerHTML = img_owner[curr_img];		
		document.getElementById('img_counter').innerHTML = 'Image '+(curr_img+1)+' of '+img_arr_lenght;
	}

}

function e_d_pwd_fields () {
	if (document.getElementById('old_pw').disabled == true) {
		document.getElementById('old_pw').disabled = false; 
		document.getElementById('pw').disabled = false;
		document.getElementById('pw2').disabled = false;
		document.getElementById('old_pw').setAttribute('class','step_text');
		document.getElementById('pw').setAttribute('class','step_text');
		document.getElementById('pw2').setAttribute('class','step_text');
		document.getElementById('old_pw').setAttribute('className','step_text');
		document.getElementById('pw').setAttribute('className','step_text');
		document.getElementById('pw2').setAttribute('className','step_text');		
	} else {
		document.getElementById('old_pw').disabled = true;
		document.getElementById('pw').disabled = true;
		document.getElementById('pw2').disabled = true;
		document.getElementById('old_pw').setAttribute('class','input_disabled');
		document.getElementById('pw').setAttribute('class','input_disabled');
		document.getElementById('pw2').setAttribute('class','input_disabled');
		document.getElementById('old_pw').setAttribute('className','input_disabled');
		document.getElementById('pw').setAttribute('className','input_disabled');
		document.getElementById('pw2').setAttribute('className','input_disabled');		
		
	}
}

function subscribe(url, email) {
	url = 'SubscriptionForm&url='+url;
	if (email) {
		url = url + '&email='+email;
	}
	showPopupForm_center(url, null, null, '421px','subscription_frm');
	return false;
}

function invite(url) {
	showPopupForm_center('InvitationForm&url='+url, null, null, '421px');
}


function chk_bill_fields() {
	var errors = 0;
	if (document.getElementById('cc_number') != null && document.getElementById('cc_number').value == '') {
		document.getElementById('cc_number_error').innerHTML='Please enter credit card number.';
		errors++;
	} else {
		ccnumberRegExp = new RegExp(/^\*{12}[0-9]{4}$/);
		if (ccnumberRegExp.test(jQuery('#cc_number').attr('value'))) {
			// User is using existing CC - skipping all other tests
			return true;
		}
		document.getElementById('cc_number_error').innerHTML='';
	}
	
	if (document.getElementById('cvv2') != null && document.getElementById('cvv2').value == '') {
		document.getElementById('cvv2_error').innerHTML='Please enter CVV code (3 digits).';
		errors++;
	} else {
		document.getElementById('cvv2_error').innerHTML='';
	}
	if (document.getElementById('exp_date_mm') != null && document.getElementById('exp_date_yyyy') != null) {
		var current_date = new Date();
		var entered_date = new Date();
		entered_date.setFullYear(document.getElementById('exp_date_yyyy').value,document.getElementById('exp_date_mm').value,01);
		if (entered_date<current_date) {
			document.getElementById('exp_date_error').innerHTML='Please enter correct date.';
		} else if (entered_date>current_date) {
			document.getElementById('exp_date_error').innerHTML='';
		} else {
			document.getElementById('exp_date_error').innerHTML='Please enter correct date.';
		}
	}
	/*
	if (document.getElementById('first_name') != null && document.getElementById('first_name').value == '') {
		document.getElementById('first_name_error').innerHTML='Please enter first name.';
		errors++;
	} else {
		document.getElementById('first_name_error').innerHTML='';
	}
	if (document.getElementById('last_name') != null && document.getElementById('last_name').value == '') {
		document.getElementById('last_name_error').innerHTML='Please enter last name.';
		errors++;
	} else {
		document.getElementById('last_name_error').innerHTML='';
	}
	*/
	if (jQuery('#cardholder_name').attr('value') == '') {
		jQuery('#cardholder_name_error').html('Please enter name on card.');
		errors++;
	} else {
		jQuery('#cardholder_name_error').html('');
	}
	
	if (document.getElementById('street_addr') != null && document.getElementById('street_addr').value == '') {
		document.getElementById('street_addr_error').innerHTML='Please enter your street address.';
		errors++;
	} else {
		document.getElementById('street_addr_error').innerHTML='';
	}
	if (document.getElementById('city') != null && document.getElementById('city').value == '') {
		document.getElementById('city_error').innerHTML='Please enter your city.';
		errors++;
	} else {
		document.getElementById('city_error').innerHTML='';
	}
	if (document.getElementById('zip') != null && document.getElementById('zip').value == '' && (jQuery('#country').val()=='United States')  ) {
		document.getElementById('zip_error').innerHTML='Please enter your zip code.';
		errors++;
	} else {
		document.getElementById('zip_error').innerHTML='';
	}
	if (document.getElementById('country') != null && document.getElementById('country').value == '') {
		document.getElementById('country_error').innerHTML='Please enter your country.';
		errors++;
	} else {
		document.getElementById('country_error').innerHTML='';
	}
	if (errors == 0) return true; else
		return false;
}





function reload_memorial_page(url) {
	Memorial.reload_memorial_page();
	return false;
}


UserLoginDialog_Object = {
	switchToRegister	: function(){
		jQuery('#reg_eml').val( jQuery('#useremail').val() );// = document.getElementById('useremail').value;
		jQuery('#login_form').hide();
		jQuery('#registration_form').show();
		jQuery("#UserLoginDialog_frm_event").attr('value','Register');
		return false;
	},
	
	switchToLogin	:	function(){
		jQuery('#registration_form').hide();
		jQuery('#login_form').show();
		jQuery("#UserLoginDialog_frm_event").attr('value','SignIn');
		return false;
	},
	
	
	init_login_form	: function() {
		
		if (jQuery.browser.msie) {
			jQuery('#login_form input').keypress(function(event){
				if (event.keyCode == 13) {
					jQuery('#login_btn', jQuery(event.target.form)).click();
					//UserLoginDialog_Object.submit_form();
				}
			});
			
			jQuery('#registration_form input').keypress(function(event){
				if (event.keyCode == 13) {
					jQuery('#register_btn', jQuery(event.target.form)).click();
					//UserLoginDialog_Object.submit_form();
				}
			});
			
		}
		
		//window.clearTimeout();
		jQuery("#useremail").focus();
	},
	
	submit_form : function() {
		jQuery("#UserLoginDialog_submitter").click();
	},
	
	pre_submit : function() {
		var action = jQuery("#UserLoginDialog_frm_event").val();
		var result = false;
		
		switch (action) {
			case 'SignIn':
				result = chk_login_frm();
				break;
			case 'Register':
				result = check_create_acct_data();
				break;
		}
		if (result) {
			return startCallback();
		}
		
		return result;
	}
	
}


function openUserLoginDialog(addUrl) {
	//showPopupForm_center('UserLoginDialog&url='+url,'FormsPopup','150px 0px 0px -200px', '421px');
	Memorial.openUserLoginDialog(addUrl);
	return false;
}

function openContactForm(memorial_url, acct_id) {
	var url = 'ContactOwnerForm';
	if (memorial_url) {
		url += ('&url='+memorial_url);
	}
	if (acct_id) {
		url += ('&acct_id='+acct_id);
	}
	showPopupForm_center(url,'FormsPopup','150px 0px 0px -200px', '421px');
	return false;
}

UpgradePlan_Object = {
	update_billing:function() {
		jQuery("#frm_event").attr('value', 'billing');
		document.getElementById("UpgradePlan_submitter").click();
		return false;
	},
	
	back_to_plans:function() {
		jQuery("#frm_event").attr('value', '');
		document.getElementById('UpgradePlan_submitter').click();
		return false;
	}
}


function init_cvv_tooltip() {
	jQuery('#cvv2_tooltip_link').tooltip({
		track: false,
		delay: 0,
		showURL: false,
		id:'cvv2_tooltip',
		extraClass:'tooltip',
		showBody:'::',
		positionLeft: true
	});
}

function init_tooltip(obj,args) {
	var opts = {
		track: false,
		delay: 0,
		showURL: false,
		extraClass:'tooltip',
		showBody:'::'/*,
		positionLeft: true*/
	};
	opts = jQuery.extend(opts,args);
	obj.tooltip(opts);
}

function init_suggestion_tooltip(obj) {
	obj.tooltip({
		track: false,
		delay: 0,
		showURL: false,
		id:'suggestion_tooltip',
		extraClass:'tooltip',
		showBody:'::',
		positionLeft: true
	});
}



// Selector of creator_relationship
;(function($) {
	jQuery.fn.RelationshipSelector = function(args) {
		
		var container       = this;
		var selector        = null;
		var custom_field    = null;
                var field_container = null;
				
		var opts = {
			custom_css : null,
			custom_value : 'Other',
			custom_field_value : 'Type relationship here',
			form : null                        
		};
		
		
		function init() {
			selector        = jQuery("select", container);			
                        field_container = jQuery("div#steps_form_custom_field");
                        
                        if (field_container != null){                          
                         custom_field    = jQuery("input", field_container);    
                        }else{
                              custom_field    = jQuery("input", container);
                             }

                        
			opts = jQuery.extend(opts, args);
			
			selector.change(function(){
				if (jQuery(selector).val() == opts.custom_value) {
					// Output of custom field
					showCustomField();
				} else {
					hideCustomField();
				}
			});
			
			if (jQuery(selector).val() == opts.custom_value) {
				// Custom value present showing custom field
				showCustomField();
			}
			
			custom_field.TextFieldUpdater({'emptyText' : opts.custom_field_value, 'form': opts.form} );
			
			
			container.selector = selector;
			container.custom_field = custom_field;
			
		}
		
		
		container.prepareToSave = function(){
			if (this.custom_field.val() == opts.custom_field_value) {
				this.custom_field.attr('value','');
			}
		};
		
		
		function showCustomField() {
                   if (!opts.selector_obj){
			 var posTop = Math.floor(selector.offset().top);
			 var posLeft = Math.floor(selector.offset().left) + selector.width() + parseInt(selector.css('padding-left')) + parseInt(selector.css('padding-right')) + 10;

			 new_css = {
				'position':'absolute',
				'top': posTop +'px',
				'left': posLeft +'px'
				}
			} else {
				new_css = {};
				if (opts.place && opts.place == 'below'){
					posLeft = Math.floor(opts.selector_obj.offset().left);
					posTop  = Math.floor(opts.selector_obj.offset().top) + opts.selector_obj.height() + parseInt(opts.selector_obj.css('padding-top')) + parseInt(opts.selector_obj.css('padding-bottom')) + 10;
					new_css =  {'position':'absolute',	'left' : posLeft + 'px', 'top' : posTop + 'px'};
				}
				
			}
		       //}
                       
                       //custom_field.css(new_css);

			custom_field.fadeIn('fast');
                       			
		}
		
		function hideCustomField() {			                       
                        custom_field.fadeOut('fast');
		}
		
		
		init();
		return container;
	}
})(jQuery);


function find_a_bug(uri) {
	if (!uri) {return false;}
	
	memorial = document.location.href;
	memorial = memorial.replace(/http:\/\//gi,'');
	
	uri =  uri + '?url=' + jQuery.URLEncode( memorial );
	window.open(uri);
	return false;
}



;(function($) {
	jQuery.fn.ContactUsForm = function(args) {
		
		var container = this;
		var selector = null;
		var opts = {};
		
		
		function init() {
			selector = jQuery("#contact_us_inquiry_type", container);
			opts = jQuery.extend(opts, args);
			
		}
		
		init();
		return container;
	}
})(jQuery);


;(function($) {
	
	jQuery.fn.dropDownMenu = function(args) {
		
		var container = this;
		var opts = {
			method : 'slide'
		};
		
		function init() {
			opts = $.extend(opts, args);
			jQuery("li", container).hover(function(){
			
				jQuery(this).addClass("hover");
				//jQuery('ul:first',this).css('visibility', 'visible');
				if (opts.method=='slide') {
					jQuery('ul:first',this).slideDown(250).delay(1200);
				} else {
					jQuery('ul:first',this).show();
				}
				
			
			}, function(){
				
				// Removing class after 
				var hideCallback = function(){jQuery(this).parent().removeClass("hover");};
				if (opts.method=='slide') {
					jQuery('ul:first',this).slideUp(250,hideCallback);
				} else {
					jQuery('ul:first',this).hide(0, hideCallback);
				}
				
				
			});
			
			
		}
		
		init();
		return container;
	}
	
	$.fn.dropDownClickMenu = function(){
		var container = this;
		function init() {
			$("li", container).click(function(){
				var el = $(this);
				if(el.is('.hover')){
					GalSortable.closeDropDownClickMenu(el);
				}else{
					el.addClass("hover");
					$('ul:first',el).show();
				}
			});

			$(document).unbind('click.dropDownClickMenuClose')
			.bind('click.dropDownClickMenuClose', function(event){
				$('ul.imgEdit li').each(function(){
					elo = $(this);
					if(event.target.parentNode.id == this.id || event.target == this){
						return
					}
					if(elo.is('.hover')){
						GalSortable.closeDropDownClickMenu(elo)
					}
				})
			});
		}
			
		init();
		return container;
	}
})(jQuery);


$.extend({URLEncode:function(c){var o='';var x=0;c=c.toString();var r=/(^[a-zA-Z0-9_.]*)/;
  while(x<c.length){var m=r.exec(c.substr(x));
    if(m!=null && m.length>1 && m[1]!=''){o+=m[1];x+=m[1].length;
    }else{if(c[x]==' ')o+='+';else{var d=c.charCodeAt(x);var h=d.toString(16);
    o+='%'+(h.length<2?'0':'')+h.toUpperCase();}x++;}}return o;},
URLDecode:function(s){var o=s;var binVal,t;var r=/(%[^%]{2})/;
  while((m=r.exec(o))!=null && m.length>1 && m[1]!=''){b=parseInt(m[1].substr(1),16);
  t=String.fromCharCode(b);o=o.replace(m[1],t);}return o;}
});




function show_loading() {
	var pg = document.getElementById('pg');
		pg.style.visibility = 'hidden';
	var el = document.getElementById('pg_loading');
		el.style.visibility = 'visible';
	el.innerHTML = '<div class="AJAX_wait"><img src="/lib/sw/img/ajax-loader.gif" alt="Please wait..." /></div>';
	window.scrollTo('50%',el.offsetTop);
}


function _ga_async_track_page(page) {
	var trackvar = ['_trackPageview'];
	if(page && page.length > 0) {
		// cutting off hostname
		page = page.replace(/http:\/\/[a-z0-9.-]+/gi,'');
		trackvar.push(page);
		Log.write(page);
	}
	if (typeof(_gaq) != 'undefined' && (typeof(_ga_tracking_lock) !='undefined') && (_ga_tracking_lock == false) ) {
		_gaq.push(trackvar);
	}
}

Log = {
	write : function(message, type) {
		if (type=='ajax'){
			//jQuery.post('/ajax/write_log',{'message':message,'internal_ajax_call':1});
		}
		if (typeof(console) != 'undefined') {console.log(message);}
	}
}

function isFlashAvailable() {
	playerVersion = swfobject.getFlashPlayerVersion();
	return (playerVersion.major != 0);
}


function displayFlashNotification(opts) {
	var opts = (opts) ? opts : {};
	// Setting cookie in order to show notification one time
	//var c = readCookie('flashNotification');
	var c = false;
	if ((!c && !flash_notification_displayed) || opts.force) {
		var message = 'WARNING: FLASH is not installed. Your browser requires Adobe FLASH plugin in order to display this page correctly.';
//		switch (opts.type) {
//			case 'video':
//				message = 'This page contains a video clip which is not supported by your browser. Adobe FLASH plugin needs to be installed in order to play this video.';
//				break;
//			case 'audio':
//				message = 'This page contains a song which is not supported by your browser. Adobe FLASH plugin needs to be installed in order to play this song.';
//				break;
//		}
		message = message + '<br /><a href="http://www.adobe.com/go/getflashplayer"><b>Download Adobe FLASH plugin here</b></a>.';
		if(typeof(Notifications) != 'undefined') {
			//createCookie('flashNotification');
			flash_notification_displayed = true;
			Notifications.addWarning(message);
		}
	}
	return false;
}


// --------------------- Cookie 
function createCookie(name,value,days) {
	if (days) {
		var date = new Date();
		date.setTime(date.getTime()+(days*24*60*60*1000));
		var expires = "; expires="+date.toGMTString();
	}
	else var expires = "";
	document.cookie = name+"="+value+expires+"; path=/;";
}

function readCookie(name) {
	var nameEQ = name + "=";
	var ca = document.cookie.split(';');
	for(var i=0;i < ca.length;i++) {
		var c = ca[i];
		while (c.charAt(0)==' ') c = c.substring(1,c.length);
		if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
	}
	return null;
}

function eraseCookie(name) {
	createCookie(name,"",-1);
}
// --------------------- Cookie 


/**
 * 
 * 
 */
;(function($) {
	jQuery.fn.resellerImageEditor = function(args) {
		
		var container = this;
		var uploader = null;
		var opts = {
			type : 'main',
			extensions : ['png'],
			removeUrl : '/account/removeResellerImage',
			removeAction : function(){ 
								$.ajax({
									type:'post',
									url: opts.removeUrl,
									data: {type:opts.type,'reseller_id':opts.userId},
									success:function(){jQuery(".uploader", container).show();initImageContainer();}
								});
								return false;
							},
			uploadSuccessfulCallback:function(response){Log.write('cb_default');}
		};
		
		function init() {
			opts = $.extend(opts, args);
			initImageContainer(opts.url);
			initUploader(opts.type);
			
		}
		
		
		
		function initUploader(imageType) {
			if (!isFlashAvailable()) {$("input[type=file]", container).hide();displayFlashNotification();return false;}
			var uploader = jQuery("input[type=file]", container).uploadify({
				'uploader'		: '/lib/js/uploadify/uploadify.swf',
				'script'		: opts.script,
				'cancelImg'		: '/lib/js/uploadify/cancel.png',
				//'checkScript'	: '/lib/js/uploadify/check.php',
				'folder'		: (opts.userId+'|'+imageType),

				'queueID'        : 'fileQueue-'+imageType,
				'fileDataName'	: 'frm_img_nme_fileUpload',
				'fileExt'		: '*.' + opts.extensions.join(';*.'),
				'fileDesc'		: 'Pictures (' + opts.extensions.join(';*.') + ')',

				'auto'        	: false,
				'multi'         : false,

				'buttonText'	: ' ',
				'buttonImg'		: '/lib/js/uploadify/browse.png',
				'width'			: '357',
				'height'		: '22',
				'wmode'			: 'transparent',

				'onSelect'		: function(event, queueID, fileObj) {
									if (fileObj.type && jQuery.inArray(fileObj.type.substr(1).toLowerCase(), opts.extensions) == -1) {
										alert('This file type is not supported. Supported file types are: ' + opts.extensions.join(', '));
										return false;
									}
									//return true;
									// all ok - starting with upload
									window.setTimeout(function(){jQuery("input[type=file]", container).uploadifyUpload();}, 500);
								},

				'onComplete'	: function (event,queueID,fileObj,response) {
									// Upload complete
									try {
										var res = jQuery.evalJSON(response);
										if (res.success) {
											// Upload successful
											// Placing image to preview section
											var image_url = res.image_url;
											initImageContainer(image_url);
											
											opts.uploadSuccessfulCallback(res);
											
											// Hide uploader
											jQuery(".uploader", container).hide();
										} else {
											alert(res.error_message);
										}
									} catch (e) {
										return false;
									}

									return true;
								}
			});

		}
		
		
		function initImageContainer(url) {
			if (url) {
				// Image specified
				if (url.indexOf(opts.baseUrl) == -1) {
					url = opts.baseUrl + url;
				}
				var img = jQuery('<img />');
				// Trick to avoid browser's cache
				img.attr('src', url + '?' + Math.floor(Math.random()*1000000) );
				jQuery('.image-preview', container).html(img);
				var remove_link = jQuery('<div><a href="#">Remove</a></div>');
				remove_link.click( function(){opts.removeAction(container, initImageContainer);return false;} );
				jQuery('.image-preview', container).append(remove_link);
				jQuery(".uploader", container).hide();
			} else {
				jQuery('.image-preview', container).html("");
			}
		}
		
		
		init();
		return container;
	}
})(jQuery);


/**
 * Manager of reseller's AdBlock form page
 */
;(function($){
	jQuery.fn.resellerAdBlockForm = function(args) {
		
		var container = this;
		var items = null;
		var preview = null;
		var btn_preview = null;
		var opts = {
			checked : false
		};
		
		function init() {
			opts = $.extend(opts, args);
			var trigger = $("#reseller-ad-block", container);
			
			if (trigger) {
				trigger.change(function(){
					//jQuery("#reseller-public-items", container).get(0).disabled = !(jQuery(this).get(0).checked);
					opts.checked = jQuery(this).get(0).checked;
					updateItemsSelector(opts.checked);
				});
				trigger.get(0).checked = opts.checked;
			}
			
			items = $(".public-item", container);
			if (items) {
				items.change(function(){
					xhrPost({url: '/account/preview_reseller_ad_block'}, preview.attr('id'), container.attr('id'));
					return false;
				});
			}
			
			btn_preview = $("#reseller-ad-block-btn-preview", container);
			preview = $("#reseller-ad-block-preview",container);
			if (btn_preview && preview) {
				btn_preview.click(function(){
					xhrPost({url: '/account/preview_reseller_ad_block'}, preview.attr('id'), container.attr('id'));
					return false;
				});
			}
			
			updateItemsSelector(opts.checked);
		}
		
		function updateItemsSelector() {
			//jQuery("#reseller-public-items", container).get(0).disabled = !checked;
			if (items) {
				items.each(function(){jQuery(this).get(0).disabled = !opts.checked});
			}
			if (preview) {
				if (!opts.checked) {
					preview.hide();
				} else {
					preview.show();
				}
			}
		}
		
		init();
		return container;
	}
})(jQuery);


var createMemorialResellerSignin = {
	container: null,
	type_selector : null,
	opts : {},
	
	init : function(containerId, args) {
		this.container = jQuery("#"+containerId);
		this.opts = jQuery.extend(this.opts, args);
		this.type_selector = jQuery("#reseller-login-type input", this.container);
			
		this.type_selector.each(function(){
			jQuery(this).change(function(){
				var value = jQuery(this).val();
				createMemorialResellerSignin.checkFormToDisplay(value);
			});

			if (jQuery(this).is(':checked')) {
				createMemorialResellerSignin.checkFormToDisplay(jQuery(this).val());
			}

		});
		
	},
	
	switchToLogin : function() {
		// Unchecking currently checked 
		jQuery("#reseller-login-type input:checked", this.container).removeAttr('checked');
		jQuery("input#reseller-login-existing-admin", this.container).attr('checked','checked');
		this.checkFormToDisplay('existing_admin');
		return false;
	},
	
	checkFormToDisplay : function(value) {
		if (!value) value='new_admin';
		var container = this.container;
		switch (value) {
			case 'existing_admin':
				// Show signin dialog
				jQuery("#register_frm",container).hide(0, function(){jQuery("#login_frm",container).show();});
				jQuery("input",container).removeAttr('disabled');
				break;
			case 'reseller_admin':
				// Disabling current form
				jQuery("#register_frm input",container).attr('disabled','disabled');
				jQuery("#login_frm input",container).attr('disabled','disabled');
				break;
			default:
				// Show signup, remove signin
				jQuery("#login_frm",container).hide(0, function(){jQuery("#register_frm",container).show();});
				jQuery("input",container).removeAttr('disabled');

		}
	}
	
};





var CookieTracker = {
	init : function() {
		jQuery.ajax({
			'type':'post',
			'url':'/ajax/track_cookies',
			'data':'internal_ajax_call=1',
			success: function(response){
				var res = jQuery.evalJSON(response);
				if (res.success && !res.cookies_enabled) {
					if (typeof(Notifications) != 'undefined') {
						Notifications.addError("WARNING: Your browser does not accept cookies.\nCookies must be enabled in order for this website to work correctly.");
					}
				}
			}
		})
	}	
};

var AdvancedEditorOptions = {
	// Location of TinyMCE script
	script_url : '/lib/js/tinymce/tiny_mce.js',

	// General options
	theme : "advanced",
	skin : "o2k7",
	skin_variant : "silver",
	plugins : "autolink,style,autosave,save,inlinepopups,print,paste,fullscreen,spellchecker",

	// Theme options
	theme_advanced_buttons1 : "restoredraft,|,pastetext,pasteword,|,undo,redo,|,fontselect,fontsizeselect,|,fullscreen,|,print",
	theme_advanced_buttons2 : "spellchecker,|,bold,italic,underline,|,justifyleft,justifycenter,justifyright,justifyfull,|,outdent,indent,blockquote,|,forecolor,backcolor,|,hr,removeformat,|,link,unlink,cleanup,code",
	theme_advanced_buttons3 :'',
	theme_advanced_buttons4 :'',
	theme_advanced_toolbar_location : "top",
	theme_advanced_toolbar_align : "left",
	theme_advanced_statusbar_location : false,
	theme_advanced_resizing : false,
	theme_advanced_fonts : "Arial=arial;Comic Sans MS=Comic Sans MS;Courier New=Courier New;Georgia=Georgia;Tahoma=Tahoma;Times New Roman=Times New Roman;Trebuchet MS=Times New Roman;Verdana=Verdana",
			
	imagemanager_contextmenu: false,
	spellchecker_languages : "+English=en,French=fr,Russian=ru,Spanish=es,German=de,German(old spelling)=de-alt,Italian=it,Dutch=nl,Polish=pl,Portuguese=pt,Swedish=sv,Norwegian=no,Romanian=ro,Czech=cs,Finnish=fi",
			
	// Example content CSS (should be your site CSS)
	content_css : "/lib/css/tinymce.css",

	// Drop lists for link/image/media/template dialogs
	template_external_list_url : "lists/template_list.js",
	external_link_list_url : "lists/link_list.js",
	external_image_list_url : "lists/image_list.js",
	media_external_list_url : "lists/media_list.js",
			
	autosave_retention : '28800m',
//	save_onsavecallback : function(){return true;},
	theme_advanced_font_sizes : '12px,14px,16px,18px,24px,36px,48px',
	font_size_style_values : "12px,14px,16px,18px,24px,36px,48px",
	
	convert_fonts_to_spans : true,
	
	force_br_newlines : true,
	force_p_newlines : false
};

function htmlspecialchars(str) {
	var s = document.createTextNode(str);
	var span = document.createElement("temp1");
	span.appendChild(s);
	return span.innerHTML;
	
//	var text = document.getElementById('temp_var');
//	while (text.firstChild) {
//		text.removeChild(text.firstChild);
//	}
//	text.appendChild(span);
//	return document.getElementById('temp_var').innerHTML;
}
