/* 
Farenn Chang
21/11/2006

Add addImage function

*/

function hidenDiv(divName){

		document.getElementById(divName).style.display = 'none';		
}

/*insert tracking*/


function displayHelp(displayDiv, pageKey, fieldName) {	

	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=displayHelp('"+pageKey+"','"+fieldName+"')&key="+sKey+"",_helpCallBack);
}



/*insert tracking*/
function insertTracking(itemID, itemType) {	

	var sKey = 'none';// dummy value - OK as long it is not null

	performRequest("requestAction.cfm?class=cfc.tracking&method=insertTracking('"+itemID+"','"+itemType+"')&key="+sKey+"",_genericCallback);
}

/*display edit location form*/
function getStateList(displayDiv, action, locID) {	

	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getStateList('"+action+"','"+locID+"')&key="+sKey+"",_genericCallback);
}


/*display edit location form*/
function editLocation(displayDiv, locID) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=editLocation('"+locID+"')&key="+sKey+"",_genericCallback);
}

/*display edit location form*/
function addLocation(displayDiv, locType, parentID) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addLocation('"+displayDiv+"','"+locType+"', '"+parentID+"')&key="+sKey+"",_genericCallback);
}


/*inserts a new location*/
function insertLocation(displayDiv, action, locType, parentID, displayText, order) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=insertLocation('"+action+"','"+locType+"','"+parentID+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_insertItemCallback);
}


/*save school; item*/
function saveLocation(displayDiv, action, locID, displayText, order) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=saveLocation('"+action+"','"+locID+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_genericCallback);
}

/*displays setting drop down options*/
function getSchoolChild(displayDiv, action, parentID) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getSchoolChild('"+action+"','"+parentID+"')&key="+sKey+"",_genericCallback);
}



/*displays setting drop down options*/
function getSchoolDropdown(displayDiv, action, category, type, value, selectName) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getSchoolDropdown('"+action+"','"+category+"','"+type+"','"+value+"','"+selectName+"')&key="+sKey+"",_genericCallback);
}


/*display form school drop down option*/
function editSchoolItem(displayDiv, setID, displayText, order) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=editSchoolItem('"+setID+"','"+displayText+"','"+order+"')&key="+sKey+"",_genericCallback);

}


/*save school; item*/
function saveSchoolItem(displayDiv, action, setID, displayText, order) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=saveSchoolItem('"+action+"','"+setID+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_genericCallback);
}

/*display add schoool item forms*/
function addSchoolItem(displayDiv, category, type, value,  selectName) {	



	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addSchoolItem('"+category+"','"+type+"','"+value+"','"+selectName+"')&key="+sKey+"",_genericCallback);
}

/*display add schoool child item forms*/
function addSchoolChild(displayDiv, parentID) {	



	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addSchoolChild('"+parentID+"')&key="+sKey+"",_genericCallback);
}

/*display add setting item forms*/
function insertSchoolItem(displayDiv,action,category, type,value, selectName,displayText, order ) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=insertSchoolItem('"+action+"','"+category+"','"+type+"','"+value+"','"+selectName+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_insertItemCallback);
}


/*display add setting item forms*/
function insertSchoolChild(displayDiv,action,parentID, displayText, order ) {	


	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}

	if (displayDiv)
	{
		var sKey = displayDiv;
	}

	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=insertSchoolChild('"+action+"','"+parentID+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_insertItemCallback);
}








/*displays setting drop down options*/
function getSettingDropdown(displayDiv, action, category, type, selectName) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getSettingDropdown('"+action+"','"+category+"','"+type+"','"+selectName+"')&key="+sKey+"",_genericCallback);
}

/*display add setting item forms*/
function addSettingItem(displayDiv, category, type, selectName) {	



	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addSettingItem('"+category+"','"+type+"','"+selectName+"')&key="+sKey+"",_genericCallback);
}

