#!/usr/local/bin/perl -s
use CGI::Carp qw(fatalsToBrowser);
require "COMMONLIB.pl";
if ($ENV{'SCRIPT_NAME'}=~/index2.cgi/) { require "CP2.pl"; } else { require "CP.pl"; }

print "Content-type: text/html\n\n";#!INDX\\n
#print qq~<!-- HTTPS: $ENV{'HTTPS'} -->~;
$root = $ENV{'DOCUMENT_ROOT'};$root=~/^[^\n]*/;	$Root=$&;
$version=qq~2&#46;08~;

$inbuff=
&get_form_data;
&GET_ENV_CONFIG;
&setfields;
&do_me;

sub do_me
{
	if ($Fo{'DO'} eq "SNIP") {	print &GET_SNIPPET; exit; }
	
	&GET_SNIPPET;
	# PORTAL ADMIN: ADD DOMAIN
	if ($Fo_ADD eq "DOMAIN") { $keyname=&ADD_DOMAIN; }
	# START ADPAGE
	elsif ($Fo_START eq "ADPAGE") { $keyname=&START_ADPAGE; }
	# ADD DNS
	elsif ($Fo_ADD eq "DNS") { print &ADD_DNS_RECORD($Fo_domain); exit; }
	# START CLAIM SPECIAL
	elsif ($Fo_START eq "CLAIM_SPECIAL") { $keyname=&START_CLAIM_SPECIAL; }
	# SUBMIT CLAIM SPECIAL
	elsif ($Fo_SUBMIT eq "CLAIM_SPECIAL") { $keyname=&SUBMIT_CLAIM_SPECIAL; }
	# PORTAL ADMIN: VERIFY URLS, BATCH
	elsif ($Fo_RUN eq "CRON") { $keyname=&RUN_CRON; }
	# PORTAL ADMIN: VERIFY URLS, BATCH
	elsif ($Fo_ADMIN eq "VERIFYURLS") { $keyname=&VERIFY_URLS_ADMIN; }
	# PORTAL ADMIN: CHANGE CAT
	elsif ($Fo_ADMIN eq "CHANGE_CAT") { $keyname=&ADMIN_EDIT_CAT; }
	# PORTAL ADMIN: NAVIGATOR
	elsif ($Fo_ADMIN eq "NAV") { $keyname=&ADMIN_NAV; }
	# PORTAL ADMIN: CLAIM SPECIAL
	elsif ($Fo_ADMIN eq "CLAIM_SPECIAL") { $keyname=&ADMIN_CLAIM_SPECIAL; }
	# PORTAL ADMIN: VERIFY URLS, BATCH
	elsif ($Fo_TEST eq "OUTFILE") { &OUTFILE("EN/ztest.htm","$Fo_page_html"); `chmod ugoa+w EN/ztest.htm`; print "written"; exit; }
	# PORTAL ADMIN: VERIFY A SUPERSPLASH ORDER
	elsif ($Fo_ADMIN eq "VERIFYSPLASH") { $keyname=&VERIFY_SPLASH; }
	# GENERATE AJAX PAY BUTTON: BEFORE PAYING FOR SuperSplash
	elsif ($Fo_ajax eq "splashpaybutton") { $keyname=&SPLASH_PAYMENT_AJAX_PAYBUTTON_CLICKED; }
	# GENERATE AJAX PAY BUTTON: BEFORE PAYING FOR AccountSignup
	elsif ($Fo_ajax eq "signuppaybutton") { $keyname=&SIGNUP_PAYMENT_AJAX_PAYBUTTON_CLICKED; }
	# GENERATE AJAX PAY BUTTON: BEFORE PAYING FOR URL
	elsif ($Fo_ajax eq "urlpaybutton") { $keyname=&URL_PAYMENT_AJAX_PAYBUTTON_CLICKED; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL
	elsif ($Fo_pay eq "ok") { $keyname=&CONFIRM_PAYMENT; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM URL ORDER
	elsif ($Fo_pay eq "okurl") { $keyname=&CP_ADD_URL_PAYMENT_COMPLETE; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM SPLASH ORDER FORWARD
	elsif ($Fo_pay eq "oksplashfwd") { &SPLASH_PAYMENT_COMPLETE_FORWARD; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM SPLASH ORDER FORWARD
	elsif ($Fo_pay eq "oksignupfwd") { &SIGNUP_PAYMENT_COMPLETE_FORWARD; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM SPLASH ORDER FORWARD
	elsif ($Fo_pay eq "okurlfwd") { &URL_PAYMENT_COMPLETE_FORWARD; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM SPLASH ORDER
	elsif ($Fo_pay eq "oksplash") { $keyname=&CP_ORDER_SPLASH_PAYMENT_COMPLETE; }
	# COMPLETE PAYMENT: AFTER COMMING BACK FROM PAYPAL FROM SIGNUP TO ACTIVATE ACCOUNT
	elsif ($Fo_pay eq "oksignup") { $keyname=&CP_ORDER_SIGNUP_PAYMENT_COMPLETE; }
	# AJAX_GET_CATS_OPTIONBOX: RETURN OPTIONS FROM PARENT ID
	elsif ($Fo_AJAX eq "DOMS") { $keyname=&AJAX_GET_DOMS_OPTIONBOX; }
	# AJAX_GET_CATS_OPTIONBOX: RETURN OPTIONS FROM PARENT ID
	elsif ($Fo_AJAX eq "CATS") { $keyname=&AJAX_GET_CATS_OPTIONBOX; }
	# ROTATOR SIGNUP: STEP1
	elsif ($Fo_SIGNUP eq "ROTATOR") { $keyname=&SIGNUP_ROTATOR; }
	# ROTATOR CP: ADD DOMAIN
	elsif ($Fo_CP_ADD eq "DOMAIN") { $keyname=&CP_ADD_DOMAIN; }
	# PORTAL ADMIN: DELETE DOMAIN
	elsif ($Fo_DEL eq "DOMAIN") { $keyname=&DELETE_DOMAIN; }
	# PORTAL ADMIN: DELETE DOMAIN
	elsif ($Fo_CP_DEL eq "DOMAIN") { $keyname=&CP_DELETE_DOMAIN; }
	# PORTAL CP: START CONTROL PANEL
	elsif ($Fo_CP eq "DOMAINS") { $keyname=&START_ROTATOR_CP; }
	# PORTAL CP: START SANDBOX
	elsif ($Fo_CP eq "SANDBOX") { $keyname=&CP_SANDBOX; }
	# PORTAL CP: FORGOT PASS
	elsif ($Fo_CP eq "FORGOTPASS") { $keyname=&CP_FORGOT_PASS; }
	# PORTAL CP: START CONTROL PANEL
	elsif ($Fo_CP eq "MY_URLS") { $keyname=&CP_MY_URLS; }
	# PORTAL CP: CREATE PENDING URLSNOTICE
	elsif ($Fo_CP eq "NOTICE") { $keyname=&CP_CREATE_NOTICE; }
	# PORTAL CP: SHOW BANNER PAGE
	elsif ($Fo_CP eq "BANNERS") { $keyname=&CP_BANNERS; }
	# PORTAL CP: TRAFFIC SOURCE
	elsif ($Fo_CP eq "TRAFFIC_SOURCE") { $keyname=&CP_TRAFFIC_SOURCE; }
	# PORTAL CP: START LIST PENDING URLS
	elsif ($Fo_CP eq "PENDING_URLS") { $keyname=&CP_PENDING_URLS; }
	# PORTAL CP: START CONTROL PANEL
	elsif ($Fo_CP eq "START") { $keyname=&START_ROTATOR_CP; }
	# PORTAL CP: VIEW REFERRALS
	elsif ($Fo_CP eq "MY_REFS") { $keyname=&CP_MY_REFS; }
	# ROTATOR CP: TRAFFIC TREE
	elsif ($Fo_CP eq "TRAFFIC_TREE") { $keyname=&CP_TRAFFIC_TREE; }
	# ROTATOR CP: UPDATE PROFILE
	elsif ($Fo_CP eq "UPDATE_PROFILE") { $keyname=&CP_UPDATE_PROFILE; }
	# ROTATOR CP: UPDATE URL AFTER PAYMENT COMPLETE
	elsif ($Fo_CP eq "UPDATE_URL_AFTER_PAYMENT") { $keyname=&CP_UPDATE_URL_AFTER_PAYMENT; }
	# ROTATOR CP: START BUY SPLASH
	elsif ($Fo_CP eq "ORDER_SSPLASH") { $keyname=&CP_START_ORDER_SUPERSPLASH; }
	# ROTATOR CP: CC ORDER PANEL
	elsif ($Fo_CP eq "CC_ORDER") { $keyname=&CP_CC_ORDER; }
	# ROTATOR CP: LOAD SUPERSPLASH PANEL
	elsif ($Fo_CP eq "USSP_STATS") { $keyname=&CP_USSP_STATS; }
	# ROTATOR CP: LOAD SUPERSPLASH PANEL
	elsif ($Fo_CP eq "SUPERSPLASH") { $keyname=&CP_START_SUPERSPLASH; }
	# ROTATOR CP: SUBMIT SETUP SPLASH (after order complete)
	elsif ($Fo_CP eq "SUBMIT_SETUP_SSPLASH") { $keyname=&CP_SUBMIT_SETUP_SUPERSPLASH; }
	# ROTATOR CP: REFRESH TOP STATS 
	elsif ($Fo_CP eq "REFRESH_STATS") { $keyname=&CP_REFRESH_STATS; }
	# ROTATOR CP: SUBMIT DOMAIN
	elsif ($Fo_CP eq "ADD_DOMAIN_SUBMIT") { $keyname=&CP_ADD_DOMAIN_SUBMIT; }
	# ROTATOR CP: BANNER STATS
	elsif ($Fo_CP eq "BANNER_STATS") { $keyname=&CP_BANNER_STATS; }
	# ROTATOR CP: TRAFFIC TREE
	elsif ($Fo_CP eq "START_ADD_URL") { $keyname=&CP_START_ADD_URL; }
	# PORTAL CP: START CONTROL PANEL
	elsif ($Fo_CP_ADD eq "URL") { $keyname=&CP_ADD_URL; }
	# PORTAL ADMIN: LOAD DOMAIN
	elsif ($Fo_LOAD eq "DOMAIN") { $keyname=&LOAD_DOMAIN; }
	# PORTAL ADMIN: LOAD DOMAIN
	elsif ($Fo_LOAD eq "ROTATION") { $keyname=&LOAD_ROTATION; }
	# PORTAL ADMIN: GENERATE DOMAIN ADMIN
	elsif ($Fo_LIST eq "DOMAINS") { $keyname=&LIST_DOMAINS; }
	# PORTAL ADMIN: GENERATE DOMAIN ADMIN
	elsif ($Fo_LIST eq "VPENDING") { $keyname=&LIST_PENDING_URLS; }
	# PORTAL ADMIN: EDIT ROTATION
	elsif ($Fo_ADD eq "ROTATION") { $keyname=&ADD_ROTATION; }
	# ROTATOR CP: EDIT ROTATION
	elsif ($Fo_CP_ADD eq "ROTATION") { $keyname=&CP_ADD_ROTATION; }
	# PORTAL USERS: LOGIN TO ROTATOR
	elsif ($Fo_LOGIN eq "ROTATOR") { $keyname=&LOGIN_ROTATOR; }
	# PORTAL ADMIN: ACTIVATE OR DEACTIVATE ROTATION
	elsif ($Fo_ACTIVATE eq "ROTATION") { $keyname=&ACTIVATE_ROTATION; }
	# PORTAL ADMIN: ACTIVATE OR DEACTIVATE FORWARDING URL FOR A DOMAIN
	elsif ($Fo_ACTIVATE eq "FURL") { $keyname=&ACTIVATE_FURL; }
	# PORTAL CP: ACTIVATE OR DEACTIVATE FORWARDING URL FOR A DOMAIN
	elsif ($Fo_CP_ACTIVATE eq "FURL") { $keyname=&CP_ACTIVATE_FURL; }
	# PORTAL: POST LEAD TO CRM
	elsif ($Fo_DEL eq "ROTATION") { $keyname=&DELETE_ROTATION; }
	# PORTAL: CP DELETE ROTATION FURL
	elsif ($Fo_CP_DEL eq "ROTATION") { $keyname=&CP_DELETE_ROTATION; }
	# PORTAL ADMIN: LOAD DOMAIN
	elsif ($Fo_LOAD eq "ROTATION") { $keyname=&LOAD_ROTATION; }
	#  ADMIN: MANUAL UPDATE SPLASH ROTATORS
	elsif ($Fo_UPDATE eq "SSROTATORS") { &UPDATE_SUPERSPLASH_ROTATORS($Fo_domain); }
	# PORTAL ADMIN: GENERATE DOMAIN ADMIN
	elsif ($Fo_LIST eq "ROTATION") { $keyname=&LIST_ROTATION; }
	# PORTAL ADMIN: GENERATE DOMAIN ADMIN
	elsif ($Fo_CP eq "ROTATION") { $keyname=&LIST_ROTATION_CP; }
	# PORTAL ADMIN: EDIT ROTATION
	elsif ($Fo_create eq "lead") { $keyname=&POST_LEAD_TO_CRM; }
	# FUTURO: DO SIGNUP
	elsif	 ($Fo_SIGNUP eq "GO") { 	$keyname = &DO_SIGNUP; 	}
	# FUTURO: REMOVE EMAIL
	elsif	 ($Fo_remove ne "") { 	$keyname = &FUTURO_OPT_OUT; 	}
	# FUTURO: VIEW PETITION
	elsif	 ($Fo_view eq "petition") { 	$keyname = &VIEW_PETITION; 	}

	elsif ($Fo{'get'} ne "") 
	{
		$keyname=$Fo{'get'};
		# LOOKUP CUSTOM DEFAULT PAGE IF DEFINED IN DB
		($custom_page,$custom_text,$rotator,$crm_id,$pif_tag,$uem_tag,$uep_tag,$upp_tag,$owner_name,$text_2,$domain_id)=split(/\|/, &FECHALL("SELECT homepage,welcome,rotator,crm_id,pif_tag,uem_tag,uep_tag,upp_tag,owner_name,text_2,id FROM domains WHERE domain='$this_domain'"));
		# CHECK TO SEE IF THIS IS A SUPERSPLASH PAGE
		$splash_id=&FECHALL("SELECT id FROM splash WHERE pagename='$Fo{'get'}'");
		# IF SPLASH ID IS NOT EMPTY THEN WE HAVE A FEW THINGS TO DO
		if ($splash_id ne "") 
		{
			# UPDATE SPLASH HITS
			&FECHALL("UPDATE splash SET hits=hits+1 WHERE id=$splash_id");
			# UPDATE ROTATOR HITS FOR THIS PAGE
			&FECHALL("UPDATE rotator SET hits=hits+1 WHERE url LIKE '$this_domain/go/$Fo{'get'}' AND splash_id=$splash_id");
		}
		if ($Fo_userid ne "") 
		{
			&GET_MEMBER_INFO($Fo_userid); 
			&RTLOG("$firstname $lastname IS VIEWING $Fo_get");
		}
	}
	else 
	{ 
		# LOOKUP CUSTOM DEFAULT PAGE IF DEFINED IN DB
		($custom_page,$custom_text,$rotator,$crm_id,$pif_tag,$uem_tag,$uep_tag,$upp_tag,$owner_name,$text_2,$domain_id)=split(/\|/, &FECHALL("SELECT homepage,welcome,rotator,crm_id,pif_tag,uem_tag,uep_tag,upp_tag,owner_name,text_2,id FROM domains WHERE domain='$this_domain'"));

		# IF DOMAIN IS ACTIVE AS A ROTATOR THEN RUN ROTATOR SUB
		if ($rotator > 0) { &RUN_ROTATE($rotator); }

		# IF FOUND, USE IT, OTHERWISE US DEFAULT DEFAULT PAGE, LOL
		if ($custom_page ne "") { $keyname=$custom_page;  }
		else { $keyname="adpage"; }
	}

			$Page = &CAT("EN/$keyname.htm");

						$PAGE=&GREPVARS($Page);
						print $PAGE;

#!			|_____________________________________________________________|#!
}
################################# PORTAL ADMIN FUNCTIONS #############################
################################################################################

sub GET_MEMBER_INFO
{
	$tmpid=$_[0];

	($firstname,$lastname,$userid,$username,$alertpay_email,$moneybookers_email,$paypal_email,$subscription_active,$payment_conf,$sponsor_id,$email,$address,$city,$state,$zip,$suite,$phone,$aim,$skype,$msn,$gmail,$country,$yahoo,$taxid,$userip)=split(/\|/, &FECHALL("SELECT firstname,lastname,id,username,alertpay_email,moneybookers_email,paypal_email,subscription_active,payment_conf,sponsor_id,email,address,city,state,zip,suite,phone,aim,skype,msn,gmail,country,yahoo,taxid,ip FROM users WHERE id=$tmpid"));

		($sponsor_name,$sponsor_id,$sponsor_email,$sponsor_alertpay_email,$sponsor_moneybookers_email,$sponsor_paypal_email)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),id,email,alertpay_email,moneybookers_email,paypal_email FROM users WHERE id = '$sponsor_id' LIMIT 1"));

	# SET DEFAULT PAYMENT EMAILS
	if ($sponsor_alertpay_email eq "") { $sponsor_alertpay_email="multiverse\@futuro.cc"; }
	if ($sponsor_paypal_email eq "") { $sponsor_paypal_email="paypal\@et.ubiee.net"; }
	if ($sponsor_moneybookers_email eq "") { $sponsor_moneybookers_email="chelo\@futuro-group.org"; }

	if ($firstname eq "") { print "THE ACCOUNT ID YOU HAVE SUBMITTED IS INVALID."; exit; }
}
sub RUN_CRON
{
	if ($Fo_ACTION eq "USERS")
	{
		&RTLOG("*** RUNNING TIMER CRON: USERS");
		# REDUCE DAY COUNTS BY 1 FOR USERS
		&FECHALL("UPDATE users SET days_left=days_left - 1 WHERE days_left > 0 AND payment_conf = 1");

		# USERS: FIND ACTIVE SUBSCRIPTIONS THAT HAVE REACHED 0 DAYS, AND RESET BASED ON CYCLE TYPE
		@ZERO_ACTIVE=split(/\n/, &FECHALL("SELECT firstname,lastname,email,id,cycle,pay_date FROM users WHERE payment_conf = 1 AND subscription_active = 1 AND days_left = 0 AND cycle != 'LI'"));
	
		foreach $line (@ZERO_ACTIVE)
		{
			($firstname,$lastname,$email,$tmpid,$cycle,$pay_date)=split(/\|/, $line);

			if ($cycle eq "YR") { $days_left=365; }
			elsif ($cycle eq "2YR") { $days_left=730; }
			elsif ($cycle eq "MO") { $days_left=30; }
			else { $days_left=30; }
	
			&FECHALL("UPDATE users SET days_left=$days_left, cycle_count=cycle_count+1 WHERE id=$tmpid");

			&RTLOG("*** TIMER CRON: RESET $firstname $lastname, $days_left days left, cycle: $cycle, pay date: $pay_date");
		}
		# USERS: FIND INACTIVE SUBSCRIPTIONS AT 0 DAYS AND CHANGE PAY STATUS TO FREE
		@ZERO_INACTIVE=split(/\n/, &FECHALL("SELECT firstname,lastname,email,id,cycle,pay_date FROM users WHERE payment_conf = 1 AND subscription_active = 0 AND days_left = 0 AND cycle != 'LI'"));

		foreach $line (@ZERO_INACTIVE)
		{
			($firstname,$lastname,$email,$tmpid,$cycle,$pay_date)=split(/\|/, $line);

			# RESET PAYMENT STATUS IN USERS TO FREE
			&FECHALL("UPDATE users SET days_left=0, cycle_count=0, payment_conf=0 WHERE id=$tmpid");
			# FIND URLS BY THIS USER AND SET TO INACTIVE
			&FECHALL("UPDATE rotator SET active = 0 WHERE users_id=$tmpid");

			&RTLOG("*** TIMER CRON: CANCELLED $firstname $lastname, cycle: $cycle, pay date: $pay_date");
		}
	}
	#######################################################
	if ($Fo_ACTION eq "URLS")
	{
		# REDUCE DAY COUNTS BY 1 FOR URLS
		&FECHALL("UPDATE rotator SET days_left=days_left - 1 WHERE days_left > 0 AND subscription_active = 1");
	
		# ROTATOR: FIND ACTIVE SUBSCRIPTIONS THAT HAVE REACHED 0 DAYS, AND RESET BASED ON CYCLE TYPE
		@ZERO_ACTIVE=split(/\n/, &FECHALL("SELECT id,cycle FROM rotator WHERE subscription_active = 1 AND days_left = 0 AND cycle != 'LI' AND users_id > 0 AND splash_id = 0"));
	
		foreach $line (@ZERO_ACTIVE)
		{
			($tmpid,$cycle)=split(/\|/, $line);
	
			if ($cycle eq "YR") { $days_left=365; }
			elsif ($cycle eq "2YR") { $days_left=730; }
			elsif ($cycle eq "MO") { $days_left=30; }
			else { $days_left=30; }
	
			&FECHALL("UPDATE rotator SET days_left=$days_left, cycle_count=cycle_count+1 WHERE id=$tmpid");
		}
		# ROTATOR: FIND INACTIVE SUBSCRIPTIONS AT 0 DAYS AND CHANGE STATUS TO INACTIVE
		@ZERO_INACTIVE=split(/\n/, &FECHALL("SELECT id FROM users WHERE payment_conf = 1 AND subscription_active = 0 AND days_left = 0 AND cycle != 'LI'"));
	
		foreach $line (@ZERO_INACTIVE)
		{
			&FECHALL("UPDATE users SET days_left=0, cycle_count=0, payment_conf=0 WHERE id=$tmpid");
		}
	}
}
sub GET_SPECIALS_BOX
{
	$program=$_[0];

	($special,$special_id)=split(/\|/, &FECHALL("SELECT special,id FROM specials WHERE today=1 AND selected=0 AND program='$program'"));

	# IF THERE IS NO SPECIAL, RETURN, ELSE GENERATE BOX
	if ($special eq "") { return; }
	else
	{
		$special_box=&SIMPLEGREP(&CAT("EN/special_box.htm"));
	}
	return $special_box;
}
sub START_CLAIM_SPECIAL
{
	&GET_MEMBER_INFO($Fo_userid);
	$special=&FECHALL("SELECT special FROM specials WHERE id=$Fo_special_id");
	return "claim_special";
}
sub SUBMIT_CLAIM_SPECIAL
{
	&GET_MEMBER_INFO($Fo_userid);

	# DETECT IF THE PAY METHOD SELECTED IS AVALABLE, IF NOT, RETURN MESSAGE TO ADD TO PROFILE
	if ($Fo_paymethod eq "paypal")
	{
		if ($paypal_email eq "") { return "claim_special_no_payinfo"; }
	}
	elsif ($Fo_paymethod eq "alertpay")
	{
		if ($alertpay_email eq "") { return "claim_special_no_payinfo"; }
	}
	elsif ($Fo_paymethod eq "moneybookers")
	{
		if ($moneybookers_email eq "") { return "claim_special_no_payinfo"; }
	}

	($special,$program)=split(/\|/, &FECHALL("SELECT special,program FROM specials WHERE id=$Fo_special_id"));

	# CALC CURRENT SS PRICE
	$ss_current_price=$tot_domains * .5;

	# NOTIFY ADMINS THAT THE PAY BUTTON WAS CLICKED

	# SEND A LETTER TO ADMIN1
	&sendmail($tmp_firstname,"rotatorpro\@ceo.a-url.com","ADMIN: $firstname $lastname CLAIM SPECIAL BUTTON CLICKED","claim_special_admin_email");

	# SEND A LETTER TO ADMIN2
	&sendmail($tmp_firstname,"rotatorpro\@joe.a-url.com","ADMIN: $firstname $lastname CLAIM SPECIAL BUTTON CLICKED.","claim_special_admin_email");

	return "claim_special_complete";
}
sub ADMIN_CLAIM_SPECIAL
{
	&FECHALL("UPDATE specials SET selected=1 WHERE id=$Fo_special_id");
	($special,$program)=split(/\|/, &FECHALL("SELECT special,program FROM specials WHERE id=$Fo_special_id"));

	print qq~The following special: $special <br>FOR $program <br> Has now been marked as selected~;
	exit;
}
sub START_ADPAGE
{
	return "rotator_signup_step1";
}
sub SPLASH_PAYMENT_AJAX_PAYBUTTON_CLICKED
{
	# FECH HTML FOR PAYMENT BUTTON, AND LOOK UP MEMBER INFO, THEN RETURN RESULTS GREPPED TO AJAX
	&GET_MEMBER_INFO($Fo_userid);
	$tmphtm=&CAT("EN/$Fo_get.htm");
	$Fo_current_price=~s/,/./gi;
	print &SIMPLEGREP($tmphtm);

	# NOTIFY ADMINS THAT THE PAY BUTTON WAS CLICKED

	# SEND A LETTER TO ADMIN1
	&sendmail($tmp_firstname,"rotatorpro\@ceo.a-url.com","ADMIN: $firstname $lastname SUPERSPLASH PAYMENT BUTTON CLICKED","supersplash_paymentbutton_clicked_admin_notice");

	# SEND A LETTER TO ADMIN2
	&sendmail($tmp_firstname,"rotatorpro\@joe.a-url.com","ADMIN: $firstname $lastname SUPERSPLASH PAYMENT BUTTON CLICKED.","supersplash_paymentbutton_clicked_admin_notice");

	# GET OUT BECAUSE WE REALLY ARE DONE NOW.
	exit;
}
sub SIGNUP_PAYMENT_AJAX_PAYBUTTON_CLICKED
{
	# FECH HTML FOR PAYMENT BUTTON, AND LOOK UP MEMBER INFO, THEN RETURN RESULTS GREPPED TO AJAX
	&GET_MEMBER_INFO($Fo_userid);
	$tmphtm=&CAT("EN/$Fo_get.htm");
	print &SIMPLEGREP($tmphtm);

	# NOTIFY ADMINS THAT THE PAY BUTTON WAS CLICKED

	# SEND A LETTER TO ADMIN1
	&sendmail($tmp_firstname,"rotatorpro\@ceo.a-url.com","ADMIN: $firstname $lastname CONTROL PANEL SIGNUP  PAYMENT BUTTON CLICKED","signup_cp_paymentbutton_clicked_admin_notice");

	# SEND A LETTER TO ADMIN2
	&sendmail($tmp_firstname,"rotatorpro\@joe.a-url.com","ADMIN: $firstname $lastname CONTROL PANEL SIGNUP  PAYMENT BUTTON CLICKED.","signup_cp_paymentbutton_clicked_admin_notice");

	# GET OUT BECAUSE WE REALLY ARE DONE NOW.
	exit;
}
sub URL_PAYMENT_AJAX_PAYBUTTON_CLICKED
{
	# FECH HTML FOR PAYMENT BUTTON, AND LOOK UP MEMBER INFO, THEN RETURN RESULTS GREPPED TO AJAX
	&GET_MEMBER_INFO($Fo_userid);
	$tmphtm=&CAT("EN/$Fo_get.htm");
	print &SIMPLEGREP($tmphtm);

	# NOTIFY ADMINS THAT THE PAY BUTTON WAS CLICKED

	# SEND A LETTER TO ADMIN1
#	&sendmail($tmp_firstname,"rotatorpro\@ceo.a-url.com","ADMIN: $firstname $lastname URL  PAYMENT BUTTON CLICKED","signup_cp_paymentbutton_clicked_admin_notice");

	# SEND A LETTER TO ADMIN2
#	&sendmail($tmp_firstname,"rotatorpro\@joe.a-url.com","ADMIN: $firstname $lastname URL  PAYMENT BUTTON CLICKED.","signup_cp_paymentbutton_clicked_admin_notice");

	# GET OUT BECAUSE WE REALLY ARE DONE NOW.
	exit;
}
sub SPLASH_PAYMENT_COMPLETE_FORWARD
{
	# PAYMENT CONFIRMED BUT THE CONFIRM URL USES MOD REWRITE, SO JUMP OVER TO STANDARD URL...
	print qq~<META HTTP-EQUIV="refresh" content="0;URL=$SCRIPTURL?pay=oksplash&userid=$Fo_userid&paymethod=$Fo_paymethod&payamt=$Fo_payamt">~; exit; 
}
sub SIGNUP_PAYMENT_COMPLETE_FORWARD
{
	# PAYMENT CONFIRMED BUT THE CONFIRM URL USES MOD REWRITE, SO JUMP OVER TO STANDARD URL...
	print qq~<META HTTP-EQUIV="refresh" content="0;URL=$SCRIPTURL?pay=oksignup&userid=$Fo_userid&paymethod=$Fo_paymethod&payamt=$Fo_payamt&cycle=$Fo_cycle">~; exit; 
}
sub URL_PAYMENT_COMPLETE_FORWARD
{
	# PAYMENT CONFIRMED BUT THE CONFIRM URL USES MOD REWRITE, SO JUMP OVER TO STANDARD URL...
	print qq~<META HTTP-EQUIV="refresh" content="0;URL=$SCRIPTURL?pay=okurl&userid=$Fo_userid&paymethod=$Fo_paymethod&urlid=$Fo_urlid&cycle=$Fo_cycle">~; exit; 
}
sub ADMIN_NAV
{
	if ($Fo_ACTION eq "MAIN_PANEL")
	{
		$admin_cat_tree=&CREATE_CAT_LIST_ADMIN;
		return "rotator_admin_nav_panel";
	}
	elsif ($Fo_ACTION eq "CHANGE_SETTING")
	{
		if ($Fo_SETTING eq "PUB")
		{
			if ($Fo_VAL eq "1")
			{
				&FECHALL("UPDATE domains SET pub=1 WHERE id=$Fo_dom_id");

				print qq~<a href="#" onclick="ajax_loadContent('pub_$Fo_dom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=PUB&amp;dom_id=$Fo_dom_id&amp;VAL=0');return false">YES</a>~;
			}
			elsif ($Fo_VAL eq "0")
			{
				&FECHALL("UPDATE domains SET pub=0 WHERE id=$Fo_dom_id");

				print qq~<a href="#" onclick="ajax_loadContent('pub_$Fo_dom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=PUB&amp;dom_id=$Fo_dom_id&amp;VAL=1');return false">NO</a>~;
			}
		}
		elsif ($Fo_SETTING eq "ROT")
		{
			if ($Fo_VAL eq "1")
			{
				&FECHALL("UPDATE domains SET rotator=1 WHERE id=$Fo_dom_id");

				print qq~<a href="#" onclick="ajax_loadContent('rot_$Fo_dom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=ROT&amp;dom_id=$Fo_dom_id&amp;VAL=0');return false"><font color="#009900">ON<font></a>~;
			}
			elsif ($Fo_VAL eq "0")
			{
				&FECHALL("UPDATE domains SET rotator=0 WHERE id=$Fo_dom_id");

				print qq~<a href="#" onclick="ajax_loadContent('rot_$Fo_dom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=ROT&amp;dom_id=$Fo_dom_id&amp;VAL=1');return false"><font color="#FF0000">OFF<font></a>~;
			}
		}

	}
	elsif ($Fo_ACTION eq "DELETE_URL")
	{
		&FECHALL("DELETE FROM rotator WHERE id=$Fo_urlid");
		exit;
	}
	elsif ($Fo_ACTION eq "LIST_URLS")
	{
		@SOURCELIST=split(/\n/, &FECHALL("SELECT hits,url,id,users_id,active,verified,date_added,paid_with FROM rotator WHERE domains_id = '$Fo_dom_id'  ORDER BY hits DESC"));

		$rotator_title=&FECHALL("SELECT rotator_title FROM domains WHERE domain='$Fo_domain' LIMIT 1");

		foreach $item (@SOURCELIST)
		{
			($urp_hits,$urp_url,$urlid,$users_id,$active,$verified,$date_added,$paid_with)=split(/\|/, $item);

			# SET VSTAT
			if ($verified == 1) { $vstat=qq~<font color=#009900>VERIFIED</font>~; }
			else { $vstat=qq~<font color=#990000>NOT VERIFIED</font>~; }

			# GET OWNER AND SPONSOR
			if ($users_id != 0) 
			{ 
				($sponsor_id,$owner_name)=split(/\|/, &FECHALL("SELECT sponsor_id,concat(firstname,' ',lastname) FROM users WHERE id=$users_id"));
				$sponsor_name=&FECHALL("SELECT concat(firstname,' ',lastname) FROM users WHERE id=$sponsor_id");
			}
			else { $owner_name=qq~<i>UBIEE HQ</i>~; }

			if ($active==0) { $inactive_class="white_red_right"; }
			else { $inactive_class=""; }

			$disp_url=$urp_url;
			$disp_url=~s/(............................................................).+/$1.../g;

			# GENERATE TRAFFIC SOURCE DOM REF  URL LIST
			$tmp=&CAT("EN/rotator_admin_nav_urp_urls_list.htm");
			$sourcelist.=&SIMPLEGREP($tmp);
#			$sourcelist.=qq~($urp_hits) <a href="#edit" onclick="ajax_loadContent('edit','$SCRIPTURL?ADMIN=CHANGE_CAT&amp;urlid=$urlid&amp;TMPL=template_blank');return false">$urp_url</a><br>~;
		}
		return "rotator_admin_nav_urp_urls";
	}
	elsif ($Fo_ACTION eq "MAIL")
	{
		if ($Fo_DO eq "SEND")
		{
			if ($Fo_mode eq "preview")
			{
				print $Fo_html;
				exit;
			}

			if ($Fo_mode eq "test") 
			{ $limit="LIMIT 10"; }

			@LIST=split(/\n/, &FECHALL("SELECT firstname,lastname,email,sponsor_id,id,subscription_active,payment_conf FROM users $limit"));

			foreach $line (@LIST)
			{
				($firstname,$lastname,$email,$sponsor_id,$id,$subscription_active,$payment_conf)=split(/\|/, $line);

				if ($subscription_active == 1) { $paystatus = "PAID"; } else { $paystatus = "FREE"; }

				($sponsor_name,$sponsor_email)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),email FROM users WHERE id=$sponsor_id"));

				if ($Fo_mode eq "test") 
				{ $email=$Fo_test_email; }

				$tmphtm=&SIMPLEGREP($Fo_html);
				$tmpsubject=&SIMPLEGREP($Fo_subject);
#				$tmphtm=~s~(U)(B)(I)(E)(E)~<font color="blue">$1</font><font color="red">$2</font><font color="green">$3</font><font color="#ffcc00">$4</font><font color="#0099ff">$5</font>~g;

				$mailprogram = "/usr/lib/sendmail -t";
				my $type = qq!Mime-Version: 1.0\nContent-Type: text/html; charset="us-ascii"\n!;
					open (MAIL, "|$mailprogram") || die "Can't open $mailprogram!\n";
#					print MAIL "To: $firstname $lastname <joe\@joe.a-url.com>\n";
					print MAIL "To: $firstname $lastname <$email>\n";
					print MAIL "From: UBIEE RotatorPRO <URP_reply\@ceo.a-url.com>\n";
					print MAIL "Subject: $tmpsubject\n";
					print MAIL "${type}\n";
					print MAIL "$tmphtm\n";
					close(MAIL);

				print qq~Sent to $firstname $lastname - $email<br>~;
			}
			print "sending whoooooo weeeee.....................";
			exit;
		}
		else {	return "rotator_admin_nav_mail";	}
	}
	else
	{
		return "rotator_admin_nav_panel_top";
	}
}
sub ADMIN_EDIT_CAT
{
		$turl=&FECHALL("SELECT url FROM rotator WHERE id = $Fo_urlid");

		if ($Fo_ACTION eq "UPDATE_CAT")
		{
			&FECHALL("UPDATE rotator SET domains_id='$Fo_dom_id' WHERE id=$Fo_urlid");
			return "rotator_admin_select_cat_success_message";
		}
		else
		{
			if ($Fo_showlevel eq "doms")
			{
				@DOMLIST=split(/\n/, &FECHALL("SELECT id,domain,rotator_title FROM domains WHERE cat_id='$Fo_parent_id'"));
	
				foreach $item (@DOMLIST)
				{
					($dom_id,$dom_name,$dom_title)=split(/\|/, $item);
	
					# GENERATE SELECT DOMAIN LIST
					$domlist.=qq~<a href="#" onclick="ajax_loadContent('edit','$SCRIPTURL?ADMIN=CHANGE_CAT&amp;ACTION=UPDATE_CAT&amp;&amp;dom_id=$dom_id&amp;urlid=$Fo_urlid&amp;TMPL=template_blank');return false">$dom_title</a> <br><font size=1>$dom_name</font><br>~;
				}
				return "rotator_admin_select_cat_doms";
			}
			elsif ($Fo_showlevel eq "1")
			{
				@CATLIST=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE parent_id='$Fo_parent_id'"));
	
				foreach $item (@CATLIST)
				{
					($cat_id,$cat_title)=split(/\|/, $item);
	
					# LOOK AHEAD TO SEE IF DOMAINS ARE IN THAT CAT
					$domcount=&FECHALL("SELECT count(*) FROM domains WHERE cat_id=$cat_id");
	
					if ($domcount == 0)
					{
						# GENERATE SELECT LINK
						$catlist.=qq~<font color="#888888">$cat_title <i>(0)</i></font><br>~;
					}
					else
					{
						# GENERATE SELECT LINK
						$catlist.=qq~<a href="#" onmouseover="ajax_loadContent('select_cat_doms','$SCRIPTURL?ADMIN=CHANGE_CAT&amp;ACTION=EDIT_CAT&amp;showlevel=doms&amp;parent_id=$cat_id&amp;userid=$Fo_userid&amp;urlid=$Fo_urlid&amp;TMPL=template_blank');return false">$cat_title</a><i>&nbsp;($domcount)</i> <br>~;
					}
				}
				return "rotator_admin_select_cat_l1";
			}
			else 
			{
				@CATLIST=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE parent_id='0'"));
	
				foreach $item (@CATLIST)
				{
					($cat_id,$cat_title)=split(/\|/, $item);
	
					# GENERATE SELECT LINK LIST
					$catlist.=qq~<a href="#" onmouseover="ajax_loadContent('select_cat_l1','$SCRIPTURL?ADMIN=CHANGE_CAT&amp;ACTION=EDIT_CAT&amp;showlevel=1&amp;parent_id=$cat_id&amp;urlid=$Fo_urlid&amp;TMPL=template_blank');ajax_loadContent('select_cat_doms','./blank.htm');return false">$cat_title</a><br>~;
				}
	
				return "rotator_admin_change_cat";
			}
		}
}
sub CREATE_CAT_LIST_ADMIN
{
	$li_output=&CAT("EN/rotator_traffic_tree_head.htm");	
	$li_output=~s/\$([a-z0-9_]+)/$$1/gmi;

	$li_output.= qq~<ul class="mktree" id="tree1">~;

	@CATSL1=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level=0"));
	
		foreach $li_item (@CATSL1)
		{
				($li_cat_id,$li_cat_title)=split(/\|/, $li_item);
				$li_domcount=&FECHALL("SELECT count(*) FROM cats WHERE parent_id='$li_cat_id'");
				$li_cat_title.=" ($li_domcount)";
	
				$li_output.= qq~<li><b><font color="#000066" size="2">$li_cat_title</font></b>\n<ul>~;
	
				@CATSL2=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level=1 AND parent_id=$li_cat_id"));
	
				foreach $li_item (@CATSL2)
				{
						($li_cat_id,$li_cat_title)=split(/\|/, $li_item);
						$li_domcount=&FECHALL("SELECT count(*) FROM domains WHERE cat_id='$li_cat_id'");
						$li_cat_title.=" ($li_domcount)";
						$li_output.= qq~\t<li><b><font color="#006600" size="1">$li_cat_title</font></b>\n<ul>~;
	
						@DOMS=split(/\n/, &FECHALL("SELECT domain,rotator_title,id FROM domains WHERE cat_id=$li_cat_id"));
	
						foreach $li_item (@DOMS)
						{
								($li_domain,$li_rotator_title,$li_dom_id)=split(/\|/, $li_item);
								$li_urlcount=&FECHALL("SELECT count(*) FROM rotator WHERE domains_id='$li_dom_id'");
								$li_output.= qq~\t\t<li>($li_urlcount) <a href="#" onclick="ajax_loadContent('info','$SCRIPTURL?ADMIN=NAV&amp;ACTION=LIST_URLS&amp;dom_id=$li_dom_id&amp;domain=$li_domain&amp;TMPL=template_blank');return false">$li_domain</a> - $li_rotator_title<ul>\n~;
	
#								@URLS=split(/\n/, &FECHALL("SELECT url,hits FROM rotator WHERE domains_id=$li_dom_id AND verified = 1"));
	
								foreach $li_item (@URLS)
								{
										($li_url,$li_hits)=split(/\|/, $li_item);
										$li_output.= qq~\t\t\t<li>($li_hits) <a href="http://$li_url" target=_blank>$li_url</a></li>\n~;
								}
						$li_output.= "</ul></li>";
						}
				$li_output.= "</ul></li>";
				}
		$li_output.= "</ul></li>";
		}
	$li_output.= "</ul>";
		
	return $li_output;
}
sub CREATE_CAT_LIST
{
	$li_output=&CAT("EN/rotator_traffic_tree_head.htm");	
	$li_output=~s/\$([a-z0-9_]+)/$$1/gmi;

	$li_output.= qq~<ul class="mktree" id="tree1">~;

	@CATSL1=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level=0"));
	
		foreach $li_item (@CATSL1)
		{
				($li_cat_id,$li_cat_title)=split(/\|/, $li_item);
				$li_domcount=&FECHALL("SELECT count(*) FROM cats WHERE parent_id='$li_cat_id'");
				$li_cat_title.=" ($li_domcount)";
	
				$li_output.= qq~<li><b><font color="#000066" size="2">$li_cat_title</font></b>\n<ul>~;
	
				@CATSL2=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level=1 AND parent_id=$li_cat_id"));
	
				foreach $li_item (@CATSL2)
				{
						($li_cat_id,$li_cat_title)=split(/\|/, $li_item);
						$li_domcount=&FECHALL("SELECT count(*) FROM domains WHERE cat_id='$li_cat_id'");
						$li_cat_title.=" ($li_domcount)";
						$li_output.= qq~\t<li><b><font color="#006600" size="1">$li_cat_title</font></b>\n<ul>~;
	
						@DOMS=split(/\n/, &FECHALL("SELECT domain,rotator_title,id FROM domains WHERE cat_id=$li_cat_id"));
	
						foreach $li_item (@DOMS)
						{
								($li_domain,$li_rotator_title,$li_dom_id)=split(/\|/, $li_item);
								$li_urlcount=&FECHALL("SELECT count(*) FROM rotator WHERE domains_id='$li_dom_id'");
								$li_output.= qq~\t\t<li>($li_urlcount) <a href="http://$li_domain" target=_blank>$li_domain</a> - $li_rotator_title<ul>\n~;
	
								@URLS=split(/\n/, &FECHALL("SELECT url,hits FROM rotator WHERE domains_id=$li_dom_id AND verified = 1"));
	
								foreach $li_item (@URLS)
								{
										($li_url,$li_hits)=split(/\|/, $li_item);
										$li_output.= qq~\t\t\t<li>($li_hits) <a href="http://$li_url" target=_blank>$li_url</a></li>\n~;
								}
						$li_output.= "</ul></li>";
						}
				$li_output.= "</ul></li>";
				}
		$li_output.= "</ul></li>";
		}
	$li_output.= "</ul>";
		
	return $li_output;
}
sub VERIFY_URLS_ADMIN
{
	&parse_checkboxes;

	# PULL THE VERIFIED IDS OUT OF EACH CHECK BOX
	foreach $tmp_urlid (@verify)
	{
		# GET USERID AND URL FOR THIS URL ID
		($tmp_userid,$tmp_url,$tmp_domid)=split(/\|/, &FECHALL("SELECT users_id,url,domains_id FROM rotator WHERE id=$tmp_urlid"));
		($tmp_domain,$cat_id,$tmp_title)=split(/\|/, &FECHALL("SELECT domain,cat_id,rotator_title FROM domains WHERE id=$tmp_domid"));

		# MAKE SURE THAT THIS ROTATOR IS TURNED ON.
		&FECHALL("UPDATE domains SET rotator=1 WHERE id=$tmp_domid");

		($tcatL2title,$parent_id)=split(/\|/, &FECHALL("SELECT title,parent_id FROM cats WHERE id=$cat_id"));
		$tcatL1title=&FECHALL("SELECT title FROM cats WHERE id=$parent_id");

		# GET USER DETAILS
		($tmp_firstname,$tmp_lastname,$tmp_email,$tmp_sponsor_id)=split(/\|/, &FECHALL("SELECT firstname,lastname,email,sponsor_id FROM users WHERE id=$tmp_userid"));
		($sponsor_name,$sponsor_email,$sponsor_alertpay_email,$sponsor_moneybookers_email,$sponsor_paypal_email)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),email,alertpay_email,moneybookers_email,paypal_email FROM users WHERE id = '$tmp_sponsor_id' LIMIT 1"));

		# UPDATE URL TO BE ACTIVE
		&FECHALL("UPDATE rotator SET verified=1,active=1 WHERE id=$tmp_urlid");

			# SEND A LETTER TO URL SUBITTER
			&sendmail($tmp_firstname,$tmp_email,"$tmp_firstname $tmp_lastname Your UBIEE RotatorPRO URL has been verified and is now active.","rotator_verify_url_success_email");
	
			# SEND A LETTER TO ADMIN1
			&sendmail($tmp_firstname,"rotatorpro\@ceo.a-url.com","$tmp_firstname $tmp_lastname Your UBIEE RotatorPRO URL has been verified and is now active.","rotator_verify_url_success_email");
	
			# SEND A LETTER TO ADMIN2
			&sendmail($tmp_firstname,"rotatorpro\@joe.a-url.com","$tmp_firstname $tmp_lastname Your UBIEE RotatorPRO URL has been verified and is now active.","rotator_verify_url_success_email");
	}
	return &LIST_PENDING_URLS;
}
sub VERIFY_SPLASH
{
	# FIRST, GET THE SPLASH INFO.
	($pagename,$domains_id,$userid,$splash_rotator_domain)=split(/\|/, &FECHALL("SELECT splash.pagename,splash.domains_id,splash.users_id,domains.domain FROM splash,domains WHERE splash.id=$Fo_splash_id AND domains.id=splash.domains_id"));

	if ($pagename eq "") { print "error, splash id not found."; exit; }
	else 
	{
		&GET_MEMBER_INFO($userid);

		print "FOUND PENDING ORDER FOR $firstname $lastname<br>";
		# ACTIVATE ROTATOR FOR THIS DOMAIN
		print "ACTIVATING ROTATOR FOR $splash_rotator_domain<br>";
		&FECHALL("UPDATE domains SET rotator = 1 WHERE id=$domains_id");

		# UPDATE VERIFIED STATUS IN SPLASH TABLE
		&FECHALL("UPDATE splash SET verified = 1 WHERE id=$Fo_splash_id");

		# RENAME THE FILE
		`mv EN/pending_splash_$pagename.htm EN/$pagename.htm`;
		print "REMOVING TEMP FILE, NEW FILE STORED IN EN/$pagename.htm<br><br>";
		
		# GET A LIST OF ALL DOMAINS CURRENTLY IN THE SYSTEM
		@DOMS=split(/\n/, &FECHALL("SELECT domain FROM domains"));
		# FOR EACH DOMAIN CREATE A ROTATOR URL IN THE SPECIFIED SPLASH DOMAIN
		foreach $domain (@DOMS)
		{
			print "SPLASH PAGE SETUP AT  http://$domain/go/$pagename<br>";

			$pagelist.=qq~SPLASH PAGE SETUP AT  <a href="http://$domain/go/$pagename">http://$domain/go/$pagename</a><br>~;

			&FECHALL("INSERT INTO rotator (domains_id,users_id,splash_id,active,verified,url) VALUES ('$domains_id','$userid','$Fo_splash_id','1','1','$domain/go/$pagename')");
		}
		# SEND A LETTER TO USER
		&sendmail($firstname,$email,"$firstname $lastname Your RotatorPRO has been set up on $tot_domains domains!","supersplash_setup_complete_email");

		# SEND A LETTER TO ADMIN1
		&sendmail($firstname,"rotatorpro\@ceo.a-url.com","$firstname $lastname Your RotatorPRO has been set up on $tot_domains domains!","supersplash_setup_complete_email");

		# SEND A LETTER TO ADMIN1
		&sendmail($firstname,"rotatorpro\@joe.a-url.com","$firstname $lastname Your RotatorPRO has been set up on $tot_domains domains!","supersplash_setup_complete_email");
	}
}
sub LIST_PENDING_URLS
{
	$verify_table=&ROTATION_TABLE_UNVERIFIED_ADMIN;
	return "rotator_admin_verify_urls";
}
sub CONFIRM_PAYMENT
{
	# CHECK TO ENSURE THAT ID EXISTS AND IS INACTIVE
	&GET_MEMBER_INFO($Fo_userid);

	if ($subscription_active eq "0")
	{
		# IF SO, ACTIVATE, EMAIL, AND RETURN SUCCESS PAGE
		&FECHALL("UPDATE users SET subscription_active=1,payment_conf=1,paid_with='$Fo_paymethod',days_left=30 WHERE id=$userid");
		return "rotator_main_payment_confirmed";
	}
	else { return "rotator_main_payment_confirmed_fail"; }
}
sub AJAX_GET_DOMS_OPTIONBOX
{
	@OPTIONS=split(/\n/, &FECHALL("SELECT id,domain,rotator_title FROM domains WHERE cat_id='$Fo_parent_id' AND pub=1"));

	foreach $item (@OPTIONS)
	{
		($optionValue,$optionDisplay,$rotator_title)=split(/\|/, $item);
		$optionDisplay.=" - $rotator_title";
		$output.=qq~{optionValue: $optionValue, optionDisplay: '$optionDisplay'}, ~;
		$tmpcount++;
	}
#		$output.=qq~{optionValue: 'new', optionDisplay: '=== START NEW ROTATOR HERE ==='}~;

	# STRIP TRAILING COMMA
	$output=~s/, $//g;
	print "[$output]";
	exit;
}
sub AJAX_GET_CATS_OPTIONBOX
{
	@OPTIONS=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE parent_id='$Fo_parent_id'"));

	foreach $item (@OPTIONS)
	{
		($optionValue,$optionDisplay)=split(/\|/, $item);
		$domcount=&FECHALL("SELECT count(*) FROM domains WHERE cat_id='$optionValue' AND pub=1");
		$optionDisplay.=" ($domcount)";
		$output.=qq~{optionValue: $optionValue, optionDisplay: '$optionDisplay'}, ~;
	}
	# STRIP TRAILING COMMA
	$output=~s/, $//g;
	print "[$output]";
	exit;
}
sub SIGNUP_ROTATOR
{
		# SIGNUP FORM VALIDATION - SERVER SIDE
		if ($Fo_firstname=~/\w+/i) {}
		else { $MSG.="FIRST NAME NOT COMPLETE<BR>"; }

		if ($Fo_lastname=~/\w+/i) {}
		else { $MSG.="LAST NAME NOT COMPLETE<BR>"; }

		if ($Fo_email=~/\w+\@\w+/i) {}
		else { $MSG.="EMAIL INCORRECT<BR>"; }

		$check_email=&FECHALL("SELECT email FROM users WHERE email='$Fo_email'");
		if ($check_email ne "") { $MSG.="EMAIL ALREADY IN DATABASE<BR>"; }

		$check_user=&FECHALL("SELECT username FROM users WHERE username='$Fo_username'");
		if ($check_user ne "") { $MSG.="USERNAME ALREADY IN DATABASE<BR>"; }

		if ($MSG=~/[a-z]+/i)
		{
			$error_message=qq|<table width="80%" border="3" cellpadding="0" cellspacing="0" bordercolor="#FFFF00" bgcolor="#FF0000">   <tr>     <td width="16%" bgcolor="#FFFFFF"><div align="center"><font color="#FFFF00" face="Courier New, Courier, mono"><img src="http://pifbc.com/IMG/STOP.gif" width="72" height="72"></font></div></td>     <td width="84%"><div align="center"><font color="#FFFF00" face="Courier New, Courier, mono"><strong>$MSG</strong></font></div></td>   </tr> </table>|;
			&RTLOG("SIGNUP FORM ERROR - $Fo_firstname $Fo_lastname - $MSG");

			$vimg=&IMAGE_VALIDATE_CREATE;
			return "rotator_signup_step1";
		}
		else
		{
			&FECHALL("INSERT INTO users (firstname,lastname,email,username,password,paypal_email,alertpay_email,moneybookers_email,signup_date,sponsor_id) VALUES ('$Fo_firstname','$Fo_lastname','$Fo_email','$Fo_username','$Fo_password','$Fo_paypal_email','$Fo_alertpay_email','$Fo_moneybookers_email','$signup_date','$sponsor_id')");

			$userid=&FECHALL("SELECT max(id) FROM users");
		}
		# FECH THE DOMAIN ID CURRENTLY SET TO BE THE URP ROTATOR
		$urp_rotator_domain_id=&FECHALL("SELECT id FROM domains WHERE urp_rotator=1 LIMIT 1");

		# INSERT A RECORD INTO ROTATOR TO ADD THIS AFFLIATE LINK TO THE URP ROTATOR 
		&FECHALL("INSERT INTO rotator (domains_id,users_id,verified,date_added,url,active) VALUES ('$urp_rotator_domain_id','$userid','1','$signup_date','$this_domain/tag/$Fo_username','1')");

		# GET SPONSOR INFO
		($sponsor_firstname,$sponsor_lastname,$sponsor_id,$sponsor_email,$sponsor_alertpay_email,$sponsor_moneybookers_email,$sponsor_paypal_email)=split(/\|/, &FECHALL("SELECT firstname,lastname,id,email,alertpay_email,moneybookers_email,paypal_email FROM users WHERE id = '$sponsor_id' LIMIT 1"));
		
		# SEND A LETTER TO RECIPIENT
		&sendmail($Fo_firstname,$Fo_email,"$Fo_firstname $Fo_lastname Your UBIEE RotatorPRO Account Info","rotator_signup_email");

			# SEND A LETTER TO ADMIN1
			&sendmail($Fo_firstname,"rotatorpro\@joe.a-url.com","$Fo_firstname $Fo_lastname Your UBIEE RotatorPRO Account Info","rotator_signup_email");
	
			# SEND A LETTER TO ADMIN2
			&sendmail($Fo_firstname,"rotatorpro\@ceo.a-url.com","$Fo_firstname $Fo_lastname Your UBIEE RotatorPRO Account Info","rotator_signup_email");

		# SEND A LETTER TO SPONSOR
		&sendmail($sponsor_firstname,$sponsor_email,"Attention $sponsor_firstname, You have a NEW UBIEE RotatorPRO Member","rotator_sponsor_signup_email");

			# SEND A LETTER TO ADMIN
			&sendmail($sponsor_firstname,"rotatorpro\@joe.a-url.com","Attention $sponsor_firstname, You have a NEW UBIEE RotatorPRO Member","rotator_sponsor_signup_email");
	
			# SEND A LETTER TO ADMIN2
			&sendmail($sponsor_firstname,"rotatorpro\@ceo.a-url.com","Attention $sponsor_firstname, You have a NEW UBIEE RotatorPRO Member","rotator_sponsor_signup_email");

		return "rotator_signup_success";
}
sub ACTIVATE_ROTATION
{
	&FECHALL("UPDATE domains SET rotator=$Fo_rmode WHERE domain='$Fo_domain'");
	$domains_table=&DOMAINS_TABLE;
	return "add_domain";
}
sub ACTIVATE_FURL
{
	&FECHALL("UPDATE rotator SET active=$Fo_rmode WHERE id='$Fo_fid'");
	$domain_id=&FECHALL("SELECT domains_id FROM rotator WHERE id='$Fo_fid'");
	$rotation_table=&ROTATION_TABLE($domain_id);
	return "edit_rotation";
}
sub LIST_ROTATION
{
	# FECH ID FOR THIS DOMAIN
	$domain_id=&FECHALL("SELECT id FROM domains WHERE domain='$Fo_domain'");
	$rotation_table=&ROTATION_TABLE($domain_id);
	return "edit_rotation";
}
sub DELETE_ROTATION
{
	# REMOVE ANY EXISTING RECORDS
	&FECHALL("DELETE FROM rotator WHERE id='$Fo_fid'");
	$message=qq~URL removed successfully.~;
	$domain_id=$Fo_domain_id;
	$rotation_table=&ROTATION_TABLE($Fo_domain_id);
	$Fo{'domain'}=&FECHALL("SELECT domain FROM domains WHERE id=$domain_id");
	return "edit_rotation";
}
sub LOAD_ROTATION
{
	# LOAD RECORD
	($Fo{'url'},$Fo{'email'})=split(/\|/, &FECHALL("SELECT url,email FROM rotator WHERE fid='$Fo_fid'"));

	$domains_table=&DOMAINS_TABLE;
	return "add_domain";
}
sub ADD_ROTATION
{
	# FECH ID FOR THIS DOMAIN
	$domain_id=&FECHALL("SELECT id FROM domains WHERE domain='$Fo_domain'");
	# STRIP HTTP
	$Fo_url=~s/http:\/\///gi;
	# INSERT RECORD	
	&FECHALL("INSERT INTO rotator (domains_id,url,email,verified) VALUES ('$domain_id','$Fo_url','$Fo_email','1')");
	# GENERATE MESSAGE
	$message=qq~Added the URL: <a href="http://$Fo_url">http://$Fo_url</a>  successfully ~;

	$rotation_table=&ROTATION_TABLE($domain_id);
	return "edit_rotation";
}
sub ROTATION_TABLE
{
		my $tmpid = $_[0];
		my $tmpmode = $_[1];
		my $temphtm; my $templine; my $rowcache;

		@TABLEDATA=split(/\n/, &FECHALL("SELECT url,hits,active,id FROM rotator WHERE domains_id=$tmpid"));

		if ($tmpmode eq "cp")
		{ @TABLE=split(/\<\!----\>/, &CAT("EN/rotation_table.htm")); } 
		else
		{ @TABLE=split(/\<\!----\>/, &CAT("EN/rotation_table_admin.htm")); }

		$temphtm=$TABLE[0];

		foreach $templine(@TABLEDATA)
		{
			($url,$hits,$active,$fid)=split(/\|/, $templine);

			if ($tmpmode eq "cp")
			{
				if ($active == 1) { $astat=qq~<a href="?CP_ACTIVATE=FURL&rmode=0&fid=$fid&domain=$Fo_domain&userid=$Fo_userid"><font color=#00FF00><b>ON</b></font></a>~; }
				else { $astat=qq~<a href="?CP_ACTIVATE=FURL&rmode=1&fid=$fid&domain=$Fo_domain&userid=$Fo_userid"><font color=#FF0000><b>OFF</b></font></a>~; }
			}
			else
			{
				if ($active == 1) { $astat=qq~<a href="?ACTIVATE=FURL&rmode=0&fid=$fid&domain=$Fo_domain"><font color=#00FF00><b>ON</b></font></a>~; }
				else { $astat=qq~<a href="?ACTIVATE=FURL&rmode=1&fid=$fid&domain=$Fo_domain"><font color=#FF0000><b>OFF</b></font></a>~; }
			}
				$rowcache=$TABLE[1];
				$rowcache=~s/\$([a-z0-9_]+)/$$1/gmi;
				$temphtm.=$rowcache;
		}
		$temphtm.=$TABLE[2];
		return $temphtm;
}
sub ROTATION_TABLE_UNVERIFIED_ADMIN
{
		my $temphtm; my $templine; my $rowcache;

		@TABLEDATA=split(/\n/, &FECHALL("SELECT url,hits,active,id,users_id,domains_id,date_added,paid_with FROM rotator WHERE verified=0"));

		@TABLE=split(/\<\!----\>/, &CAT("EN/rotation_table_unverified_admin.htm"));

		$temphtm=$TABLE[0];

		foreach $templine(@TABLEDATA)
		{
			# SPLIT ROTATOR SQL RESULTS
			($url,$hits,$active,$fid,$tuserid,$tdomain_id,$tdate,$tpaid_with)=split(/\|/, $templine);

			# FECH USER NAME ATTACHED TO THIS URL, AND SPONSOR ID
			($tuser_name,$tsponsor_id,$tuser_email,$subscription_active)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),sponsor_id,email,subscription_active FROM users WHERE id=$tuserid"));

			if ($subscription_active == 1) { $pstat="PAID"; }
			else { $pstat="FREE"; }

			# FECH SPONSOR INFO
			($sponsor_name,$sponsor_email,$sponsor_alertpay_email,$sponsor_moneybookers_email,$sponsor_paypal_email,$last_login)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),email,alertpay_email,moneybookers_email,paypal_email,last_login FROM users WHERE id = '$tsponsor_id' LIMIT 1"));

			# GET CATEGORY TITLES AND CAT ID FOR THIS DOMAIN
			($tcat_id,$tdomain)=split(/\|/, &FECHALL("SELECT cat_id,domain FROM domains WHERE id=$tdomain_id"));

				($tcatL2title,$parent_id)=split(/\|/, &FECHALL("SELECT title,parent_id FROM cats WHERE id=$tcat_id"));
				$tcatL1title=&FECHALL("SELECT title FROM cats WHERE id=$parent_id");

				if ($active == 1) { $astat=qq~<a href="?CP_ACTIVATE=FURL&rmode=0&fid=$fid&domain=$Fo_domain&userid=$Fo_userid"><font color=#00FF00><b>ON</b></font></a>~; }
				else { $astat=qq~<a href="?CP_ACTIVATE=FURL&rmode=1&fid=$fid&domain=$Fo_domain&userid=$Fo_userid"><font color=#FF0000><b>OFF</b></font></a>~; }

				$rowcache=$TABLE[1];
				$rowcache=~s/\$([a-z0-9_]+)/$$1/gmi;
				$temphtm.=$rowcache;
		}
		$temphtm.=$TABLE[2];
		return $temphtm;
}
sub LIST_DOMAINS
{
	if ($Fo_ACTION eq "DTABLE")
	{
		print &DOMAINS_TABLE;
		exit;	
	}
	else
	{
#		$domains_table=&DOMAINS_TABLE;
		$unverified=&FECHALL("SELECT count(*) FROM rotator WHERE verified = 0");

		if ($unverified > 0) { $notice=qq~<a href="?ADMIN=VERIFYURLS">YOU HAVE $unverified URLS PENDING VERIFICATION</a><br>~; }
	
		# MAKE LEVEL 0 CAT LIST OPTIONS
		@OPTIONS=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level = 0"));
	
		foreach $line (@OPTIONS)
		{
			($tmpid,$tmptitle)=split(/\|/, $line);
			$optlist.=qq~<option value="$tmpid">$tmptitle</option>\n~;
		}
	
		return "add_domain";
	}
}
sub DOMAINS_TABLE
{
		my $tmpid = $_[0];
		my $temphtm; my $templine; my $rowcache;

		if ($Fo_order eq "") { $Fo_order = "domain"; }
		$Fo_where=~s/eq/=/g;

		@TABLEDATA=split(/\n/, &FECHALL("SELECT domain,homepage,rotator,owner_name,id,hits,rotator_title,cat_id,pub FROM domains $Fo_where ORDER BY $Fo_order"));

		@TABLE=split(/\<\!----\>/, &CAT("EN/domains_table.htm"));

		$temphtm=$TABLE[0];

		foreach $templine(@TABLEDATA)
		{
			($tdomain,$thomepage,$trotator,$towner_name,$tdom_id,$thits,$trotator_title,$tcat_id,$pub)=split(/\|/, $templine);

				# COUNT URLS AND HITS IN ROTATION FOR THIS DOMAIN IF ANY
				$urls=&FECHALL("SELECT count(*) FROM rotator WHERE domains_id = $tdom_id");

				# FECH CAT TITLES IF EXISTS
				if ($tcat_id > 0)
				{
					($tcatL2title,$parent_id)=split(/\|/, &FECHALL("SELECT title,parent_id FROM cats WHERE id=$tcat_id"));
					$tcatL1title=&FECHALL("SELECT title FROM cats WHERE id=$parent_id");
				}
				else { $tcatL1title=""; $tcatL2title=""; }

				if ($pub eq "1")
				{
					$tpub=qq~<a href="#" onclick="ajax_loadContent('pub_$tdom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=PUB&amp;dom_id=$tdom_id&amp;VAL=0');return false">YES</a>~;
				}
				elsif ($pub eq "0")
				{
					$tpub=qq~<a href="#" onclick="ajax_loadContent('pub_$tdom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=PUB&amp;dom_id=$tdom_id&amp;VAL=1');return false">NO</a>~;
				}
				if ($trotator == 1) 
				{ 
					$rstat=qq~<a href="#" onclick="ajax_loadContent('rot_$tdom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=ROT&amp;dom_id=$tdom_id&amp;VAL=0');return false"><font color="#009900">ON<font></a>~;
				}
				elsif ($trotator == 0)
				{ 
					$rstat=qq~<a href="#" onclick="ajax_loadContent('rot_$tdom_id','$SCRIPTURL?ADMIN=NAV&amp;ACTION=CHANGE_SETTING&amp;SETTING=ROT&amp;dom_id=$tdom_id&amp;VAL=1');return false"><font color="#FF0000">OFF<font></a>~;
				}

				$rowcache=$TABLE[1];
				$rowcache=~s/\$([a-z0-9_]+)/$$1/gmi;
				$temphtm.=$rowcache;
		}
		$temphtm.=$TABLE[2];
		return $temphtm;
}
sub DELETE_DOMAIN
{
	# REMOVE ANY EXISTING RECORDS
	&FECHALL("DELETE FROM domains WHERE domain='$Fo_domain'");
	$message=qq~$Fo_domain removed successfully.~;

	# MAKE LEVEL 0 CAT LIST OPTIONS
	@OPTIONS=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level = 0"));

	foreach $line (@OPTIONS)
	{
		($tmpid,$tmptitle)=split(/\|/, $line);
		$optlist.=qq~<option value="$tmpid">$tmptitle</option>\n~;
	}

	$domains_table=&DOMAINS_TABLE;
	return "add_domain";
}
sub LOAD_DOMAIN
{
	# LOAD RECORD
	($Fo{'homepage'},$Fo{'welcome'},$rotator,$Fo{'crm_id'},$Fo{'pif_tag'},$Fo{'uem_tag'},$Fo{'uep_tag'},$Fo{'upp_tag'},$Fo{'owner_name'},$Fo{'text_2'},$cat_id,$Fo{'rotator_title'})=split(/\|/, &FECHALL("SELECT homepage,welcome,rotator,crm_id,pif_tag,uem_tag,uep_tag,upp_tag,owner_name,text_2,cat_id,rotator_title FROM domains WHERE domain='$Fo_domain'"));

	# MAKE LEVEL 0 CAT LIST OPTIONS
	@OPTIONS=split(/\n/, &FECHALL("SELECT id,title FROM cats WHERE level = 0"));

	foreach $line (@OPTIONS)
	{
		($tmpid,$tmptitle)=split(/\|/, $line);
		$optlist.=qq~<option value="$tmpid">$tmptitle</option>\n~;
	}

	if ($cat_id > 0)
	{
		($catL2title,$parent_id)=split(/\|/, &FECHALL("SELECT title,parent_id FROM cats WHERE id=$cat_id"));
		$catL1title=&FECHALL("SELECT title FROM cats WHERE id=$parent_id");
	}
	#$domains_table=&DOMAINS_TABLE;
	if ($Fo_ADD eq "DOMAIN") { return "add_domain"; }
	else { return "add_domain_form"; }
}
sub ADD_DOMAIN
{
	# STRIP HTTP
	$Fo_domain=~s/http:\/\///gi;
	# CHECK FOR EXISTING RECORDS
	$chkdomain=&FECHALL("SELECT count(*) FROM domains WHERE domain LIKE '$Fo_domain'");
	$Fo_welcome=~s/[\n\r]//gi;
	$Fo_welcome=~s/[^\w]/\\$&/gi;

	if ($chkdomain == 0)
	{
		# INSERT RECORD	
		&FECHALL("INSERT INTO domains (domain,homepage,welcome,rotator,crm_id,pif_tag,uem_tag,uep_tag,upp_tag,owner_name,text_2,rotator_title,cat_id) VALUES ('$Fo_domain','$Fo_homepage','$Fo_welcome','$Fo_rotator','$Fo_crm_id','$Fo_pif_tag','$Fo_uem_tag','$Fo_uep_tag','$Fo_upp_tag','$Fo_owner_name','$Fo_text_2','$Fo_rotator_title','$Fo_catL2')");

		# GENERATE MESSAGE
		$message=qq~$Fo_domain ADDED successfully. <a href="http://$Fo_domain" target="_blank">VISIT $Fo_domain NOW!</a>~;
	}
	else
	{
		# DETECT A CHANGE IN CATIGORY
		if ($Fo_catL2 ne "") { $catL2=$Fo_catL2; }
		else { $catL2 = $Fo_cat_id; }

		# UPDATE RECORD IN domains TABLE
		&FECHALL("UPDATE domains SET homepage='$Fo_homepage',welcome='$Fo_welcome',crm_id='$Fo_crm_id',pif_tag='$Fo_pif_tag',uem_tag='$Fo_uem_tag',uep_tag='$Fo_uep_tag',upp_tag='$Fo_upp_tag',owner_name='$Fo_owner_name',text_2='$Fo_text2',rotator_title='$Fo_rotator_title',cat_id='$catL2' WHERE domain='$Fo_domain'");

		# GENERATE MESSAGE
		$message=qq~$Fo_domain UPDATED successfully. <a href="http://$Fo_domain" target="_blank">VISIT $Fo_domain NOW!</a>~;
	}

	&ADD_DNS_RECORD($Fo_domain);
	return &LOAD_DOMAIN;

#	if ($catL2 > 0)
#	{
#		($catL2title,$parent_id)=split(/\|/, &FECHALL("SELECT title,parent_id FROM cats WHERE id=$catL2"));
#		$catL1title=&FECHALL("SELECT title FROM cats WHERE id=$parent_id");
#	}
#	$domains_table=&DOMAINS_TABLE;
#	return "add_domain";
}

################################# GENERAL PORTAL FUNCTIONS #############################
################################################################################

sub setfields
{

	$hdate=`date +%A,_%_b_%d_%Y`;
	$hdate=~s/_/ /g; $hdate=~s/\n//g;

	$signup_date=`date`;
	$signup_date=~s/_/ /g; $signup_date=~s/\n//g;

	$ScriptURL=$ENV{'SERVER_NAME'}.$ENV{'SCRIPT_NAME'};

	$this_domain=$ENV{'SERVER_NAME'};
	$this_domain=~s/www\.//gi;

	$vimg=&IMAGE_VALIDATE_CREATE;

	# CALC TOTAL PETITIONERS AND TOTAL PLUS 1 STATS.(for futuro partition
	$lpt=&FECHALL("SELECT count(*) FROM futuro_plan WHERE site_id LIKE '$this_domain'","PIF");
	$pt=&FECHALL("SELECT count(*) FROM futuro_plan","PIF");
	$ptn=$pt+1;

	$this_domain=$ENV{'SERVER_NAME'};
	$this_domain=~s/www\.//gi;

	# UPDATE HITS FOR THIS DOMAIN
	&FECHALL("UPDATE domains SET hits=hits+1 WHERE domain = '$this_domain'");

	# SET REF DOMAIN

	if ($ENV{'HTTP_REFERER'} ne "")
	{
		$ENV{'HTTP_REFERER'}=~/http:\/\/([^\/]+)/i;
		$refdomain=$1;
	}
	else { $refdomain = "none"; }

	# SPLIT UP A FEW THINGS FOR THE HITS TABLE
	($ips1,$ips2,$ips3,$ips4)=split(/\./, $ENV{'REMOTE_ADDR'});

	$dstr=`date --date="$indate" +%j-%k-%Y`;
		$dstr=~s/[\n ]//g;
			($doy,$hod,$yr)=split(/-/, $dstr);

	$tmp_domains_id=&FECHALL("SELECT id FROM domains WHERE domain='$this_domain' LIMIT 1");

	# INSERT TRAFFIC RECORD
	&FECHALL("INSERT INTO hits (ip,domain,ref_dom,ref_url,doy,hod,yr,ips1,ips2,ips3,ips4,domains_id) VALUES ('$ENV{'REMOTE_ADDR'}','$this_domain','$refdomain','$ENV{'HTTP_REFERER'}','$doy','$hod','$yr','$ips1','$ips2','$ips3','$ips4','$tmp_domains_id')");

	# COUNT TOTAL DOMAINS
	$tot_domains=&FECHALL("SELECT count(*) FROM domains");
	# COUNT TOTAL URLS
	$tot_urls=&FECHALL("SELECT count(*) FROM rotator");

	$HOME=$ENV{'SERVER_NAME'};
	$SCRIPNAME=$ENV{'SCRIPT_NAME'};
	$SCRIPTURL="http://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}";

	use CGI::Carp qw(fatalsToBrowser);

	if ($lang eq "") 
		{	$lang="EN";	}

		($sponsor_name,$sponsor_id)=split(/\|/, &FECHALL("SELECT concat(firstname,' ',lastname),id FROM users WHERE username LIKE '$Fo{'tag'}' LIMIT 1"));

}
sub RUN_ROTATE
{
	$tmpmode=$_[0];

	# IN MODE 1 WE JUST PRINT A METE REFRESH AND BAIL
	if ($tmpmode==1)
	{
		# GET NEXT URL TO ROTATE TO
		($rotate_url,$rotate_id)=split(/\|/, &FECHALL("SELECT url,id FROM rotator WHERE domains_id=$domain_id AND active=1 ORDER BY RAND() LIMIT 1"));
	
		# SET HITS + 1
		&FECHALL("UPDATE rotator SET hits=hits+1 WHERE id=$rotate_id");
	
		# GET HIGEST RCOUNT AND MAKE THIS ID BE HIGEST + 1 , THROWING IT TO THE BOTTOM OF THE LIST
		$max_rcount=&FECHALL("SELECT max(rcount) FROM rotator WHERE domains_id=$domain_id");
		$max_rcount++;
		&FECHALL("UPDATE rotator SET rcount=$max_rcount WHERE id=$rotate_id");
	
		if ($Fo_mode eq "test") { print $rotate_url; }
		else { print qq~<META HTTP-EQUIV="refresh" content="0;URL=http://$rotate_url">~; exit; }
	}
	# IN MODE 2 WE GENERATE A FULLY ENABLED ROTATOR LANDING PAGE WITH SITE SLIDE SHOW, YIPPIE!
	else
	{
		# FIRST, GET THE LIST OF ROTATOR URLS FOR THIS DOMAIN
		@URLS=split(/\n/, &FECHALL("SELECT url,hits,active,id FROM rotator WHERE domains_id=$domain_id ORDER BY RAND()"));

		foreach $templine(@URLS)
		{
			($url,$hits,$active,$fid)=split(/\|/, $templine);
			$url=~/^([^\/]+)/i;
			$rdom=$1;

			$gb_urls.=qq~{'caption': '$rdom','url': 'http://$url'},~;
		}
		$gb_urls=~s/\},$/}/g;

		$Page = &CAT("EN/home.htm");

			$PAGE=&GREPVARS($Page);
			print $PAGE;

		exit;
	}
}
sub GET_SNIPPET
{
	@a=split(/\n/, `ls -1 EN/snip_*.htm`);
	@list=splice(@a,rand(@a),1) while @a;
	$temp=`cat $list[0]`;
	#print $list[0];
	$snippet=&GREPVARS($temp);
	return $snippet;
}
sub POST_LEAD_TO_CRM
{
	if (&IMAGE_VALIDATE_CHECK($Fo{'vtext'},$Fo{'vhash'}) eq "FAIL") 
	{	$Fo{'message'}="IMAGE VALIDATION TEXT INCORRECT<BR>PLEASE 'TRY' AGAIN.";		return $Fo_resultpage; }
	else
	{
		# PREP THE STRING OF VALUES TO BE POSTED
		$sendform=qq~create=lead&firstname=$Fo_firstname&lastname=$Fo_lastname&email=$Fo_email&company=$Fo_company&phone=$Fo_phone&description=$Fo_description&assigned_user_id=$Fo_userid~;

		# DO THE ACTUAL POST OPERATION AND SAVE THE OUTPUT
		`GET "http://officialubiee.com/Lead/send_data.php?$sendform"`;

		return $Fo_resultpage;
	}
}
############################################# FUTURO FUNCTIONS #############################
#######################################################################################
sub VIEW_PETITION
{
		if ($Fo_site_id ne "")
		{ $viewlink=qq~<a href="?view=petition"><font color="#990000" size="2">VIEW ALL PETITIONERS</font></a>~; }
		else { $viewlink=qq~<a href="?view=petition&site_id=$this_domain"><font color="#990000" size="2">VIEW PETITIONERS FROM $this_domain</font></a>~; }

		$signup_table=&SIGNUP_TABLE("10000");

		return "success";
}
sub DO_SIGNUP
{
#		print "hello"; exit; 
		# SIGNUP FORM VALIDATION - SERVER SIDE
		if ($Fo_firstname=~/\w+/i) {}
		else { $MSG.="FIRST NAME NOT COMPLETE<BR>"; }

		if ($Fo_lastname=~/\w+/i) {}
		else { $MSG.="LAST NAME NOT COMPLETE<BR>"; }

		if ($Fo_email=~/\w+\@\w+/i) {}
		else { $MSG.="EMAIL INCORRECT<BR>"; }

		$check_email=&FECHALL("SELECT email FROM futuro_plan WHERE email='$Fo_email'","PIF");
		if ($check_email ne "") { $MSG.="EMAIL ALREADY ON PETITION<BR>"; }

		if ($MSG=~/[a-z]+/i)
		{
			$error_message=qq|<table width="80%" border="3" cellpadding="0" cellspacing="0" bordercolor="#FFFF00" bgcolor="#FF0000">   <tr>     <td width="16%" bgcolor="#FFFFFF"><div align="center"><font color="#FFFF00" face="Courier New, Courier, mono"><img src="http://pifbc.com/IMG/STOP.gif" width="72" height="72"></font></div></td>     <td width="84%"><div align="center"><font color="#FFFF00" face="Courier New, Courier, mono"><strong>$MSG</strong></font></div></td>   </tr> </table>|;
			&RTLOG("SIGNUP FORM ERROR - $Fo_firstname $Fo_lastname - $MSG");

			$vimg=&IMAGE_VALIDATE_CREATE;
			return "futuroplan";
		}
		else
		{

		# INSERT THE NEW SIGNUP INTO TABLE
			&FECHALL("INSERT INTO futuro_plan (firstname,lastname,email,age,country,tax_id,newsletter,ip,site_id) VALUES ('$Fo_firstname','$Fo_lastname','$Fo_email','$Fo_age','$Fo_country','$Fo_tax_id','$Fo_newsletter','$ENV{'REMOTE_ADDR'}','$Fo_site_id')","PIF");

		# RETURN THE APPROPRIATE PAGE
			if ($Fo_tmpl eq "success_small")
			{
				$signup_table=&SIGNUP_TABLE("1000","signup_table_small");
				$Page = &CAT("EN/success_small.htm");
					$PAGE=&GREPVARS($Page);
						print $PAGE;
			}
			else
			{
				$signup_table=&SIGNUP_TABLE("1000");
				$lpt=&FECHALL("SELECT count(*) FROM futuro_plan WHERE site_id LIKE '$this_domain'","PIF");

				$Page = &CAT("EN/success.htm");
					$PAGE=&GREPVARS($Page);
						print $PAGE;
			}

		# FECH A LIST OF ALL PETITIONERS
			@SENDLIST=split(/\n/, &FECHALL("SELECT concat(firstname,' ',lastname),email,id FROM futuro_plan WHERE remove = 0","PIF"));

		# SEND A LETTER TO EVERYONE NOTIFYING THEM OF THE SIGNUP
			foreach $line (@SENDLIST)
			{
				($tmpname,$tmpemail,$id)=split(/\|/, $line);
				&sendmail($tmpname,$tmpemail,"$Fo_firstname $Fo_lastname HAS SIGNED the FUTURO-Plan Petition!","futuro_letter");
			}
		}
}
sub FUTURO_OPT_OUT
{
	&FECHALL("UPDATE futuro_plan SET remove=1 WHERE id=$Fo_id","PIF");
	$name=&FECHALL("SELECT concat(firstname,' ',lastname) FROM futuro_plan WHERE id=$Fo_id","PIF");
	$message=qq~Thank You $name, Your email address will no longer receive FUTURO-Plan eSignature notifications.~;
	return "removed";
}
sub SIGNUP_TABLE
{
		my $tmplimit = $_[0];
		my $tmptmpl = $_[1];

		my $temphtm; my $templine; my $rowcache;

		@TABLEDATA=split(/\n/, &FECHALL("SELECT concat(firstname,' ',lastname),country,signup_date,age FROM futuro_plan WHERE site_id LIKE '%$Fo_site_id' ORDER BY id LIMIT $tmplimit","PIF"));

		if ($tmptmpl ne "")
		{
			@TABLE=split(/\<\!----\>/, &CAT("$tmptmpl.htm"));
		}
		else
		{
			@TABLE=split(/\<\!----\>/, &CAT("signup_table.htm"));
		}
		$temphtm=$TABLE[0];

		foreach $templine(@TABLEDATA)
		{
			($tname,$tcountry,$tsignup_date,$tage)=split(/\|/, $templine);

				$rowcache=$TABLE[1];
				$rowcache=~s/\$([a-z0-9_]+)/$$1/gmi;
				$temphtm.=$rowcache;
		}
		$temphtm.=$TABLE[2];
		return $temphtm;
}
sub CREATE_DOM_OPLIST
{
	@doms=split(/\n/, &FECHALL("SELECT domain FROM domains WHERE domain REGEXP '^[^\\.]+\\.[^\\.]+\$' ORDER BY domain"));

	foreach $tmpdomain (@doms)
	{
		$tmp_output.=qq~<option value="$tmpdomain">$tmpdomain</option>\n~;
	}
	return $tmp_output;
}
sub GREPVARS
{
	$BODY = $_[0];
	$JOB = $_[1];

		##### CONVERT ID=$ID to user=user on templates ########!
		$BODY=~s/\*\*(\w+)/$Fo{$1}/gi;
		# PROCESS THE TEMPLATE THROUGH F2SQL BEFORE RUNNING VARS IF USE_F2SQL1 IS FOUND !
		if ($BODY=~/\<\!--USE_F2SQL1\--\>/)
			{ $BODYX=F2SQL($BODY);$BODY=$BODYX; }
		if ($BODY=~/\$cat_tree/)
			{ $cat_tree=&CREATE_CAT_LIST; }
		if ($BODY=~/\$special_ussp/)
			{ $special_ussp=&GET_SPECIALS_BOX("USSP"); }
		if ($BODY=~/\$special_urp/)
			{ $special_urp=&GET_SPECIALS_BOX("URP"); }
		if ($BODY=~/\$domain_option_list/)
			{ $domain_option_list=&CREATE_DOM_OPLIST; }
		if ($BODY=~/\$cp_top_menu/)
			{ 
				if ($payment_conf==0)
				{ $cp_top_menu=&CAT("EN/rotator_cp_top_menu_free.htm"); }
				else { $cp_top_menu=&CAT("EN/rotator_cp_top_menu_paid.htm"); }
			 }

					# CHECK FOR THE TEMPLATE TAG, IF PRESENT PLACE CONTENTS OF $BODY over the place.body.here var IN TEMPLATE! if not present , make one up!
					if ($Fo{'GET'}=~/MENU/ || $Fo{'GET'}=~/JUMPBOX/) {} 
					else
					{
						if ($Fo{'GET'} ne "") 
						{
							if ($BODY=~/\<\!-- *TEMPLATE: *([\w\!\._]+) *--\>/i) {}
							else
							{
									$tmp2=$BODY;
									$tmp1=qq~	<!--TEMPLATE:template-->\n<!--TITLE:$Fo{'GET'}-->\n~;
									$BODY=$tmp1.$tmp2;

							}
						}
					}
					if ($BODY=~/\<\!-- *TEMPLATE: *([\w\!\._]+) *--\>/i)
						{
							if ($Fo{'TMPL'} eq "") {$Fo{'TMPL'}=$1;}

							$TMPLBODY=&CAT("$lang/$Fo{'TMPL'}.htm");
							print "<!-- cat HTM/$lang/$Fo{'TMPL'}.htm -->";
							$TMPLBODY=~s/\$place.body.here/$BODY/gi;
							# NOW SEARCH FOR A TITLE TAG TO GET THE PAGE TITLE (FROM THE PAGE BODY) AND PUT IT IN THE OUTER TEMPLATE !
							$BODY=~/\<\!-- *TITLE: *([\w _]+) *--\>/im;
							$TITLE=$1;print "<!-- $TITLE -->";
							$FLASHTITLE=$TITLE;
							$FLASHTITLE=~s/[_ ]+/\%20/gi;
							$TITLE=~s/[_ ]+/ /gi;
							$TMPLBODY=~s/\$TITLE/$TITLE/gi;
							$markers=~s/\$markers/$markers/gi;
							# OK, NOW JUST SLIP THE WHOLE THING BACK INTO THE BODY VAR !
							$BODY=$TMPLBODY;
							$Fo{'TMPL'} = "";
						}
					$BODY =~s/\$HOME/$ENV{'SERVER_NAME'}/gi;
					$BODY =~s/\$SCRIPNAME/$ENV{'SCRIPT_NAME'}/gi;
					$BODY =~s/\$SCRIPTHOME/$SCRIPTHOME/gi;
					$BODY =~s/\$SCRIPTURL/http:\/\/$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}/gi;
					$SSLSCRIPTURL=qq~https://$ENV{'SERVER_NAME'}$ENV{'SCRIPT_NAME'}~;
					$SSLSCRIPTURL=~s/www\.//gi;
					$BODY =~s/\$SSLSCRIPTURL/$SSLSCRIPTURL/gi;
					$BODY =~s/\<form /$& action=$ENV{'SCRIPT_NAME'} /g;

							$BODY =~s~\.\./\.?\.?/?IMG~http://$ENV{'SERVER_NAME'}/IMG~g;
							$BODY =~s~\.\./gradients.css~http://$ENV{'SERVER_NAME'}/gradients.css~g;
							$germancounter=`cat germancounter.htm`;

					if ($BODY=~/\$cp_notice/)
					{ $cp_notice=&CP_CREATE_NOTICE; }

					if ($BODY=~/\$cp_top_menu/)
					{ 
						if ($payment_conf==0)
						{ $cp_top_menu=&CAT("EN/rotator_cp_top_menu_paid.htm"); }
						else { $cp_top_menu=&CAT("EN/rotator_cp_top_menu_paid.htm"); }
						$cp_top_menu =~s/\$([a-z0-9_]+)/$$1/gmi;
					}

					$BODY =~s/\$([a-z0-9_]+)/$$1/gmi;
					# REPLACE ANY REMAINING $WORDS WITH CORROSPONDING Fo{'WORD'} VALUE !
					$BODY=~s/\*\*?(\w+)/$Fo{$1}/gi;
					$BODY=~s/\~\~(\w+)/$SESS{$1}/gi;

					# AHH YES, EXECUTE A SHELL COMMAND AND REPLACE THE FOLLOWING SHELLTAG WITH THE RESULT OF THE SHELL COMMAND ! VERY GOOD IDEA !
					if ($BODY=~/\<\!--.*\`([^\`]+)\`.*--\>/) { $tmp=`$1`;	$BODY=~s/\<\!--.*\`([^\`]+)\`.*--\>/$tmp/g; }

					# AND LETS NOT FORGET THE ABILITY TO HANG OUTDIDE PAGES INSIDE YOUR PAGES WITH THE GET TAG !
					if ($BODY=~/\<\!-- *GET:(.+) *--\>/) 
					{ 
							@BODYTEMP=split(/\n/, $BODY);
							foreach $line(@BODYTEMP) 
							{
								if ($line=~/\<\!-- *GET:(.+) *--\>/) 
								{
									($tmpurl,$tmpsegments)=split(/\|/, $1);
									$tmp=&TableArray($tmpurl,$tmpsegments);	
									$line=~s/\<\!-- *GET: ?(.+) *--\>/$tmp/g;	
								}
								$BODYX.=$line."\n";
							}
							$BODY=$BODYX;
							$BODYX="";
					}
							#correcto espana charcters
							 $BODY=~s/Á/Á/gms; $BODY=~s/É/É/gms; $BODY=~s/Í/Í/gms; $BODY=~s/Ó/Ó/gms; $BODY=~s/Ù/Ú/gms; $BODY=~s/Ý/Ý /gms; $BODY=~s/á/á/gms; $BODY=~s/é/é/gms; $BODY=~s/í/í/gms; $BODY=~s/ó/ó/gms; $BODY=~s/ú/ú/gms; $BODY=~s/ý/ý/gms; $BODY=~s/ñ/ñ/gms; $BODY=~s/Ñ/Ñ/gms; $BODY=~s/Á/\&Aacute;/gms; $BODY=~s/É/\&Eacute;/gms; $BODY=~s/Í/\&Iacute;/gms; $BODY=~s/Ó/\&Oacute;/gms; $BODY=~s/Ú/\&Uacute;/gms; $BODY=~s/Ñ/\&Ntilde;/gms; $BODY=~s/Ü/\&Uuml;/gms; $BODY=~s/á/\&aacute;/gms; $BODY=~s/é/\&eacute;/gms; $BODY=~s/í/\&iacute;/gms; $BODY=~s/ó/\&oacute;/gms; $BODY=~s/ú/\&uacute;/gms; $BODY=~s/ñ/\&ntilde;/gms; $BODY=~s/ü/\&uuml;/gms; $BODY=~s/¿/\&iquest;/gms; $BODY=~s/¡/\&iexcl;/gms; $BODY=~s/«/\&laquo;/gms; $BODY=~s/»/\&raquo;/gms; $BODY=~s/‹/\&lsaquo;/gms; $BODY=~s/›/\&rsaquo;/gms; $BODY=~s/€/\&euro;/gms;

					# CHECK FOR USE F2SQL2 TAG, IF FOUND FILTER THE PAGE THROUGH THE CUSTOM SQL TAG FILTER BEFORE RETURNING BUT AFTER VARIABLE FILTER!
					if ($BODY=~/\<\!--.*USE.F2SQL2.*--\>/i)
						{ $BODYX=&F2SQL($BODY);$BODY=$BODYX; }

										$BODY=~s/([0-9]+\.[0-9][0-9][0-9])[0-9]+/$1/g;
#												$GEO{'Country'}="United States";
												if ($GEO{'Country'} eq "United States" && $Fo{'TMPL'} ne "email_template") 
												{ 	$BODY=~s/([0-9]+)\.([0-9][0-9]?[0-9]?)/$1\.$2/g;		}
												else { $BODY=~s/([0-9]+)\.([0-9][0-9]?[0-9]?)/$1,$2/g;		}

												$BODY=~s/"([0-9]+)\,([0-9][0-9]?[0-9]?)"/"$1\.$2"/g;

return $BODY;
}
#