YAHOO.namespace("nemoves.popup");

function createPopup(title, contentURL, width, height, isDraggable, isModal, showEffects, allowScroll, bodyContent) {

	if(isDraggable == null) {
		isDraggable = true;
	}
	
	if(isModal == null) {
		isModal = true;
	}
	
	if(showEffects == null) {
		showEffects = true;
	}

	var scrolling = "no";	
	if(allowScroll != null && allowScroll){
		scrolling = "yes";
	}

	if(YAHOO.nemoves.popup.genericPopupPanel1) {
		YAHOO.nemoves.popup.genericPopupPanel1.destroy();
	}
	
	if(isModal) {
		YAHOO.nemoves.popup.genericPopupPanel1 = new YAHOO.widget.Panel("genericPopupPanel1", 
			{ 
				constraintoviewport:true, 
				fixedcenter:false, 
				close:true, 
				modal:true, 
				draggable:true, 
				visible:false
			}
		);
	} else {
		YAHOO.nemoves.popup.genericPopupPanel1 = new YAHOO.widget.Panel("genericPopupPanel1", 
			{ 
				constraintoviewport:true, 
				fixedcenter:false, 
				close:true, 
				modal:false, 
				draggable:true, 
				visible:false
			}
		);
	}
	YAHOO.nemoves.popup.genericPopupPanel1_parameters = new Array();
	
	var panel = YAHOO.nemoves.popup.genericPopupPanel1;
	panel.cfg.setProperty("width", width+"px");
	panel.cfg.setProperty("draggable", isDraggable);

	if(showEffects) {
		panel.cfg.setProperty("effect", {effect:YAHOO.widget.ContainerEffect.FADE, duration:0.5});
	}
	
	//Let the caller overrride the body.  When bodyText is specified, the iframe the contentURL are ignored
	var body = "";
	if(bodyContent){
		body = bodyContent;	
	}else{
		body = "<iframe id='genericPopupPanel1_IFrame' name='genericPopupPanel1_IFrame' src='" + 
				contentURL +"' width='100%' height='"+ height +"'scrolling='"+ scrolling + 
				"' frameborder='0'></iframe>";
	}
	
	panel.setHeader(title);
	panel.setBody(body);
	
	panel.render(document.body);
	
	setPopupParameter("originalSize", getPopupSize().join(',')); 
	//alert('After Adding Original Size: '+YAHOO.nemoves.popup.genericPopupPanel1_parameters.length);
	//alert('Check Getter: '+getPopupParameter("originalSize"));
	panel.show();
	
	positionPopup(panel);
	
	panel.hideEvent.subscribe(function() {
			if(YAHOO.nemoves.popup.genericPopupPanel1.closeCallback) {
				YAHOO.nemoves.popup.genericPopupPanel1.closeCallback();
			}
			panel.setBody("");
		}
	);					
}

function closePopup() {
	YAHOO.nemoves.popup.genericPopupPanel1.hide();
}

function resizePopup(width, height){
	if(height != null){
		var iframe = document.getElementById("genericPopupPanel1_IFrame");
		iframe.style.height = height + "px";
	}
	YAHOO.nemoves.popup.genericPopupPanel1.cfg.setProperty("width", width+"px");
	
	positionPopup(YAHOO.nemoves.popup.genericPopupPanel1);
}

function getPopupSize() {
	var panel = YAHOO.nemoves.popup.genericPopupPanel1;
	if(!panel)
		panel = parent.YAHOO.nemoves.popup.genericPopupPanel1;
	
	return [panel.underlay.clientWidth, panel.underlay.clientHeight];
}

function getPopupOriginalSize() {
	return getPopupParameter("originalSize").split(',');
}

function setPopupCloseCallback(callback) {
	YAHOO.nemoves.popup.genericPopupPanel1.closeCallback = callback;
}

function setPopupParameter(name, value) {	
	//alert('Setting Parameter: '+name+' Value: '+value);
	var parameters = YAHOO.nemoves.popup.genericPopupPanel1_parameters;
	//alert('Parameters Length Before: '+parameters.length);
	var parmFound = false;
	for(var i = 0; i < parameters.length; i++) {
		if(parameters[i][0] == name) {
			parameters[i][1] = value;
			parmFound = true;
		}
	}
	//alert('Parameters Length After: '+parameters.length);
	if(!parmFound) {
		//alert('Setting Parameters Length Before');
		parameters[parameters.length] = [name, value];
		YAHOO.nemoves.popup.genericPopupPanel1_parameters=parameters;
	}
	//alert('Parameters Length After2: '+parameters.length);
}

function getPopupParameter(name) {
	//alert('Getting Parameter ' + name);
	var parameters = YAHOO.nemoves.popup.genericPopupPanel1_parameters;
	if(!parameters)
		parameters = parent.YAHOO.nemoves.popup.genericPopupPanel1_parameters;
	//alert('What parameters: '+parameters);
	for(var i = 0; i < parameters.length; i++) {
		if(parameters[i][0] == name) {
			return parameters[i][1];
		}
	}
	
	return null;
}

function positionPopup(panel) {
	var defaultPos = [20,20];

	panel.center();
	var size = [panel.underlay.clientWidth, panel.underlay.clientHeight];
	var newPos = [null, null];
	var viewportSize = getViewportSize();
	
	if(size[0] > viewportSize[0] - (defaultPos[0] * 2)) {
		newPos[0] = defaultPos[0];
	}
	
	if(size[1] > viewportSize[1] - (defaultPos[1] * 2)) {
		newPos[1] = defaultPos[1];
	}
	
	if(newPos[0] == defaultPos[0] || newPos[1] == defaultPos[1]) {
		panel.cfg.setProperty("draggable", false);
		panel.cfg.setProperty("constraintoviewport", false);
		panel.cfg.setProperty("xy", newPos);
		window.scroll(0,0);
	}
}

function getViewportSize() {
	var size = [0, 0];
	
	if (typeof window.innerWidth != 'undefined') {
		size = [
			window.innerWidth, 
			window.innerHeight
		];
		
	} else if (typeof document.documentElement != 'undefined'
		    && typeof document.documentElement.clientWidth != 
			'undefined' && document.documentElement.clientWidth != 0)
	{
		size = [
			document.documentElement.clientWidth, 
			document.documentElement.clientHeight
		];
		
	} else {
		size = [
			document.getElementsByTagName('body')[0].clientWidth,
			document.getElementsByTagName('body')[0].clientHeight
		];
	}
	
	return size;
}