/**********************************************************
****************** Define All Global Variables ******************
***********************************************************/
var arDiv_Storage={"div" : ""};
var campaign_member_openings;

// Generic Callback function to handle the returned results 
var Generic_Div_CallBk = function(res) 
{ 
	replaceDiv(res[0],res[1]);
	toggle_view(res[0],1);
}

// Generic Callback function to handle the returned results 
var Index_Div_CallBk = function(res) 
{
	var regex = /\<redirect_home\>/;
   if(regex.test(res))
   {
   	window.location="/";
   	return;
   }
	replaceDiv('MAINAJAX',res);
}

var DEAL_AREA_Div_CallBk = function(res) 
{ 

	window.fbAsyncInit = function() {
	    FB.init({
	        appId: '124787020929142', // Your Facebook ID
	        status: true,
	        cookie: true,
	        xfbml: true
	    });
	};
	(function() {
	    var e = document.createElement('script'); e.async = true;
	    e.src = document.location.protocol +
	        '//connect.facebook.net/en_US/all.js';
	    document.getElementById('fb-root').appendChild(e);
	}());
	replaceDiv('MAINAJAX',res);
	//update_area_location();
}




// Generic Callback function to handle the returned results 
var Location_Div_CallBk = function(res) 
{ 
	replaceDiv('LOCATIONDISP',res);
}


var CCD_CallBk = function(res)
{
	replaceDiv('mousediv',res);
	toggle_view('mousediv',1);
}

//THis is our Generic Proxy Error handler
var CallBkEr = function(srrCode,errMessage) 
{ 
	alert('Ajax Took an error\n'+srrCode+"\n"+errMessage);
}
// Handler for the FB JS Signup/Login
var JS_Login_CallBk = function(res) 
{ 
	window.location.reload();
	//alert(res);
}

/**********************************************************
****************** Start OF DIV Functions ******************
***********************************************************/
function addDiv(pdiv,content) {
  var cname = pdiv+"_child";
  if(cname in arDiv_Storage)
  {
  		removeElement(pdiv);
  }
  var ni = document.getElementById(pdiv);
  var newdiv = document.createElement('div');
  newdiv.setAttribute('id',cname);
  newdiv.innerHTML = content;
  ni.appendChild(newdiv);
  arDiv_Storage[cname] = ni;
}

var replaceDiv = function(div,content)
{
	empty_div(div)
	var cname = div+"_child";
	var ni = document.getElementById(div);
	if(!ni){return;}
	
	var newdiv = document.createElement('div');
	newdiv.setAttribute('id',cname);
	newdiv.innerHTML = content;
	ni.appendChild(newdiv);
}

var empty_div = function(ID)
{
	var element = document.getElementById(ID);
	if(element)
	{
		while (element.firstChild) 
		{
		  element.removeChild(element.firstChild);
		}
	}
}

function removeElement(pdiv) {
	cname = pdiv+"_child";
	var d = document.getElementById(pdiv);
	var olddiv = document.getElementById(cname);
	if(olddiv)
	{
  		d.removeChild(olddiv);
  		delete arDiv_Storage[cname];
	}
}

function Div_Storage(div)
{
	if(div in arDiv_Storage)
	{
		if(arDiv_Storage[div] !='')
		{
			arDiv_Storage[div]=document.getElementById(div).innerHTML;
		}
	}else{
		arDiv_Storage[div]=document.getElementById(div).innerHTML;
	}
}

function Div_Restore(div)
{
	if(div in arDiv_Storage)
	{
		if(arDiv_Storage[div] !='')
		{
			document.getElementById(div).innerHTML=arDiv_Storage[div];
		}else{
			document.getElementById(div).innerHTML="";
		}
	}else{
		document.getElementById(div).innerHTML="";
	}
}

function toggle_view(name,display)
{
	// 0=off,1=on,2=Flip the current state
	var id = document.getElementById(name);
	if(!id)
	{
		return;
	}
	if(display == 1)
	{
		id.style.display='';
	}else if(display == 2){
		if(id.style.display=='none')
		{
			id.style.display='';
		}else{
			id.style.display='none';
		}
	}else{
		id.style.display='none';
	}
}

//Login Function called from the checkout
var of_login = function(objForm)
{
  	var e = new cfproxy(); 
   e.setCallbackHandler(Login_CallBk); 
   e.setErrorHandler(CallBkEr);
   e.Loging_auth(objForm.login_email.value,objForm.login_pass.value);
};

