// global - site wide js

function MM_findObj(n, d) { //v4.01
  var p,i,x;  if(!d) d=document; if((p=n.indexOf("?"))>0&&parent.frames.length) {
    d=parent.frames[n.substring(p+1)].document; n=n.substring(0,p);}
  if(!(x=d[n])&&d.all) x=d.all[n]; for (i=0;!x&&i<d.forms.length;i++) x=d.forms[i][n];
  for(i=0;!x&&d.layers&&i<d.layers.length;i++) x=MM_findObj(n,d.layers[i].document);
  if(!x && d.getElementById) x=d.getElementById(n); return x;
}
function MM_swapImage() { //v3.0
  var i,j=0,x,a=MM_swapImage.arguments; document.MM_sr=new Array; for(i=0;i<(a.length-2);i+=3)
   if ((x=MM_findObj(a[i]))!=null){document.MM_sr[j++]=x; if(!x.oSrc) x.oSrc=x.src; x.src=a[i+2];}
}
function MM_swapImgRestore() { //v3.0
  var i,x,a=document.MM_sr; for(i=0;a&&i<a.length&&(x=a[i])&&x.oSrc;i++) x.src=x.oSrc;
}

function MM_preloadImages() { //v3.0
  var d=document; if(d.images){ if(!d.MM_p) d.MM_p=new Array();
    var i,j=d.MM_p.length,a=MM_preloadImages.arguments; for(i=0; i<a.length; i++)
    if (a[i].indexOf("#")!=0){ d.MM_p[j]=new Image; d.MM_p[j++].src=a[i];}}
}


// JavaScript for the registration process

//define globals
var username='';
var devSubMenuShowing = false ;



var displayLoginBox = function () {
	$("#eiportMemberLoginLink").fadeOut(300, function(){ $("#eiportMemberLoginLink").hide(); }); 
	$("#siteMemberRegisterLink").fadeOut(300, function() { $("#siteMemberRegisterLink").hide(); }) ;
	$("#siteMemberLoginLink").fadeOut(300, function() { 
		$("#siteMemberLoginLink").hide(); 
		// now show the login form
		$("#siteMemberLoginform").fadeIn(500, function() { /* more functionality once is displayed */ }) ;
	}) ;
	$("#siteMemberLogin .myExploreInfo").fadeOut(300, function() { $("#siteMemberLogin .myExploreInfo").hide(); }) ;
}

function hideLoginBox() {
	$("#siteMemberLoginform").hide() ;	
}

function cancelLogin() { // in it's own method in case we need to add other clearing up
	hideLoginBox() ;
	$("#siteMemberLoginLink").fadeIn(300) ;	
	$("#eiportMemberLoginLink").fadeIn(300) ;	
	$("#siteMemberRegisterLink").fadeIn(300) ;
	$("#siteMemberLogin .myExploreInfo").fadeIn(300) ;	
}

function displayMyExplore() {
	hideLoginBox() ;
	loadMemberArea() ;
}

function hideMyExplore() {
	$("#siteMemberArea").fadeOut(300, function() {
		$("#siteMemberArea").hide();
		$("#siteMemberLoginLink").fadeIn(300) ;	
		$("#eiportMemberLoginLink").fadeIn(300) ;	
		$("#siteMemberRegisterLink").fadeIn(300) ;
		// we need to make sure the page reloads so that the logout takes effect completely
		$("#siteMemberLogin .myExploreInfo").fadeIn(300, function() { window.location.reload() ; }) ;		
	}) ;
}

function loadMemberArea() {
	$("#siteMemberArea").fadeIn(300) ;
}

function doLogout() {
	if ( confirm("Logging out from the member area, are you sure ?") ) {
		var logoutResult = jQuery.ajax({ type: "GET", url: "/wp-content/themes/exploreliving/logout.php", async: false }).responseText;
		hideMyExplore() ;	
	}
}


function validateForm(formData, jqForm, options) {

    jQuery('#loginForm div.error').hide();
    for (var i=0; i < formData.length; i++) {
        if (!formData[i].value) {
          jQuery('#loginForm div.error').show().append("both fields must contain data");
          return false;
        }
    }
	var xhrReq = jQuery.ajax({ 
		type: "GET", 
		url: "/wp-content/themes/exploreliving/login_getdata.php?username="+formData[0].value+"&pass="+formData[1].value,
       	success :loginAjaxSuccess,
        error: loginAjaxError
	});
    return true;
}

function loginAjaxError(r,s,e) {
	alert(e);
	alert(r.responseText);             
}


	
function loginAjaxSuccess( responseText, statusText, xhrObj ) {

	if ( responseText == 'Invalid UserName' || responseText == 'Invalid Password' ){
		jQuery(".loading").fadeOut(300) ;
		jQuery("#loginForm").animate({'opacity':'1'}, 500) ; 
		jQuery('#loginForm legend').empty() ; 
		jQuery('#loginForm legend').css({'color':'red'}) ;
		jQuery('#loginForm legend').show().append(responseText);
		return false;
	} else {
		//alert(responseText) ;
		document.getElementById("loginName").innerHTML = responseText ;
	}
	jQuery(".loading").fadeOut(300) ;
	displayMyExplore() ;	
	
}


