/****************************		Old JS included in every page		****************************/

/************** Start main.js **************/
	
passwordMinimumLength = 5;

/**
    function that will remove the leading and ending spaces in the
    input string data.

    input   : String data has to be passed as input
    output  : String that is formatted
*/
function trim(sSrcString)
{
    var iSrcLength  = sSrcString.length;
    var iIndex      = 0;

    while(iIndex < iSrcLength)
    {
        if(sSrcString.charAt(iIndex)!=" ")
            break;
        iIndex++;
    }

    sSrcString=sSrcString.substring(iIndex,iSrcLength);
    iSrcLength      = sSrcString.length;
    while(iSrcLength > 0)
    {
        if(sSrcString.charAt(iSrcLength-1) !=" ")
            break;
        iSrcLength--;
    }
    sSrcString      = sSrcString.substring(0,iSrcLength);

    return sSrcString;
}

function initPageHeader()
{
	animatedcollapse.addDiv('hidden-cities', 'fade=0,')
	animatedcollapse.init()
}

/* this code is for add campus button */
function moreCities(e) {
	jQuery("#hidden-cities").toggle();
	e.preventDefault();
}


function csShow(boxid){
   jQuery("#" + boxid).show();
}

function csHide(boxid){
   jQuery("#" + boxid).hide();
}

function validateLogin(formObj) { //  This appears to be a pointless function...
	hideLoginFormErrorContainers();

	var loginName = formObj.login_username.value;
	var loginPassword = formObj.login_password.value;
	var loginErrorOccured = false;
	if(!loginName || trim(loginName).length == 0) {
		loginErrorOccured = true;
	}
	
	if(!loginPassword || trim(loginPassword).length == 0) {
		loginErrorOccured = true;
	}

	if(loginErrorOccured) {
		csShow('loginForm_error_mandatory');
		return false;
	}

    if(isEmail(loginName) == false) {
		csShow('loginForm_error_emailid');
		return false;
	}

    if(loginPassword.length < passwordMinimumLength) {
		csShow('loginForm_error_password_minlength');
		return false;
    }

    var divName = 'user_my_account_login_area';
	new Ajax.Updater(divName, '/user/ajax/validateLogin.html', {
		parameters: $(formObj).serialize(true),

		evalScripts: true,

		onSuccess: function(transport) {
			var scriptElements = document.getElementById(divName).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
			}

            // this ID is there in Select a Different City section next to logo
            var cantSeeyourCity = document.getElementById("cant_see_your_city");
            if(cantSeeyourCity) {
				cantSeeyourCity.style.display = "none";
			}
		}
	});
	return false;
}

function redirectToUserAccountSuspendedPage() {
    window.location.href = '/user/user_suspended.html';
}

function determinePageIdAndRefreshPageAfterLogin() { // Pointless function...
    var applicationPageIdElem = jQuery("#application_page_id");
    // get the innerText of applicationPageId DIV element
    var applicationPageIdValue = -1;

    if(applicationPageIdElem) {
        applicationPageIdValue = applicationPageIdElem.val();
    }

    if(!applicationPageIdValue || applicationPageIdValue == -1 || applicationPageIdValue != 130) {
        var user_default_city_url_value = determineUserDefaultCityUrl();

        // for all these page ids we need to take the user to Home page after login
        if (user_default_city_url_value.indexOf('?') != -1) {
        	window.location.href = user_default_city_url_value + "&upd=true";
        } else {
        	window.location.href = user_default_city_url_value + "?upd=true";
        }
        
    }
    else if(applicationPageIdValue == 130) {
        window.location.reload(true);
    }
    return;
}

function determineUserDefaultCityUrl() { // Ditto
    try {
        var user_default_city_url = jQuery("#user_default_city_url");
        if(user_default_city_url) {
			user_default_city_url_value = user_default_city_url.innerHTML;
			if(user_default_city_url_value && user_default_city_url_value != null && trim(user_default_city_url_value).length > 0) {
				return 'http://' + user_default_city_url_value;
			}
		}
	}
	catch(exception) {
		// any error default to index.html page
	}
	return location.href.replace('https://', 'http://');
}


function manageMyUpdates(formObj) { // Only called in commented-out inline script
    if(formObj.my_updates.value == "all") {
        filterMyUpdatesByprefix('_muitems_',document.documentElement);
    }

	else if(formObj.my_updates.value == "social_diary") {
        filterMyUpdatesByprefix('muSocial',document.documentElement);
    }
    else if(formObj.my_updates.value == "my_friends") {
        filterMyUpdatesByprefix('muFriend',document.documentElement);
    }
    else if(formObj.my_updates.value == "my_interest_groups") {
        filterMyUpdatesByprefix('muIG',document.documentElement);
    }
}

function filterMyUpdatesByprefix(inprefix,inRoot) { // See 155
	var elem_array = new Array;

	if(typeof inRoot.firstChild!= 'undefined') {
		var elem = inRoot.firstChild;
		while (elem!= null) {
			if (typeof elem.firstChild!= 'undefined') {
				elem_array = elem_array.concat(filterMyUpdatesByprefix(inprefix,elem));
			}

			if(typeof elem.id!= 'undefined') {
				//var reg = new RegExp ( '^'+inprefix+'.*' );
				var reg = new RegExp ( inprefix+'.*' );
				var reghide = new RegExp ( '_muitems_.*' );

				if(elem.id.match(reghide)) {
					csHide(elem.id);
				}

				if(elem.id.match(reg)) {
					elem_array.push(elem);
					csShow(elem.id);
				}
			}
			elem = elem.nextSibling;
		}
	}
	return elem_array;
}

function selectStatusCombos(formObj, current_interest_when) {
	subtract_factor = 0;

	// document.forms[formObj].status_when_first.value = 1;
	// document.forms[formObj].status_when_second.value = 8;

	jQuery("#" + formObj + " #status_when_first select").val() = 1;
	jQuery("#" + formObj + " #status_when_second select").val() = 8;


	if(current_interest_when != "") {
		if(current_interest_when % 2 == 1)       jQuery("#" + formObj + " #status_when_first").val() = 1;
		else if(current_interest_when % 4 == 0)  jQuery("#" + formObj + " #status_when_first").val() = 4; //next
		else if(current_interest_when % 2 == 0)	 jQuery("#" + formObj + " #status_when_first").val() = 2;  //tomorrow

		if(current_interest_when > 32772) {
			divide_factor = parseInt(current_interest_when / 65536);

			if (jQuery('status_when_third')) {
				if (divide_factor == 1) {
					jQuery("#" + formObj + " #status_when_third").val() = 65536;
					subtract_factor = 65536;
				}
				else if(divide_factor == 2) {
					jQuery("#" + formObj + " #status_when_third").val() = 131072;
					subtract_factor = 32768*4;
				}
				else if(divide_factor == 4) {
					jQuery("#" + formObj + " #status_when_third").val() = 262144;
					subtract_factor = 32768*8;
				}
				else if(divide_factor == 8) {
					jQuery("#" + formObj + " #status_when_third").val() = 524288;
					subtract_factor = 32768*16;
				}
				else if(divide_factor == 16) {
					jQuery("#" + formObj + " #status_when_third").val() = 1048576;
					subtract_factor = 32768*32;
				}
			}
		}
		else if(jQuery("#status_when_third")) {
			jQuery("#" + formObj + " #status_when_third").disabled = true;
		}

		divide_factor = parseInt((current_interest_when - parseInt(subtract_factor)) / 8);

		populateSecondStatusCombo(formObj);

		if(divide_factor == 1)			jQuery("#" + formObj + " #status_when_first").val() = 8;
		else if(divide_factor == 2)		jQuery("#" + formObj + " #status_when_first").val() = 16;
		else if(divide_factor == 4)		jQuery("#" + formObj + " #status_when_first").val() = 32;
		else if(divide_factor == 8)		jQuery("#" + formObj + " #status_when_first").val() = 64;
		else if(divide_factor == 16)	jQuery("#" + formObj + " #status_when_first").val() = 128;
		else if(divide_factor == 32)	jQuery("#" + formObj + " #status_when_first").val() = 256;
 		else if(divide_factor == 64)	jQuery("#" + formObj + " #status_when_first").val() = 512;
 		else if(divide_factor == 128)	jQuery("#" + formObj + " #status_when_first").val() = 1024;
 		else if(divide_factor == 256)	jQuery("#" + formObj + " #status_when_first").val() = 2048;
 		else if(divide_factor == 512)	jQuery("#" + formObj + " #status_when_first").val() = 4096;
 		else if(divide_factor == 1024)	jQuery("#" + formObj + " #status_when_first").val() = 8192;
 		else if(divide_factor == 2048)	jQuery("#" + formObj + " #status_when_first").val() = 16384;
 		else if(divide_factor == 4096)	jQuery("#" + formObj + " #status_when_first").val() = 32768;
	}
}


function populateStatusCombos(formObj, combo) {
	second = "second";
	if(combo == "first") {
		if (jQuery("#" + formObj + " #status_when_first").val() == 1) {
			str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
			str += '   <option value="8">Morning</option>';
			str += '   <option value="32">Afternoon</option>';
			str += '   <option value="64">Evening</option>';
			str += '   <option value="128">Week</option>';
			str += '   <option value="256">Month</option>';
			str += '   <option value="512">Monday</option>';
			str += '   <option value="1024">Tuesday</option>';
			str += '   <option value="2048">Wednesday</option>';
			str += '   <option value="4096">Thursday</option>';
			str += '   <option value="8192">Friday</option>';
			str += '   <option value="16384">Saturday</option>';
			str += '   <option value="32768">Sunday</option>';
			str += '</select>';
	    } else if (jQuery("#" + formObj + " #status_when_first").val() == 2) {
			str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
			str += '   <option value="8">Morning</option>';
			str += '   <option value="32">Afternoon</option>';
			str += '   <option value="64">Evening</option>';
			str += '</select>';
		} else if (jQuery("#" + formObj + " #status_when_first").val() == 2) {
			str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
	        str += '   <option value="128">Week</option>';
			str += '   <option value="256">Month</option>';
			str += '   <option value="512">Monday</option>';
			str += '   <option value="1024">Tuesday</option>';
			str += '   <option value="2048">Wednesday</option>';
			str += '   <option value="4096">Thursday</option>';
			str += '   <option value="8192">Friday</option>';
			str += '   <option value="16384">Saturday</option>';
			str += '   <option value="32768">Sunday</option>';
			str += '</select>';
		}
		jQuery('#status_when_second1').innerHTML = str;

		if(jQuery('#status_when_third')) {
			jQuery("#" + formObj + " #status_when_third").disabled = true;
		}
	} else if(combo == "second") {
		if (jQuery("#" + formObj + " #status_when_second").val() > 256) {
			if (jQuery("#" + formObj + " #status_when_third")) {
				jQuery("#" + formObj + " #status_when_third").disabled = false;
			}
		} else {
			if (jQuery('#status_when_third')) {
				jQuery("#" + formObj + " #status_when_third").val() = 0;
				jQuery("#" + formObj + " #status_when_third").disabled = true;
			}
		}
	}
}

function populateSecondStatusCombo(formObj) {

	second = "second";

	if (jQuery("#" + formObj + " #status_when_first").val() == 1) {
		str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
		str += '   <option value="8">Morning</option>';
		str += '   <option value="32">Afternoon</option>';
		str += '   <option value="64">Evening</option>';
		str += '   <option value="128">Week</option>';
		str += '   <option value="256">Month</option>';
		str += '   <option value="512">Monday</option>';
		str += '   <option value="1024">Tuesday</option>';
		str += '   <option value="2048">Wednesday</option>';
		str += '   <option value="4096">Thursday</option>';
		str += '   <option value="8192">Friday</option>';
		str += '   <option value="16384">Saturday</option>';
		str += '   <option value="32768">Sunday</option>';
		str += '</select>';
	} else if (jQuery("#" + formObj + " #status_when_first").val() == 2) {
		str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
		str += '   <option value="8">Morning</option>';
		str += '   <option value="32">Afternoon</option>';
		str += '   <option value="64">Evening</option>';
		str += '</select>';
	} else if (jQuery("#" + formObj + " #status_when_first").val() == 4) {
		str  = '<select name="status_when_second" onchange="populateStatusCombos(\''+formObj+'\', \''+second+'\');">';
		str += '   <option value="128">Week</option>';
		str += '   <option value="256">Month</option>';
		str += '   <option value="512">Monday</option>';
		str += '   <option value="1024">Tuesday</option>';
		str += '   <option value="2048">Wednesday</option>';
		str += '   <option value="4096">Thursday</option>';
		str += '   <option value="8192">Friday</option>';
		str += '   <option value="16384">Saturday</option>';
		str += '   <option value="32768">Sunday</option>';
		str += '</select>';
	}
	jQuery('#status_when_second1').innerHTML = str;
}

function validateAndPostUserSocialStatusForm(formObj, updaterDivName, updateURL) {
    formObj1 = jQuery("#" + formObj);
	hideStatusFormErrorContainers();
    var statusFancyValue = formObj1.status_fancy.value;

	if(!statusFancyValue || trim(statusFancyValue).length == 0) {
		return false;
	}


	jQuery.ajax({
		url: updateURL,
		data: jQuery(formObj1).serialize(true),
		success: function(output) {
			var scriptElements = document.getElementById(updaterDivName).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
			}
			jQuery("#" + updaterDivName).html(output);
		}
	});

    return true;
}

function cancelSubscriptionForm(updaterDivName, updateURL, membershipDetailsId) {
        jQuery.ajax({
          url: updateURL,
          cache: false,
          type: 'POST',
          data: 'membershipDetailsId=' + membershipDetailsId,
          dataType: "html",
          success: function (response)
          {
            jQuery("#subscription_div").html(response);
          }
	});

    return true;
}

function validateStatus(formObj)
{
    var divName = 'user_my_status_area';
    var updateURL = '/user/ajax/validateStatus.html';

    var statusErrorOccured = validateAndPostUserSocialStatusForm(formObj,divName, updateURL);

	if(!statusErrorOccured)
	{
        csShow('statusForm_error_mandatory');
		return false;
	}

    return false;
}

function timeoutfunc( param, membershipDetailsId)
{
	if(success_flag == 1)
	{
		return false;
	}
	else if(success_flag == 2)
	{
	    if(param == 1)	    checkEvents(membershipDetailsId);
	    if(param == 2)      checkSuggested(membershipDetailsId);
	    if(param == 3)      subscriptionUpdate(membershipDetailsId);
	}
	else
		setTimeout("timeoutfunc()",500);
}

var success_flag = 0;
function cancelSubscription(membershipDetailsId) {
	var params = "";
//	var response = "failure";

	jQuery.ajax({
		url: '/user/profile/ajax/checkRSVP.html',
		data: params,
		success: function(output) {
			var response_rsvp = output;

			if (response_rsvp == "success") {
				success_flag = 1;
				window.open("/user/profile/ajax/cancelrsvp.html", "CancelRSVP", "width=400,height=180,left=400,top=250,status=0,location=0,scrollbars=0");
				return false;
			} else {
				success_flag = 2;
			}
//			jQuery("#" + updaterDivName).html(output)
		}
	});

	if(!setTimeout("timeoutfunc(1,"+membershipDetailsId+")",500))
	return false;
}

function checkEvents(membershipDetailsId)
{
	var params = "";
	jQuery.ajax({
		url: '/user/profile/ajax/checkEvents.html',
		type: "GET",
		data: params,
		success: function(output) {
			var response_events = output;

			if(response_events == "success") {
				success_flag = 1;
				window.open("/user/profile/ajax/cancelEvent.html", "CancelEvents", "width=400,height=180,left=400,top=250,status=0,location=0,scrollbars=0");
				return false;
			} else {
				success_flag = 2;
			}
		}
	});

	if(!setTimeout("timeoutfunc(2,"+membershipDetailsId+")",500))
	return false;
}

function checkSuggested(membershipDetailsId)
{

	var params = "";
	
	jQuery.ajax({
		url: '/user/profile/ajax/checkSuggestedSocials.html',
		data: params,
		type: "GET",
		success: function(output) {
			var response_sugg = output;

			if(response_sugg == "success")
			{
			   success_flag = 1;
			   window.open("/user/profile/ajax/cancelSuggested.html", "CancelSuggested", "width=400,height=180,left=400,top=250,status=0,location=0,scrollbars=0");
			   return false;
			} else {
				success_flag = 2;
			}
		}
	});

	if(!setTimeout("timeoutfunc(3," + membershipDetailsId + ")",500))
	return false;
}

function subscriptionUpdate(membershipDetailsId)
{
    var divName = 'subscription_div';
    var updateURL = '/user/profile/ajax/cancel_subscription.html';
    var statusErrorOccured =cancelSubscriptionForm(divName, updateURL, membershipDetailsId)
}

function cancelPromoSubscription(membershipDetailsId,frm)
{
	var params = "";
	
	jQuery.ajax({
		url: '/user/profile/ajax/checkRSVP.html',
		type: "GET",
		data: params,
		success: function(output) {
			var response = output;

			if (response == "failure") {
				jQuery.ajax({
					url: '/user/profile/ajax/cancel_subscription.html',
					type: "GET",
					data: params,
					success: function(output) {
						var response = output.responseText;
						document.frm.submit();
						return;
					}
				});

			    return false
			} else if(response == "success") {
				window.open("/user/profile/ajax/cancelrsvp.html", "CancelRSVP", "width=400,height=150,left=400,top=250,status=0,location=0,scrollbars=0");
			}
		}
	});

	/*new Ajax.Request('/user/profile/ajax/checkRSVP.html',
	{
		method:'get' ,
		parameters: params,
		onSuccess:  function(output)
		{
			var response = output.responseText;


			if(response == "failure")
			{
			    var divName = 'subscription_div';

			    var updateURL = '/user/profile/ajax/cancel_subscription.html';

			    new Ajax.Request(updateURL,
			    {
					method:'get' ,
					parameters: params,
					onSuccess:  function(output)
					{
						var response = output.responseText;
						document.frm.submit();
						return;
			        }
			    }
			    );

			    return false
			}
			else if(response == "success")
			{
			   window.open("/user/profile/ajax/cancelrsvp.html", "CancelRSVP", "width=400,height=150,left=400,top=250,status=0,location=0,scrollbars=0");
			}
		}
	}
	);*/
}

function showSuccessMessage() {
}

function renderView(divId, htmlResponse) {
	jQuery("#" + divId).innerHTML = htmlResponse;
}

function hideLoginFormErrorContainers() {
	csHide('loginForm_error_mandatory');
	csHide('loginForm_error_invalid');
	csHide('loginForm_error_internal_error');
	csHide('loginForm_error_emailid');
    csHide('loginForm_error_password_minlength');
}

function hideStatusFormErrorContainers()
{
	csHide('statusForm_error_mandatory');
}

function logoutUser() { // Unused function
	var divName = 'user_my_account_login_area';
	new Ajax.Updater(divName,'/user/ajax/logout.html',
	{
		parameters: 'ajax=true',

  		evalScripts: true,

		onSuccess: function(transport)
		{
		 }
	  });
}