/*display add setting item forms*/
function insertSettingItem(displayDiv,action,category, type, selectName,displayText, order ) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=insertSettingItem('"+action+"','"+category+"','"+type+"','"+selectName+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_insertItemCallback);
}



/*display form setting drop down option*/
function editSettingItem(displayDiv, setID, displayText, order) {	


	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}
	displayText = displayText.replace('<', 'less than');
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=editSettingItem('"+setID+"','"+displayText+"','"+order+"')&key="+sKey+"",_genericCallback);
}

/*save setting item*/
function saveSettingItem(displayDiv, action, setID, displayText, order) {	

	var thisDisplayText = "";
	var thisOrder = "";
	
	if (order)
	{
		var thisOrder = document.getElementById(order).value;
	}

	if (displayText)
	{
		var thisDisplayText = document.getElementById(displayText).value;

	}
	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=saveSettingItem('"+action+"','"+setID+"','"+thisDisplayText+"','"+thisOrder+"')&key="+sKey+"",_genericCallback);
}


/*dynamically loads images input fields..not used*/
function addImage(displayDiv, imageCount, formName) {	

	var thisFormName = "";
	
	if (formName)
	{
		var thisFormName = document.getElementById(formName);
	}

	for(i=1; i<=imageCount; i=i+1)
	{
//		alert(thisFormName.eval('img_' + i ).value);
	}
	

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addImage()&key="+sKey+"",_genericCallback);
}


function checkPassword(field, fieldConfirm){	
	if (field.value != fieldConfirm.value){
		alert("Your passwords do not match. \nPlease try again");
		fieldConfirm.value = "";
	}
}

/* loads user defined entry field*/
function getEntryUserDefined(selectName, displayDiv, outputName, outputLabel) {	
	
	var thisSelectName = "";
	
	if (selectName)
	{
		var thisSelectName = document.getElementById(selectName).value;
	}

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getEntryUserDefined('"+thisSelectName+"','"+outputName+"','"+outputLabel+"')&key="+sKey+"",_genericCallback);
}


/* gets school sub sectors */
function getSchoolCategory(inputSelect, displayDiv, outputSelect, outputLabel, categoryType, actionType) {	
	
	var thisSelect = "";
	
	if (inputSelect)
	{
		var thisSelect = document.getElementById(inputSelect).value;
	}

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getSchoolCategory('"+thisSelect+"','"+outputSelect+"','"+outputLabel+"','"+categoryType+"','"+actionType+"')&key="+sKey+"",_genericCallback);
}	


/* gets states of a selected country*/
function getStates(countrySelect, displayDiv, stateSelect, selectLabel) {	
	
	var thisCountrySelect = "";
	
	if (countrySelect)
	{
		var thisCountrySelect = document.getElementById(countrySelect).value;
	}

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=getStates('"+thisCountrySelect+"','"+stateSelect+"','"+selectLabel+"')&key="+sKey+"",_genericCallback);
}	

function editCampaign(displayDiv, cmpID){
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}

	performRequest("requestAction.cfm?class=ajax.miscFacade&method=editCampaign('"+cmpID+"')&key="+sKey+"",_genericCallback);

}


function saveCampaign(displayDiv, cmpForm, mktID){

	if (displayDiv)
	{
		var sKey = displayDiv;
	}

	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}
	cmpID = cmpForm.cmpID.value;
	cmpName = cmpForm.cmpName.value;
	cmpDateStart = cmpForm.cmpDateStart.value;
	cmpDateEnd = cmpForm.cmpDateEnd.value;
	SET_cmp_STATUS = cmpForm.SET_cmp_STATUS.value;
	mktID = cmpForm.mktID.value;
	
	
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=updateCampaign('"+cmpID+"','"+cmpName+"','"+cmpDateStart+"','"+cmpDateEnd+"','"+SET_cmp_STATUS+"','"+mktID+"')&key="+sKey+"",_insertItemCallback);

}

