///////////////////////////////////////////////////////////////////////////////////
// CONSTANTS
///////////////////////////////////////////////////////////////////////////////////
var resizeDelay = 0;// resizing delay interval identifyer
var closeObject = {};// storage object for the apps state used when the app closes

///////////////////////////////////////////////////////////////////////////////////
// Major Object Assembly
///////////////////////////////////////////////////////////////////////////////////
var Magazine = new Magazine("DigitalMagazine",flashVars,{
  resize:true
});
var Panel = new Panel();
var JHistory = new JHistory();
var Roar;
var Tracker;


///////////////////////////////////////////////////////////////////////////////////
// EVENTS
///////////////////////////////////////////////////////////////////////////////////
//var check = new Request.JSON({
//  url:"/flashservices/json.php/AccessControl.checkSessionValid",
//  onComplete:function(response){
//    if(!response){
//      clearInterval(checker);
//      alert("You've been disconnected for to manny guys!");
//    }
//  }
//});
//var checker = setInterval(function(){
//  check.send();
//},10*1000);

////DEFINE THIS FUNCTION FIRST/////


///////////////////////////////////////////////////////////////////////////////////
// window Events
///////////////////////////////////////////////////////////////////////////////////
window.addEvent("resize", function(){
	$clear(resizeDelay);
	resizeDelay = repositionMagazine.delay(500);
}.bind(window));

window.addEvent("onbeforeunload",function(){
	thirdtracker("http://3rdpartytracker.dmtmag.com/close/"+publication_name+"/"+issue_volume+"/"+issue_number);
	var stats = new Request.JSON({// statistics RPC for when the window is closed (not async)
		url:"/flashservices/json.php/DMTsettings.statistics",
		onComplete: statResponse,
		async:false
	}).send(closeObject);
});

window.addEvent("load",function(){
	if(!inFrame){
		window.moveTo(0,0);
		window.resizeTo(screen.width,screen.height-30);
	}
	
	//Load Tracking
	thirdtracker("http://3rdpartytracker.dmtmag.com/load/"+publication_name+"/"+issue_volume+"/"+issue_number);
	
	//Setup Objects
	roar = new Roar();
	Panel.setup();
	Magazine.embedFlash(false);
});

Panel.addEvent("closed",function(){
	Magazine.fadeModalOut();
});

///////////////////////////////////////////////////////////////////////////////////
// Magazine Events
///////////////////////////////////////////////////////////////////////////////////
Magazine.addEvent("load",function(){
  repositionMagazine();
}.bind(window));

Magazine.addEvent("preload",function(){
  repositionMagazine();
}.bind(window));

Magazine.addEvent("magReady",function(){
  JHistory.register("page",Magazine.setPage.bind(Magazine),0);
  JHistory.register("zoom",Magazine.setZoom.bind(Magazine),0);
  JHistory.restore();
});

Magazine.addEvent("zoom",function(value){
 JHistory.change("zoom",value);
});

Magazine.addEvent("page",function(value){
	if(value=="magazine") value=0;
	if (value%2||value==0) {
		JHistory.change("page", Math.round(value));
	}
	thirdtracker("http://3rdpartytracker.dmtmag.com/page/"+publication_name+"/"+issue_volume+"/"+issue_number+"/page"+value);
 
	new Request.JSON({
		url:"/flashservices/json.php/DMTsettings.pagePopup",
		onComplete: function(data){
			if(!data)return;
			if(data.HTML != ""){
				openHTMLPanel(data.HTML);
			}else if(data.url != ""){
				openPanel(data.url);
			}
		}
	}).send(JSON.encode({"issue_ID":issue_ID,"pageNum":value}));
 
});

///////////////////////////////////////////////////////////////////////////////////
// Document Level Methods
///////////////////////////////////////////////////////////////////////////////////
function repositionMagazine(){
	if(!inFrame){
		var win = window.getSize();	
		Magazine.setSize(win.x, win.y);
		Magazine.setPosition(0,0);
	}
}


function jsObject(prop,data){
	if(prop == "closeObject"){
		closeObject = JSON.decode(data);
		closeObject.activity = "close";
	}else{
		document[prop] = JSON.decode(data);
	}
};

function openWindow(location){
  openMinibrowser(location);
}

function openHTMLPanel(HTML){
	Magazine.fadeModalIn();
    Magazine.addEvent("modalVisible",function(){
      Panel.setHTML(HTML);
      Magazine.removeEvents("modalVisible",arguments.callee);
    });
	
	Magazine.addEvent("modalRelease",function(){
      closePanel();
      Magazine.removeEvents("modalRelease",arguments.callee);
    });
}

function openPanel(location, lockmodal, resizeable){
  resizeable = (resizeable==null) ? false : true ;
  lockmodal = (lockmodal==null || !lockmodal) ? false : true ;

  if(!Panel.active){
    Magazine.fadeModalIn();
    Magazine.addEvent("modalVisible",function(){
      Panel.get(location,null,{"resizable":resizeable,"closer":(!lockmodal)});
      Magazine.removeEvents("modalVisible",arguments.callee);
    });
  }else{
    Panel.removeEvents("closed",arguments.callee);
    Magazine.removeEvents("modalRelease",arguments.callee);
    Panel.get(location,{"closer":(!lockmodal)});
  }

  if(!lockmodal){
    Magazine.addEvent("modalRelease",function(){
      closePanel();
      Magazine.removeEvents("modalRelease",arguments.callee);
    });
  }
}

function openMinibrowser(location,toolbars){
	openPanel("/panels/minibrowser.php?toolbar="+toolbars+"&width=750px&height=500px&url="+location, null, true);
}

function closePanel(){
  Panel.addEvent("closed",function(){
    Magazine.fadeModalOut();
    Panel.removeEvent("closed",arguments.callee);
  });
  Panel.close();
}

function thirdtracker(src){
	var tmpframe = new Element("iframe",{
		src:src,
		styles:{
			width:0,
			height:0,
			border:"none"
		}
	}).inject($(document.body));
	
	(function(){
		tmpframe.destroy()
	}.delay(30000));
	
}