function hideOrShowMyAccount() { // Unused function
	var currentDisplayValue = document.getElementById('account_links').style.display;
	if(!currentDisplayValue)
	{
		currentDisplayValue = 'none';
	}
	if(currentDisplayValue == 'block')
	{
		document.getElementById('account_links').style.display = 'none';
	}
	else
	{
		document.getElementById('account_links').style.display = 'block';
	}
}

function submitJoinUsTodayForm() { // Unused function
	document.forms['formJoinUsToday'].submit();
}

function validateForgotPasswordRequestForm(formObj) {
	jQuery('#forgotpassword_request_form_error_header').hide();
	jQuery('#email_address_mandatory').hide();
	jQuery('#invalid_email_address').hide();
	jQuery('#return_message_error_container').hide();

	if(!formObj.email || trim(formObj.email.value).length == 0) {
		jQuery('#forgotpassword_request_form_error_header').show();
		jQuery('#email_address_mandatory').show();
		return false;
	}

	if(isEmail(trim(formObj.email.value)) == false) {
		jQuery('#forgotpassword_request_form_error_header').show();
		jQuery('#email_address_mandatory').show();
		return false;
	}

	formObj.submit.disabled = true;
	return true;
}

function validateResetPasswordRequestForm(formObj) {
	csHide('reset_password_form_error_header');
	csHide('return_message_error_container');
	csHide('password_mandatory');
	csHide('invalid_password_length');

	if(!formObj.password || trim(formObj.password.value).length == 0)
	{
		csShow('reset_password_form_error_header');
		csShow('password_mandatory');
		return false;
	}
	if(trim(formObj.password.value).length < 5)
	{
		csShow('reset_password_form_error_header');
		csShow('invalid_password_length');
		return false;
	}
	if(!formObj.confirm_password || trim(formObj.confirm_password.value).length == 0)
	{
		csShow('reset_password_form_error_header');
		csShow('passwordagain_mandatory');
		return false;
	}
	if(trim(formObj.confirm_password.value).length < 5)
	{
		csShow('reset_password_form_error_header');
		csShow('invalid_passwordagain_length');
		return false;
	}
	if(formObj.confirm_password.value != formObj.password.value)
	{
		csShow('reset_password_form_error_header');
		csShow('password_and_passwordagain_mismatch');
		return false;
	}

	formObj.submit.disabled = true;
	return true;
}

function isUserLoggedIn() {
	var elem = jQuery('#user_login_status');
	if(elem && elem.innerText && elem.innerHTML == 'true') {
		return true;
	}

	return false;
}

function createBookmarkLink(url, title)
{
	if (window.sidebar)
	{
		// Mozilla Firefox Bookmark
		window.sidebar.addPanel(title, url,"");
	}
	else if( window.external )
	{
		// IE Favorite
		window.external.AddFavorite( url, title);
	}
	else if(window.opera && window.print)
	{
		return false;
	}

    return false;
}

 function proessChangePasswordForm() {
     var formObj = document.forms['change_password_form'];
     var confirmNewPassword = formObj.confirm_new_password.value;
     var newPassword = formObj.new_password.value;
     var currentPassword = formObj.current_password.value;

    csHide('change_profile_success_message_cont');
    csHide('change_password_some_info_missing_error');
	csHide('change_password_generic_error');
    csHide('current_password_blank_error');
    csHide('new_password_blank_error');
    csHide('confirm_new_password_blank_error');
    csHide('invalid_current_password_length_error');
    csHide('invalid_confirm_new_password_length_error');
    csHide('invalid_new_password_length_error');
    csHide('invalid_confirm_new_password_mismatch_error');

    jQuery('#change_password_generic_error').innerHTML = "";

    var validForm = true;

	if(!currentPassword || trim(currentPassword).length == 0) {
		csShow('current_password_blank_error');
		validForm = false;
	}
	
	if(!newPassword || trim(newPassword).length == 0) {
		csShow('new_password_blank_error');
		validForm = false;
	}
	
	if(!confirmNewPassword || trim(confirmNewPassword).length == 0) {
		csShow('confirm_new_password_blank_error');
		validForm = false;
	}
	
    if(validForm) {
		if(trim(currentPassword).length < 5) {
            csShow('invalid_current_password_length_error');
            validForm = false;
		}

        if(trim(newPassword).length < 5) {
            csShow('invalid_new_password_length_error');
            validForm = false;
        }

        if(trim(confirmNewPassword).length < 5) {
            csShow('invalid_confirm_new_password_length_error');
            validForm = false;
        }

        if(trim(newPassword) != trim(confirmNewPassword)) {
            csShow('invalid_confirm_new_password_mismatch_error');
            validForm = false;
        }
    }

    if(!validForm) {
		csShow('change_password_some_info_missing_error');
        csShow('change_password_generic_error');
        return false;
    }

    jQuery('#change_password_submit_button').disabled = true;

    var divName = 'change_password_form_submission_updater';
	
	jQuery.ajax({
		url: '/user/ajax/postChangePassword.html',
		data: jQuery("#" + formObj).serialize(true),
		
		success: function(output) {
			jQuery("#" + divName).html(output);
			jQuery('#change_password_submit_button').disabled = false;
		}
	});
 }

jQuery(document).ready(function() {
	jQuery("#change_password_form").submit(function(e) {
		e.preventDefault();

		var formObj = jQuery("#change_password_form");
		var confirmNewPassword = jQuery("#confirm_new_password").val();
		var newPassword = jQuery("#new_password").val();
		var currentPassword = jQuery("#current_password").val();

		jQuery('#change_profile_success_message_cont').hide();
		jQuery('#change_password_some_info_missing_error').hide();
		jQuery('#change_password_generic_error').hide();
		jQuery('#current_password_blank_error').hide();
		jQuery('#new_password_blank_error').hide();
		jQuery('#confirm_new_password_blank_error').hide();
		jQuery('#invalid_current_password_length_error').hide();
		jQuery('#invalid_confirm_new_password_length_error').hide();
		jQuery('#invalid_new_password_length_error').hide();
		jQuery('#invalid_confirm_new_password_mismatch_error').hide();

	    jQuery('#change_password_generic_error').innerHTML = "";

	    var validForm = true;

		if(!currentPassword || trim(currentPassword).length == 0) {
			jQuery('#current_password_blank_error').hide();
			validForm = false;
		}
		
		if(!newPassword || trim(newPassword).length == 0) {
			jQuery('#new_password_blank_error').show();
			validForm = false;
		}
		
		if(!confirmNewPassword || trim(confirmNewPassword).length == 0) {
			jQuery('#confirm_new_password_blank_error').show();
			validForm = false;
		}

		if(trim(currentPassword).length < 5) {
            jQuery('#invalid_current_password_length_error').show();
            validForm = false;
		}

        if(trim(newPassword).length < 5) {
            jQuery('#invalid_new_password_length_error').show();
            validForm = false;
        }

        if(trim(confirmNewPassword).length < 5) {
            jQuery('#invalid_confirm_new_password_length_error').show();
            validForm = false;
        }

        if(trim(newPassword) != trim(confirmNewPassword)) {
            jQuery('#invalid_confirm_new_password_mismatch_error').show();
            validForm = false;
        }
	
		if(!validForm) {
			jQuery('#change_password_some_info_missing_error').show();
	        jQuery('#change_password_generic_error').show();
	    }

	    var divName = 'change_password_form_submission_updater';

		if(validForm == true) {
			jQuery.ajax({
				type: "post",
				url: '/user/ajax/postChangePassword.html',
				data: jQuery(formObj).serialize(true),
		
				success: function(output) {
					jQuery("#" + divName).html(output);
				}
			});
		}
		
	});
});



 function clearChangePasswordFormData()
 {
     formObj = document.forms['change_password_form'];
     formObj.confirm_new_password.value = "";
     formObj.new_password.value = "";
     formObj.current_password.value = "";
 }

function enabldDisableChangeEmail(changeEmailChkBoxElem) {
     if(!changeEmailChkBoxElem)
     {
        return;
     }
     if(changeEmailChkBoxElem.checked)
     {
        jQuery('#email').disabled = false;
     }
     else
     {
        jQuery('#email').disabled = true;
        jQuery('#email').value = jQuery('#previousEmailValue').value;
     }
}

function validateLinkFrom(formObj)
{
	var name = formObj.txtName.value;
    var address = formObj.txtAddress.value;
    var description = formObj.txtDescription.value;

	csHide('name_mandatory_error_container');
    csHide('address_mandatory_error_container');
	csHide('name_length_error_container');
	csHide('address_length_error_container');
	csHide('description_length_error_container');

    var validForm = true;
	if(!name || trim(name).length == 0)
	{
		csShow('name_mandatory_error_container');
		validForm = false;
	} else if (trim(name).length > 100 || trim(name).length < 2)
	{
		csShow('name_length_error_container');
		validForm = false;
	}



	if(!address || trim(address).length == 0)
	{
		csShow('address_mandatory_error_container');
		validForm = false;
	} else if (trim(address).length > 500 || trim(address).length < 10)
	{
		csShow('address_length_error_container');
		validForm = false;
	}

	if(description || trim(description).length > 0)
	{
		if (trim(description).length > 2500)
		{
			csShow('description_length_error_container');
			validForm = false;
		}
	}


	if(!validForm) {
		return false;
	} else {
		return true;
	}
}

function validateTestimonialFrom(formObj){

    var description = formObj.txtDescription.value;

	csHide('description_mandatory_error_container');
	csHide('description_length_error_container');

    var validForm = true;

	if(!description || trim(description).length == 0)
	{
		csShow('description_mandatory_error_container');
		validForm = false;
	}
	else if (trim(description).length > 2500 || trim(description).length < 2)
	{
		csShow('description_length_error_container');
		validForm = false;
	}

	if(!validForm) {
		return false;
	} else {
		return true;
	}
}


function cityTestimonialshow() {
	var cityId = document.selectCity.city.value;
	var type = document.selectCity.type.value;
	var status = 0;

	csHide('select_city_mandatory_error_container');
	csHide('select_type_mandatory_error_container');

	if(cityId == 'select') {
		csShow('select_city_mandatory_error_container');
		status = 1;
	}

	if(type == 'select') {
		csShow('select_type_mandatory_error_container');
		status = 1;
	}

	if(!status) {
		location.href = "/admin/testimonial/manage/city_testimonials.html?cityId=" + cityId + "&type=" + type;
	}
}

function getQuerystring(key, default_)
{
  if (default_==null) default_="";
  key = key.replace(/[\[]/,"\\\[").replace(/[\]]/,"\\\]");
  var regex = new RegExp("[\\?&]"+key+"=([^&#]*)");
  var qs = regex.exec(window.location.href);
  if(qs == null)
    return default_;
  else
    return qs[1];
}

function display_selectCity()
{
	var cityId = getQuerystring('cityId');
	var type = getQuerystring('type');


	if(cityId != '' && type != '')
	{
		document.selectCity.city.disabled = true;
		document.selectCity.type.disabled = true;
	}
}

function validateCityTestimonialForm(formObj)
{
	var header = formObj.contentHeader.value;
    var side = formObj.contentSide.value;

	csHide('header_mandatory_error_container');
	csHide('side_mandatory_error_container');

    var validForm = true;
	if(!header || trim(header).length == 0)
	{
		csShow('header_mandatory_error_container');
		validForm = false;
	} else if (trim(header).length > 100 || trim(header).length < 2)
	{
		csShow('header_length_error_container');
		validForm = false;
	}

	if(!side || trim(side).length == 0)
	{
		csShow('side_mandatory_error_container');
		validForm = false;
	}else if (trim(side).length > 100 || trim(header).length < 2)
	{
		csShow('side_length_error_container');
		validForm = false;
	}

	if(!validForm) {
		return false;
	} else {
		return true;
	}
}


function validateUpdateUserProfileForm(formObj)
{
    if(!formObj)
    {
        return false;
    }

    csHide('user_profile_success_message_cont');
    csHide('user_profile_error_cont');
    csHide('update_user_profile_error_email_blank');
    csHide('update_user_profile_error_email_invalid');
    csHide('update_user_profile_error_email_change_invalid');
    csHide('update_user_profile_error_fname_blank');
    csHide('update_user_profile_error_surname_blank');
    csHide('update_user_profile_generic_error');

    var emailValue = trim(document.getElementById('email').value).toLowerCase();
    if(formObj.changeEmail.checked)
    {
        if(!emailValue)
        {
            csShow('user_profile_error_cont');
            csShow('update_user_profile_error_email_blank');
            return false;
        }
        if(!isEmail(emailValue))
        {
            csShow('user_profile_error_cont');
            csShow('update_user_profile_error_email_invalid');
            return false;
        }
        var currentPreviousEmailValue = document.getElementById('previousEmailValue').value.toLowerCase();
        if(currentPreviousEmailValue == emailValue)
        {
            csShow('user_profile_error_cont');
            csShow('update_user_profile_error_email_change_invalid');
            return false;
        }
    }

    var fname = trim(document.getElementById('name').value);
    if(fname.length <= 0)
    {
        csShow('user_profile_error_cont');
        csShow('update_user_profile_error_fname_blank');
        return false;
    }
    var surname = trim(document.getElementById('surname').value);
    if(surname.length <= 0)
    {
        csShow('user_profile_error_cont');
        csShow('update_user_profile_error_surname_blank');
        return false;
    }

    return true;
}

function toggleCountryBlock(hidingElement,checkboxElement)
{
    handleToggleCountryBlock(document.frmRegistration, hidingElement,checkboxElement);
}

function toggleUserCountryBlock(formObj, hidingElement,checkboxElement)
{
    handleToggleCountryBlock(formObj, hidingElement,checkboxElement);
}

function handleToggleCountryBlock(formObj, hidingElement,checkboxElement) {
	if (jQuery("#" + checkboxElement).is(':checked')) {
		if (jQuery("#" + checkboxElement).val() == "notworkinuk") {
			//formObj.postcode_work.value="";
			formObj.postcode_work.disabled=true;
		}

		if (jQuery("#" + checkboxElement).val() == "notliveinuk") {
			//formObj.postcode_live.value="";
			formObj.postcode_live.disabled=true;
		}
		jQuery("#" + hidingElement).show();
	} else {
		if(checkboxElement=="notworkinuk") {
			formObj.postcode_work.disabled=false;
			formObj.postcode_work.focus();
		}

		if(checkboxElement=="notliveinuk") {
			formObj.postcode_live.disabled=false;
			formObj.postcode_live.focus();
		}

		jQuery(hidingElement).hide();
	}
}

function loadCities(countryId,listElement,divId,cityId) {
	var params = "country_id=" + countryId + "&list_element=" + listElement;

	jQuery.ajax({
		url: '/user/ajax/loadcities.html',
		type: "GET",
		data: params,
		success: function(ouput) {
			var response = output.responseText;
			displayCities(divId,response,listElement,cityId);
		}
	});
}

function renderCities(response,listElement)
{
	var arrData = response.split(",");
	var i=0;
	objCity = jQuery("#" +listElement);
	objCity.options.length = 0;
	for (i=0;i<(arrData.length);i++)
	{
		if(arrData[i]!="")
		{
			var cityData = arrData[i];
			var arrCity =  cityData.split(">");
			if(arrCity[0]!="")
			{
				objCity.options[objCity.options.length] = new Option(arrCity[1],arrCity[0]);
			}
		}
	}

}

function displayCities(divId,responseText,listElement,cityId) {
	jQuery("#" + divId).html(responseText);
	jQuery("#" + listElement).val(cityId);
}

//removes duplicates from the array..
function array_unique(arr)
{
	//trim all elements of the array
	arr = array_walk(arr, trim);
	arr.sort();
	cnt = arr.length;
	var uniqueArray= new Array();;
	var testString = "~@!#";
	uniqueCntr = 0;
	for(i=0;i<cnt;i++) {
		if(testString!=trim(arr[i])) {
			uniqueArray[uniqueCntr]=trim(arr[i]);
			uniqueCntr = uniqueCntr +1;
			testString=trim(arr[i]);
		}
	}
	return uniqueArray;
}



//calls the functionName for each element in an array..
//for single dimension array..
//calling example: array_walk(arrName, trim)
//calls trim function for each element in the array.
function array_walk(arr, functionName) {
	cnt = arr.length;
	for(i=0;i<cnt;i++)
	{
		arr[i]=functionName(arr[i]);
	}
	return arr;
}


function updateHomePageWelcomeTabDynamicContent() {
    updateHomePageWelcomeTabCityNewMembers();
    updateHomePageWelcomeTabUpcomingSocials();
    updateHomePageWelcomeTabInterestGroups();
}

function updateHomePageWelcomeTabCityNewMembers() {
	jQuery.ajax({
		url: '/home/ajax/fetch_city_latest_members.html',
		data: "ajax=true",
		success: function(output) {
			jQuery("#newmembers_container_dynamic_updater").html(output);
		}
	});
}

function updateHomePageWelcomeTabUpcomingSocials() {
	jQuery.ajax({
		url: '/home/ajax/fetch_city_upcoming_socials.html',
		data: "ajax=true",
		success: function(output) {
			jQuery("#upcoming_socials_container_dynamic_updater").html(output);
		}
	});
}

function updateHomePageWelcomeTabInterestGroups() {
	jQuery.ajax({
		url: '/home/ajax/fetch_homepage_interest_groups.html',
		data: "ajax=true",
		success: function(output) {
			jQuery("#interest_groups_container_dynamic_updater").html(output);
		}
	});
}

function validateCitySocialContentForm(formObj)
{
	var social = formObj.contentSocial.value;

	csHide('content_mandatory_error_container');
	csHide('content_length_error_container');

    var validForm = true;
	if(!social || trim(social).length == 0)
	{
		csShow('content_mandatory_error_container');
		validForm = false;
	} else if (trim(social).length > 100 || trim(social).length < 2)
	{
		csShow('content_length_error_container');
		validForm = false;
	}

	if(!validForm) {
		return false;
	} else {
		return true;
	}
}

function validatePhotoForm(formObj)
{
	var caption = formObj.caption.value;
	var path = formObj.uploadimage.value;

	csHide('caption_mandatory_error_container');
	csHide('path_mandatory_error_container');

    var validForm = true;

/*	if(!caption || trim(caption).length == 0)
	{
		csShow('caption_mandatory_error_container');
		validForm = false;
	}
*/
	if(!path || trim(path).length == 0)
	{
		csShow('path_mandatory_error_container');
		validForm = false;
	}

	if(!validForm) {
		return false;
	} else {
		return true;
	}

}