var Login_CallBk = function(res)
{
	if(res == -1)
	{
		alert('Login Failed');
		objForm = document.getElementById('LOGIN_FORM');
		objForm.login_email.value="";
		objForm.login_pass.value="";
		addDiv('Login_Box','<span style="color:red;">The Credentials you entered were not valid.</span>');
		//Error logging in
	}else{
		window.location='/checkout.cfm'
	}
};

var checkout_fblogin =function()
{
  	var e = new cfproxy(); 
   e.Loging_via_fb();
   myfblogin()
	//window.location='http://apps.facebook.com/socialcouponing/';
};

var check_existing_email=function(email,errors,hasfacebook,submit,form)
{
	//Sanity Check...
	if(!validate_email(email)){
		errors = errors + 'Email Address is Not valid.\n';
		alert(errors);
		return false;
	}
	var s = new String(errors);
  	var e = new cfproxy(); 
  	e.setCallbackHandler(CKMail_submit_CallBk); 
   e.check_existing_user(email,errors,hasfacebook,submit,form);
};

var CKMail_submit_CallBk = function(res)
{
	var emailExists = res[0];
	var errors = new String(res[1]);
	var facebook_id = res[2];
	var fbsame = res[3];
	var form = res[5];
	var objForm = document.getElementById(form);
	if(emailExists == 1)
	{
		// NFB = No Facebook assoc, FBD Session FB doe snot eq Emails FB
		// FBS = Email FB = Session FB
		if(fbsame == 'nfb')// No Facebook assoc
		{
			errors = errors + 'That Email address is already in use.\n';
			alert(errors);
			objForm.email.value="";
		}else if(fbsame == 'fbd'){
			errors = errors + 'That Email address is already in use\n';
			if(facebook_id != "-1")
				errors = errors +  'By another facebook user.\n';
			alert(errors);
			objForm.email.value="";
		}else if(fbsame == 'FBS'){
			if(objForm.id == 'ORDER_FORM')
			{
				errors = errors + 'You have already Created an Account,\nPlease login on the right to\ncomplete your purchase\n';
			}else{
				errors = errors + 'You have already Created an Account,\nPlease login to continue\n';
			}
			alert(errors);
			objForm.email.value="";
		}
	}else{
		if(errors == "")
		{
			if(res[4] == "1")
			{
				objForm.submit();
			}
			return true;
		}else{
			alert(errors);
			return false;
		}
	}
};




var check_zip_email_location_form = function()
{
	var objForm = document.getElementById('getzipform');
	var Email = new String(objForm.email.value);
	var Zipcode = trim(new String(objForm.postal.value));
	var emfilter  = /^([a-zA-Z0-9_\.\-])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/;
	if (!emfilter.test(Email)) 
	{
		alert('Please provide a valid email address');
		objForm.email.focus;
		return false;
	}
	//The quick zip check for format....
	if(Zipcode.length < 5 || Zipcode.length > 10 )
	{	
		alert(Zipcode.length);
		alert('Please provide a valid zipcode');
		return false;
	}
  	var e = new cfproxy(); 
  	e.setCallbackHandler(CKZip_submit_CallBk); 
   e.location_validate_zip(Zipcode);
	return false;
}

var CKZip_submit_CallBk = function(res)
{
	if(res[0] > 0)
	{
		var form = document.getElementById('getzipform');
		form.submit();
	}else{
		alert("PLease Enter a valid US postal code");
	}
}

//var signup_check = function(objForm)
//{
//	var errors="";
//	if(objForm.password.value != objForm.vrfy_password.value)
//	{
//		errors = errors + "Passwords did not match\n";
//	}
//	if(errors == "")
//	{
//		check_existing_email(objForm.email.value,errors,objForm.facebook_id.value,1);
//	}else{
//		alert(errors);
//	}
//}

var logout_not_fb_user = function()
{
  	var e = new cfproxy(); 
   //e.reset_sess();
   ColdFusion.navigate('/?logout=1');
	return true;

}

var POST_email_location_setup = function(Form)
{
	objForm = Form 
	//document.getElementById('EMLFRM');
	//Step 1, Validate the email address!
	var email = objForm.email.value
	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
   if(!regex.test(email))
   {
   	alert('That email address does not appear to be valid\nPlease check the address and try again.');
   	return;
   }
   load_waiting();
	//Step 2, Post the form
	ColdFusion.Ajax.submitForm(Form,'/',Send_home,CallBkEr);
}

var Send_home= function(res)
{
	window.location="/";
}