function redrawCampaign(displayDiv, mktID){

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';
	}
	
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=redrawCampaign('"+mktID+"')&key="+sKey+"",_genericCallback);
}

function retireCampaign(displayDiv, cmpID, mktID){

	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';
	}
	
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=retireCampaign('"+cmpID+"','"+mktID+"')&key="+sKey+"",_insertItemCallback);
}

function addAd(displayDiv, cmpID){
	
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';
	}
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=addAd('"+cmpID+"')&key="+sKey+"",_genericCallback);
}

function insertAd(displayDiv, advForm, cmpID){
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';
	}
	
	FK_adv_cmpID = advForm.FK_adv_cmpID.value;
	advName = advForm.advName.value;
	advLink = advForm.advLink.value;
	advAlt = advForm.advAlt.value;
	linkImage = advForm.linkImg.value;
	SET_adv_TYPE = advForm.SET_adv_TYPE.value;
	advDateStart = advForm.advDateStart.value;
	advDateEnd = advForm.advDateEnd.value;
	performRequest("requestAction.cfm?class=ajax.miscFacade&method=insertAd('"+advName+"','"+FK_adv_cmpID+"','"+advLink+"','"+advAlt+"','"+linkImage+"','"+SET_adv_TYPE+"','"+advDateStart+"','"+advDateEnd+"')&key="+sKey+"",_genericCallback);
}

	
/* checks if email already exists in system */
function checkEmail(emailInput, displayDiv) {	
	var thisEmailInput = "";
	if (emailInput)
	{
		var thisEmailInput = document.getElementById(emailInput).value;

	}
	if (displayDiv)
	{
		var sKey = displayDiv;
	}
	else
	{
		var sKey = 'none';// dummy value - OK as long it is not null
	}	


			performRequest("requestAction.cfm?class=ajax.miscFacade&method=checkEmail('"+thisEmailInput+"')&key="+sKey+"",_genericCallback);
	}	


function _genericCallback(xmlHttp)
{

	var xmlDoc = xmlHttp.responseXML;
	
	if(xmlDoc == null || xmlDoc.documentElement == null)
	{
		outputRequestError(xmlHttp.responseText);	
	}
	else
	{	
		var root = xmlDoc.documentElement;
		var cn = root.childNodes;
		var l = cn.length;
		var error = null;
		var result = null;
		var req = null;
		var sClass = null;
		var sMmethod = null;
		var sKey = null;
		
		for(var i = 0; i < l; i++) 
		{
			
			switch(cn[i].tagName)
			{
				case "error":
					//error = cn[i].xml;
					error = cn[i].firstChild.nodeValue;
					break;
					
					
				case "result":
					result = cn[i].firstChild.nodeValue;
					break;

				case "request":
					req = cn[i].childNodes;
					var l2 = req.length;
					for(var x=0;x<l2;x++)
					{
						switch(req[x].tagName)
						{
							case 'class':
								sClass = req[x].firstChild.nodeValue;
								break;
							case 'method':
								sMethod = req[x].firstChild.nodeValue;
								break;
							case 'key':
								sKey = req[x].firstChild.nodeValue;
								break;
						}
					}
					break;

			}
		}
		
		if(error)
		{
			outputRequestError(error);
		}
		else if(result)
		{
			
			if(sKey.length){
				
				var oDiv = document.getElementById(sKey);
				if (oDiv)
				{
					oDiv.innerHTML = result;
					//ajax loading
					if (document.getElementById('ajaxLoader')){
						el = document.getElementById('ajaxLoader');
						el.style.display='none';					
					}
		
				}
				else
				{	
					//  sKey is set in js calling function, result is set if ajaxFacade.
					if (sKey == 'CheckUser' && result.length > 2) { alert(result)};
					//alert(result);
				}
		
			}
		   
		}
		else
		{
			alert("A problem has occured, please refresh your page and try again.");
		}
	}
}