function confirmCall(operation,frmName, frmRefNo)
{
	//url = gbLink + '?photo_id=' + photoid + '&useruid='+ useruid + '&photouid='+photouid +'&op=' +operation;
	//GB_showCenter("", url, /* optional */ 200, 400);
/* params = 'photo_id=' + photoid + '&useruid='+ useruid + '&photouid='+photouid +'&op=' +operation;
	var ajax = new Ajax.Updater('upload_thumbnail_main',
								'/user/ajax/profile_photo_manage.html',
									{
									method: 'post',
									parameters: params,
									evalScripts: true
									//onSuccess: refreshCalenderForSeriesSocial
								  	});
*/
	if (operation == 'setdefault') {
		msg = jQuery('#idMsgSetDefault').val();
		var check_counter = 0;
		var pcnt = jQuery('idphotocount').val();
		var flagChecked = 0;

		if (frmRefNo == 1 && (pcnt == 2 || pcnt == 3)) {
			if (jQuery('#idSetDefault_2') && jQuery("#idSetDefault_2").is(':checked')) {
				jQuery("#idSetDefault_2").attr('checked', false);
				flagChecked = 2;
			}
			if(pcnt > 2) {
				if (jQuery('#idSetDefault_3') && jQuery('#idSetDefault_3').is(':checked')) {
					jQuery("#idSetDefault_3").attr('checked', false);
					flagChecked = 3;
				}
			}
		}

		if (frmRefNo == 2 && pcnt == 3) {
			if (jQuery('#idSetDefault_1') && jQuery('#idSetDefault_1').is(':checked')) {
				jQuery("#idSetDefault_1").attr('checked', false);
				flagChecked = 1;
			}
			if (jQuery('#idSetDefault_3') && jQuery('#idSetDefault_3').is(':checked')) {
				jQuery("#idSetDefault_3").attr('checked', false);
				flagChecked = 1;
			}
		}

		if (frmRefNo == 3) {
			if (jQuery('#idSetDefault_2') && jQuery('#idSetDefault_2').is(':checked')) {
				jQuery("#idSetDefault_2").attr('checked', false);
				flagChecked = 2;
			}
			
			if (jQuery('#idSetDefault_1') && jQuery('#idSetDefault_1').is(':checked')) {
				jQuery("#idSetDefault_1").attr('checked', false);
				flagChecked = 1;
			}
		}
	} else if (operation == 'delete') {
		msg = jQuery('#idMsgDelete').val();
	} else if (operation == 'nodefault') {
		msg = jQuery('#idMsgDelete').val();		
	}

	var answer = confirm(msg);

	if (answer){
		frmName.tempPhotoPath.value = jQuery('#idDefaultPhotoPath').val();
		frmName.manage.value = operation;
		frmName.action ="/user/ajax/profile_photo_manage.html";
		frmName.submit();
	} else {
		if (flagChecked == 1) {
			jQuery('#idSetDefault_1').is(':checked');
			
			if (jQuery('#idSetDefault_2').is(':checked')) {
				jQuery("#idSetDefault_2").attr('checked', false);
			}
			
			if (jQuery('#idSetDefault_3').is(':checked')) {
				jQuery("#idSetDefault_3").attr('checked', false);
			}
		} else if (flagChecked == 2) {
			jQuery('#idSetDefault_2').is(':checked');
			
			if (jQuery('#idSetDefault_1').is(':checked')) {
				jQuery("#idSetDefault_1").attr('checked', false);
			}
			
			if (jQuery('#idSetDefault_3').is(':checked')) {
				jQuery("#idSetDefault_3").attr('checked', false);
			}
		}
		else if (flagChecked == 3) {
			jQuery('#idSetDefault_3').is(':checked');
			
			if (jQuery('#idSetDefault_2').is(':checked')) {
				jQuery("#idSetDefault_2").attr('checked', false);
			}
			
			if (jQuery('#idSetDefault_1').is(':checked')) {
				jQuery("#idSetDefault_1").attr('checked', false);
			}
		}
		//window.location.reload();
		if (operation == 'delete')
		{
			return false;
		}
		else
		{
			window.location.href = '/user/profile/user_profile_photos.html';
		}
	}
}

function validateProfilePhoto1(formObj)
{
  var validForm = true;
  csHide('profile_photo_form_error_header');
  if (formObj.photo1.value=='' &&  formObj.photo2.value=='' && formObj.photo3.value=='' ) {
	csShow('profile_photo_form_error_header');
	validForm = false;
  }
  if (formObj.photo2 && formObj.photo2.value!='' &&  formObj.photo1.value=='') {

	csShow('profile_photo_form_error_header');
	validForm = false;
  }
  if (formObj.photo3 && formObj.photo3.value!='' &&  formObj.photo1.value=='' && formObj.photo2.value=='') {
	csShow('profile_photo_form_error_header');
	validForm = false;
  }

  if(!validForm) {
	return false;
  } else {
	return true;
  }
}

function submitFindFriendSearch(formObj)
{
	formObj.isPagination.value = false;
    formObj.sortby.value =0;
    
	return validateSearchFriendsForm(formObj);
}

function validateSearchFriendsForm(formObj)
{
    var ageStartValue = formObj.age1.value;
    var ageEndValue = formObj.age2.value;
    if(ageStartValue > ageEndValue)
    {
        return false;
    }

    var tagDefaultTextValue = jQuery("#search_friend_tag_default_text").val();
    var formTagValue = trim(formObj.tag.value);
    if(!formTagValue || formTagValue.length == 0 || formTagValue == tagDefaultTextValue)
    {
        formObj.tag.value = "";
    }

    var nearByDefaultTextValue = jQuery("#search_friend_nearby_default_text").val();
    var formNearbyValue = trim(formObj.nearby.value);
    if(!formNearbyValue || formNearbyValue.length == 0 || formNearbyValue == nearByDefaultTextValue)
    {
        formObj.nearby.value = "";
    }

	return true;
}

function validateUserLoginForm(formObj)
{
    hideUserLoginFormErrorContainers();

	var loginName = formObj.user_login_username.value;
	var loginPassword = formObj.user_login_password.value;
    var errorFound = false;
	if(!loginName || trim(loginName).length == 0)
	{
		csShow('user_login_username_mandatory');
		errorFound = true;
	}
    if(!loginPassword || trim(loginPassword).length == 0)
	{
		csShow('user_login_password_mandatory');
		errorFound = true;
	}

    if(errorFound) return false;

    if(isEmail(loginName) == false)
	{
		csShow('invalid_user_login_username');
		return false;
	}

    if(loginPassword.length < passwordMinimumLength)
    {
		csShow('invalid_user_login_password_length');
		return false;
    }

    return true;
}

function hideUserLoginFormErrorContainers()
{
	csHide('user_login_form_error_header');
    jQuery("user_login_form_error_header").html("");
	csHide('invalid_user_login_username');
	csHide('user_login_username_mandatory');
	csHide('invalid_user_login_password_length');
    csHide('user_login_password_mandatory');
}

/*
 * In the same page we are reusing the form that already exists to send a message to a friend
 */
function myfriends_searchmyfriends_handleSendMessage(friendRefNum)
{
    var selectedFriendChkBoxElem = jQuery('#refnums_unselected_' + friendRefNum )
    if(!selectedFriendChkBoxElem) return;

    var sendMessageMainFormObj = jQuery('#myfriends_sendmessage_to_friends');
    if(sendMessageMainFormObj)
    {
        clear_myfriends_sendMessageToUserFriends_MainForm(sendMessageMainFormObj);
        myfriends_sendMessageToUserFriends_removeFriends(sendMessageMainFormObj, true);

        selectedFriendChkBoxElem.checked = true;
        myfriends_sendMessageToUserFriends_addFriend(sendMessageMainFormObj, selectedFriendChkBoxElem);
        sendMessageMainFormObj.myfriends_send_message_subject.focus();
        window.scroll(0, 0);

        csShow('myfriends_sendmessage_to_friends_send_message_link_msg_cont');
    }
}

function myfriends_sentSuccessfully_MessageToUserFriends()
{
    jQuery('#myfriends_sendmessage_to_friends_updated_success_msg_cont').show();
	setTimeout(function() {
		jQuery('#myfriends_sendmessage_to_friends_updated_success_msg_cont').hide();
	}, 3000 );

    fetchAndClear_myfriends_sendMessageToUserFriends_HiddenForm();
    var sendMessageMainFormObj = jQuery('#myfriends_sendmessage_to_friends');
    if(sendMessageMainFormObj)
    {
        // clear_myfriends_sendMessageToUserFriends_MainForm(sendMessageMainFormObj);
        // myfriends_sendMessageToUserFriends_removeFriends(sendMessageMainFormObj, true);
    }
}

function fetchAndClear_myfriends_sendMessageToUserFriends_HiddenForm()
{
    var hiddenForm = document.getElementById('myfriends_sendmessage_to_friends_hidden_form');
    if(!hiddenForm) return hiddenForm;

    // clear the hidden form current values
    hiddenForm.friend_refnums.value = '';
    hiddenForm.user_subject.value = '';
    hiddenForm.user_message.value = '';

    return hiddenForm;
}

function clear_myfriends_sendMessageToUserFriends_MainForm(formObj)
{
    if(!formObj) return ;

    formObj.myfriends_send_message_subject.value = '';
    formObj.myfriends_send_message_content.value = '';

    return;
}

function myfriends_sendMessageToUserFriends_buildRefnums(formObj)
{
    var userRefNumCSV = '';
    var addedARefNum = false;

    var selectedFriendsList = document.getElementsByName('selected_user_refnums');
    if(!selectedFriendsList) return false;

    var noOfFriends = selectedFriendsList.length;
    var noOfFriendsSelected = 0;

    for(counter = 0; counter < noOfFriends; counter++)
    {
        var selectedFriendChexkBox = selectedFriendsList[counter];
        var chkBoxRelativeLItag = document.getElementById('refnums_selected_list_' + selectedFriendChexkBox.value);

        if(!chkBoxRelativeLItag) continue;

        if(chkBoxRelativeLItag.style.display == 'block')
        {
            // means this friend is showing up in the UI
            noOfFriendsSelected = noOfFriendsSelected + 1;

            if(addedARefNum)
            {
                userRefNumCSV += ',' + trim(selectedFriendChexkBox.value);
            }
            else
            {
                userRefNumCSV = '' + selectedFriendChexkBox.value;
            }

            addedARefNum = true;
        }
    }

    if(noOfFriendsSelected <= 0 || trim(userRefNumCSV).length == 0)
    {
        jQuery('myfriends_send_message_friends_blank').show();
        return false;
    }

    return userRefNumCSV;
}

function myfriends_sendMessageToUserFriends(formObj)
{
    csHide('myfriends_sendmessage_to_friends_send_message_link_msg_cont');
    csHide('myfriends_send_message_friends_blank');
    csHide('myfriends_send_message_subject_blank');
    csHide('myfriends_send_message_content_blank');
    csHide('myfriends_send_message_friends_blank');

    var hiddenForm = fetchAndClear_myfriends_sendMessageToUserFriends_HiddenForm();
    if(!hiddenForm) return false;

    var userRefNumCSV = myfriends_sendMessageToUserFriends_buildRefnums(formObj);
    if(userRefNumCSV == false)
    {
        return false;
    }

    if(!formObj.myfriends_send_message_subject.value || trim(formObj.myfriends_send_message_subject.value).length == 0)
    {
        jQuery('#myfriends_send_message_subject_blank').show();

        return false;
    }

    if(!formObj.myfriends_send_message_content.value || trim(formObj.myfriends_send_message_content.value).length == 0)
    {
        jQuery('#myfriends_send_message_content_blank').show();
        return false;
    }

    hiddenForm.friend_refnums.value = userRefNumCSV;
    hiddenForm.user_subject.value = formObj.myfriends_send_message_subject.value;
    hiddenForm.user_message.value = formObj.myfriends_send_message_content.value;

	var divNameToBeUpdated = 'myfriends_sendmessage_to_friends_ajax_updater';
	
	jQuery.ajax({
		url: '/friends/myfriends/ajax/postMessageForUserFriends.html',
		data: jQuery("#" + hiddenForm).serialize(true),
		success: function(output) {
			var scriptElements = jQuery("#" + divNameToBeUpdated).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
			}
			jQuery(divNameToBeUpdated).html(output);
		}
	});
}

function myfriends_sendMessageToUserFriends_clearMessageFormData()
{
    formObj = jQuery('#myfriends_sendmessage_to_friends');
    if(formObj)
    {
        if(formObj.myfriends_send_message_content)
        {
            formObj.myfriends_send_message_content.value = '';
        }
        if(formObj.myfriends_send_message_subject)
        {
            formObj.myfriends_send_message_subject.value = '';
        }
    }
}

function myfriends_sendMessageToUserFriends_addFriends(formObj, isAddAll)
{
    var unselectedFriendsList = jQuery('#unselected_user_refnums');
    if(!unselectedFriendsList) return false;

    var noOfFriends = unselectedFriendsList.length;

    if(!isAddAll) isAddAll = false;

    for(counter = 0; counter < noOfFriends; counter++)
    {
        var unSelectedFriendChexkBox = unselectedFriendsList[counter];

        if(unSelectedFriendChexkBox.checked || isAddAll)
        {
            // in case of isAddAll we should programatically check the checbox that is why below line
            unSelectedFriendChexkBox.checked = true;
            myfriends_sendMessageToUserFriends_addFriend(formObj, unSelectedFriendChexkBox);
        }
        else
        {
            //myfriends_sendMessageToUserFriends_removeFriend(formObj, unSelectedFriendChexkBox);
        }

    }

    return false;
}

function myfriends_sendMessageToUserFriends_addFriend(formObj, chkBoxElem)
{
    if(!chkBoxElem || !formObj) return;

    var friendRefNum = chkBoxElem.value;
    if(!friendRefNum) return;

    var chkBoxRelativeSelectedChkBoxLItag = document.getElementById('refnums_selected_list_' + friendRefNum);
    if(!chkBoxRelativeSelectedChkBoxLItag) return;

    var chkBoxRelativeLItag = document.getElementById('refnums_unselected_list_' + friendRefNum);
    if(!chkBoxRelativeLItag) return;

    chkBoxRelativeLItag.hide();
    chkBoxElem.checked = false;
    jQuery("#chkBoxRelativeSelectedChkBoxLItag").show();
}

function myfriends_sendMessageToUserFriends_removeFriends(formObj, isRemoveAll) {
    var selectedFriendsList = document.getElementsByName('selected_user_refnums');
    if(!selectedFriendsList) return false;

    var noOfFriends = selectedFriendsList.length;

    if(!isRemoveAll) isRemoveAll = false;

    for(counter = 0; counter < noOfFriends; counter++)
    {
        var selectedFriendChexkBox = selectedFriendsList[counter];

        if(selectedFriendChexkBox.checked || isRemoveAll)
        {
            // in case of isAddAll we should programatically check the checbox that is why below line
            selectedFriendChexkBox.checked = false;
            myfriends_sendMessageToUserFriends_removeFriend(formObj, selectedFriendChexkBox);
        }
    }

    return false;
}

function myfriends_sendMessageToUserFriends_removeFriend(formObj, chkBoxElem)
{
    if(!chkBoxElem || !formObj) return;

    var friendRefNum = chkBoxElem.value;
    if(!friendRefNum) return;

    var chkBoxRelativeUnSelectedChkBoxLItag = document.getElementById('refnums_unselected_list_' + friendRefNum);
    if(!chkBoxRelativeUnSelectedChkBoxLItag) return;

    var chkBoxRelativeLItag = document.getElementById('refnums_selected_list_' + friendRefNum);
    if(!chkBoxRelativeLItag) return;

    chkBoxRelativeLItag.style.display = "none"
    chkBoxRelativeUnSelectedChkBoxLItag.style.display = "block";
}


function myfriends_updateUserSocialStatus(formObj)
{
    var divName = 'myfriends_user_social_status_ajax_updater_cont';
    var updateURL = '/user/ajax/postUpdateUserSocialStatus.html';

    var statusErrorOccured = validateAndPostUserSocialStatusForm(formObj,divName, updateURL);
	if(!statusErrorOccured)
	{
        csShow('statusForm_error_mandatory');
		return false;
	}

    return false;
}


// dfaggfad


function user_mailbox_deleteMessages(formObj)
{
    var friendMessageIdList = document.getElementsByName('friend_message_id[]');
    if(!friendMessageIdList || friendMessageIdList.length == 0)
    {
        alert('Please select at least one message')
        return false;
    }

    var messageSelected = false;
    var noOfMeesages = friendMessageIdList.length;

    for(counter = 0; counter < noOfMeesages; counter++)
    {
        // if at least one is selected then we need to break the loop
        if(friendMessageIdList[counter].checked)
        {
            messageSelected = true;
            break;
        }
    }

    if(messageSelected == false)
    {
        alert('Please select at least one message')
        return false;
    }

    return true;
}

function friends_sendmessage(formObj, maxNoOfCharsAllowed)
{
    csHide('myfriends_send_message_error_occured_header');
    csHide('myfriends_send_message_subject_mandatory');
    csHide('myfriends_send_message_message_mandatory');
    csHide('myfriends_send_message_message_maxlength');

    var formValidationError = false;
    if(!formObj.subject.value || trim(formObj.subject.value).length == 0)
    {
        csShow('myfriends_send_message_subject_mandatory');
        formValidationError = true;
    }

    if(!formObj.message.value || trim(formObj.subject.value).length == 0)
    {
        csShow('myfriends_send_message_message_mandatory');
        formValidationError = true;
    }

    if(maxNoOfCharsAllowed && maxNoOfCharsAllowed > 0)
    {
        if(trim(formObj.subject.value).length > maxNoOfCharsAllowed)
        {
            csShow('myfriends_send_message_message_maxlength');
            formValidationError = true;
        }
    }

    if(formValidationError)
    {
        csShow('myfriends_send_message_error_occured_header');
    }

    return !formValidationError;
}

function friends_handleSelectAllItemsClick(chkBoxElem, formObj)
{
    var friendMessageIdList = document.getElementsByName('friend_message_id[]');

    var messageSelected = chkBoxElem.checked;
    var noOfMeesages = friendMessageIdList.length;

    for(counter = 0; counter < noOfMeesages; counter++)
    {
        friendMessageIdList[counter].checked = messageSelected;
    }
}

function myfriends_inbox_hideFormMessageContainers()
{
    // below 4 DIV IDS are used even in mailbox_sentItems_hideReplyContainer
    csHide('myfriends_inbox_reply_message_error_occured_header');
    csHide('myfriends_inbox_reply_message_subject_mandatory');
    csHide('myfriends_inbox_reply_message_message_mandatory');
    csHide('myfriends_inbox_reply_message_message_maxlength');
}

// BELOW FUNCTION IS REUSED BOTH IN REPLY TO RECEIVED OR SENT MESSAGE
function validateAndReplyUserSentOrReceivedMessage(formObj, maxNoOfCharsAllowed)
{
    myfriends_inbox_hideFormMessageContainers();
    var formValidationError = false;
    if(!formObj.subject.value || trim(formObj.subject.value).length == 0)
    {
        csShow('myfriends_inbox_reply_message_subject_mandatory');
        formValidationError = true;
    }

    if(!formObj.message.value || trim(formObj.subject.value).length == 0)
    {
        csShow('myfriends_inbox_reply_message_message_mandatory');
        formValidationError = true;
    }

    if(maxNoOfCharsAllowed && maxNoOfCharsAllowed > 0)
    {
        if(trim(formObj.subject.value).length > maxNoOfCharsAllowed)
        {
            csShow('myfriends_inbox_reply_message_message_maxlength');
            formValidationError = true;
        }
    }

    if(formValidationError)
    {
        csShow('myfriends_inbox_reply_message_error_occured_header');
    }

    return true;
}