function showDevMenu(e) {
	if ( ! devSubMenuShowing ) $("#menu-item-dev-sub").fadeIn(500, function() { devSubMenuShowing = true ; }) ; 
}

function closeDevMenu(e) {
	if ( devSubMenuShowing ) {
		// work out if mouse is moving out side of the bounds of the ul and not just going over an li
		// add some for an overlfow padding
		var ulMinX = $("#menu-item-dev-sub").offset().left ;
		var ulMaxX = $("#menu-item-dev-sub").offset().left + $("#menu-item-dev-sub").width() ;
		var ulMinY = $("#menu-item-dev-sub").offset().top - 10 ;
		var ulMaxY = $("#menu-item-dev-sub").offset().top + $("#menu-item-dev-sub").height();	
		//alert("ulMinX = " + ulMinX + " ulMaxX = " + ulMaxX + " ulMinY = " + ulMinY + " ulMaxY = " + ulMaxY + " \r\n e.pageX = " + e.pageX + " e.pageY = " + e.pageY ) ;
		if ( ( e.pageX <= ulMinX || e.pageX >= ulMaxX  ) || ( e.pageY <= ulMinY || e.pageY >= ulMaxY ) ) {
			$("#menu-item-dev-sub").fadeOut(500, function () { 
				devSubMenuShowing = false ; 
			}) ;
		}
	}
}


/* member handlers */
function saveFavourite(did,mid) {
	// send an ajax call to actually remove it from the db / update the member usermeta
	// pass the favourites string as a whole so we don't have to query for it
	var saveButtonSel = ".saveDev_" + did ;
	var aURL = '/memberActions.php?mAction=addDevFav&mID=' + mid + '&dev_id=' + did ;
	$.ajax({
		url:aURL,
		success: function(res,txtStatus,jqXHR) {
			if ( res == 0 ) {
				alert("Development has been saved in your favourites.") ;
				$(saveButtonSel).fadeOut(300, function(){ $(saveButtonSel).remove(); } ) ;
			} else {
				alert("we're sorry but there was a technical problem, please rty agina later") ;
			}
		}
	});
}

function removeFavDev(did,mid) {
	var devSel = "#dev_" + did ;
	var aURL = '/memberActions.php?mAction=rmDevFav&mID=' + mid + '&dev_id=' + did ;
	$.ajax({
		url:aURL,
		success: function ( res ) {
			if ( res == 0 ) {
				$(devSel).fadeOut(300, function(){ $(devSel).remove();  });
			} else {
				alert("we're sorry but there was a technical problem, please rty agina later") ;
			}
		}
	});
}



/* handlers for ajax login */

$(document).ready(function() {
						   
	try {
		$('#loginForm').ajaxForm({ beforeSubmit: validateForm });
		$('#doLoginButton').click(function() {
			jQuery("#loginForm").animate({'opacity':'0.3'}, 500, function() { jQuery(".loading").fadeIn(300) ; }) ;
			validateForm() ;
			return false ;
		}) ;
	} catch (e) {
		alert(e.message) ;
	}
	
	//may not exist yet and throw an error in ie
	try {
		// setup the handlers for submenus
		$("#menu-item-dev").mouseover(function(e) { showDevMenu(e) });
		$("#menu-item-dev-sub").mouseout(function(e) { closeDevMenu(e) ; }) ;
		$("#menu-item-dev").mouseout(function(e) { closeDevMenu(e) ; }) ;
	} catch (e) {
		alert(e.message) ;
	}
	
	//may not exist yet and throw an error in ie
	try {
		try {
			$(".sub-menu li").mouseenter(function() {
				$(this).css({'background-color':'#EAEAEA','cursor':'pointer'}) ;
				$(this).click(function() { window.location.href = $(this).find("a").attr("href") ; }) ;
			});
			$(".sub-menu li").mouseleave(function() { $(this).css({'background-color':'#fff','cursor':'normal'}) ; });
		} catch (e) {
			throw new Error("The submenu handlers failed: " + e.message) ;
		}
		
		try {
			$("#siteMemberLoginLink").click( function() { displayLoginBox(); } ) ;
		} catch (e) {
			throw new Error("The submenu handlers failed: " + e.message) ;
		}
	} catch (e) {
		alert(e.message) ;
	}	
	
	// inject social sharing links 
	try { 
		
		var el = document.getElementById("socialSharingLinks") ;
		
		// google +1
		var po = document.createElement('script'); po.type = 'text/javascript'; po.async = true;
		po.src = 'https://apis.google.com/js/plusone.js';
		var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(po, s);
		
		// Enable Cache 
		$.ajaxSetup({ cache: true });

		// Facebook
		window.fbAsyncInit=function(){FB.init({appId:'999999999999',status:false,cookie:false,logging:false,xfbml:true, channelUrl:'http://www.telfordhomes.plc.uk/highcedars/'});};

		setTimeout(function(){
			$.getScript("http://connect.facebook.net/en_US/all.js#xfbml=1");
			$.getScript("http://platform.twitter.com/widgets.js");
			$.getScript("http://apis.google.com/js/plusone.js");
		},500);

	} catch (e) {
		alert(e.message) ;	
	}
});
			