function _helpCallBack(xmlHttp)
{

	var xmlDoc = xmlHttp.responseXML;
	
	if(xmlDoc == null || xmlDoc.documentElement == null)
	{
		outputRequestError(xmlHttp.responseText);	
	}
	else
	{	
		var root = xmlDoc.documentElement;
		var cn = root.childNodes;
		var l = cn.length;
		var error = null;
		var result = null;
		var req = null;
		var sClass = null;
		var sMmethod = null;
		var sKey = null;
		
		for(var i = 0; i < l; i++) 
		{
			
			switch(cn[i].tagName)
			{
				case "error":
					//error = cn[i].xml;
					error = cn[i].firstChild.nodeValue;
					break;
					
					
				case "result":
					result = cn[i].firstChild.nodeValue;
					break;

				case "request":
					req = cn[i].childNodes;
					var l2 = req.length;
					for(var x=0;x<l2;x++)
					{
						switch(req[x].tagName)
						{
							case 'class':
								sClass = req[x].firstChild.nodeValue;
								break;
							case 'method':
								sMethod = req[x].firstChild.nodeValue;
								break;
							case 'key':
								sKey = req[x].firstChild.nodeValue;
								break;
						}
					}
					break;

			}
		}
		
		if(error)
		{
			outputRequestError(error);
		}
		else if(result)
		{
			
			if(sKey.length){
				
				var oDiv = document.getElementById(sKey);
				if (oDiv)
				{
					oDiv.innerHTML = result;

					oDiv.style.display = 'inline';
					setTimeout(function(){hidenDiv(sKey);}, 3000);

					//ajax loading
					if (document.getElementById('ajaxLoader')){
						el = document.getElementById('ajaxLoader');
						el.style.display='none';					
					}
					

		
				}
				else
				{	
					//  sKey is set in js calling function, result is set if ajaxFacade.
					if (sKey == 'CheckUser' && result.length > 2) { alert(result)};
					//alert(result);
				}
		
			}
		   
		}
		else
		{
			alert("A problem has occured, please refresh your page and try again.");
		}
	}
}

/*this function is called when item is inserted into setting table. It will clear the newItem div area if cancel is selected
 if hit is saved it mscFacade inserts the item to the database and this callback functions forces a call to the getSettingDropdown
 to reload the whole drop down display - Farenn Chang 12/12/2006*/
function _insertItemCallback(xmlHttp)
{
	var xmlDoc = xmlHttp.responseXML;
	
	if(xmlDoc == null || xmlDoc.documentElement == null)
	{
		outputRequestError(xmlHttp.responseText);	
	}
	else
	{	
		var root = xmlDoc.documentElement;
		var cn = root.childNodes;
		var l = cn.length;
		var error = null;
		var result = null;
		var req = null;
		var sClass = null;
		var sMmethod = null;
		var sKey = null;
		
		for(var i = 0; i < l; i++) 
		{
			
			switch(cn[i].tagName)
			{
				case "error":
					//error = cn[i].xml;
					error = cn[i].firstChild.nodeValue;
					break;
					
					
				case "result":
					result = cn[i].firstChild.nodeValue;
					break;

				case "request":
					req = cn[i].childNodes;
					var l2 = req.length;
					for(var x=0;x<l2;x++)
					{
						switch(req[x].tagName)
						{
							case 'class':
								sClass = req[x].firstChild.nodeValue;
								break;
							case 'method':
								sMethod = req[x].firstChild.nodeValue;
								break;
							case 'key':
								sKey = req[x].firstChild.nodeValue;
								break;
						}
					}
					break;

			}
		}
		
		if(error)
		{
			outputRequestError(error);
		}
		else if(result)
		{

			/*if -1 is returned it makes cancel was selected display blank div*/
			if (result=='-1')
			{
				if(sKey.length){
					
					var oDiv = document.getElementById(sKey);
					if (oDiv)
					{
						oDiv.innerHTML = '&nbsp;';
						//ajax loading
						if (document.getElementById('ajaxLoader')){
							el = document.getElementById('ajaxLoader');
							el.style.display='none';					
						}
			
					}
					else
					{	
						//  sKey is set in js calling function, result is set if ajaxFacade.
						if (sKey == 'CheckUser' && result.length > 2) { alert(result)};
						//alert(result);
					}
			
				}
			}
			else
			{
				eval(result);
			}
				

		   
		}
		else
		{
			alert("A problem has occured, please refresh your page and try again.");
		}
	}
}



