/*
 * Exampe invocation code
 *
 * <iframe name='test_ad' id='test_ad' style='border:0px;' width='645' height='60' scrolling='no' frameborder='0'></iframe>
 * var textstreamAdSettings = [
 * 	{iframeId:'test_ad', zoneId:10}];
 */
function textstreamAds(){
	var ox_TEXTSTREAM_AD_DEBUGGER = false;
	var ox_adSource = 'http://openx.textstream.co.za/www/delivery/afr.php?';
	var ox_adRefresh = 'refresh=30&';
	var ox_adCacheBusting = 'cb=' + Math.floor(Math.random()*99999999999)+'&';
	var ox_zoneId = 'zoneid=';
	var ox_BannerParameters = '';
	
	
	this.getUserInformation		= getUserInformation;
	this.processUserInformation	= processUserInformation;
	this.setAllIframes			= setAllIframes;
	this.setIframe				= setIframe;
	this.isDebugging 			= isDebugging;
	this.debugOutput			= debugOutput;
	this.isValid				= isValid;
	
	debugOutput("In textstream Ads" );
	getUserInformation();

	
	function getUserInformation() {
		debugOutput("Getting User information" );
		
		var os = opensocial.Container.get();
		var dataReqObj = os.newDataRequest();

		var param = {};
		param[opensocial.DataRequest.PeopleRequestFields.PROFILE_DETAILS] = [opensocial.Person.Field.DATE_OF_BIRTH, MyOpenSpace.Person.Field.CITY, MyOpenSpace.Person.Field.GENDER, MyOpenSpace.Person.Field.REGION, MyOpenSpace.Person.Field.COUNTRY];
	
		var viewerReq = os.newFetchPersonRequest(opensocial.DataRequest.PersonId.VIEWER, param);
		//var viewerFriendsReq = os.newFetchPeopleRequest(opensocial.DataRequest.Group.VIEWER_FRIENDS, param);

		dataReqObj.add(viewerReq);
		//dataReqObj.add(viewerFriendsReq);

		dataReqObj.send(processUserInformation);
	}
	
	function processUserInformation( dataResponse ) {
		debugOutput("Processing returned information" );
		
		ox_BannerParameters = "";
		
		if ( !dataResponse.hadError() ) {
			var viewerData = dataResponse.get(opensocial.DataRequest.PersonId.VIEWER).getData();
			var viewerID = viewerData.getField(opensocial.Person.Field.ID);

			var name			= viewerData.getField(opensocial.Person.Field.NAME);
			var pic_url			= viewerData.getField(opensocial.Person.Field.THUMBNAIL_URL);
			var date_of_birth	= viewerData.getField(opensocial.Person.Field.DATE_OF_BIRTH);
			var age				= viewerData.getField(MyOpenSpace.Person.Field.AGE);
			var gender			= viewerData.getField(MyOpenSpace.Person.Field.GENDER);
			var city			= viewerData.getField(MyOpenSpace.Person.Field.CITY);
			var postalcode		= viewerData.getField(MyOpenSpace.Person.Field.POSTALCODE);
			var marital_status	= viewerData.getField(MyOpenSpace.Person.Field.MARITAL_STATUS);
			var region			= viewerData.getField(MyOpenSpace.Person.Field.REGION);
			var country			= viewerData.getField(MyOpenSpace.Person.Field.COUNTRY);

			if ( viewerID )
				ox_BannerParameters += '&viewerId=' + escape(viewerID);
			else 
				ox_BannerParameters += '&viewerId';
			if ( name )
				ox_BannerParameters += '&name=' + escape(name);
			else
				ox_BannerParameters += '&name';
			if ( pic_url )
				ox_BannerParameters += '&pic_url=' + escape(pic_url);
			else
				ox_BannerParameters += '&pic_url';
			if ( age )
				ox_BannerParameters += '&age=' + escape(age);
			else
				ox_BannerParameters += '&age';
			if ( gender )
				ox_BannerParameters += '&gender=' + escape(gender);
			else
				ox_BannerParameters += '&gender';
			if ( city )
				ox_BannerParameters += '&city=' + escape(city);
			else
				ox_BannerParameters += '&city';
			if ( postalcode )
				ox_BannerParameters += '&postalcode=' + escape(postalcode);
			else
				ox_BannerParameters += '&postalcode';
			if ( marital_status )
				ox_BannerParameters += '&marital_status=' + escape(marital_status);
			else
				ox_BannerParameters += '&marital_status';
			if ( date_of_birth )
				ox_BannerParameters += '&dob=' + escape(date_of_birth);
			else
				ox_BannerParameters += '&dob';
			if ( region )
				ox_BannerParameters += '&region=' + escape(region);
			else
				ox_BannerParameters += '&region';
			if ( country )
				ox_BannerParameters += '&country=' + escape(country);
			else
				ox_BannerParameters += '&country';
		} else {
			ox_BannerParameters += '&viewerId&name&pic_url&age&gender&city&postalcode&marital_status';
		}
		
		setAllIframes();
	}
	
	function setAllIframes() {
		debugOutput("Updating all iframes" );
		
		if ( isValid( textstreamAdSettings ) ) {
			var src = ''
			for( var i in textstreamAdSettings ) {
				src = ox_adSource + ox_adRefresh + ox_adCacheBusting + ox_zoneId + textstreamAdSettings[i].zoneId + ox_BannerParameters;
				setIframe(textstreamAdSettings[i].iframeId, src)
			}
		}
	}
	
	function setIframe(iframe_id, url){
		
		debugOutput("Updating Iframe " +  iframe_id + ' with ' + url);
		var ifrm = document.getElementById( iframe_id );
		ifrm.setAttribute("src", url);
	}
	
	function isDebugging(){
		try{
			if ( isValid(ox_TEXTSTREAM_AD_DEBUGGER) && ox_TEXTSTREAM_AD_DEBUGGER ) {  
				return true;
			} else {
				return false;
			}
		}catch(err){
			return false;
		}
	}
	
	function debugOutput ( a_text ) {
		try{                        
			if(isDebugging()){
				var debugElement = document.getElementById('debugOutput');
				if(isValid(debugElement) && isValid(debugElement.style) && debugElement.style.display != "none"){
					debugElement.innerHTML += a_text + '<br>';
				}
			}
		}catch(err){};
	}
	
	function isValid(a_obj) {
		return (a_obj != undefined && a_obj != null);
	}
}

gadgets.util.registerOnLoadHandler( textstreamAds );