function mailbox_sentItems_showReplyContainer(sendMsgFlag, flowid)
{
	if (sendMsgFlag == 0)
	{
		window.location.href = '/user/profile/show_membership_types.html?msgflowid=' + flowid;
	}
    myfriends_inbox_hideFormMessageContainers();
    // replyContainerElement variable is created in the respective HTML page
    if(!replyContainerElement) return;
    replyContainerElement.style.display = 'block';
}

function mailbox_sentItems_hideReplyContainer()
{
    myfriends_inbox_hideFormMessageContainers();
    if(!replyContainerElement) return;
    replyContainerElement.style.display = 'none';

}

function findfriends_search_results_show_pageno(pageNoToShow)
{
    if(pageNoToShow)
    {
        formObj = document.forms['findfriends_searchresults_form'];
        formObj.pageno.value = pageNoToShow;
		formObj.isPagination.value = true;
        formObj.sortby.value = jQuery("#sort_by").val();

        if(validateSearchFriendsForm(formObj))
        {
            formObj.submit();
        }
    }
}

function findfriends_sort_friends_results(sortByFieldElem)
{
    if(!sortByFieldElem) return;

    formObj = document.forms['findfriends_searchresults_form'];
    formObj.sortby.value = sortByFieldElem.value;
    formObj.sortbyflow.value = 'true';
    

    if(validateSearchFriendsForm(formObj))
    {
        formObj.submit();
    }
}

function findfriends_handleTagName_Update_Event(tagNameTextFieldElem, eventnameValue)
{
    if(!tagNameTextFieldElem) return;
    var tagDefaultTextValue = jQuery("search_friend_tag_default_text").val();
    var formTagValue = trim(tagNameTextFieldElem.value);
    if(!formTagValue || formTagValue.length == 0 || formTagValue == tagDefaultTextValue)
    {
        if(eventnameValue && eventnameValue == 'blur')
        {
        	tagNameTextFieldElem.style.color = '#999';
            tagNameTextFieldElem.value = tagDefaultTextValue;
        }
        else
        {
        	tagNameTextFieldElem.style.color = '#000';
            tagNameTextFieldElem.value = "";
        }
    }
    else
    {
    	tagNameTextFieldElem.style.color = '#000';
    }
}

function findfriends_handleNearByName_Update_Event(nearByTextFieldElem, eventnameValue)
{
    if(!nearByTextFieldElem) return;

    var nearByDefaultTextValue = jQuery("search_friend_nearby_default_text").val();
    var formNearByValue = trim(nearByTextFieldElem.value);
    if(!formNearByValue || formNearByValue.length == 0 || formNearByValue == nearByDefaultTextValue)
    {
        if(eventnameValue && eventnameValue == 'blur')
        {
        	nearByTextFieldElem.style.color = '#999';
            nearByTextFieldElem.value = nearByDefaultTextValue;
        }
        else
        {
        	nearByTextFieldElem.style.color = '#000';
            nearByTextFieldElem.value = "";
        }
    }
    else
    {
    	nearByTextFieldElem.style.color = '#000';
    }
}

function myfriends_friends_listing_searchwithn(formObj)
{
    if(!formObj) return false;

    var searchTextValue = formObj.search_friend.value;
    if(!searchTextValue || trim(searchTextValue).length == 0)
    {
        alert('Please enter criteria for Search Friends');
        return false;
    }

    var searchTextDefaultTextValue = jQuery('myfriends_friends_listing_search_friend_default_text').val();
    if(searchTextValue == searchTextDefaultTextValue)
    {
        alert('Please enter criteria for Search Friends');
        return false;
    }

    return false;
}

function myfriends_handleSearchFriends_Update_Event(searchTextValueElem, eventnameValue)
{
    if(!searchTextValueElem) return;

    var searchTextDefaultTextValue = jQuery("myfriends_friends_listing_search_friend_default_text").val();
    var formSearchFriendValue = trim(searchTextValueElem.value);
    if(formSearchFriendValue || formSearchFriendValue.length == 0 || formSearchFriendValue == searchTextDefaultTextValue)
    {
        if(eventnameValue && eventnameValue == 'blur')
        {
            searchTextValueElem.value = searchTextDefaultTextValue;
        }
        else
        {
            searchTextValueElem.value = "";
        }
    }
}

function myfriends_friends_listing_sort(sortFieldElement)
{
    var divName = 'myfriends_current_friends_listing_cont';

	jQuery.ajax({
		url: '/friends/myfriends/ajax/postSearchFriendsWithinUserFriends.html',
		data: 'ajax=true&sortby=' + trim(sortFieldElement.value),
		success: function(output) {
			var scriptElements = jQuery("#" + divName).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
				jQuery("#" + divName).html(output);
			}

            // this ID is there in Select a Different City section next to logo
			jQuery("#cant_see_your_city").hide();
		}
	});
	
	jQuery.ajax({
		url: "/friends/myfriends/ajax/postSearchFriendsWithinUserFriends.html",
		data: 'ajax=true&sortby=' + trim(sortFieldElement.value),
		success: function(output) {
			var scriptElements = jQuery("#" + divName).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
			}

            // this ID is there in Select a Different City section next to logo
			jQuery("#cant_see_your_city").hide();
			
			jQuery("#" + divName).html(output);
		}
	});
	
	jQuery.ajax({
		url: "/friends/myfriends/ajax/postSearchFriendsWithinUserFriends.html",
		data: 'ajax=true&sortby=' + trim(sortFieldElement.value),
		success: function(output) {
			var scriptElements = jQuery("#" + divName).getElementsByTagName("script");
			for(var i=0;i<scriptElements.length;i++) {
				eval(scriptElements[i].text);
			}

            // this ID is there in Select a Different City section next to logo
			jQuery("#cant_see_your_city").hide();
			
			jQuery("#" + divName).html(output);
		}
	});

	return false;
}

function mailbox_sentItems_deleteMessage()
{
    if(confirm("Are you sure you want to delete the message?")) {
        jQuery('#user_sent_message_delete_form').submit();
        return true;
    }

    return false;
}

function mailbox_receivedItems_deleteMessage()
{
    if(confirm(jQuery('#user_received_message_delete_form_confirm_message').html())) {
        jQuery('#user_received_message_delete_form').submit();
        return true;
    }

    return false;
}

function mailbox_receivedItems_markSpam()
{
    if(confirm('' + jQuery('#user_received_message_markspam_form_confirm_message').innerHTML))
    {
        jQuery('#user_received_message_markspam_form').submit();
        return false;
    }

    return false;
}

function mailbox_sentitems_results_show_pageno(pageNoToShow)
{
    if(pageNoToShow)
    {
        formObj = document.forms['sentitems_listing_hiddenform'];
        formObj.pageno.value = pageNoToShow;
        formObj.submit();
    }
}



function textCounter(obj, counter, maxlimit) {
	var str = obj.value;
	if(trim(str).length > maxlimit)
	{
		obj.value = str.substring(0,maxlimit);
	}
	remaining = maxlimit-str.length;
	if(remaining <=0) remaining =0;
	jQuery(counter).html(remaining);
}










function popupNewWindow(url)
{
	window.open(url,'mywindow','width=800,height=700,left=210,top=180,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes');
}

function renderShareLink(divId, title, url)
{
	str = "<a href=\"http://www.addthis.com/bookmark.php?v=20\" onmouseover=\"return addthis_open(this, '', '" + url + "', '" + escape(title) + "')\" onmouseout=\"addthis_close()\" onclick=\"return addthis_sendto()\"><img src=\"http://s7.addthis.com/static/btn/sm-share-en.gif\" width=\"83\" height=\"16\" alt=\"Bookmark and Share\" style=\"border:0\"/></a>";
	jQuery(divId).html(str);

}

function loadPaginatedPhotos(pagenum)
{
	var current_page  = jQuery('idPageNumber').val();

	if(pagenum == "+")
	{
		if( current_page == total_page ) return 1;

		pagenum = ++current_page;
	}

	if(pagenum == "-")
	{
		if( current_page == 1 ) return 1;

		pagenum = current_page - 1;
	}

	window.location.href = '/admin/photos/view/view.html?pagenum=' + pagenum;
}

function loadPaginatedEventUserInterestedList(pagenum)
{
	var current_page  = jQuery('idPageNumber').val();
	var event_id = jQuery('event_id').val();
    var sort = jQuery('cmbSort').val();

	if(pagenum == "+")
	{
		if( current_page == total_page ) return 1;

		pagenum = ++current_page;
	}

	if(pagenum == "-")
	{
		if( current_page == 1 ) return 1;

		pagenum = current_page - 1;
	}

	window.location.href = '/social/event/view/event_user_interested.html?refnum=' + event_id + '&pagenum=' + pagenum + '&sortby='+ sort;
}

function mailbox_inboxlisting_handleMessageSelected(chkBoxElem)
{
    if(!chkBoxElem)
    {
        return false;
    }

    if(chkBoxElem.checked == false)
    {
        if(jQuery('#selectAllItems'))
        {
            jQuery('#selectAllItems').attr('checked', false);
        }
    }
}

function mailbox_sentitemslisting_handleMessageSelected(chkBoxElem)
{
    if(!chkBoxElem)
    {
        return false;
    }

    if(chkBoxElem.checked == false)
    {
        if(jQuery('#selectAllItems'))
        {
			jQuery("#selectAllItems").attr("checked", true);
        }
    }
}

function showOrHideFAQ(faqid)
{
    var faqDivElem = jQuery("#" + faqid);
    if(!faqDivElem)
    {
        return;
    }

    if(!faqDivElem.style  || !faqDivElem.style.display || faqDivElem.style.display == '' || faqDivElem.style.display == 'none')
    {
        faqDivElem.show();
    }
    else
    {
        faqDivElem.hide();
    }
}

function popupRedCardWindow(url)
{
	window.open(url,'RedCard','width=400,height=220,left=400,top=250,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes');
}

function popupEarnPointsWindow(url)
{
	window.open(url,'points','width=400,height=400,left=400,top=250,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=yes');
	return false;
    //openInCenter(url,400,400);
}


function openInCenter(theURL,width, height)
{
  // set the desired pop-up width and height
  var myw = width;
  var myh = height;

  // get the center starting point for the screen
  var X = ((screen.width/2)-(myw/2));
  var Y = ((screen.height/2)-(myh/2));

  var myparams = "innerWidth=" + myw + ",innerHeight=" + myh + ",width=" + myw + ",height=" + myh + ",left=" + X + ",top=" + Y + ",screenX=" + X + ",screenY=" + Y;

  // control your desired popup attributes below
  myparams += "alwaysLowered=0,alwaysRaised=1,channelmode=0,dependent=0,directories=0,fullscreen=0,hotkeys=1,location=0,menubar=0,noresize=1,,scrollbars=1,status=0,titlebar=1,toolbar=0,z-lock=1";

  mypopup = window.open(theURL,"myPopupName",myparams);
}


function popupPressMetroArticle(url,imageName)
{
	window.open(url,'','width=800,height=700,left=200,top=250,toolbar=no,location=no,directories=no,status=0,location=0,menubar=no,scrollbars=yes,resizable=yes');
    return false;
}

function popupFriendsProfilePhoto(refnum)
{
	window.open('/friends/popup/userprofile_photosvideos_popup.html?refnum='+refnum,'','width=400,height=300,left=400,top=300,toolbar=no,location=no,directories=no,status=0,location=0,menubar=no,scrollbars=yes,resizable=no');
    return false;
}

function confirmInterestedEventCall(eventId)
{
	var answer = confirm("Would you like to show interest in this public event?")
		
	if (answer) {		
		//load the interest group details
		var params = "event_id=" + eventId;
		
		jQuery.ajax({
			url: '/social/event/ajax/post_user_interested.html',
			type: "POST",
			data: params,
			success: function(output) {
				jQuery("#interestedResult").html(output);
			}
		});
	}
	else{
		//do nothing;
	}

}

function confirmNoLongerInterestedEventCall(eventId)
{
	var answer = confirm("Are you sure, you are no longer interested in this public event?")
		
	if (answer){		
		//load the interest group details
		var params = "event_id=" + eventId + "&isUserNotInterested=1" ;
	
		jQuery.ajax({
			url: '/social/event/ajax/post_user_interested.html',
			type: "POST",
			data: params,
			success: function(output) {
				jQuery("#interestedResult").html(output);
			}
		});
	}
	else{
		//do nothing;
	}

}

// SETUPS: Photo popup

// Set the horizontal and vertical position for the popup
PhotoPositionX = 100;
PhotoPositionY = 100;

// Set these value approximately 20 pixels greater than the
// size of the largest image to be used (needed for Netscape)
defaultPhotoWidth  = 500;
defaultPhotoHeight = 500;

// Set autoclose true to have the window close automatically
// Set autoclose false to allow multiple popup windows
var AutoClose = true;

// Do not edit below this line...
if (parseInt(navigator.appVersion.charAt(0))>=4)
{
    var isNN=(navigator.appName=="Netscape")?1:0;
    var isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}
    var optNN='scrollbars=no,width='+defaultPhotoWidth+',height='+defaultPhotoHeight+',left='+PhotoPositionX+',top='+PhotoPositionY;
    var optIE='scrollbars=no,width=150,height=100,left='+PhotoPositionX+',top='+PhotoPositionY;

    function popImage(imageURL,imageTitle)
    {
    if (isNN){imgWin=window.open('about:blank','',optNN);}
    if (isIE){imgWin=window.open('about:blank','',optIE);}
    with (imgWin.document){
    writeln('<html><head><title>Loading...</title><style>body{margin:0px;}</style>');writeln('<sc'+'ript>');
    writeln('var isNN,isIE;');writeln('if (parseInt(navigator.appVersion.charAt(0))>=4){');
    writeln('isNN=(navigator.appName=="Netscape")?1:0;');writeln('isIE=(navigator.appName.indexOf("Microsoft")!=-1)?1:0;}');
    writeln('function reSizeToImage(){');writeln('if (isIE){');writeln('window.resizeTo(300,300);');
    writeln('width=300-(document.body.clientWidth-document.images[0].width);');
    writeln('height=300-(document.body.clientHeight-document.images[0].height);');
    writeln('window.resizeTo(width,height);}');writeln('if (isNN){');
    writeln('window.innerWidth=document.images["George"].width;');writeln('window.innerHeight=document.images["George"].height;}}');
    writeln('function doTitle(){document.title="'+imageTitle+'";}');writeln('</sc'+'ript>');
    if (!AutoClose) writeln('</head><body bgcolor=000000 scroll="no" onload="reSizeToImage();doTitle();self.focus()">')
    else writeln('</head><body bgcolor=000000 scroll="no" onload="reSizeToImage();doTitle();self.focus()" onblur="self.close()">');
    writeln('<img name="George" src='+imageURL+' style="display:block"></body></html>');
    close();
    }
}


function getInternetExplorerVersion() {
	var rv = -1; // Return value assumes failure.
	if (navigator.appName == 'Microsoft Internet Explorer') {
		var ua = navigator.userAgent;
		var re  = new RegExp("MSIE ([0-9]{1,}[\.0-9]{0,})");
	if (re.exec(ua) != null)
		rv = parseFloat( RegExp.$1 );
	}
	return rv;
}

/************** End main.js **************/





/************** Start validate.js **************/

// isWhitespace (s)                    Check whether string s is empty or whitespace.
// isEmpty(s)                          Check whether string s is empty.
// isDigit (c)                         Check whether character c is a digit
// isInteger (s [,eok])                True if all characters in string s are numbers.
// isEmail (s [,eok])                  True if string s is a valid email address.
// isDate (year, month, day)           True if string arguments form a valid date.
// isYear (s [,eok])                   True if string s is a valid Year number.
// isMonth (s [,eok])                  True if string s is a valid month between 1 and 12.
// isDay (s [,eok])                    True if string s is a valid day between 1 and 31.
// daysInFebruary (year)               Returns number of days in February of that year.
// isUrl (s)                           True if string s is a valid URL.
// hasMinLength(v,min)                 TRUE if string is grater than min length

var whitespace = " \t\n\r";
var defaultEmptyOK = false


//#########################################################################
//--------------------- Common Functions String ---------------------------
//#########################################################################
// Returns true if character c is a digit
// (0 .. 9).

function isDigit (c)
{
    return ((c >= "0") && (c <= "9"))
}

function isBlankSpace (c)
{
    return ((c == " "))
}

function isEmpty(s)
{
    return ((s == null) || (s.length == 0))
}


function showError(divid,msg,field,alertMsg)
{
	if(alertMsg == true)
	{
		alert(msg);
		field.focus();
	}
	else
	{
		document.getElementById(divid).innerHTML = msg;
		document.getElementById(divid).style.display="block";
	}
}
//#########################################################################
//--------------------------- Empty String --------------------------------
//#########################################################################
// Check whether string s is empty.

function isWhitespace (s)
{
   var i;

    // Is s empty?
    if (isEmpty(s)) return true;

    // Search through string's characters one by one
    // until we find a non-whitespace character.
    // When we do, return false; if we don't, return true.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (whitespace.indexOf(c) == -1) return false;
    }

    // All characters are whitespace.
    return true;
}


function checkEmpty(field)
{

	if(isWhitespace(field.value) || isEmpty(field.value) )
     {
		return true;
     }

     return false;
}

//#########################################################################
//-------------- Radio Button: Select Al least one Option -----------------
//#########################################################################

function checkOptButton(Fldname)
{
	// place any other field validations that you require here
	// validate myradiobuttons
	myOption = -1;

	for (i=0; i<Fldname.length; i++)
	{
		if (Fldname[i].checked)
		{
			myOption = i;
		}
	}
	if (myOption == -1)
	{
		return true;
	}
	else
	{
	   return false;
	}

	/*
	alert("You selected button number " + myOption
	+ " which has a value of "
	+ Fldname[myOption].value);
	*/

}

//#########################################################################
//-------------- Checkbox: Select Al least one check box ------------------
//#########################################################################

function checkCheckboxArray(Fldname)
{
	var chks = Fldname;
	var hasChecked = false;

	// Get the checkbox array length and iterate it to see if any of them is selected
	for (var i = 0; i < chks.length; i++)
	{
		if (chks[i].checked)
		{
			hasChecked = true;
			break;
		}
	}

	// if ishasChecked is false then throw the error message
	if (!hasChecked)
	{
		//alert(Msg);
		//chks[0].focus();
		return true;
	}
	return false;
}

//#########################################################################
//-------------- Checkbox: limit check (max number of sections)------------
//#########################################################################

function checkCheckboxLimit(Fldname, Limit)
{
	var chks = Fldname;
	var chkCnt=0;
	// Get the checkbox array length and iterate it to see if any of them is selected
	var lgt = chks.length
	//if no. of checkbox items are less than the limit.. no need to check for max limit.
	if(lgt<Limit)
	{
		return false;
	}
	for (var i = 0; i < lgt; i++)
	{
		if (chks[i].checked)
		{
			chkCnt++;
		}
	}

	// if ishasChecked is false then throw the error message
	if (chkCnt>Limit)
	{
		return true;
	}
	return false;
}