var Change_fanpage_area = function(objForm)
{
    var zipCodePattern = /^\d{5}$|^\d{5}-\d{4}$/;
	 var zipcode = objForm.postal.value;
    if(zipCodePattern.test(zipcode))
    {
		load_waiting();
	  	var e = new cfproxy(); 
		e.setCallbackHandler(Show_fanpage_area); 
		e.setErrorHandler(CallBkEr);
	   e.change_fanpage_location(zipcode);
	 }else{
	 	alert("The zip code you entered does not appear to be valid");
	 	objForm.postal.value = "";
	 }
}

var Show_fanpage_area = function(res)
{
	toggle_view('NAV',1);
	var data = res.split("~");
	var area = data[0];
	var bgimage = data[1];
	//Change_Background(bgimage);
	// Show the Deal area
  	var e = new cfproxy(); 
	e.setCallbackHandler(Index_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.show_area_fan_pages();
}



var Change_area_location = function(objForm)
{
    var zipCodePattern = /^\d{5}$|^\d{5}-\d{4}$/;
	 var zipcode = new String(objForm.postal.value);
    if(zipCodePattern.test(zipcode))
    {
		load_waiting();
	  	//var e = new cfproxy(); 
		//e.setCallbackHandler(Index_Div_CallBk); 
		//e.setErrorHandler(CallBkEr);
	   Show_deal_area(zipcode);
	 }else{
	 	alert("The zip code you entered does nto appear to be valid");
	 	objForm.postal.value = "";
	 }
}

var Change_area_location_link = function(zipcode)
{
		load_waiting();
	  	var e = new cfproxy(); 
		e.setCallbackHandler(Show_deal_area); 
		e.setErrorHandler(CallBkEr);
	   e.change_location(zipcode);
}


var Show_deal_area = function(zip,distance)
{
	if(!distance){distance=25;}
	var zipCodePattern = /^\d{5}$|^\d{5}-\d{4}$/;
	var zipcode = new String(zip);
	if(zipCodePattern.test(zipcode))
	{
		load_waiting();
	  	var e = new cfproxy(); 
		e.setCallbackHandler(DEAL_AREA_Div_CallBk); 
		e.setErrorHandler(CallBkEr);
		e.show_deal_areas(zip,distance);
	}else{
		alert("The zip code you entered does not appear to be valid");
		objForm.postal.value = "";
	}
}

var Show_proximity_deals = function(zip,distance)
{
	var zipCodePattern = /^\d{5}$|^\d{5}-\d{4}$/;
	var zipcode = new String(zip);
	if(zipCodePattern.test(zipcode))
	{
		load_waiting();
	  	var e = new cfproxy(); 
		e.setCallbackHandler(DEAL_AREA_Div_CallBk); 
		e.setErrorHandler(CallBkEr);
		e.show_proximity_deals(zip,distance);
	}else{
		alert("The zip code you entered does nto appear to be valid");
		objForm.postal.value = "";
	}
}


/*
var Change_Background = function(img_src)
{
	// This was used to swap the background image, and is no longer being used
	// create object
	imageObj = new Image();
	imageObj.src=img_src;
	imageObj.onload=function(){
		var bod = document.getElementById('MAINBODY');
		bod.style.background="transparent url('"+img_src+"') no-repeat fixed center";
		return;
	}
}
*/

var config_emails = function()
{
  	var e = new cfproxy(); 
	e.setCallbackHandler(Index_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.email_settings_page();
}

var update_email_settings = function(objForm)
{
	ColdFusion.Ajax.submitForm(objForm.id,'/set_community_alerts.cfm',Index_Div_CallBk,CallBkEr);
	load_waiting("Please Wait, your settings are being saved.");
}

var Set_area_location = function(objForm,func)
{
	objForm.func.value=func;
	ColdFusion.Ajax.submitForm(objForm.id,'/set_community_alerts.cfm',Index_Div_CallBk,CallBkEr);
	load_waiting();
}

var load_homepage = function()
{
  	var e = new cfproxy(); 
	e.setCallbackHandler(Index_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.show_area_fan_pages();
}

var load_login_form = function()
{
  	var e = new cfproxy(); 
	e.setCallbackHandler(Index_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.Login_Form();
}

var load_waiting = function(message)
{
	if(!message)
		message="Loading Please Wait...";
		
	var html='<center><table align="center" height="300"><tr><td valign="center"><h2 style="font-size:30px;color:#0751EE;">'+message+'</h2><br clear="all" /><center><img src="/img/ajax_loading.gif" width="75" height="75"></center></td></tr></table></center>';
	replaceDiv('MAINAJAX',html);
}

var checkout_complete_details = function()
{
  	var e = new cfproxy(); 
	e.setCallbackHandler(CCD_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.checkout_complete_details();
}

var show_area_deals= function (area_id)
{
  	var e = new cfproxy(); 
	e.setCallbackHandler(Index_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.show_area_deals(area_id);
}

var update_area_location = function()
{
	/* update_area_location is used to set/show 
		the current area being viewed and the last 
		area that was viewed
	*/
  	var e = new cfproxy(); 
	e.setCallbackHandler(Location_Div_CallBk); 
	e.setErrorHandler(CallBkEr);
	e.current_Area_location();
}

var search_faq_for_help = function (div,text,curchar)
{
	s =new String(text);
	var len=s.length;
	if(len > 1)
	{
		if(curchar == 32 || curchar == 13 || curchar == 63 || curchar == 46)
		{
			toggle_view(div,1);
		  	var e = new cfproxy(); 
		   e.setCallbackHandler(Generic_Div_CallBk); 
		   e.setErrorHandler(CallBkEr);
		   e.search_faq_for_help(div,text);
		}
	}
};


var validate_email = function(semail)
{
	if(semail == '')
	{
   	//alert('Required Email Address Missing');
   	return false;
	}
	//Step 1, Validate the email address!
	var regex = /^[a-zA-Z0-9._-]+@([a-zA-Z0-9.-]+\.)+[a-zA-Z0-9.-]{2,4}$/;
   if(!regex.test(semail))
   {
   	//alert('That email address does not appear to be valid\nPlease check the address and try again.');
   	return false;
   }
   return true;
}

//Login Function called from the checkout
var check_fb_status = function(facebook_id,access_token)
{
 	var e = new cfproxy(); 
   e.setCallbackHandler(returned_fb_status); 
   e.setErrorHandler(CallBkEr);
   e.check_user_token(facebook_id,access_token);
};

var returned_fb_status = function(res) 
{
	if(res == "new")
	{
		ColdFusion.navigate('/page-signup-email.cfm','MAINAJAX');
	}else if(res == "order"){
		window.location = '/checkout.cfm?nu=1';
	}else{
		ColdFusion.navigate('/fblogin.cfm','MAINAJAX')	;
	}
};




var show_email_signup = function(){

	ColdFusion.navigate('/page-signup-email.cfm','MAINAJAX');
};

var show_signup_options = function(){
	ColdFusion.navigate('/page-signup-options.cfm','MAINAJAX');
};

var post_signup_request = function(objForm)
{
	var errors = '';
	if (objForm.first_name.value == '')
	{
		errors = errors+'First Name is Required\n';
	}
	
	if (objForm.last_name.value == ''){
		errors = errors+'Last Name is Required\n';
	}
	
	if (objForm.email.value == '')
	{
		errors = errors+'Email is Required\n';
	}else	if(!validate_email(objForm.email.value)){
   	errors = errors+'That email address does not appear to be valid\n';
	}

	if(!validate_zip(objForm.zip.value))
	{
   	errors = errors+'That Postal Code does not appear to be valid\n';
	}

	if (objForm.password1.value == '')
	{
		errors = errors+'Password is Required\n';
	}else if(objForm.password1.value != objForm.password2.value){
		errors = errors+'Passwords MUST Match\n';
	}
	if(errors != '')
	{
		alert(errors);
		return false;
	}
	check_existing_email(objForm.email.value,'',objForm.fbid.value,'1',objForm.id);
	return false;
};

var clear_any_fbid =function()
{
  	var e = new cfproxy(); 
	e.clear_any_fbid();
};

var send_fb_post = function(message,facebook_Id,myzip)
{
  	var e = new cfproxy(); 
	e.setErrorHandler(CallBkEr);
	e.post_to_my_wall(message,facebook_Id);
  	var f = new cfproxy(); 
	f.setCallbackHandler(Index_Div_CallBk); 
	f.setErrorHandler(CallBkEr);
	f.show_proximity_deals(myzip);
};

var load_overlay = function(href){
	$('#overlay').hide();
	$('#overlay_content').empty();
	$('#overlay_content').load(href);
	$("#overlay").overlay({load: true});
};


//var send_fb_post_return = function(objForm.id)
//{
//	alert('FB posted, Need to choose a deal area');
//};





