

/*
	@version 1.1
	CONTAINS: cookieLib
	dbg
*/

if(typeof vyew=="undefined") vyew=new Object();

//pass a callback, will pass one param: 
//		{em:email@ddress, reg:guest|pers|plus|pro}
//		or false, if not logged in
/*
vyew.getUserInfo=function(callback)
{
    if(getCookie('em') && getCookie("lID") && getCookie("sid"))
		callback.apply(this,[{em:getCookie('em')}])
    else if (getCookie('lID')) vyew.getUserEmail(callback);
    else callback.apply(this,[false]);
}
*/


//callsback with function({em:email@address.com});
vyew.checkLogin=function(callback)
{
	if(getCookie('sid') || getCookie('lID')){
		vyew.getUserEmail(callback);
	}else callback.apply(this,[false]);
}

/*
Todo, handle multiple ajax calls
vyew.checkLogin_called=false;
vyew.checkLogin_callbacks=[];
vyew.execCallbacks=function(cbArray, argsArray)
{

}
*/
vyew.getUserEmail=function(callback)
{
    var lID=getCookie('lID');
	var sid=getCookie('sid');

//todod.... 
//if sid, check if good, return em
//else if lid, check, return em and sid

	vyew.gue_callback=callback;
	if(sid){
		$.post('/site/siteajax.php',
	   		{f:'csid', sid:sid},
            function(rtn)
			{
				rtnobj=eval(rtn);
				if(typeof rtnobj != "undefined" && typeof rtnobj.em != "undefined"){
					setCookie('em',rtnobj.em,'session');
					setCookie('userdata',rtn,'session');
					setCookie('ud',rtn,'session');
					try{
					if(rtnobj.cakes && rtnobj.cakes.length>0){
						if(rtnobj.cakes.pref_myhome && rtnobj.cakes.pref_myhome=="ajax"){
							setCookie('myhome','ajax','never');	
						}
					}
					}catch(e){}
					vyew.gue_callback.apply(this, [rtnobj]);
				}else{
					vyew.gue_callback.apply(this, [false]);
				}
			});
	

	}else if(lID){
        var ref=fs_getCookie('ref');
        var adRef=fs_getCookie('adRef');
        if(!ref)ref="none";
        if(!adRef)adRef="none";
        $.post('/site/siteajax.php',
            {f:'clID', clID:lID, ref:ref, adRef:adRef},
            function (res)
			{	
				if(res){
					results=res.split(',');
					userEmail=results[0]; mid=results[1]; sid=results[2];
					var cookieexp=(getCookie('keepLoggedIn')=="1")?'never':'session'
					if(!cookieexp)cookieexp="session"
					setCookie('em',userEmail, cookieexp);
					if( !(getCookie('sid').length>5) )	
						setCookie('sid',sid,'session');
					if(userEmail.length>2)
						vyew.gue_callback.apply(this, [{em:userEmail, mid:mid, sid:sid}]);
					else {
						clearCookie("lID");
						vyew.gue_callback.apply(this, [false]);
					}
				}else{
					clearCookie("lID");
					vyew.gue_callback.apply(this, [false]);
				}
			}//func
		);//post
    }else{
		callback.apply(this,[false]);
    }
}

vyew.isEmailAddress=function(em)
{
	if (typeof em == "undefined") return false;
	if (typeof em == "object") em = em[0];
	em=''+em;
	if(em.match(/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9]+$/)) return true;
	else return false;
}

vyew.updateObj=function(targObj, newVarsObj)
{
	if(typeof targObj != "object" || typeof newVarsObj != "object") return;
	for(var v in newVarsObj){
		targObj[v]=newVarsObj[v];
	}
}

vyew.clearCookies=function()
{
    clearCookie('em'); clearCookie('lID'); clearCookie('sid'); clearCookie("keepLoggedIn"); 
	clearCookie('userdata');
	clearCookie('ud');
    clearCookie('exp_uniqueid'); clearCookie('exp_userhash');
}

vyew.logout=function()
{
	vyew.clearCookies();
}







/**
 * ------------------------------------------------------------------
 *  MISCELLANEOUS
 * ------------------------------------------------------------------
 */

function empty(v){
  if(typeof v == "undefined" || v==null || v==undefined) return true;
  else return false;
}
function isDefined(obj){
    return !empty(obj);
}

function hasFirebug()
{
    if(typeof console == "undefined"){
        if(!window.loadFirebugConsole) return false;
        else window.loadFirebugConsole();
    }
    if(typeof console != "undefined" && console.debug) return true;
    return false;
}