//#########################################################################
//-------------- Checkbox: Select Al least one check box ------------------
//#########################################################################

function checkCheckbox(Fldname)
{
	var chks = Fldname;
	var hasChecked = false;


	if (chks.checked)
	{
		hasChecked = true;
		return false;
	}
	else
	{
		return true;
	}


	return false;
}

//#########################################################################
//-------------------------- Single Drop Down -----------------------------
//#########################################################################
// Check whether drop down box s is not selected.
function isSelected(s)
{
    return ((s == 0) || (s == "") || (s == "-1"))
}

// Returns true if string s is empty or
// whitespace characters only.


function checkSingleDropdown(field)
{
	if(isSelected(field.value))
     {
		return true;
     }
}

//#########################################################################
//-------------------------- Multiple Drop Down ---------------------------
//#########################################################################
// Check box array

function checkMultipleDropdown(field)
{
	len = field.length;
	var chk_sel = 0;

	for (j = 0;  j < len;  j++)
	{
		if(field[j].selected)
		{
			chk_sel = chk_sel-1+2;
		}
	}
	if(chk_sel == 0)
	{
		return true;
	}
	return false;
}

//#########################################################################
//------------------------------- Email -----------------------------------
//#########################################################################
// isEmail (STRING s [, BOOLEAN emptyOK])
//
// Email address must be of form a@b.c -- in other words:
// * there must be at least one character before the @
// * there must be at least one character before and after the .
// * the characters @ and . are both required
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isEmail (s)
{
   if (isEmpty(s))
       if (isEmail.arguments.length == 1) return defaultEmptyOK;
           else return (isEmail.arguments[1] == true);

        // is s whitespace?
        if (isWhitespace(s)) return false;

        // there must be >= 1 character before @, so we
        // start looking at character position 1
        // (i.e. second character)
        var i = 1;
        var sLength = s.length;

        // look for @
        //if more than one @ present return false
        j=0;
        atCount = 0;
        while ((j <= sLength) && (s.charAt(j) == "@"))
        {
            atCount++;
            j++;
        }
        if(atCount>1) return false;

        while ((i < sLength) && (s.charAt(i) != "@"))
        { i++
        }

        if ((i >= sLength) || (s.charAt(i) != "@")) return false;
        else i += 2;

        // look for .
        while ((i < sLength) && (s.charAt(i) != "."))
        { i++
        }

        // there must be at least one character after the .
        if ((i >= sLength - 1) || (s.charAt(i) != ".")) return false;
        else return true;
}

function checkMail(field)
{
	if(!isEmail(field.value))
     {
		return true;
     }
}

function emailValidator(elem, helperMsg){
	var emailExp = /^[\w\-\.\+]+\@[a-zA-Z0-9\.\-]+\.[a-zA-z0-9]{2,4}$/;
	if(elem.value.match(emailExp)){
		return false;
	}else{
		alert(helperMsg);
		elem.focus();
		return true;
	}
}


/**
	function to validate the email attribute.
	input:
			sEmail - string email that has to be validated for proper values
	output:
			boolean - true in case the email id is valid
			false in case the email is not valid
*/
function validateEmail(sEmail)
{
	var sInvalidEmailExp = /^[a-z_0-9_._-]+@[a-z_0-9\._-]+\./i;

	if (!isValid(sInvalidEmailExp,sEmail))
	{
		return false
	}
	return true;
}


/**
	function that will be used by validateEmail to check if the format
	of the email is proper or not.

	input:
			sPattern - string of the pattern that should not exists.
			sSrcString - above mentioned pattern should not exist in this string
	output:
			boolean - that says whether the input source has the mentioned
			pattern or not.
*/
function isValid(sPattern, sSrcString)
{
	return sPattern.test(sSrcString)
}

//#########################################################################
//------------------------------ Integer ----------------------------------
//#########################################################################
// isInteger (STRING s [, BOOLEAN emptyOK])
//
// Returns true if all characters in string s are numbers.
//
// Accepts non-signed integers only. Does not accept floating
// point, exponential notation, etc.
//
// We don't use parseInt because that would accept a string
// with trailing non-numeric characters.
//
// By default, returns defaultEmptyOK if s is empty.
// There is an optional second argument called emptyOK.
// emptyOK is used to override for a single function call
//      the default behavior which is specified globally by
//      defaultEmptyOK.
// If emptyOK is false (or any value other than true),
//      the function will return false if s is empty.
// If emptyOK is true, the function will return true if s is empty.
//
// EXAMPLE FUNCTION CALL:     RESULT:
// isInteger ("5")            true
// isInteger ("")             defaultEmptyOK
// isInteger ("-5")           false
// isInteger ("", true)       true
// isInteger ("", false)      false
// isInteger ("5", false)     true

function isInteger (s)

{   var i;

    if (isEmpty(s))
       if (isInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isInteger.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-numeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);

        if (!isDigit(c)) return false;
    }

    // All characters are numbers.
    return true;
}

function checkInteger(field)
{
	if(!isInteger(field.value) && !checkDecimals(field))
     {
		field.value="";
		return true;
     }


}

function checkOnlyInteger(field)
{
	if(!isInteger(field.value))
    {
		field.value="";
		return true;
    }
	return false;
}

//#########################################################################
//-------------------------- Upload Field ---------------------------------
//#########################################################################
//upload only a specific extension
function filterFileType(field, ext)
{
	if (field.value.indexOf('.' + ext) == -1) {
	return false;
	}
	return true;
} // end function filterFileType

function checkUploadExt(field,ext)
{
	if (!filterFileType(field,ext))
     {
		return true;
     }
}
//#########################################################################
//------------------------------ URL --------------------------------------
//#########################################################################
function isUrl(s)
{
    var temp=new Array()
    if (s!="")
    {
        var pos1=s.length;
        var value=s;
        pos1=pos1-4
        value=value.substring(pos1,pos1+1)

        var pos2=StringTrim(s).indexOf(".",0);
        if (pos2 == -1 || pos2<3 )
        {
            return false;
        }

        var arrEndUrl=new Array()
        arrEndUrl=[".com",".net",".org",".edu",".uni",".in",".uk",".ac",".de"]
        for(i=0;i<arrEndUrl.length;i++)
        {
            pos2=(StringTrim(s)).indexOf(arrEndUrl[i],0);
            if(pos2!=-1)
                break;

        }
        if (pos2 == -1)
        {
            return false;
        }

        var arrEndUrl=new Array()
        arrEndUrl=["http://","www.","ftp://","https://"]
        for(i=0;i<arrEndUrl.length;i++)
        {
            pos2=StringTrim(s).indexOf(arrEndUrl[i],0);
            if(pos2!=-1)
                break;
        }


        if (pos2 == -1)
        {
            return false;
        }
        return true ;
    }
}

function StringTrim(objvalue)
{
    var TestString = objvalue;
    var SpaceChar  = " ";
    while (TestString.charAt(0) == SpaceChar) {TestString = TestString.substr(1)};
    while (TestString.charAt(TestString.length-1) == SpaceChar) {TestString = TestString.substr(0,TestString.length-1)};
    return TestString.toString();
}

function checkUrl(field)
{
	if(!isUrl(field.value))
     {
		return true;
     }
}

//#########################################################################
//---------------------------- Alphanumeric -------------------------------
//#########################################################################

function isAlphanumeric (s)

{   var i;

    if (isEmpty(s))
       if (isAlphanumeric.arguments.length == 1) return defaultEmptyOK;
       else return (isAlphanumeric.arguments[1] == true);

    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) ) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

//#########################################################################
//---------------------------- Alphanumeric -------------------------------
//#########################################################################

function isAlphanumericBlankSpace (s) {
	var i;

		//     if (isEmpty(s))
		// if (isAlphanumeric.arguments.length == 1) {
		// 	return defaultEmptyOK;
		// } else {
		// 	return (isAlphanumeric.arguments[1] == true);
		// }

    // Search through string's characters one by one
    // until we find a non-alphanumeric character.
    // When we do, return false; if we don't, return true.

    for (i = 0; i < s.length; i++) {
        // Check that current character is number or letter.
        var c = s.charAt(i);

        if (! (isLetter(c) || isDigit(c) || isBlankSpace(c)) )
        return false;
    }

    // All characters are numbers or letters.
    return true;
}

function isLetter (c)
{
    //return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")) || (c == "_") )
	return ( ((c >= "a") && (c <= "z")) || ((c >= "A") && (c <= "Z")))
}

//#########################################################################
//------------------------- Non negative Integer --------------------------
//#########################################################################

// isNonnegativeInteger (STRING s [, BOOLEAN emptyOK])
//
// Returns true if string s is an integer >= 0.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.

function isNonnegativeInteger (s)
{   var secondArg = defaultEmptyOK;

    if (isNonnegativeInteger.arguments.length > 1)
        secondArg = isNonnegativeInteger.arguments[1];

    // The next line is a bit byzantine.  What it means is:
    // a) s must be a signed integer, AND
    // b) one of the following must be true:
    //    i)  s is empty and we are supposed to return true for
    //        empty strings
    //    ii) this is a number >= 0

    return (isSignedInteger(s, secondArg)
         && ( (isEmpty(s) && secondArg)  || (parseInt (s) >= 0) ) );
}
// isSignedInteger (STRING s [, BOOLEAN emptyOK])
//
// Returns true if all characters are numbers;
// first character is allowed to be + or - as well.
//
// Does not accept floating point, exponential notation, etc.
//
// We don't use parseInt because that would accept a string
// with trailing non-numeric characters.
//
// For explanation of optional argument emptyOK,
// see comments of function isInteger.
//
// EXAMPLE FUNCTION CALL:          RESULT:
// isSignedInteger ("5")           true
// isSignedInteger ("")            defaultEmptyOK
// isSignedInteger ("-5")          true
// isSignedInteger ("+5")          true
// isSignedInteger ("", false)     false
// isSignedInteger ("", true)      true

function isSignedInteger (s)

{   if (isEmpty(s))
       if (isSignedInteger.arguments.length == 1) return defaultEmptyOK;
       else return (isSignedInteger.arguments[1] == true);

    else {
        var startPos = 0;
        var secondArg = defaultEmptyOK;

        if (isSignedInteger.arguments.length > 1)
            secondArg = isSignedInteger.arguments[1];

        // skip leading + or -
        if ( (s.charAt(0) == "-") || (s.charAt(0) == "+") )
           startPos = 1;
        return (isInteger(s.substring(startPos, s.length), secondArg))
    }
}

//#########################################################################
//------------------------- Telephone Number ------------------------------
//#########################################################################

function checktelephonenumber(s)
{
    var numVal=s;
    var len=numVal.length;
    if (len > 0)
    {
        for ( var i=0 ; i<len ; i++)
        {
            var strVal=numVal.charAt(i);
            if ( strVal != 1 && strVal != 2 &&  strVal != 3&& strVal != 4&& strVal != 5&& strVal != 6&& strVal != 7&& strVal != 8&& strVal != 9&& strVal != 0 && strVal!='(' && strVal!=')' && strVal!='-' && strVal!='+' && strVal!=' ')
            {
                return false;
            }
        }
    }
    return true;
}

//#########################################################################
//------------------------------ Fax Number -------------------------------
//#########################################################################

function checkfaxnumber(s)
{
    var numVal=s;
    var len=numVal.length;
    if (len > 0)
    {
        for ( var i=0 ; i<len ; i++)
        {
            var strVal=numVal.charAt(i);
            if ( strVal != 1 && strVal != 2 &&  strVal != 3&& strVal != 4&& strVal != 5&& strVal != 6&& strVal != 7&& strVal != 8&& strVal != 9&& strVal != 0 && strVal!='(' && strVal!=')' && strVal!='-' )
            {
                return false;
            }
        }
    }
    return true;
}

//#########################################################################
//-------------------- function to open new window ------------------------
//#########################################################################

function wopen(url, w, h)
{
// Fudge factors for window decoration space.
 // In my tests these work well on all platforms & browsers.
w += 32;
h += 96;
 var win = window.open(url,
  'popup',
  'width=' + w + ', height=' + h + ', ' +
  'location=no, menubar=no, ' +
  'status=no, toolbar=no, scrollbars=no, resizable=no');
 win.resizeTo(w, h);
 win.focus();
}

//#########################################################################
//------------------ function to validate US phone no ---------------------
//#########################################################################

/**
 * DHTML phone number validation script. Courtesy of SmartWebby.com (http://www.smartwebby.com/dhtml/)
 */

// Declaring required variables
var digits = "0123456789";
// non-digit characters which are allowed in phone numbers
var phoneNumberDelimiters = "()- ";
// characters which are allowed in international phone numbers
// (a leading + is OK)
var validWorldPhoneChars = phoneNumberDelimiters + "+";
// Minimum no of digits in an international phone no.
var minDigitsInIPhoneNumber = 5;

function isInteger(s)
{   var i;
    for (i = 0; i < s.length; i++)
    {
        // Check that current character is number.
        var c = s.charAt(i);
        if (((c < "0") || (c > "9"))) return false;
    }
    // All characters are numbers.
    return true;
}

function stripCharsInBag(s, bag)
{   var i;
    var returnString = "";
    // Search through string's characters one by one.
    // If character is not in bag, append to returnString.
    for (i = 0; i < s.length; i++)
    {
        // Check that current character isn't whitespace.
        var c = s.charAt(i);
        if (bag.indexOf(c) == -1) returnString += c;
    }
    return returnString;
}

function checkInternationalPhone(strPhone){
s=stripCharsInBag(strPhone,validWorldPhoneChars);
return (isInteger(s) && s.length >= minDigitsInIPhoneNumber);
}


//#########################################################################
//-------------------- function to validate US zip code -------------------
//#########################################################################

<!-- Begin
function validateZIP(field)
{
	var valid = "0123456789-";
	var hyphencount = 0;

	if (field.length!=5 && field.length!=10) {
		alert("Please enter your 5 digit or 5 digit+4 zip code.");
		return false;
	}

	for (var i=0; i < field.length; i++)
	{
		temp = "" + field.substring(i, i+1);
		if (temp == "-") hyphencount++;
		if (valid.indexOf(temp) == "-1")
		{
			alert("Invalid characters in your zip code.  Please try again.");
			return false;
		}
		if ((hyphencount > 1) || ((field.length==10) && ""+field.charAt(5)!="-"))
		{
			alert("The hyphen character should be used with a properly formatted 5 digit+four zip code, like '12345-6789'.   Please try again.");
			return false;
	   }
   }
   return true;
}
//  End -->



//#########################################################################
//---------------- function to validate Decimal value ---------------------
//#########################################################################

<!-- Begin
function checkDecimals(fieldName)
{
	decallowed = 2;  // how many decimals are allowed?
	var fieldValue = fieldName.value;

	if (isNaN(fieldValue) || fieldValue == "")
	{
		alert("Please enter a valid number.");
		fieldName.select();
		fieldName.focus();
	}
	else
	{
		if (fieldValue.indexOf('.') == -1) fieldValue += ".";
		dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);

		if (dectext.length > decallowed)
		{
		alert ("Please enter a number with up to " + decallowed + " decimal places.  Please try again.");
		fieldName.select();
		fieldName.focus();
		}
		else
		{
			//alert ("That number validated successfully.");
			return true;
		}
	 }
}
//  End -->


//#########################################################################
//---------------------- function to validate Price -----------------------
//#########################################################################


<!-- Begin
function checkDecimalsPrice(fieldName) {
	var re = /\$|,|/g;

	decallowed = 2;  // how many decimals are allowed?

	var fieldValue = fieldName.value.replace(re, "");

	if (isNaN(fieldValue) || fieldValue == "")
	{
		alert("Please enter a valid number.");
		fieldName.select();
		fieldName.focus();
	}
	else
	{
		if (fieldValue.indexOf('.') == -1) fieldValue += ".";
		dectext = fieldValue.substring(fieldValue.indexOf('.')+1, fieldValue.length);

		if (dectext.length > decallowed)
		{
			alert ("Please enter a number with up to " + decallowed + " decimal places.  Please try again.");
			fieldName.select();
			fieldName.focus();
		}
		else
		{
			//alert ("That number validated successfully.");
			return true;
		}
	}
}

//#########################################################################
//--------------- function to Check Word Limit In Textarea ----------------
//#########################################################################

function count_words(tbox_input)
{
	var msg = "";
	var c = 0;
	w = tbox_input.value.split(" ");
	no_words = w.length;
	for (x = 0; x < no_words; x++)
	{
		if (c >= 200)
		{
		tbox_input.value = msg;
		return true;
		break;
		}
	msg = msg + w[x] + " ";
	c++;
	}
	return false;
}

function checkCountWords(field,msg)
{
	if(count_words(field))
    {
	   alert(msg);
	   field.focus();
	   return true;
    }
}
//date related...
// ------------------------------------------------------------------
// These functions use the same 'format' strings as the
// java.text.SimpleDateFormat class, with minor exceptions.
// The format string consists of the following abbreviations:
//
// Field        | Full Form          | Short Form
// -------------+--------------------+-----------------------
// Year         | yyyy (4 digits)    | yy (2 digits), y (2 or 4 digits)
// Month        | MMM (name or abbr.)| MM (2 digits), M (1 or 2 digits)
//              | NNN (abbr.)        |
// Day of Month | dd (2 digits)      | d (1 or 2 digits)
// Day of Week  | EE (name)          | E (abbr)
// Hour (1-12)  | hh (2 digits)      | h (1 or 2 digits)
// Hour (0-23)  | HH (2 digits)      | H (1 or 2 digits)
// Hour (0-11)  | KK (2 digits)      | K (1 or 2 digits)
// Hour (1-24)  | kk (2 digits)      | k (1 or 2 digits)
// Minute       | mm (2 digits)      | m (1 or 2 digits)
// Second       | ss (2 digits)      | s (1 or 2 digits)
// AM/PM        | a                  |
//
// NOTE THE DIFFERENCE BETWEEN MM and mm! Month=MM, not mm!
// Examples:
//  "MMM d, y" matches: January 01, 2000
//                      Dec 1, 1900
//                      Nov 20, 00
//  "M/d/yy"   matches: 01/20/00
//                      9/2/00
//  "MMM dd, yyyy hh:mm:ssa" matches: "January 01, 2000 12:30:45AM"
// ------------------------------------------------------------------

var MONTH_NAMES=new Array('January','February','March','April','May','June','July','August','September','October','November','December','Jan','Feb','Mar','Apr','May','Jun','Jul','Aug','Sep','Oct','Nov','Dec');
var DAY_NAMES=new Array('Sunday','Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sun','Mon','Tue','Wed','Thu','Fri','Sat');
function LZ(x) {return(x<0||x>9?"":"0")+x}