function outputRequestError(errorString)
{
	e = document.getElementById("scriptOutput");
	if(e)
	{
		e.innerHTML = errorString.replace(/</,"&lt;");
	}
	else
	{
		//alert('error');
		//alert(errorString) ;
		document.write(errorString);
	}
}

var Drag = {

    obj : null,

    init : function(o, oRoot, minX, maxX, minY, maxY, bSwapHorzRef, bSwapVertRef, fXMapper, fYMapper)
    {
        o.onmousedown    = Drag.start;

        o.hmode            = bSwapHorzRef ? false : true ;
        o.vmode            = bSwapVertRef ? false : true ;

        o.root = oRoot && oRoot != null ? oRoot : o ;

        if (o.hmode  && isNaN(parseInt(o.root.style.left  ))) o.root.style.left   = "0px";
        if (o.vmode  && isNaN(parseInt(o.root.style.top   ))) o.root.style.top    = "0px";
        if (!o.hmode && isNaN(parseInt(o.root.style.right ))) o.root.style.right  = "0px";
        if (!o.vmode && isNaN(parseInt(o.root.style.bottom))) o.root.style.bottom = "0px";

        o.minX    = typeof minX != 'undefined' ? minX : null;
        o.minY    = typeof minY != 'undefined' ? minY : null;
        o.maxX    = typeof maxX != 'undefined' ? maxX : null;
        o.maxY    = typeof maxY != 'undefined' ? maxY : null;

        o.xMapper = fXMapper ? fXMapper : null;
        o.yMapper = fYMapper ? fYMapper : null;

        o.root.onDragStart    = new Function();
        o.root.onDragEnd    = new Function();
        o.root.onDrag        = new Function();
    },

    start : function(e)
    {
        var o = Drag.obj = this;
        e = Drag.fixE(e);
        var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
        var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
        o.root.onDragStart(x, y);

        o.lastMouseX    = e.clientX;
        o.lastMouseY    = e.clientY;

        if (o.hmode) {
            if (o.minX != null)    o.minMouseX    = e.clientX - x + o.minX;
            if (o.maxX != null)    o.maxMouseX    = o.minMouseX + o.maxX - o.minX;
        } else {
            if (o.minX != null) o.maxMouseX = -o.minX + e.clientX + x;
            if (o.maxX != null) o.minMouseX = -o.maxX + e.clientX + x;
        }

        if (o.vmode) {
            if (o.minY != null)    o.minMouseY    = e.clientY - y + o.minY;
            if (o.maxY != null)    o.maxMouseY    = o.minMouseY + o.maxY - o.minY;
        } else {
            if (o.minY != null) o.maxMouseY = -o.minY + e.clientY + y;
            if (o.maxY != null) o.minMouseY = -o.maxY + e.clientY + y;
        }

        document.onmousemove    = Drag.drag;
        document.onmouseup        = Drag.end;

        return false;
    },

    drag : function(e)
    {
        e = Drag.fixE(e);
        var o = Drag.obj;

        var ey    = e.clientY;
        var ex    = e.clientX;
        var y = parseInt(o.vmode ? o.root.style.top  : o.root.style.bottom);
        var x = parseInt(o.hmode ? o.root.style.left : o.root.style.right );
        var nx, ny;

        if (o.minX != null) ex = o.hmode ? Math.max(ex, o.minMouseX) : Math.min(ex, o.maxMouseX);
        if (o.maxX != null) ex = o.hmode ? Math.min(ex, o.maxMouseX) : Math.max(ex, o.minMouseX);
        if (o.minY != null) ey = o.vmode ? Math.max(ey, o.minMouseY) : Math.min(ey, o.maxMouseY);
        if (o.maxY != null) ey = o.vmode ? Math.min(ey, o.maxMouseY) : Math.max(ey, o.minMouseY);

        nx = x + ((ex - o.lastMouseX) * (o.hmode ? 1 : -1));
        ny = y + ((ey - o.lastMouseY) * (o.vmode ? 1 : -1));

        if (o.xMapper)        nx = o.xMapper(y)
        else if (o.yMapper)    ny = o.yMapper(x)

        Drag.obj.root.style[o.hmode ? "left" : "right"] = nx + "px";
        Drag.obj.root.style[o.vmode ? "top" : "bottom"] = ny + "px";
        Drag.obj.lastMouseX    = ex;
        Drag.obj.lastMouseY    = ey;

        Drag.obj.root.onDrag(nx, ny);
        return false;
    },

    end : function()
    {
        document.onmousemove = null;
        document.onmouseup   = null;
        Drag.obj.root.onDragEnd(    parseInt(Drag.obj.root.style[Drag.obj.hmode ? "left" : "right"]), 
                                    parseInt(Drag.obj.root.style[Drag.obj.vmode ? "top" : "bottom"]));
        Drag.obj = null;
    },

    fixE : function(e)
    {
        if (typeof e == 'undefined') e = window.event;
        if (typeof e.layerX == 'undefined') e.layerX = e.offsetX;
        if (typeof e.layerY == 'undefined') e.layerY = e.offsetY;
        return e;
    }
};
//this displays div if it's hidden and hides it if it's displayed
function showHideDiv(divName) {
	if (document.getElementById(divName).style.display=="block") {
		document.getElementById(divName).style.display="none";
	} else {
		document.getElementById(divName).style.display="block";
	}
}
//this displays the showDiv, and hides the hideDiv
function showDivHideDiv(showDiv, hideDiv) {

		document.getElementById(showDiv).style.display="block";
		document.getElementById(hideDiv).style.display="none";

}
//this displays the page that is passed through, and hides the rest
function showHideDivPage(divName) {
	
	for(i=0; i<6; i++){
		pageName = 'page' + i;
		if(document.getElementById(pageName)){
		//if div exists, then hide it, UNLESS its the divName specified
			if(pageName == divName){
				document.getElementById(pageName).style.display="block";				
			}else{ 
				document.getElementById(pageName).style.display="none";		
			}
		}
		
	}	
}

function currentTab(idName){
		
		//loop through other tabs, if other tab is selected and name doesn't equal to the one selected, then change back
		var i=1;
		var nomoretabs=0;
		do 
		{
			var tabName = "tab" + i;
			if(document.getElementById(tabName)){
				if(document.getElementById(tabName).className == "" && tabName == idName){
					document.getElementById(tabName).className = "current";
				} else {
					document.getElementById(tabName).className = "";
				}
				i=i+1;
			}else{
				nomoretabs=1;
			}
		}
		while (nomoretabs==0)		

}

function getSubLocation(){
	if(parent.frames['locationFrame'] && parent.frames['locationFrame'].document.getElementById('location').value != ""){
		document.forms[0].location.value = parent.frames['locationFrame'].document.getElementById('location').value;
		document.forms[0].subLocation.value = parent.frames['locationFrame'].document.getElementById('subLocation').value;
	}

	if(parent.frames['nativeFrame'] && parent.frames['nativeFrame'].document.getElementById('location').value != ""){
	
		document.forms[0].nativeLocation.value = parent.frames['nativeFrame'].document.getElementById('location').value;
		document.forms[0].nativeSublocation.value = parent.frames['nativeFrame'].document.getElementById('subLocation').value;
	}
}