function dbg()
{
    if (!hasFirebug()) return;
    var out="";
    for(var i=0;i<arguments.length;i++){ out+=arguments[i]+", "; }
    out=out.substr(0,out.length-2);
    console.debug(out);
}

function dbd(x)
{
    if (!hasFirebug()) return;
    console.debug('----------------');
    console.dir(x);
}

function isNumeric(n){
    return !isNaN(n);
}





/**
 * -------------------------------------------------------------------------
 * 		COOKIES
 * -------------------------------------------------------------------------
 */
function fs_getAllCookies(){
	return document.cookie;		
}

function fs_getCookie(a,isJson){
    var e, m=" "+document.cookie+";"
    var N=" "+a+"=",s=m.indexOf(N),r="";
    if(s!=-1){
        s+=N.length;
        e=m.indexOf(";",s);
        r=unescape(m.substring(s,e))
    }
    if(!r || r.length<1) return false;
    if(r.match(/ckjson.:1/) || r.match(/ckjson:1/) || isJson==true){
        try {
            r=JSON.decode(r);
            delete r.ckjson;
        }catch(e){ dbg('Err394x:Converting JSON') }
    }
    if(r=="false") r=false;
    return r
}

function fs_clearCookie(n){
    var e=new Date();
	e.setTime(e.getTime()-20000000);
	document.cookie=n+"=0; expires="+e.toGMTString() + "; path=/; domain="+fs_getHostname();
	document.cookie=n+"=0; expires="+e.toGMTString() + "; path=/;";
}

//allSubDomains is a bool. set true if you want to set to ".domain.com"
//which will be available to, and overwrite all subdomain cookies
function fs_setCookie(varName,varVal,exp,allSubDomains){
    varVal=(varVal==null)?'0':varVal
    if(typeof(varVal)!="string" && typeof(varVal)!="number"){
        varVal.ckjson=1;
        varVal=JSON.encode(varVal);
    }
    //escape semicolons
    varVal=varVal.replace(/;/g,"%3B");
    var e=new Date();
    if(typeof(exp)=="undefined" || exp=="null" || exp==null || exp=="" || exp=="session"){
        exp=";";
    }else if (exp=="never"||exp=="forever")
    {
        e.setFullYear(e.getFullYear() + 10);
        exp="; expires=" + e.toGMTString();
    }else{
        e.setTime(e.getTime()+(60000*exp))
        exp="; expires=" + e.toGMTString();
    }
    var ck = varName+"=" + escape(varVal) + "; path=/;" + exp;
    if(allSubDomains==true) ck += " domain="+fs_getHostname()+";";
    document.cookie = ck;
//alert(ck);
//alert(document.cookie);
    return "1";
}



var clearCookie=fs_clearCookie;
var setCookie=fs_setCookie;
var getCookie=fs_getCookie;

function fs_getHostname()
{
    var h=document.location.host;
    var p=h.lastIndexOf('.');
    p=h.lastIndexOf('.',p-1);
    if (p>-1) h=h.substr(p+1);
    return h;         
}

//records all vyew cookies, clears them, then re-sets them
//this is to clear out the global subdomain cookies (.domain.com)
function resetVyewCookies(){
	var sid=getCookie("sid");
	var lID=getCookie("lID");
	var kli=getCookie("keepLoggedIn");
	clearCookie("sid"); clearCookie("lID"); clearCookie("keepLoggedIn");
	setCookie("sid",sid);
	if(lID && kli) setCookie("lID", lID, "forever");
	if(kli) setCookie("keepLoggedIn", kli, "forever");
}

/*
	CookieLib Docs
	v1.1
	v1.0
   	===== Purpose =====
	Provide set/get cookie support for flash
	
	\\
	===== How to use it =====
		1. copy cookieLib.js to the same place as your .html file which references your .swf
		2. put this lines in your .html file :
		---------------------------------------------------------------------------
			<script src="cookieLib.js" type="text/javascript"></script>
		---------------------------------------------------------------------------
		3. SET A COOKIE FROM FLASH:
		
			import flash.external.*;
			ExternalInterface.call("fs_setCookie", "cookieName", "cookieValue", "EXPIRATION");
			
			(expiration can be: "never", or "session" or a "number" representing minutes)
			(default expiration is "never")
			(session expires when the browser is closed)
			(minutes= "60" for 1 hour, "1440" for 1 day, etc...) 
			
		4. RETRIEVE A COOKIE FROM FLAH:
		
			import flash.external.*;
			var cookievalue = ExternalInterface.call("fs_getCookie", "cookieName");
	
*/