// ------------------------------------------------------------------
// isDate ( date_string, format_string )
// Returns true if date string matches format of format string and
// is a valid date. Else returns false.
// It is recommended that you trim whitespace around the value before
// passing it to this function, as whitespace is NOT ignored!
// ------------------------------------------------------------------
function isDate(val,format) {
	var date=getDateFromFormat(val,format);
	if (date==0) { return false; }
	return true;
	}

// -------------------------------------------------------------------
// compareDates(date1,date1format,date2,date2format)
//   Compare two date strings to see which is greater.
//   Returns:
//   1 if date1 is greater than date2
//   0 if date2 is greater than date1 of if they are the same
//  -1 if either of the dates is in an invalid format
// -------------------------------------------------------------------
function compareDates(date1,dateformat1,date2,dateformat2) {
	var d1=getDateFromFormat(date1,dateformat1);
	var d2=getDateFromFormat(date2,dateformat2);
	if (d1==0 || d2==0) {
		return -1;
		}
	else if (d1 > d2) {
		return 1;
		}
	return 0;
	}

// ------------------------------------------------------------------
// formatDate (date_object, format)
// Returns a date in the output format specified.
// The format string uses the same abbreviations as in getDateFromFormat()
// ------------------------------------------------------------------
function formatDate(date,format) {
	format=format+"";
	var result="";
	var i_format=0;
	var c="";
	var token="";
	var y=date.getYear()+"";
	var M=date.getMonth()+1;
	var d=date.getDate();
	var E=date.getDay();
	var H=date.getHours();
	var m=date.getMinutes();
	var s=date.getSeconds();
	var yyyy,yy,MMM,MM,dd,hh,h,mm,ss,ampm,HH,H,KK,K,kk,k;
	// Convert real date parts into formatted versions
	var value=new Object();
	if (y.length < 4) {y=""+(y-0+1900);}
	value["y"]=""+y;
	value["yyyy"]=y;
	value["yy"]=y.substring(2,4);
	value["M"]=M;
	value["MM"]=LZ(M);
	value["MMM"]=MONTH_NAMES[M-1];
	value["NNN"]=MONTH_NAMES[M+11];
	value["d"]=d;
	value["dd"]=LZ(d);
	value["E"]=DAY_NAMES[E+7];
	value["EE"]=DAY_NAMES[E];
	value["H"]=H;
	value["HH"]=LZ(H);
	if (H==0){value["h"]=12;}
	else if (H>12){value["h"]=H-12;}
	else {value["h"]=H;}
	value["hh"]=LZ(value["h"]);
	if (H>11){value["K"]=H-12;} else {value["K"]=H;}
	value["k"]=H+1;
	value["KK"]=LZ(value["K"]);
	value["kk"]=LZ(value["k"]);
	if (H > 11) { value["a"]="PM"; }
	else { value["a"]="AM"; }
	value["m"]=m;
	value["mm"]=LZ(m);
	value["s"]=s;
	value["ss"]=LZ(s);
	while (i_format < format.length) {
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		if (value[token] != null) { result=result + value[token]; }
		else { result=result + token; }
		}
	return result;
	}

// ------------------------------------------------------------------
// Utility functions for parsing in getDateFromFormat()
// ------------------------------------------------------------------
function _isInteger(val) {
	var digits="1234567890";
	for (var i=0; i < val.length; i++) {
		if (digits.indexOf(val.charAt(i))==-1) { return false; }
		}
	return true;
	}
function _getInt(str,i,minlength,maxlength) {
	for (var x=maxlength; x>=minlength; x--) {
		var token=str.substring(i,i+x);
		if (token.length < minlength) { return null; }
		if (_isInteger(token)) { return token; }
		}
	return null;
	}

// ------------------------------------------------------------------
// getDateFromFormat( date_string , format_string )
//
// This function takes a date string and a format string. It matches
// If the date string matches the format string, it returns the
// getTime() of the date. If it does not match, it returns 0.
// ------------------------------------------------------------------
function getDateFromFormat(val,format) {
	val=val+"";
	format=format+"";
	var i_val=0;
	var i_format=0;
	var c="";
	var token="";
	var token2="";
	var x,y;
	var now=new Date();
	var year=now.getYear();
	var month=now.getMonth()+1;
	var date=1;
	var hh=now.getHours();
	var mm=now.getMinutes();
	var ss=now.getSeconds();
	var ampm="";

	while (i_format < format.length) {
		// Get next token from format string
		c=format.charAt(i_format);
		token="";
		while ((format.charAt(i_format)==c) && (i_format < format.length)) {
			token += format.charAt(i_format++);
			}
		// Extract contents of value based on format token
		if (token=="yyyy" || token=="yy" || token=="y") {
			if (token=="yyyy") { x=4;y=4; }
			if (token=="yy")   { x=2;y=2; }
			if (token=="y")    { x=2;y=4; }
			year=_getInt(val,i_val,x,y);
			if (year==null) { return 0; }
			i_val += year.length;
			if (year.length==2) {
				if (year > 70) { year=1900+(year-0); }
				else { year=2000+(year-0); }
				}
			}
		else if (token=="MMM"||token=="NNN"){
			month=0;
			for (var i=0; i<MONTH_NAMES.length; i++) {
				var month_name=MONTH_NAMES[i];
				if (val.substring(i_val,i_val+month_name.length).toLowerCase()==month_name.toLowerCase()) {
					if (token=="MMM"||(token=="NNN"&&i>11)) {
						month=i+1;
						if (month>12) { month -= 12; }
						i_val += month_name.length;
						break;
						}
					}
				}
			if ((month < 1)||(month>12)){return 0;}
			}
		else if (token=="EE"||token=="E"){
			for (var i=0; i<DAY_NAMES.length; i++) {
				var day_name=DAY_NAMES[i];
				if (val.substring(i_val,i_val+day_name.length).toLowerCase()==day_name.toLowerCase()) {
					i_val += day_name.length;
					break;
					}
				}
			}
		else if (token=="MM"||token=="M") {
			month=_getInt(val,i_val,token.length,2);
			if(month==null||(month<1)||(month>12)){return 0;}
			i_val+=month.length;}
		else if (token=="dd"||token=="d") {
			date=_getInt(val,i_val,token.length,2);
			if(date==null||(date<1)||(date>31)){return 0;}
			i_val+=date.length;}
		else if (token=="hh"||token=="h") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>12)){return 0;}
			i_val+=hh.length;}
		else if (token=="HH"||token=="H") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>23)){return 0;}
			i_val+=hh.length;}
		else if (token=="KK"||token=="K") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<0)||(hh>11)){return 0;}
			i_val+=hh.length;}
		else if (token=="kk"||token=="k") {
			hh=_getInt(val,i_val,token.length,2);
			if(hh==null||(hh<1)||(hh>24)){return 0;}
			i_val+=hh.length;hh--;}
		else if (token=="mm"||token=="m") {
			mm=_getInt(val,i_val,token.length,2);
			if(mm==null||(mm<0)||(mm>59)){return 0;}
			i_val+=mm.length;}
		else if (token=="ss"||token=="s") {
			ss=_getInt(val,i_val,token.length,2);
			if(ss==null||(ss<0)||(ss>59)){return 0;}
			i_val+=ss.length;}
		else if (token=="a") {
			if (val.substring(i_val,i_val+2).toLowerCase()=="am") {ampm="AM";}
			else if (val.substring(i_val,i_val+2).toLowerCase()=="pm") {ampm="PM";}
			else {return 0;}
			i_val+=2;}
		else {
			if (val.substring(i_val,i_val+token.length)!=token) {return 0;}
			else {i_val+=token.length;}
			}
		}
	// If there are any trailing characters left in the value, it doesn't match
	if (i_val != val.length) { return 0; }
	// Is date valid for month?
	if (month==2) {
		// Check for leap year
		if ( ( (year%4==0)&&(year%100 != 0) ) || (year%400==0) ) { // leap year
			if (date > 29){ return 0; }
			}
		else { if (date > 28) { return 0; } }
		}
	if ((month==4)||(month==6)||(month==9)||(month==11)) {
		if (date > 30) { return 0; }
		}
	// Correct hours value
	if (hh<12 && ampm=="PM") { hh=hh-0+12; }
	else if (hh>11 && ampm=="AM") { hh-=12; }
	var newdate=new Date(year,month-1,date,hh,mm,ss);
	return newdate.getTime();
	}

// ------------------------------------------------------------------
// parseDate( date_string [, prefer_euro_format] )
//
// This function takes a date string and tries to match it to a
// number of possible date formats to get the value. It will try to
// match against the following international formats, in this order:
// y-M-d   MMM d, y   MMM d,y   y-MMM-d   d-MMM-y  MMM d
// M/d/y   M-d-y      M.d.y     MMM-d     M/d      M-d
// d/M/y   d-M-y      d.M.y     d-MMM     d/M      d-M
// A second argument may be passed to instruct the method to search
// for formats like d/M/y (european format) before M/d/y (American).
// Returns a Date object or null if no patterns match.
// ------------------------------------------------------------------
function parseDate(val) {
	var preferEuro=(arguments.length==2)?arguments[1]:false;
	generalFormats=new Array('y-M-d','MMM d, y','MMM d,y','y-MMM-d','d-MMM-y','MMM d');
	monthFirst=new Array('M/d/y','M-d-y','M.d.y','MMM-d','M/d','M-d');
	dateFirst =new Array('d/M/y','d-M-y','d.M.y','d-MMM','d/M','d-M');
	var checkList=new Array('generalFormats',preferEuro?'dateFirst':'monthFirst',preferEuro?'monthFirst':'dateFirst');
	var d=null;
	for (var i=0; i<checkList.length; i++) {
		var l=window[checkList[i]];
		for (var j=0; j<l.length; j++) {
			d=getDateFromFormat(val,l[j]);
			if (d!=0) { return new Date(d); }
			}
		}
	return null;
	}


//---------------------------------------------------------------------------


/************** End validate.js **************/




/************** This bit was inline on for every page **************/
var GB_ROOT_DIR = "/greybox/";





/************** Start /greybox/AJS.js **************/

