function loadscript(url,json) {
    if (typeof genus != "undefined") if (typeof genus.currentuser != "undefined") {
        genus.savesessionchanges();
        json.auth = {"token":genus.readcookie("BIMREG_session_token"),
	        "ts":genus.readcookie("BIMREG_session_ts"),
	        "sign":genus.readcookie("BIMREG_session_sign"),
	        "tp_sign":genus.readcookie("BIMREG_session_tp_sign"),
	        "email":genus.readcookie("BIMREG_session_email"),
	        "user":genus.readcookie("BIMREG_session_userKey")
        }
        //console.log(json)
    }
    if (url.indexOf("genus") > 0) {
        url += url.indexOf("?") > 0 ? "&" : "?";
        var j = document.domain.substring(document.domain.search(/(\w+\.\w+)$/));
        json = JSON.stringify(json);
        url += "js=" + encodeURIComponent(json);
    }
    //console.log(url)
    b = document.createElement("script");
    b.src = url;
    document.getElementsByTagName("head")[0].appendChild(b)
}

var genus = {
	version:"3.0",
	session:false,
	url:"http://dev.genus.younewstv.com",
	setcookie:function(name,value,days) {
		if (days) {
			var date = new Date();
			date.setTime(date.getTime()+(days*24*60*60*1000));
			var expires = "; expires="+date.toGMTString();
		}
		else var expires = "";
		var rootdomain = document.domain.substring(document.domain.search(/([\w\-]+\.\w+)$/));
		document.cookie = name+"="+value+expires+"; domain="+rootdomain+";path=/";
	},
	readcookie:function(name) {
		var nameEQ = name + "=";
		var ca = document.cookie.split(';');
		for(var i=0;i < ca.length;i++) {
			var c = ca[i];
			while (c.charAt(0)==' ') c = c.substring(1,c.length);
			if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length,c.length);
		}
		return null;
	},
	savesessionchanges:function()
	{
		if(genus.session) {
			genus.setcookie("BIMREG_session_token",genus.session.auth.token,365);
			genus.setcookie("BIMREG_session_ts",genus.session.auth.ts,365);
			genus.setcookie("BIMREG_session_sign",genus.session.auth.sign,365);
			genus.setcookie("BIMREG_session_tp_sign",genus.session.auth.tp_sign,365);
			if(genus.currentuser.profile){
				genus.setcookie("BIMREG_session_email",genus.currentuser.profile.user.private.email,365);
				genus.setcookie("BIMREG_session_userKey",genus.currentuser.profile.user.key,365);
			}
		}
	},
	clearsession:function() {
		genus.setcookie("BIMREG_session_token","",-1);
		genus.setcookie("BIMREG_session_ts","",-1);
		genus.setcookie("BIMREG_session_sign","",-1);
		genus.setcookie("BIMREG_session_tp_sign","",-1);
		genus.setcookie("BIMREG_session_email","",-1);
		genus.setcookie("BIMREG_session_userKey","",-1);
	},
	init:function(token, callback) {
		window.onbeforeunload=function() {
			genus.savesessionchanges();
		};
		var loc = genus.url + "/v1/js/init";
		var json = {"verb":"GET",
			"payload":{},
			"callback": callback
		};
		loadscript(loc,json);
	},
	usermodel:{
		getprofile:function(username, callback) {
			var loc = genus.url + "/v1/js/init";
			var json = {"verb":"GET",
				"payload":{
					"search":{"query":"username=\""+username+"\""}
					},
				"callback": callback
			};
			loadscript(loc,json)
		},
		rememberpassword:function(email, callback) {
			//loadscript("rememberpassword&email="email,callback)
		},
		createuser:function(user,callback) {
			var a = "createuser";
			//loadscript(a,callback);
		}
	},
	stationmodel:{
		getdma:function(friendly,id,dmaid,zipcode,shtfriendly,full) {
			//loadscript("getdma&friendly="+friendly+"&id="+id+"&dmaid="+dmaid+"&zipcode="+zipcode+"&shtfriendly="+shtfriendly+"&full="+full,callback);
		}
	},
	contentmodel:{
		getvoting:function(contentid,contestid,callback) {
			//loadscript("getvoting&contentid="+contentid+"&contestid="+contestid,callback);
		},
		getcontest:function(contestid,callback) {
			//loadscript("getcontest&contestid="+contestid,callback);
		},
		vote:function(contentid,callback) {
			//loadscript("vote&contentid="+contentid,callback);
		},
		crawlurl:function(url,callback) {
			//loadscript("crawlurl&url="+url,callback);
		},
		share:function(url,title,img,summary,callback) {
			//loadscript("share&url="+url+"&title="+title+"&img="+img+"&summary="+summary,callback);
		}
	},
	currentuser:{
		loggedin:false,
		login:function(username,password,callback) {
			var loc = genus.url + "/v1/js/login";
			var json = {"verb":"GET",
				"payload":{
					"username":username,
					"password":password
					},
				"callback": callback
			};
			loadscript(loc,json)
		},
		logout:function(initCall){
			token = genus.session.auth.token;
			genus.session=false;
			genus.currentuser.profile=false;
			genus.isloggedin=false;
			genus.clearsession();
			genus.init(token, initCall);
		},
		favorite:function(postid,extid,callback){
			var a = "favorite";
			if(postid != null) a += "&postid="+postid;
			if(extid != null) a += "&extid="+extid;
			//loadscript(a,callback);
		},
		unfavorite:function(postid,extid,callback){
			var a = "unfavorite";
			if(postid != null) a += "&postid="+postid;
			if(extid != null) a += "&extid="+extid;
			//loadscript(a,callback);
		},
		updateprofile:function(user,callback) {
			var loc = genus.url + "/v1/users/user_key";
			var json = {"verb":"PUT",
				"payload":{
					"user":user
					},
				"callback": callback
			};
			loadscript(loc,json);
		},
		profile:false,
		get:function(index) {
			var value = genus.currentuser.profile[index.toLowerCase()];
			if(value != undefined)
				return value;
			else
				return "";
		},
		favorites:false,
		feed:false,
		follow:function(username,callback) {
			var a = "follow&username="+username;
			//loadscript(a,callback);
		},
		unfollow:function(username,callback) {
			var a = "unfollow&username="+username;
			//loadscript(a,callback);
		}
	}
}