if(!window.AJS){var AJS={BASE_URL:"",ajaxErrorHandler:null,getQueryArgument:function(f){var b=window.location.search.substring(1);var c=b.split("&");for(var a=0;a<c.length;a++){var d=c[a].split("=");if(d[0]==f){return d[1]}}return null},_agent:navigator.userAgent.toLowerCase(),_agent_version:navigator.productSub,isIe:function(){return(AJS._agent.indexOf("msie")!=-1&&AJS._agent.indexOf("opera")==-1)},isIe8:function(){return AJS._agent.indexOf("msie 8")!=-1},isSafari:function(a){if(a){return AJS._agent.indexOf("khtml")}return(AJS._agent.indexOf("khtml")!=-1&&AJS._agent.match(/3\.\d\.\d safari/)==null)},isOpera:function(){return AJS._agent.indexOf("opera")!=-1},isMozilla:function(){return(AJS._agent.indexOf("gecko")!=-1&&AJS._agent_version>=20030210)},isMac:function(){return(AJS._agent.indexOf("macintosh")!=-1)},isCamino:function(){return(AJS._agent.indexOf("camino")!=-1)},createArray:function(a){if(AJS.isArray(a)&&!AJS.isString(a)){return a}else{if(!a){return[]}else{return[a]}}},forceArray:function(a){var c=[];for(var b=0;b<a.length;b++){c.push(a[b])}return c},join:function(d,b){try{return b.join(d)}catch(c){var a=b[0]||"";AJS.map(b,function(f){a+=d+f},1);return a+""}},isIn:function(c,b){var a=AJS.getIndex(c,b);if(a!=-1){return true}else{return false}},getIndex:function(d,b,c){for(var a=0;a<b.length;a++){if(c&&c(b[a])||d==b[a]){return a}}return -1},getFirst:function(a){if(a.length>0){return a[0]}else{return null}},getLast:function(a){if(a.length>0){return a[a.length-1]}else{return null}},getRandom:function(a){return a[Math.floor(Math.random()*a.length)]},update:function(b,a){for(var c in a){b[c]=a[c]}return b},flattenList:function(g){var f=false;var a=[];for(var b=0;b<g.length;b++){var h=g[b];if(AJS.isArray(h)){f=true;break}if(h!=null){a.push(h)}}if(!f){return a}var c=[];var d=function(j,i){AJS.map(i,function(l){if(l==null){}else{if(AJS.isArray(l)){d(j,l)}else{j.push(l)}}})};d(c,g);return c},flattenElmArguments:function(a){return AJS.flattenList(AJS.forceArray(a))},map:function(g,f,b,d){var c=0,a=g.length;if(b){c=b}if(d){a=d}for(c;c<a;c++){var h=f(g[c],c);if(h!=undefined){return h}}},rmap:function(d,c){var b=d.length-1,a=0;for(b;b>=a;b--){var f=c.apply(null,[d[b],b]);if(f!=undefined){return f}}},filter:function(f,c,a,b){var d=[];AJS.map(f,function(g){if(c(g)){d.push(g)}},a,b);return d},partial:function(b){var a=AJS.$FA(arguments);a.shift();return function(){a=a.concat(AJS.$FA(arguments));return b.apply(window,a)}},getElement:function(a){if(AJS.isString(a)||AJS.isNumber(a)){return document.getElementById(a)}else{return a}},getElements:function(){var a=AJS.flattenElmArguments(arguments);var d=new Array();for(var c=0;c<a.length;c++){var b=AJS.getElement(a[c]);d.push(b)}return d},getElementsByTagAndClassName:function(a,b,n,h){var g=[];if(!AJS.isDefined(n)){n=document}if(!AJS.isDefined(a)){a="*"}var f,d;if(b&&document.getElementsByClassName){var c=n.getElementsByClassName(b);if(a=="*"){g=AJS.forceArray(c)}else{var m=c.length;for(f=0;f<m;f++){if(c[f].nodeName.toLowerCase()==a){g.push(c[f])}}}}else{var c=n.getElementsByTagName(a);if(!b){g=AJS.forceArray(c)}else{var m=c.length;var l=new RegExp("(^|\\s)"+b+"(\\s|$)");for(f=0;f<m;f++){if(l.test(c[f].className)||!b){g.push(c[f])}}}}if(h){return g[0]}else{return g}},nodeName:function(a){return a.nodeName.toLowerCase()},_nodeWalk:function(g,d,b,f){var c=f(g);var a;if(d&&b){a=function(h){return AJS.nodeName(h)==d&&AJS.hasClass(h,b)}}else{if(d){a=function(h){return AJS.nodeName(h)==d}}else{a=function(h){return AJS.hasClass(h,b)}}}if(a(g)){return g}while(c){if(a(c)){return c}c=f(c)}return null},getParentBytc:function(c,b,a){return AJS._nodeWalk(c,b,a,function(d){if(d){return d.parentNode}})},getChildBytc:function(d,c,b){var a=AJS.$bytc(c,b,d);if(a.length>0){return a[0]}else{return null}},hasParent:function(c,b,a){if(c==b){return true}if(a==0){return false}return AJS.hasParent(c.parentNode,b,a-1)},getPreviousSiblingBytc:function(c,b,a){return AJS._nodeWalk(c,b,a,function(d){return d.previousSibling})},getNextSiblingBytc:function(c,b,a){return AJS._nodeWalk(c,b,a,function(d){return d.nextSibling})},getBody:function(){return AJS.$bytc("body")[0]},getFormElement:function(c,a){c=AJS.$(c);var b=null;AJS.map(c.elements,function(d){if(d.name&&d.name==a){b=d}});if(b){return b}AJS.map(AJS.$bytc("select",null,c),function(d){if(d.name&&d.name==a){b=d}});return b},getSelectValue:function(a){var a=AJS.$(a);return a.options[a.selectedIndex].value},documentInsert:function(a){if(typeof(a)=="string"){a=AJS.HTML2DOM(a)}document.write('<span id="dummy_holder"></span>');AJS.swapDOM(AJS.$("dummy_holder"),a)},appendChildNodes:function(a){if(arguments.length>=2){AJS.map(arguments,function(b){if(AJS.isString(b)){b=AJS.TN(b)}if(AJS.isDefined(b)){a.appendChild(b)}},1)}return a},appendToTop:function(d){var b=AJS.flattenElmArguments(arguments).slice(1);if(b.length>=1){var c=d.firstChild;if(c){while(true){var a=b.shift();if(a){AJS.insertBefore(a,c)}else{break}}}else{AJS.ACN.apply(null,arguments)}}return d},replaceChildNodes:function(b){var a;while((a=b.firstChild)){AJS.swapDOM(a,null)}if(arguments.length<2){return b}else{return AJS.appendChildNodes.apply(null,arguments)}return b},insertAfter:function(b,a){a.parentNode.insertBefore(b,a.nextSibling);return b},insertBefore:function(b,a){a.parentNode.insertBefore(b,a);return b},swapDOM:function(a,c){a=AJS.getElement(a);var b=a.parentNode;if(c){c=AJS.getElement(c);b.replaceChild(c,a)}else{b.removeChild(a)}return c},removeElement:function(){var a=AJS.flattenElmArguments(arguments);try{AJS.map(a,function(c){if($(c)){AJS.swapDOM(c,null)}})}catch(b){}},createDOM:function(f,d){var g=0,a;var l=document.createElement(f);var b=d[0];if(AJS.isDict(d[g])){for(k in b){a=b[k];if(k=="style"||k=="s"){l.style.cssText=a}else{if(k=="c"||k=="class"||k=="className"){l.className=a}else{l.setAttribute(k,a)}}}g++}if(b==null){g=1}for(var c=g;c<d.length;c++){var a=d[c];if(a){var h=typeof(a);if(h=="string"||h=="number"){a=AJS.TN(a)}l.appendChild(a)}}return l},_createDomShortcuts:function(){var b=["ul","li","td","tr","th","tbody","table","input","span","b","a","div","img","button","h1","h2","h3","h4","h5","h6","br","textarea","form","p","select","option","optgroup","iframe","script","center","dl","dt","dd","small","pre","i","label","thead"];var a=function(c){AJS[c.toUpperCase()]=function(){return AJS.createDOM.apply(null,[c,arguments])}};AJS.map(b,a);AJS.TN=function(c){return document.createTextNode(c)}},setHTML:function(){var a=AJS.flattenElmArguments(arguments);var b=a.pop();AJS.map(a,function(c){if(c){c.innerHTML=b}});return a[0]},setVisibility:function(){var a=AJS.flattenElmArguments(arguments);var b=a.pop()&&"visible"||"hidden";AJS.setStyle(a,"visibility",b)},showElement:function(){AJS.setStyle(AJS.flattenElmArguments(arguments),"display","")},hideElement:function(a){AJS.setStyle(AJS.flattenElmArguments(arguments),"display","none")},isElementHidden:function(a){return((a.style.display=="none")||(a.style.visibility=="hidden"))},isElementShown:function(a){return !AJS.isElementHidden(a)},setStyle:function(){var b=AJS.flattenElmArguments(arguments);var d=b.pop();var a=["top","left","right","width","height"];if(AJS.isObject(d)){AJS.map(b,function(f){AJS.map(AJS.keys(d),function(h){var g=d[h];if(AJS.isIn(h,a)){g=AJS.isString(g)&&g||g+"px"}f.style[h]=g})})}else{var c=b.pop();AJS.map(b,function(f){if(AJS.isIn(c,a)){d=AJS.isString(d)&&d||d+"px"}f.style[c]=d})}},__cssDim:function(a,b){var a=AJS.$FA(a);a.splice(a.length-1,0,b);AJS.setStyle.apply(null,a)},setWidth:function(){return AJS.__cssDim(arguments,"width")},setHeight:function(){return AJS.__cssDim(arguments,"height")},setLeft:function(){return AJS.__cssDim(arguments,"left")},setRight:function(){return AJS.__cssDim(arguments,"right")},setTop:function(){return AJS.__cssDim(arguments,"top")},setClass:function(){var a=AJS.flattenElmArguments(arguments);var b=a.pop();AJS.map(a,function(c){c.className=b})},addClass:function(){var b=AJS.flattenElmArguments(arguments);var a=b.pop();var c=function(d){if(!new RegExp("(^|\\s)"+a+"(\\s|$)").test(d.className)){d.className+=(d.className?" ":"")+a}};AJS.map(b,function(d){c(d)})},hasClass:function(c,a){if(!c||!c.className){return false}var b=c.className;return(b.length>0&&(b==a||new RegExp("(^|\\s)"+a+"(\\s|$)").test(b)))},removeClass:function(){var c=AJS.flattenElmArguments(arguments);var a=c.pop();var b=function(d){d.className=d.className.replace(new RegExp("(^|\\s)"+a,"g"),"")};AJS.map(c,function(d){b(d)})},setOpacity:function(b,a){if(a==1){b.style.opacity=1;b.style.filter=""}else{b.style.opacity=a;b.style.filter="alpha(opacity="+a*100+")"}},HTML2DOM:function(a,c){var b=AJS.DIV();b.innerHTML=a;if(c){return b.childNodes[0]}else{return b}},preloadImages:function(){AJS.AEV(window,"load",AJS.$p(function(a){AJS.map(a,function(c){var b=new Image();b.src=c})},arguments))},RND:function(a,d,c){c=c||window;var b=function(f,l){l=l.split("|");var j=d[l[0]];for(var h=1;h<l.length;h++){j=c[l[h]](j)}if(j==""){return""}if(j==0||j==-1){j+=""}return j||f};return a.replace(/%\(([A-Za-z0-9_|.]*)\)/g,b)},getXMLHttpRequest:function(){var b=[function(){return new XMLHttpRequest()},function(){return new ActiveXObject("Msxml2.XMLHTTP")},function(){return new ActiveXObject("Microsoft.XMLHTTP")},function(){return new ActiveXObject("Msxml2.XMLHTTP.4.0")},function(){throw"Browser does not support XMLHttpRequest"}];for(var a=0;a<b.length;a++){var c=b[a];try{return c()}catch(d){}}},getRequest:function(a,c){var b=AJS.getXMLHttpRequest();if(a.match(/^https?:\/\//)==null){if(AJS.BASE_URL!=""){if(AJS.BASE_URL.lastIndexOf("/")!=AJS.BASE_URL.length-1){AJS.BASE_URL+="/"}a=AJS.BASE_URL+a}}if(!c){c="POST"}return new AJSDeferred(b,c,a)},serializeJSON:function(j){var a=typeof(j);if(a=="undefined"){return"null"}else{if(a=="number"||a=="boolean"){return j+""}else{if(j===null){return"null"}}}if(a=="string"){return AJS._reprString(j)}if(a=="object"&&j.getFullYear){return AJS._reprDate(j)}var f=arguments.callee;if(a!="function"&&typeof(j.length)=="number"){var d=[];for(var c=0;c<j.length;c++){var h=f(j[c]);if(typeof(h)!="string"){h="undefined"}d.push(h)}return"["+d.join(",")+"]"}if(a=="function"){return null}d=[];for(var b in j){var g;if(typeof(b)=="number"){g='"'+b+'"'}else{if(typeof(b)=="string"){g=AJS._reprString(b)}else{continue}}h=f(j[b]);if(typeof(h)!="string"){continue}d.push(g+":"+h)}return"{"+d.join(",")+"}"},loadJSON:function(b,c,a){var g=AJS.getRequest(b,c);var f=function(h,d){var i=d.responseText;if(i=="Error"){g.errback(d)}else{return AJS.evalTxt(i)}};g.addCallback(f);return g},evalTxt:function(txt){try{return eval("("+txt+")")}catch(e){return eval(txt)}},evalScriptTags:function(html){var script_data=html.match(/<script.*?>((\n|\r|.)*?)<\/script>/g);if(script_data!=null){for(var i=0;i<script_data.length;i++){var script_only=script_data[i].replace(/<script.*?>/g,"");script_only=script_only.replace(/<\/script>/g,"");eval(script_only)}}},encodeArguments:function(a){var b=[];for(k in a){b.push(k+"="+AJS.urlencode(a[k]))}return b.join("&")},_reprString:function(a){return('"'+a.replace(/(["\\])/g,"\\$1")+'"').replace(/[\f]/g,"\\f").replace(/[\b]/g,"\\b").replace(/[\n]/g,"\\n").replace(/[\t]/g,"\\t").replace(/[\r]/g,"\\r")},_reprDate:function(c){var d=c.getUTCFullYear();var a=c.getUTCDate();var f=c.getUTCMonth()+1;var b=function(g){if(g<10){g="0"+g}return g};return'"'+d+"-"+f+"-"+a+"T"+b(c.getUTCHours())+":"+b(c.getUTCMinutes())+":"+b(c.getUTCSeconds())+'"'},getMousePos:function(b){var a=0;var c=0;if(!b){var b=window.event}if(b.pageX||b.pageY){a=b.pageX;c=b.pageY}else{if(b.clientX||b.clientY){a=b.clientX+document.body.scrollLeft+document.documentElement.scrollLeft;c=b.clientY+document.body.scrollTop+document.documentElement.scrollTop}}return{x:a,y:c}},getScrollTop:function(){var a;if(document.documentElement&&document.documentElement.scrollTop){a=document.documentElement.scrollTop}else{if(document.body){a=document.body.scrollTop}}return a},absolutePosition:function(c){if(!c){return{x:0,y:0}}if(c.scrollLeft){return{x:c.scrollLeft,y:c.scrollTop}}else{if(c.clientX){return{x:c.clientX,y:c.clientY}}}var b={x:c.offsetLeft,y:c.offsetTop};if(c.offsetParent){var a=c.offsetParent;while(a){b.x+=a.offsetLeft;b.y+=a.offsetTop;a=a.offsetParent}}if(AJS.isSafari()&&c.style.position=="absolute"){b.x-=document.body.offsetLeft;b.y-=document.body.offsetTop}return b},getWindowSize:function(c){c=c||document;var b,a;if(self.innerHeight){b=self.innerWidth;a=self.innerHeight}else{if(c.documentElement&&c.documentElement.clientHeight){b=c.documentElement.clientWidth;a=c.documentElement.clientHeight}else{if(c.body){b=c.body.clientWidth;a=c.body.clientHeight}}}return{w:b,h:a}},isOverlapping:function(g,c){var j=AJS.absolutePosition(g);var i=AJS.absolutePosition(c);var m=j.y;var o=j.x;var f=o+g.offsetWidth;var d=m+g.offsetHeight;var l=i.y;var n=i.x;var b=n+c.offsetWidth;var a=l+c.offsetHeight;var h=function(p){if(p>0){return"+"}else{if(p<0){return"-"}else{return 0}}};if((h(m-a)!=h(d-l))&&(h(o-b)!=h(f-n))){return true}return false},getEventElm:function(b){if(b&&!b.type&&!b.keyCode){return b}var a;if(!b){var b=window.event}if(b.target){a=b.target}else{if(b.srcElement){a=b.srcElement}}if(a&&a.nodeType==3){a=a.parentNode}return a},setEventKey:function(a){if(!a){a=window.event}a.key=a.keyCode?a.keyCode:a.charCode;a.ctrl=a.ctrlKey;a.alt=a.altKey;a.meta=a.metaKey;a.shift=a.shiftKey},onEvent:function(c,b,a,d){c=AJS.$A(c);AJS.map(c,function(f){if(f.events){f.events[b]={}}});return AJS.AEV(c,b,a,d)},ready_bound:false,is_ready:false,bindReady:function(){if(AJS.ready_bound){return}AJS.ready_bound=true;if(document.addEventListener){document.addEventListener("DOMContentLoaded",function(){document.removeEventListener("DOMContentLoaded",arguments.callee,false);AJS.ready()},false)}else{if(document.attachEvent){document.attachEvent("onreadystatechange",function(){if(document.readyState==="complete"){document.detachEvent("onreadystatechange",arguments.callee);AJS.ready()}});if(document.documentElement.doScroll&&window==window.top){(function(){if(AJS.is_ready){return}try{document.documentElement.doScroll("left")}catch(a){setTimeout(arguments.callee,0);return}AJS.ready()})()}}}AJS.AEV(window,"load",AJS.ready)},ready_list:[],ready:function(a){if(AJS.is_ready){return}AJS.is_ready=true;AJS.map(AJS.ready_list,function(b){b.call(window)});AJS.ready_list=[]},_f_guid:0,_wipe_guid:0,addEventListener:function(c,a,b,d){c=AJS.$A(c);a=AJS.$A(a);AJS.map(c,function(f){if(d){b.listen_once=true}if(!b.$f_guid){b.$f_guid=AJS._f_guid++}if(!f.events){f.events={}}AJS.map(a,function(h){var g=f.events[h];if(f==window&&h=="load"){AJS.ready_list.push(b)}else{if(h=="lazy_load"){h="load"}if(!g){g=f.events[h]={};if(f["on"+h]){g[0]=f["on"+h]}}if(!f._wipe_guid){f._wipe_guid=AJS._wipe_guid++}g[b.$f_guid]=b;f["on"+h]=AJS.handleEvent}});f=null})},handleEvent:function(h){var g=this;h=h||window.event;if(!h){return}if(!h.ctrl&&h.type.indexOf("key")!=-1){AJS.setEventKey(h)}var b=this.events[h.type];var a=[];var d=true;for(var c in b){var f=this.$$handleEvent=b[c];if(f==AJS.handleEvent){continue}d=f(h);if(f.listen_once){a.push(f)}}if(a.length>0){AJS.map(a,function(i){delete g.events[h.type][i.$f_guid]})}return d},removeEventListener:function(c,b,a){c=AJS.$A(c);map(c,function(d){if(d.events&&d.events[b]){delete d.events[b][a.$f_guid]}})},bind:function(b,a,c){b._cscope=a;return AJS._getRealScope(b,c)},bindMethods:function(b){for(var a in b){var c=b[a];if(typeof(c)=="function"){b[a]=AJS.$b(c,b)}}},preventDefault:function(a){if(AJS.isIe()){window.event.returnValue=false}else{a.preventDefault()}},_listenOnce:function(d,b,a){var c=function(){AJS.removeEventListener(d,b,c);a(arguments)};return c},_getRealScope:function(b,c){c=AJS.$A(c);var a=b._cscope||window;return function(){try{var d=AJS.$FA(arguments).concat(c);return b.apply(a,d)}catch(f){}}},_reccruing_tos:{},setSingleTimeout:function(b,c,a){var d=AJS._reccruing_tos[b];if(d){clearTimeout(d)}AJS._reccruing_tos[b]=setTimeout(c,a)},keys:function(b){var a=[];for(var c in b){a.push(c)}return a},values:function(b){var a=[];for(var c in b){a.push(b[c])}return a},urlencode:function(a){return encodeURIComponent(AJS.isDefined(a)&&a.toString()||"")},urldecode:function(b){var a=decodeURIComponent(AJS.isDefined(b)&&b.toString()||"");return a.replace(/\+/g," ")},isDefined:function(a){return(a!="undefined"&&a!=null)},isArray:function(b){try{return b instanceof Array}catch(a){return false}},isString:function(a){return(typeof a=="string")},isNumber:function(a){return(typeof a=="number")},isObject:function(a){return(typeof a=="object")},isFunction:function(a){return(typeof a=="function")},isDict:function(b){var a=String(b);return a.indexOf(" Object")!=-1},exportToGlobalScope:function(a){a=a||window;for(e in AJS){if(e!="addEventListener"){a[e]=AJS[e]}}},log:function(b){try{if(window._firebug){window._firebug.log(b)}else{if(window.console){console.log(b)}}}catch(a){}},strip:function(a){return a.replace(/^\s+/,"").replace(/\s+$/g,"")},trim_if_needed:function(c,a,b){if(c.length>a){return c.substring(0,a)+(b||"...")}return c}};AJS.Class=function(a){var b=function(){if(arguments[0]!="no_init"){return this.init.apply(this,arguments)}};b.prototype=a;AJS.update(b,AJS.Class.prototype);return b};AJS.Class.prototype={extend:function(a){var b=new this("no_init");for(k in a){var c=b[k];var d=a[k];if(c&&c!=d&&typeof d=="function"){d=this._parentize(d,c)}b[k]=d}return new AJS.Class(b)},implement:function(a){AJS.update(this.prototype,a)},_parentize:function(b,a){return function(){this.parent=a;return b.apply(this,arguments)}}};AJS.$=AJS.getElement;AJS.$$=AJS.getElements;AJS.$f=AJS.getFormElement;AJS.$b=AJS.bind;AJS.$p=AJS.partial;AJS.$FA=AJS.forceArray;AJS.$A=AJS.createArray;AJS.DI=AJS.documentInsert;AJS.ACN=AJS.appendChildNodes;AJS.RCN=AJS.replaceChildNodes;AJS.AEV=AJS.addEventListener;AJS.REV=AJS.removeEventListener;AJS.$bytc=AJS.getElementsByTagAndClassName;AJS.$AP=AJS.absolutePosition;AJS.loadJSONDoc=AJS.loadJSON;AJS.queryArguments=AJS.encodeArguments;AJS.$gp=AJS.getParentBytc;AJS.$gc=AJS.getChildBytc;AJS.$sv=AJS.setVisibility;AJS.generalErrorback=null;AJS.generalCallback=null;AJSDeferred=function(b,c,a){this.callbacks=[];this.errbacks=[];this.req=b;this.http_method=c;this.http_url=a};AJSDeferred.prototype={excCallbackSeq:function(c,f){var d=c.responseText;if(AJS.generalCallback){d=AJS.generalCallback(c,f);if(!d){return}}while(f.length>0){var b=f.pop();var a=b(d,c);if(a){d=a}else{if(a==false){break}}}},callback:function(){this.excCallbackSeq(this.req,this.callbacks)},errback:function(){if(this.errbacks.length==0){if(AJS.ajaxErrorHandler){AJS.ajaxErrorHandler(req.responseText,req)}else{var b=this.req.responseText.substring(0,200);if(AJS.strip(b)&&b.indexOf("<html")==-1){alert("Error encountered:\n"+b)}}}if(AJS.generalErrorback){var a=AJS.generalErrorback(this.req);if(!a){return}}this.excCallbackSeq(this.req,this.errbacks)},addErrback:function(a){this.errbacks.unshift(a)},addCallback:function(a){this.callbacks.unshift(a)},abort:function(){this.req.abort()},addCallbacks:function(b,a){this.addCallback(b);this.addErrback(a)},_onreadystatechange:function(){var b=this.req;var f=this;if(b.readyState==4){var a="";try{a=b.status}catch(c){}if(a==200||a==304||b.responseText==null){this.callback()}else{this.errback()}}},sendReq:function(d){var c=this.req;var b=this.http_method;var a=this.http_url;if(b=="POST"){c.open(b,a,true);c.onreadystatechange=AJS.$b(this._onreadystatechange,this);c.setRequestHeader("Content-type","application/x-www-form-urlencoded");if(AJS.isObject(d)){c.send(AJS.encodeArguments(d))}else{if(AJS.isDefined(d)){c.send(d)}else{c.send("")}}}else{c.open("GET",a,true);c.onreadystatechange=AJS.$b(this._onreadystatechange,this);c.send(null)}}};AJS._createDomShortcuts()}script_loaded=true;AJS.exportToGlobalScope();AJS.bindReady();
script_loaded=true;

/************** End /greybox/AJS.js **************/





/************** Start /greybox/AJS_fx.js **************/

AJS.fx={_shades:{0:"ffffff",1:"ffffee",2:"ffffdd",3:"ffffcc",4:"ffffbb",5:"ffffaa",6:"ffff99"},highlight:function(c,a){var b=new AJS.fx.Base();b.elm=AJS.$(c);b.options.duration=600;b.setOptions(a);AJS.update(b,{increase:function(){if(this.now==7){c.style.backgroundColor="#fff"}else{c.style.backgroundColor="#"+AJS.fx._shades[Math.floor(this.now)]}}});return b.custom(6,0)},fadeIn:function(c,a){a=a||{};if(!a.from){a.from=0;AJS.setOpacity(c,0)}if(!a.to){a.to=1}var b=new AJS.fx.Style(c,"opacity",a);return b.custom(a.from,a.to)},fadeOut:function(c,a){a=a||{};if(!a.from){a.from=1}if(!a.to){a.to=0}a.duration=300;var b=new AJS.fx.Style(c,"opacity",a);return b.custom(a.from,a.to)},setWidth:function(c,a){var b=new AJS.fx.Style(c,"width",a);return b.custom(a.from,a.to)},setHeight:function(c,a){var b=new AJS.fx.Style(c,"height",a);return b.custom(a.from,a.to)}};AJS.fx.Base=new AJS.Class({init:function(a){this.options={onStart:function(){},onComplete:function(){},transition:AJS.fx.Transitions.sineInOut,duration:500,wait:true,fps:50};AJS.update(this.options,a);AJS.bindMethods(this)},setOptions:function(a){AJS.update(this.options,a)},step:function(){var a=new Date().getTime();if(a<this.time+this.options.duration){this.cTime=a-this.time;this.setNow()}else{setTimeout(AJS.$b(this.options.onComplete,this,[this.elm]),10);this.clearTimer();this.now=this.to}this.increase()},setNow:function(){this.now=this.compute(this.from,this.to)},compute:function(c,b){var a=b-c;return this.options.transition(this.cTime,c,a,this.options.duration)},clearTimer:function(){clearInterval(this.timer);this.timer=null;return this},_start:function(b,a){if(!this.options.wait){this.clearTimer()}if(this.timer){return}setTimeout(AJS.$p(this.options.onStart,this.elm),10);this.from=b;this.to=a;this.time=new Date().getTime();this.timer=setInterval(this.step,Math.round(1000/this.options.fps));return this},custom:function(b,a){return this._start(b,a)},set:function(a){this.now=a;this.increase();return this},setStyle:function(c,a,b){if(this.property=="opacity"){AJS.setOpacity(c,b)}else{AJS.setStyle(c,a,b)}}});AJS.fx.Style=AJS.fx.Base.extend({init:function(c,b,a){this.parent();this.elm=c;this.setOptions(a);this.property=b},increase:function(){this.setStyle(this.elm,this.property,this.now)}});AJS.fx.Styles=AJS.fx.Base.extend({init:function(b,a){this.parent();this.elm=AJS.$(b);this.setOptions(a);this.now={}},setNow:function(){for(p in this.from){this.now[p]=this.compute(this.from[p],this.to[p])}},custom:function(a){if(this.timer&&this.options.wait){return}var c={};var b={};for(p in a){c[p]=a[p][0];b[p]=a[p][1]}return this._start(c,b)},increase:function(){for(var a in this.now){this.setStyle(this.elm,a,this.now[a])}}});AJS.fx.Transitions={linear:function(e,a,g,f){return g*e/f+a},sineInOut:function(e,a,g,f){return -g/2*(Math.cos(Math.PI*e/f)-1)+a}};script_loaded=true;
script_loaded=true;

/************** End /greybox/AJS_fx.js **************/






/************** Start /greybox/gb_scripts.js **************/

var GB_CURRENT=null;GB_hide=function(a){GB_CURRENT.hide(a)};GreyBox=new AJS.Class({init:function(c){this.use_fx=AJS.fx;this.type="page";this.overlay_click_close=false;this.salt=0;this.root_dir=GB_ROOT_DIR;this.callback_fns=[];this.reload_on_close=false;this.src_loader=this.root_dir+"loader_frame.html";var b=window.location.hostname.indexOf("www");var a=this.src_loader.indexOf("www");if(b!=-1&&a==-1){this.src_loader=this.src_loader.replace("://","://www.")}if(b==-1&&a!=-1){this.src_loader=this.src_loader.replace("://www.","://")}this.show_loading=true;AJS.update(this,c)},addCallback:function(a){if(a){this.callback_fns.push(a)}},show:function(a){GB_CURRENT=this;this.url=a;var b=[AJS.$bytc("object"),AJS.$bytc("select")];AJS.map(AJS.flattenList(b),function(c){c.style.visibility="hidden"});this.createElements();return false},hide:function(a){var b=this;setTimeout(function(){var d=b.callback_fns;if(d!=[]){AJS.map(d,function(f){f()})}b.onHide();if(b.use_fx){var e=b.overlay;AJS.fx.fadeOut(b.overlay,{onComplete:function(){AJS.removeElement(e);e=null},duration:300});AJS.removeElement(b.g_window)}else{AJS.removeElement(b.g_window,b.overlay)}b.removeFrame();AJS.REV(window,"scroll",_GB_setOverlayDimension);AJS.REV(window,"resize",_GB_update);var c=[AJS.$bytc("object"),AJS.$bytc("select")];AJS.map(AJS.flattenList(c),function(f){f.style.visibility="visible"});GB_CURRENT=null;if(b.reload_on_close){window.location.reload()}if(AJS.isFunction(a)){a()}},10)},update:function(){this.setOverlayDimension();this.setFrameSize();this.setWindowPosition()},createElements:function(){this.initOverlay();this.g_window=AJS.DIV({id:"GB_window"});AJS.hideElement(this.g_window);AJS.getBody().insertBefore(this.g_window,this.overlay.nextSibling);this.initFrame();this.initHook();this.update();var a=this;if(this.use_fx){AJS.fx.fadeIn(this.overlay,{duration:300,to:0.7,onComplete:function(){a.onShow();AJS.showElement(a.g_window);a.startLoading()}})}else{AJS.setOpacity(this.overlay,0.7);AJS.showElement(this.g_window);this.onShow();this.startLoading()}AJS.AEV(window,"scroll",_GB_setOverlayDimension);AJS.AEV(window,"resize",_GB_update)},removeFrame:function(){try{AJS.removeElement(this.iframe)}catch(a){}this.iframe=null},startLoading:function(){this.iframe.src=this.src_loader+"?s="+this.salt++;AJS.showElement(this.iframe)},setOverlayDimension:function(){var b=AJS.getWindowSize();if(AJS.isMozilla()||AJS.isOpera()){AJS.setWidth(this.overlay,"100%")}else{AJS.setWidth(this.overlay,b.w)}var a=Math.max(AJS.getScrollTop()+b.h,AJS.getScrollTop()+this.height);if(a<AJS.getScrollTop()){AJS.setHeight(this.overlay,a)}else{AJS.setHeight(this.overlay,AJS.getScrollTop()+b.h)}},initOverlay:function(){this.overlay=AJS.DIV({id:"GB_overlay"});if(this.overlay_click_close){AJS.AEV(this.overlay,"click",GB_hide)}AJS.setOpacity(this.overlay,0);AJS.getBody().insertBefore(this.overlay,AJS.getBody().firstChild)},initFrame:function(){if(!this.iframe){var a={name:"GB_frame","class":"GB_frame",frameBorder:0};if(AJS.isIe()){a.src='javascript:false;document.write("");'}this.iframe=AJS.IFRAME(a);this.middle_cnt=AJS.DIV({"class":"content"},this.iframe);this.top_cnt=AJS.DIV();this.bottom_cnt=AJS.DIV();AJS.ACN(this.g_window,this.top_cnt,this.middle_cnt,this.bottom_cnt)}},onHide:function(){},onShow:function(){},setFrameSize:function(){},setWindowPosition:function(){},initHook:function(){}});_GB_update=function(){if(GB_CURRENT){GB_CURRENT.update()}};_GB_setOverlayDimension=function(){if(GB_CURRENT){GB_CURRENT.setOverlayDimension()}};AJS.preloadImages(GB_ROOT_DIR+"indicator.gif");script_loaded=true;var GB_SETS={};function decoGreyboxLinks(){var a=AJS.$bytc("a");AJS.map(a,function(c){if(c.getAttribute("href")&&c.getAttribute("rel")){var b=c.getAttribute("rel");if(b.indexOf("gb_")==0){var f=b.match(/\w+/)[0];var e=b.match(/\[(.*)\]/)[1];var d=0;var g={caption:c.title||"",url:c.href};if(f=="gb_pageset"||f=="gb_imageset"){if(!GB_SETS[e]){GB_SETS[e]=[]}GB_SETS[e].push(g);d=GB_SETS[e].length}if(f=="gb_pageset"){c.onclick=function(){GB_showFullScreenSet(GB_SETS[e],d);return false}}if(f=="gb_imageset"){c.onclick=function(){GB_showImageSet(GB_SETS[e],d);return false}}if(f=="gb_image"){c.onclick=function(){GB_showImage(g.caption,g.url);return false}}if(f=="gb_page"){c.onclick=function(){var h=e.split(/, ?/);GB_show(g.caption,g.url,parseInt(h[1]),parseInt(h[0]));return false}}if(f=="gb_page_fs"){c.onclick=function(){GB_showFullScreen(g.caption,g.url);return false}}if(f=="gb_page_center"){c.onclick=function(){var h=e.split(/, ?/);GB_showCenter(g.caption,g.url,parseInt(h[1]),parseInt(h[0]));return false}}}}})}AJS.AEV(window,"load",decoGreyboxLinks);GB_showImage=function(a,c,e){var b={width:300,height:300,type:"image",fullscreen:false,center_win:true,caption:a,callback_fn:e};var d=new GB_Gallery(b);return d.show(c)};GB_showPage=function(a,c,e){var b={type:"page",caption:a,callback_fn:e,fullscreen:true,center_win:false};var d=new GB_Gallery(b);return d.show(c)};GB_Gallery=GreyBox.extend({init:function(a){this.parent({});this.img_close=this.root_dir+"g_close.gif";AJS.update(this,a);this.addCallback(this.callback_fn)},initHook:function(){AJS.addClass(this.g_window,"GB_Gallery");var c=AJS.DIV({"class":"inner"});this.header=AJS.DIV({"class":"GB_header"},c);AJS.setOpacity(this.header,0);AJS.getBody().insertBefore(this.header,this.overlay.nextSibling);var e=AJS.TD({id:"GB_caption","class":"caption",width:"40%"},this.caption);var b=AJS.TD({id:"GB_middle","class":"middle",width:"20%"});var f=AJS.IMG({src:this.img_close});AJS.AEV(f,"click",GB_hide);var a=AJS.TD({"class":"close",width:"40%"},f);var d=AJS.TBODY(AJS.TR(e,b,a));var g=AJS.TABLE({cellspacing:"0",cellpadding:0,border:0},d);AJS.ACN(c,g);if(this.fullscreen){AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this))}else{AJS.AEV(window,"scroll",AJS.$b(this._setHeaderPos,this))}},setFrameSize:function(){var b=this.overlay.offsetWidth;var a=AJS.getWindowSize();if(this.fullscreen){this.width=b-40;this.height=a.h-80}AJS.setWidth(this.iframe,this.width);AJS.setHeight(this.iframe,this.height);AJS.setWidth(this.header,b)},_setHeaderPos:function(){AJS.setTop(this.header,AJS.getScrollTop()+10)},setWindowPosition:function(){var c=this.overlay.offsetWidth;var a=AJS.getWindowSize();AJS.setLeft(this.g_window,((c-50-this.width)/2));var d=AJS.getScrollTop()+55;if(!this.center_win){AJS.setTop(this.g_window,d)}else{var b=((a.h-this.height)/2)+20+AJS.getScrollTop();if(b<0){b=0}if(d>b){b=d}AJS.setTop(this.g_window,b)}this._setHeaderPos()},onHide:function(){AJS.removeElement(this.header);AJS.removeClass(this.g_window,"GB_Gallery")},onShow:function(){if(this.use_fx){AJS.fx.fadeIn(this.header,{to:1})}else{AJS.setOpacity(this.header,1)}}});AJS.preloadImages(GB_ROOT_DIR+"g_close.gif");GB_showFullScreenSet=function(e,a,d){var b={type:"page",fullscreen:true,center_win:false};var c=new GB_Sets(b,e);c.addCallback(d);c.showSet(a-1);return false};GB_showImageSet=function(e,a,d){var b={type:"image",fullscreen:false,center_win:true,width:300,height:300};var c=new GB_Sets(b,e);c.addCallback(d);c.showSet(a-1);return false};GB_Sets=GB_Gallery.extend({init:function(a,b){this.parent(a);if(!this.img_next){this.img_next=this.root_dir+"next.gif"}if(!this.img_prev){this.img_prev=this.root_dir+"prev.gif"}this.current_set=b},showSet:function(a){this.current_index=a;var b=this.current_set[this.current_index];this.show(b.url);this._setCaption(b.caption);this.btn_prev=AJS.IMG({"class":"left",src:this.img_prev});this.btn_next=AJS.IMG({"class":"right",src:this.img_next});AJS.AEV(this.btn_prev,"click",AJS.$b(this.switchPrev,this));AJS.AEV(this.btn_next,"click",AJS.$b(this.switchNext,this));GB_STATUS=AJS.SPAN({"class":"GB_navStatus"});AJS.ACN(AJS.$("GB_middle"),this.btn_prev,GB_STATUS,this.btn_next);this.updateStatus()},updateStatus:function(){AJS.setHTML(GB_STATUS,(this.current_index+1)+" / "+this.current_set.length);if(this.current_index==0){AJS.addClass(this.btn_prev,"disabled")}else{AJS.removeClass(this.btn_prev,"disabled")}if(this.current_index==this.current_set.length-1){AJS.addClass(this.btn_next,"disabled")}else{AJS.removeClass(this.btn_next,"disabled")}},_setCaption:function(a){AJS.setHTML(AJS.$("GB_caption"),a)},updateFrame:function(){var a=this.current_set[this.current_index];this._setCaption(a.caption);this.url=a.url;this.startLoading()},switchPrev:function(){if(this.current_index!=0){this.current_index--;this.updateFrame();this.updateStatus()}},switchNext:function(){if(this.current_index!=this.current_set.length-1){this.current_index++;this.updateFrame();this.updateStatus()}}});AJS.AEV(window,"load",function(){AJS.preloadImages(GB_ROOT_DIR+"next.gif",GB_ROOT_DIR+"prev.gif")});GB_show=function(b,d,a,e,g){var c={caption:b,height:a||500,width:e||500,fullscreen:false,callback_fn:g};var f=new GB_Window(c);return f.show(d)};GB_showCenter=function(b,d,a,e,g){var c={caption:b,center_win:true,height:a||500,width:e||500,fullscreen:false,callback_fn:g};var f=new GB_Window(c);return f.show(d)};GB_showFullScreen=function(a,c,e){var b={caption:a,fullscreen:true,callback_fn:e};var d=new GB_Window(b);return d.show(c)};GB_Window=GreyBox.extend({init:function(a){this.parent({});this.img_header=this.root_dir+"header_bg.gif";this.img_close=this.root_dir+"w_close.gif";this.show_close_img=true;AJS.update(this,a);this.addCallback(this.callback_fn)},initHook:function(){AJS.addClass(this.g_window,"GB_Window");this.header=AJS.TABLE({"class":"header"});this.header.style.backgroundImage="url("+this.img_header+")";var b=AJS.TD({"class":"caption"},this.caption);var a=AJS.TD({"class":"close"});if(this.show_close_img){var e=AJS.IMG({src:this.img_close});var d=AJS.SPAN("Close");var c=AJS.DIV(e,d);AJS.AEV([e,d],"mouseover",function(){AJS.addClass(d,"on")});AJS.AEV([e,d],"mouseout",function(){AJS.removeClass(d,"on")});AJS.AEV([e,d],"mousedown",function(){AJS.addClass(d,"click")});AJS.AEV([e,d],"mouseup",function(){AJS.removeClass(d,"click")});AJS.AEV([e,d],"click",GB_hide);AJS.ACN(a,c)}tbody_header=AJS.TBODY();AJS.ACN(tbody_header,AJS.TR(b,a));AJS.ACN(this.header,tbody_header);AJS.ACN(this.top_cnt,this.header);if(this.fullscreen){AJS.AEV(window,"scroll",AJS.$b(this.setWindowPosition,this))}},setFrameSize:function(){if(this.fullscreen){var a=AJS.getWindowSize();overlay_h=a.h;this.width=Math.round(this.overlay.offsetWidth-(this.overlay.offsetWidth/100)*10);this.height=Math.round(overlay_h-(overlay_h/100)*10)}AJS.setWidth(this.header,this.width+6);AJS.setWidth(this.iframe,this.width);AJS.setHeight(this.iframe,this.height)},setWindowPosition:function(){var a=AJS.getWindowSize();AJS.setLeft(this.g_window,((a.w-this.width)/2)-13);if(!this.center_win){AJS.setTop(this.g_window,AJS.getScrollTop())}else{var b=((a.h-this.height)/2)-20+AJS.getScrollTop();if(b<0){b=0}AJS.setTop(this.g_window,b)}}});AJS.preloadImages(GB_ROOT_DIR+"w_close.gif",GB_ROOT_DIR+"header_bg.gif");
script_loaded=true;

/************** End /greybox/gb_scripts.js **************/





// (function () {
//     $.fn.infiniteCarousel = function () {
//         function repeat(str, n) {
//             return new Array( n + 1 ).join(str);
//         }
//         
//         return this.each(function () {
//             // magic!
//             var $wrapper = $('> div', this).css('overflow', 'hidden'),
//                 $slider = $wrapper.find('> ul').width(9999),
//                 $items = $slider.find('> li'),
//                 $single = $items.filter(':first')
//                 
//                 singleWidth = $single.outerWidth(),
//                 visible = Math.ceil($wrapper.innerWidth() / singleWidth),
//                 currentPage = 1,
//                 pages = Math.ceil($items.length / visible);
//                 
//             /* TASKS */
//             
//             // 1. pad the pages with empty element if required
//             if ($items.length % visible != 0) {
//                 // pad
//                 $slider.append(repeat('<li class="empty" />', visible - ($items.length % visible)));
//                 $items = $slider.find('> li');
//             }
//             
//             // 2. create the carousel padding on left and right (cloned)
//             $items.filter(':first').before($items.slice(-visible).clone().addClass('cloned'));
//             $items.filter(':last').after($items.slice(0, visible).clone().addClass('cloned'));
//             $items = $slider.find('> li');
//             
//             // 3. reset scroll
//             $wrapper.scrollLeft(singleWidth * visible);
//             
//             // 4. paging function
//             function gotoPage(page) {
//                 var dir = page < currentPage ? -1 : 1,
//                     n = Math.abs(currentPage - page),
//                     left = singleWidth * dir * visible * n;
//                 
//                 $wrapper.filter(':not(:animated)').animate({
//                     scrollLeft : '+=' + left
//                 }, 500, function () {
//                     // if page == last page - then reset position
//                     if (page > pages) {
//                         $wrapper.scrollLeft(singleWidth * visible);
//                         page = 1;
//                     } else if (page == 0) {
//                         page = pages;
//                         $wrapper.scrollLeft(singleWidth * visible * pages);
//                     }
//                     
//                     currentPage = page;
//                 });
//             }
//             
//             // 5. insert the back and forward link
// 			$wrapper.after('<a style="opacity: 0.2;" href="#" class="arrow back">&lt;</a><a style="opacity: 0.2;" href="#" class="arrow forward">&gt;</a>');
// 
// 			
// 
// 			jQuery("#infiniteCarousel .arrow").mouseover(function() {
// 				jQuery(this).fadeTo(500, 0.7);
// 			});
// 			
// 			jQuery("#infiniteCarousel .arrow").mouseout(function() {
// 				// setTimeout(function() {
// 					jQuery(this).fadeTo(500, 0.2);
// 				// }, 1000);
// 			});
// 			
// 
//             
//             // 6. bind the back and forward links
//             $('a.back', this).click(function () {
//                 gotoPage(currentPage - 1);
//                 return false;
//             });
//             
//             $('a.forward', this).click(function () {
//                 gotoPage(currentPage + 1);
//                 return false;
//             });
//             
//             $(this).bind('goto', function (event, page) {
//                 gotoPage(page);
//             });
//             
//             // THIS IS NEW CODE FOR THE AUTOMATIC INFINITE CAROUSEL
//             $(this).bind('next', function () {
//                 gotoPage(currentPage + 1);
//             });
//         });
//     };
// })(jQuery);
// 
// $(document).ready(function () {
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest2.jpg\" alt=\"promo-image2\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest3.jpg\" alt=\"promo-image3\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest4.jpg\" alt=\"promo-image4\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest5.jpg\" alt=\"promo-image5\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest6.jpg\" alt=\"promo-image6\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest7.jpg\" alt=\"promo-image7\"/></li>");
// 	jQuery("#infiniteCarousel .wrapper ul").append("<li><img src=\"/assets/images/homepage-carousel/homepagetest8.jpg\" alt=\"promo-image8\"/></li>");
// 	
// 	
//     // THIS IS NEW CODE FOR THE AUTOMATIC INFINITE CAROUSEL
//     var autoscrolling = true;
//     
//     $('#infiniteCarousel').infiniteCarousel().mouseover(function () {
//         autoscrolling = false;
//     }).mouseout(function () {
//         autoscrolling = true;
//     });
//     
//     setInterval(function () {
//         if (autoscrolling) {
//             $('#infiniteCarousel').trigger('next');
//         }
//     }, 5000);
// });
