String.prototype.trim = function() {
    a = this.replace(/^\s+/, '');
    return a.replace(/\s+$/, '');
};

//var homedirectory = 'http://localhost:8080/';
//var homedirectory = 'http://localhost/eWossRedesign/';
//var homedirectory = 'http://www.ewoss.com/';
//var homedirectory = 'http://dev.ewoss.com/';
//var homedirectory = location.protocol + '//' + location.hostname + '/';
homedirectory = 'http://www.ewoss.com/';

var sortieObjects = new Array();
var sObjs = new Array();
var aObjs = new Array();
var numOfCols = 3;
var sortieCounter = 0;
var colPBId = 'dvContainer';
var nameOfCookie = 'eWoss_Sorties';
var addSortCon = null;
var addSortiePopup = false;

var dObjBordWidth = 1;
var autoScrollSpeed = 4;
var atoScrlActv = false;
var ddCntr = -1;
var dObj = false;
var dObjNxtSib = false;
var dObjPrnt = false;
var dstObj = false;
var mouse_x;
var mouse_y;
var el_x;
var el_y;
var rctDiv;
var okToMove = true;
var docHght = false;
var docScrollHght = false;

var rootPath = null;
var tabsTop = new Array();
var tabsTopCurrent = 0;
var subTabsCurrent = 0;
var sortiesChanged = false;
var tmpSortieIndex = -1;
var aborting = false;
var finalJsHasRan = false;
var doFbIframeRedirect = false;
var showFbPopup = false;

var opera = navigator.userAgent.toLowerCase().indexOf('opera')>=0?true:false;

function docelm(str){
    return document.getElementById(str);
}

function abortSortieAjax()
{
    aborting = true;

    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++)
    {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].sackObj != null) {
                sObjs[id].sackObj.abort();
            }
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++)
    {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id)
        {
            if (sObjs[id].sackObj != null) {
                sObjs[id].sackObj.abort();
            }
        }
    }
    
    for(var i = 0; i < divColumn3.childNodes.length; i++)
    {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id)
        {
            if (sObjs[id].sackObj != null) {
                sObjs[id].sackObj.abort();
            }
        }
    }
}

function ajaxRequest(requestUrl, callback, params)
{
    if (aborting)
        return;

    var xmlHttp = null;
    try {
		xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
	} catch (e1) {
		try {
			xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
		} catch (e2) {
			xmlHttp = null;
		}
	}

	if (! xmlHttp) {
		if (typeof XMLHttpRequest != "undefined") {
		    try {
			    xmlHttp = new XMLHttpRequest();
			} catch (e3) {
			    return null;
			}
		} else {
			return null;
		}
	}
    
//    try {
//	    // Firefox, Opera 8.0+, Safari, chrome
//	    xmlHttp = new XMLHttpRequest();
//    }
//    catch (e) {
//	    // Internet Explorer
//	    try {
//		    xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
//	    }
//	    catch (e) {
//		    try {
//			    xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
//		    }
//		    catch (e) {
//			    //alert("Your browser does not support AJAX!");
//			    return null;
//		    }
//	    }
//    }

    xmlHttp.onreadystatechange=function()
	    {
		    if (xmlHttp.readyState == 4) {
		        if (callback != null)
		        {
		            callback(xmlHttp.responseText, params);
		        }
		    }
	    };

    xmlHttp.open("GET",requestUrl,true);
    xmlHttp.send(null);
}

// COOKIE Functions /////////////////////////////////////////////////////////////////////////////////////////////////
function setCookie(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 = "";
    document.cookie = name + "=" + value + expires + "; path=/";
}

function readCookie(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;
}

// SAVE FUNCTIONS ///////////////////////////////////////////////////////////////////////////////////////////////////
function saveBoxes()
{
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");
    var tmpCT = "";
    
    var rowCount = 0;
    
    for(var i = 0; i < divColumn1.childNodes.length; i++)
    {
        rowCount++;
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id)
        {
            tmpCT += sObjs[id].type + ",";
            tmpCT += sObjs[id].contentType + ",";
            tmpCT += sObjs[id].numRows + ",";
            tmpCT += rowCount + ",";
            tmpCT += "1#";
            
        }
    }
    rowCount = 0;
    for(var i = 0; i < divColumn2.childNodes.length; i++)
    {
        rowCount++;
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id)
        {
            tmpCT += sObjs[id].type + ",";
            tmpCT += sObjs[id].contentType + ",";
            tmpCT += sObjs[id].numRows + ",";
            tmpCT += rowCount + ",";
            tmpCT += "2#";
        }
    }
    rowCount = 0;
    for(var i = 0; i < divColumn3.childNodes.length; i++)
    {
        rowCount++;
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id)
        {
            tmpCT += sObjs[id].type + ",";
            tmpCT += sObjs[id].contentType + ",";
            tmpCT += sObjs[id].numRows + ",";
            tmpCT += rowCount + ",";
            tmpCT += "3#";
        }
    }
    if(tmpCT.length > 0)
	    tmpCT = tmpCT.substring(0,tmpCT.length-1);
	
	var tmpPostData = tmpCT.replace(/,/g, ':');
	tmpPostData = tmpPostData.replace(/#/g,',');
	
	saveUserInfo(tmpPostData);
	setCookie(nameOfCookie, tmpCT, 365);
}

function saveUserInfo(postData)
{
    var aObj = new sack();
	aObj.requestFile = homedirectory + 'ajax/saveSettings.aspx';
	aObj.setVar("theParams", postData);
	aObj.runAJAX();
}

function closeSortie(tmpIndex, noConfirmAndNoSave)
{
    var value = true;
    if (noConfirmAndNoSave == null)
        value = confirm('Do you wish to remove this box from your customized page?');

    if(value == true) {
        var obj = sObjs[tmpIndex].containerObj;
        obj.parentNode.removeChild(obj);
	    sObjs[tmpIndex].reset();
        sortieCounter--;
        if (noConfirmAndNoSave == null)
            setTimeout('saveBoxes()',1000);
    }
}

function RunFinalJs() {
    finalJsHasRan = true;

    loadFbSortie();

    //frames['ad_top'].location.href='http://optimizedby.rmxads.com/st?ad_type=iframe&ad_size=468x60&section=411145';
    //frames['ad_top'].location.href='http://optimizedby.rmxads.com/st?ad_type=iframe&ad_size=728x90&section=411145';
    frames['ad_sortie'].location.href='http://optimizedby.rmxads.com/st?ad_type=iframe&ad_size=300x250&section=411145';
    //frames['ad_sidebar'].location.href='http://optimizedby.rmxads.com/st?ad_type=iframe&ad_size=160x600&section=411145';
}

// SORTIE FUNCTIONS /////////////////////////////////////////////////////////////////////////////////////////////////

function CheckLoadFinalJs(sIndx) {
    sObjs[sIndx].loaded = true;
    if (!finalJsHasRan && allSortiesLoaded())
        RunFinalJs();
}

function loadFbSortie() {
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type == 4)
                sObjs[id].reloadSortie();
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++) {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type == 4)
                sObjs[id].reloadSortie();
        }
    }

    for(var i = 0; i < divColumn3.childNodes.length; i++) {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type == 4)
                sObjs[id].reloadSortie();
        }
    }
}

function allSortiesLoaded() {
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4 && !sObjs[id].loaded)
               return false; 
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++) {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4 && !sObjs[id].loaded)
               return false; 
        }
    }

    for(var i = 0; i < divColumn3.childNodes.length; i++) {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4 && !sObjs[id].loaded)
               return false;
        }
    }

    return true;
}

function showNewsData(sIndx)
{
	if(sObjs[sIndx].sackObj != null) {
		var xmlData = sObjs[sIndx].sackObj.responseXML;
	    
	    var data = xmlData.getElementsByTagName('data');
	    var header = xmlData.getElementsByTagName('header');
	    var image = xmlData.getElementsByTagName('image');
	    var numrows = xmlData.getElementsByTagName('numrows');
	    
	    sObjs[sIndx].setNumRowsDisplayed(parseInt(numrows[0].firstChild.nodeValue));

	    sObjs[sIndx].contentObj.innerHTML = data[0].firstChild.nodeValue;
	    
	    //objEdit.innerHTML = configData[0].firstChild.nodeValue;
	    
	    if(sObjs[sIndx].headObj != null && header[0].firstChild != null)
	        sObjs[sIndx].headObj.innerHTML = sObjs[sIndx].makeHeader(header[0].firstChild.nodeValue, "", image, false);
	}

    CheckLoadFinalJs(sIndx);
}

function showWeatherData(sIndx)
{
	if(sObjs[sIndx].sackObj != null) {
		var xmlData = sObjs[sIndx].sackObj.responseXML;
	    
	    var data = xmlData.getElementsByTagName('data');
	    var header = xmlData.getElementsByTagName('header');

	    sObjs[sIndx].contentObj.innerHTML = data[0].firstChild.nodeValue;
	    
	    //objEdit.innerHTML = configData[0].firstChild.nodeValue;
	    
	    if(sObjs[sIndx].headObj != null) sObjs[sIndx].headObj.innerHTML = sObjs[sIndx].makeHeader(header[0].firstChild.nodeValue, "", null, true);
	}

	CheckLoadFinalJs(sIndx);
}

function showFacebookData(sIndx)
{
    try {
    if(sObjs[sIndx].sackObj != null) {
		var xmlData = sObjs[sIndx].sackObj.responseXML;

        var data = xmlData.getElementsByTagName('data');
	    var header = xmlData.getElementsByTagName('header');
	    var image = xmlData.getElementsByTagName('image');
	    var objHasfbsession = xmlData.getElementsByTagName('hasfbsession');
	    var objDofbsync = xmlData.getElementsByTagName('dofbsync');
	    var objSession = xmlData.getElementsByTagName('session');
	    var objSecret = xmlData.getElementsByTagName('secret');
	    var objFbuid = xmlData.getElementsByTagName('fbuid');
	    var objEwuid = xmlData.getElementsByTagName('ewuid');

        sObjs[sIndx].contentObj.innerHTML = data[0].firstChild.nodeValue;

	    if(sObjs[sIndx].headObj != null) sObjs[sIndx].headObj.innerHTML = sObjs[sIndx].makeHeader(header[0].firstChild.nodeValue, "", image, false);

//	    var hasfbsession = objHasfbsession[0].firstChild.nodeValue;
//	    var dofbsync = objDofbsync[0].firstChild.nodeValue;

//	    if (hasfbsession == 'true' && dofbsync == 'true') { // sync with toolbar
//	        var fbsession = objSession[0].firstChild.nodeValue;
//	        var fbsecret = objSecret[0].firstChild.nodeValue;
//	        var fbuid = objFbuid[0].firstChild.nodeValue;
//	        var ewuid = objEwuid[0].firstChild.nodeValue;

//            frames['fbIFrame'].location.href=homedirectory + 'fb/iframe.aspx' +
//                '?session=' + fbsession +
//                '&secret=' + fbsecret +
//                '&fbuid=' + fbuid +
//                '&ewuid=' + ewuid;
//	    }
	}
	}
    catch(err) {
        sObjs[sIndx].facebookFail();
    }
	CheckLoadFinalJs(sIndx);
}

function reloadSortie(sIndx)
{
	if(sObjs[sIndx] != null) {
	    var div = docelm("dvHeader" + sObjs[sIndx].sortieIndex);
	    if (div)
		    div.innerHTML = sObjs[sIndx].makeHeader("Loading...", "", null, false);
		div = docelm("dvContent" + sObjs[sIndx].sortieIndex);
		if (div)
		    div.innerHTML = "<img alt=\"Loading...\" src=\"./images/ajax-loader.gif\"/>";
		tmpSortieIndex = sIndx;
		setTimeout('reloadTheSortie()',500);
	}
}

function reloadTheSortie()
{
    if (tmpSortieIndex != -1)
        sObjs[tmpSortieIndex].reloadSortie();
}

function reloadTheSortie_fromPlusMinus(sIndx)
{
    sObjs[sIndx].reloadSortie();
}

function plusMinusSortie(sIndx, numRowsDelta)
{
    if(sObjs[sIndx] != null) {
        sObjs[sIndx].setNumRows(parseInt(sObjs[sIndx].numRows) + parseInt(numRowsDelta));
        reloadTheSortie_fromPlusMinus(sIndx);
        setTimeout('saveBoxes()',1000);
    }
}

// Create Functions ///////////////////////////////////////
function createSortie(sortieType, columnIndex, contentType, numRows, saved)
{
    if (aborting)
        return 0;

	var sIndx = sObjs.length;
	sObjs[sIndx] = new sortie();
	sObjs[sIndx].type = sortieType;
	sObjs[sIndx].columnIndex = columnIndex;
	sObjs[sIndx].contentType = contentType;
	sObjs[sIndx].numRows = numRows;
	sObjs[sIndx].sortieFile = homedirectory + 'ajax/getSortie.aspx';
	sObjs[sIndx].vars = 'bx:' + sIndx + ',code:' + contentType + ',type:' + sortieType + ',num:' + numRows;
	if (sortieType == 4 && doFbIframeRedirect)
	    sObjs[sIndx].vars += ',dofbiframe:true';
	sObjs[sIndx].sortieIndex = sIndx;
	sObjs[sIndx].refreshImage = homedirectory + "images/refresh.gif";
	sObjs[sIndx].closeImage = homedirectory + "images/close-sortie.gif";

	if (saved != null)
	    sObjs[sIndx].saved = saved;

  	sObjs[sIndx].onMouseOverBox = mouseoverBox2;
  	sObjs[sIndx].onMouseOutBox = mouseoutBox2;
  	sObjs[sIndx].onMouseOverBoxHeader = mouseoverBoxHeader;
  	sObjs[sIndx].onMouseOutBoxHeader = mouseoutBoxHeader;
  	sObjs[sIndx].initDragDropBox = initDragDropBox;

	switch(sortieType) {
        case 1:
        case 2:
			sObjs[sIndx].onCompletion = function(){ showNewsData(sIndx); };
	        break;
        case 3:
			sObjs[sIndx].onCompletion = function(){ showWeatherData(sIndx); };
	        break;
	    case 4:
	        sObjs[sIndx].onCompletion = function(){ showFacebookData(sIndx); };
	        break;
	}

    if (sortieType != 4)    // don't do ajax call for facebook sortie now. Save until last js call in case fb is slow to return a response (which can hold up other sorties).
	    sObjs[sIndx].createSortie();
	else
	    sObjs[sIndx].createContainer();

	/*
	dBAry[boxIndex] = new Array();
	dBAry[boxIndex]['obj'] = maindiv;
	dBAry[boxIndex]['parentObj'] = maindiv.parentNode;
	dBAry[boxIndex]['uniqueIdentifier'] = null;
	dBAry[boxIndex]['heightOfBox'] = div.clientHeight;
	dBAry[boxIndex]['boxState'] = 1;
	dBAry[boxIndex]['contentType'] = contentType;
	dBAry[boxIndex]['numRows'] = numRows;
	dBAry[boxIndex]['boxType'] = sortieType;
	
	var loadImage = docelm("imgLoad" + tmpIndex);
    if(loadImage) loadImage.className = 'loadingShow';
	
	aObjs[aIndx] = new sack();
	aObjs[aIndx].method = "POST";
	aObjs[aIndx].requestFile = ajaxRequestFile;
	aObjs[aIndx].onCompletion = ajaxOnComplete;
	aObjs[aIndx].setVar("theParams", ajaxRequestParams);
	aObjs[aIndx].runAJAX();		// Execute AJAX function
	*/
	return sIndx;
}

// Load Functions /////////////////////////////////////////
function loadSortiesFromArray(arrayData)
{
    var tempCookieInfo = "";
    for(var j = 0; j < arrayData.length; j++)
    {
        sortieCounter++;
        tempCookieInfo += arrayData[j][2] + "," + arrayData[j][3] + "," + arrayData[j][4] + "," + arrayData[j][5] + "," + arrayData[j][6];
        tempCookieInfo += "#";
        createSortie(arrayData[j][2],arrayData[j][3],arrayData[j][5],arrayData[j][6]);
    }
    tempCookieInfo = tempCookieInfo.substring(0,tempCookieInfo.length-1);
	
    setCookie(nameOfCookie, tempCookieInfo, 365);
}

function loadSortiesFromCookie(cookieData)
{
    var theSorties = cookieData.split('#');
    
    for(var i = 0; i < theSorties.length; i++)
    {
        sortieCounter++;
        var sortieInfo = theSorties[i].split(',');
        createSortie(parseInt(sortieInfo[0]),parseInt(sortieInfo[1]),parseInt(sortieInfo[3]),parseInt(sortieInfo[4]));
    }
}

function initSorties()
{
	if (showFbPopup)
        showFbPopupAjax();

    rctDiv = document.createElement('DIV');
	rctDiv.id='rctDiv';
	rctDiv.style.display='none';
	document.body.appendChild(rctDiv);

	columnParentBox = docelm(colPBId);

	initEvents();

	var loadFromCookie = false;
	if(sortieObjects.length > 0) if(sortieObjects[0][0] != sortieObjects[0][1]) if(sortieObjects[0][1] == -1) loadFromCookie = true;
	// check for cookie.
	var tempCookieInfo = "";
	
	if(loadFromCookie) {
	    tempCookieInfo = readCookie(nameOfCookie);
		
	    if(tempCookieInfo) loadSortiesFromCookie(tempCookieInfo);
	    else  loadSortiesFromArray(sortieObjects);
	}else loadSortiesFromArray(sortieObjects);

    CheckToRunFinalJsOnInit();

	addSortCon = docelm("modalOverlay");
}

// if fb sortie is the only sortie, RunFinalJs
// or if no sorties at all, RunFinalJs
function CheckToRunFinalJsOnInit()
{
    var sortieCount = 0;

    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4) // not facebook
                sortieCount++;
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++) {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4)
                sortieCount++;
        }
    }

    for(var i = 0; i < divColumn3.childNodes.length; i++) {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 4)
                sortieCount++;
        }
    }

    if (sortieCount == 0)
        RunFinalJs();
}

function insertAddSortieData(aIndx)
{	    
    obj = addSortCon.childNodes[0];
    if(obj != null) {
	    var apData = aObjs[aIndx].responseXML;
	    var sortieData = apData.getElementsByTagName('sortieData');
	    if(sortieData.length > 0)
    	    obj.innerHTML = sortieData[0].firstChild.nodeValue;
	}
}

function refreshAddSortie(contentType)
{
    var aIndx = aObjs.length;
	aObjs[aIndx] = new sack();
	aObjs[aIndx].requestFile = homedirectory + 'ajax/addSortie.aspx';
	aObjs[aIndx].onCompletion = function(){ insertAddSortieData(aIndx); };
	aObjs[aIndx].setVar('theParams', 'ct:' + contentType);
	aObjs[aIndx].runAJAX();		// Execute AJAX function
}

function closeAddSortie()
{
    el = docelm("modalOverlay");
    el.style.display = (el.style.display == "block") ? "none" : "block";
    addSortiePopup = (el.style.display == "block") ? true : false;
    el.innerHTML = "<div id=\"modalOverlayInner\">Loading...</div>";

    if(addSortiePopup == true) {
    	var aIndx = aObjs.length;
		aObjs[aIndx] = new sack();
		aObjs[aIndx].requestFile = homedirectory + 'ajax/addSortie.aspx';
		aObjs[aIndx].onCompletion = function(){ insertAddSortieData(aIndx); };
		aObjs[aIndx].runAJAX();		// Execute AJAX function
        var scTop = parseInt((window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop);
		var scLeft = parseInt((window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft);
		addSortCon = docelm("modalOverlay");
		if (addSortCon) {
		    addSortCon.style.top = scTop + "px";
		    addSortCon.style.left = scLeft + "px";
		    addSortCon.style.width = getViewportWidth();
		    addSortCon.style.height = getViewportHeight();
		}
    }
}




function openCustomize(root)
{
    rootPath = root;

    document.documentElement.scrollTop = 0;
    if (isCurrentSubTabLoaded(tabsTopCurrent)) {
        // tab is already loaded
        showCustomize();
    }
    else {
        createTabs();
        loadTab(0,0);
        sortiesChanged = false;

		// show "Loading..."
		el = docelm("modalOverlay");
		if (el) {
		    el.innerHTML = "<div id=\"modalOverlayInner\">Loading...</div>";
            el.style.display = "block";
		    var scTop = parseInt((window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop);
		    var scLeft = parseInt((window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft);
		    el.style.top = scTop + "px";
		    el.style.left = scLeft + "px";
		    el.style.width = getViewportWidth();
		    el.style.height = getViewportHeight();

		    showHideScrollbar(false);
		}
    }
}

function showFbPopupAjax()
{
    var fbDiv = docelm('fbPopup');
    if (fbDiv) {
        fbDiv.innerHTML = '<div id="fbPopupInner">Loading...</div>';
        fbDiv.style.display = "block";
	    var scTop = parseInt((window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop);
	    var scLeft = parseInt((window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft);
	    fbDiv.style.top = scTop + "px";
	    fbDiv.style.left = scLeft + "px";
	    fbDiv.style.width = getViewportWidth();
	    fbDiv.style.height = getViewportHeight();

	    showHideScrollbar(false);

	    var s = new sack();
        //s.setVar("theParams", "tabsTopCurrent:" + tabIndex + ",subTabsCurrent:" + subTabsCurrent);
        s.requestFile = homedirectory + 'ajax/FbOneTimePopup.aspx';
        s.onCompletion = function(){ callback_onShowFbPopup(s); };
        s.runAJAX();
    }
}

function callback_onShowFbPopup(theSack)
{
	if(theSack != null) {
        var ewuidXml = theSack.responseXML.getElementsByTagName('ewuid');
        var ewossUID = ewuidXml[0].firstChild.nodeValue;
        var dataXml = theSack.responseXML.getElementsByTagName('data');
        var theData = dataXml[0].firstChild.nodeValue;
        var fbDiv = docelm('fbPopup');
        if (fbDiv) {
            fbDiv.innerHTML = '<div id="fbPopupInner">' + theData + '</div>';
	    }
	}
}

function fbPopupClose()
{
    var addFbSortie = docelm('cbAddFbSortie');
    if (addFbSortie && addFbSortie.checked) {
        AddFbSortie();
    }
    else {
        var fbDiv = docelm('fbPopup');
        if (fbDiv) {
            fbDiv.style.display = 'none';
        }
    }
}

function AddFbSortie()
{
    window.location.href = homedirectory + 'AddFbSortie.aspx';
}

function showHideScrollbar(show)
{
    if(show)
	    document.documentElement.style.overflow = "";   //must be used for transitional docType for IE to work.
	else
	    document.documentElement.style.overflow = "hidden";
}

function isSubTabLoaded(tabIdx,subTabIdx)
{
    if (tabsTop.length > tabIdx && tabsTop[tabIdx].isSubTabLoaded(subTabIdx))
        return true;
    return false;
}

function isCurrentSubTabLoaded(tabIdx)
{
    if (tabsTop.length > tabIdx && tabsTop[tabIdx].isCurrentSubTabLoaded())
        return true;
    return false;
}

function showCustomize()
{
    el = docelm("modalOverlay");
    if (el) {
        el.style.display = "block";
        onCustomizeShow();
        showHideScrollbar(false);
    }
}

function saveCustomize()
{
    el = docelm("modalOverlay");
    if (el) {
        var cbShowFb = docelm("cbShowFb");
        if (cbShowFb != null) {
            var showFb = cbShowFb.checked;
            var fbSID = getSortieIndexByType(4);
            if (!showFb && fbSID > -1) {
                removeFacebookSortie(fbSID);
            }
            else if (showFb && fbSID == -1) {
                insertFacebookSortie();
            }
        }

        //if user selected a city, update weather before saving sorties.
        var weatherUpdated = false;
        var cityID = -1;
        var oCityID = docelm("idWeatherCity");
        if (oCityID != null) {
            cityID = oCityID.value;
            if (cityID > -1) {
                var show = docelm("cbShowWeather").checked;
                var weatherSID = getSortieIndexByType(3);
                if (!show && weatherSID > -1) {
                    removeWeatherSortie(weatherSID);
                    weatherUpdated = true;
                }
                else if (show) {
                    if (weatherSID == -1) {
                        insertWeatherSortie3(cityID);
                        weatherUpdated = true;
                    }
                    else {
                        reloadWeatherSortie3(cityID);
                        weatherUpdated = true;
                    }
                }
            }
        }

        saveBoxesAfterCustomize();
        if (weatherUpdated)
            updateToolbarWeatherCity(cityID);
    }

    showHideScrollbar(true);
}

function removeFacebookSortie(fbSID)
{
    sortiesChanged = true;
    closeSortie(fbSID, true);
}

function removeWeatherSortie(weatherSID)
{
    sortiesChanged = true;
    closeSortie(weatherSID, true);
    //saveBoxesAfterCustomize();
    removeToolbarWeather();
}

function removeToolbarWeather()
{
    var ajaxPage = homedirectory + 'ajax/removeToolbarWeather.aspx';
    ajaxRequest(ajaxPage);
}

function saveBoxesAfterCustomize()
{
    el = docelm("modalOverlay");
    el.style.display = "none";
    if (sortiesChanged) {
        // loop through sorties and set saved flag to true
        var divColumn1 = docelm("dvColumn1");
        var divColumn2 = docelm("dvColumn2");
        var divColumn3 = docelm("dvColumn3");
        var el;

        for(var i = 0; i < divColumn1.childNodes.length; i++) {
            var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id)
                sObjs[id].saved = true;
        }

        for(var i = 0; i < divColumn2.childNodes.length; i++) {
            var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id)
                sObjs[id].saved = true;
        }
        
        for(var i = 0; i < divColumn3.childNodes.length; i++) {
            var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id)
                sObjs[id].saved = true;
        }
    
        setTimeout('saveBoxes()',100);
    }
}

function cancelCustomize()
{
    // remove unsaved sorties from page
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");
    var el;

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3) { // if not weather
                if (sObjs[id].saved == false) {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = false;
                    closeSortie(id, true);
                    i = -1;
                    continue;
                }
            }
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++) {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3) { // if not weather
                if (sObjs[id].saved == false) {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = false;
                    closeSortie(id, true);
                    i = -1;
                    continue;
                }
            }
        }
    }
    
    for(var i = 0; i < divColumn3.childNodes.length; i++) {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3) { // if not weather
                if (sObjs[id].saved == false) {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = false;
                    closeSortie(id, true);
                    i = -1;
                    continue;
                }
            }
        }
    }

    el = docelm("modalOverlay");
    if (el)
        el.style.display = "none";

    showHideScrollbar(true);
}

function onCustomizeShow()
{
    // loop through sorties and check checkboxes accordingly.
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");
    var el;

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3 && sObjs[id].type != 4) { // if not weather and facebook
                try {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = true;
                }
                catch(err) {}
            }
        }
    }

    for(var i = 0; i < divColumn2.childNodes.length; i++) {
        var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3 && sObjs[id].type != 4) { // if not weather and facebook
                try {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = true;
                }
                catch(err) {}
            }
        }
    }
    for(var i = 0; i < divColumn3.childNodes.length; i++) {
        var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type != 3 && sObjs[id].type != 4) { // if not weather and facebook
                try {
                    el = docelm("cb_" + sObjs[id].contentType);
                    if (el)
                        el.checked = true;
                }
                catch(err) {}
            }
        }
    }
}

function getTabClass(tb, text)
{
    var css = 'inactivetab';
    if(tb.text==text)
        css='activetab';
    return css;
}

function getTabTopMenuHtml(tb)
{
    var s = '<ul class="tabmenu">';
    s += '<li><span id="idTabSports" class="'+getTabClass(tb,'Sports')+'" onclick="loadCurrentSubTab(0)">Sports</span></li>';
    s += '<li><span id="idTabNews" class="'+getTabClass(tb,'News')+'" onclick="loadCurrentSubTab(1)">News</span></li>';
    s += '<li><span id="idTabInterests" class="'+getTabClass(tb,'Interests')+'" onclick="loadCurrentSubTab(2)">Interests</span></li>';
    s += '<li><span id="idTabWeather" class="'+getTabClass(tb,'Weather')+'" onclick="loadCurrentSubTab(3)">Weather</span></li>';
    s += '<li><span id="idTagFacebook" class="'+getTabClass(tb,'Facebook')+'" onclick="loadCurrentSubTab(5)">Facebook</span></li>';
    s += '<li><span id="idTabHelp" class="'+getTabClass(tb,'Help')+'" onclick="loadCurrentSubTab(4)">Help</span></li>';
    s += '</ul>';
    return s;
}

function createTabs()
{
    tabsTop = new Array();
	newTab().create("Sports", 0);
	newTab().create("News", 1);
	newTab().create("Interests", 2);
	newTab().create("Weather", 3);
	newTab().create("Help", 4);
	newTab().create("Facebook", 5);
}

function newTab()
{
    var tIdx = tabsTop.length;
	tabsTop[tIdx] = new tab();
	tabsTop[tIdx].rootPath = rootPath;
	return tabsTop[tIdx];
}

function loadTab(tabIdx, subTabIdx)
{
    tabsTopCurrent = tabIdx;
    subTabsCurrent = subTabIdx;

    if (isSubTabLoaded(tabIdx,subTabIdx)) {
        tabsTop[tabIdx].subTabsCurrent = subTabIdx;
        showTab(tabsTop[tabIdx]);
        onCustomizeShow();
    }
    else {
        ajaxLoadTabsTop();
    }
}

function loadCurrentSubTab(tabIdx)
{
    tabsTopCurrent = tabIdx;
    subTabsCurrent = tabsTop[tabIdx].subTabsCurrent;
    
    if (isSubTabLoaded(tabIdx,subTabsCurrent)) {
        showTab(tabsTop[tabIdx]);
        onCustomizeShow();
    }
    else {
        ajaxLoadTabsTop();
    }
}

function ajaxLoadTabsTop()
{
    var tabIndex = tabsTopCurrent;
    var s = new sack();
	s.setVar("theParams", "tabsTopCurrent:" + tabIndex + ",subTabsCurrent:" + subTabsCurrent);
	s.requestFile = homedirectory + 'ajax/onCustomize.aspx';
	s.onCompletion = function(){ callback_onTabTopLoad(tabsTop[tabIndex],s); };
	s.runAJAX();
}

function callback_onTabTopLoad(tb,theSack)
{
	if(theSack != null) {
        var numSubTabsXml = theSack.responseXML.getElementsByTagName('numSubTabs');
        var numSubTabs = numSubTabsXml[0].firstChild.nodeValue;
        if (tb.subTabs.length == 0)
            tb.createSubTabs(numSubTabs);
        var subTabCurrentXml = theSack.responseXML.getElementsByTagName('subTabCurrent');
        tb.subTabsCurrent = subTabCurrentXml[0].firstChild.nodeValue;
        // save response for each subtab, so we can display it without having to do another ajax call.
        try {
	        tb.subTabs[tb.subTabsCurrent].responseXML = theSack.responseXML;
	        tb.subTabs[tb.subTabsCurrent].isLoaded = true;

		    showTab(tb); // display the tab's contents
		    onCustomizeShow(); // check the tab's checkboxes based on user's sorties.
	    }
	    catch(err) {
	    }
	}
}

function showTab(tb)
{
    // use responseXML to show subtab's display
    if (tb.subTabs[tb.subTabsCurrent].responseXML != null) {
        var data = tb.subTabs[tb.subTabsCurrent].responseXML.getElementsByTagName('data');
        var elm = docelm("modalOverlayInner");
        elm.innerHTML = data[0].firstChild.nodeValue;
        var divTopTabs = docelm("idTopTabs" + tb.tabIndex + "_" + tb.subTabsCurrent);
        if (divTopTabs)
            divTopTabs.innerHTML = getTabTopMenuHtml(tb);
        
        if (tb.tabIndex == 3) { //weather
            var w = tb.subTabs[tb.subTabsCurrent].responseXML.getElementsByTagName('UserSortieID_Weather');
            var userSortieID_Weather = w[0].firstChild.nodeValue;
            var cbShow = docelm("cbShowWeather");
            if (cbShow) {
                if (userSortieID_Weather > -1)
                    cbShow.checked = true;
                else
                    cbShow.checked = false;
            }
        }
        
        if (tb.tabIndex == 5) { //facebook
            var fb = tb.subTabs[tb.subTabsCurrent].responseXML.getElementsByTagName('UserSortieID_Facebook');
            var userSortieID_Facebook = fb[0].firstChild.nodeValue;
            var cbShowFb = docelm("cbShowFb");
            if (cbShowFb) {
                if (userSortieID_Facebook > -1)
                    cbShowFb.checked = true;
                else
                    cbShowFb.checked = false;
            }
        }
    }
}

function onChecked(obj, groupId, sortieType)
{
    if (obj.checked) {
        addSortieToPage(groupId, sortieType);
    }
    else {
        removeSortieFromPage(groupId);
    }
    sortiesChanged = true;
}

function onChecked2(groupId, sortieType)
{
    var obj = docelm("cb_" + groupId);
    if (!obj.checked) {
        obj.checked = true;
        addSortieToPage(groupId, sortieType);
    }
    else {
        obj.checked = false;
        removeSortieFromPage(groupId);
    }
    sortiesChanged = true;
}

function addSortieToPage(groupId, sortieType)
{
    var minCol = minSortieColumn();
    if (sortieType != 3) {  // if not weather
        createSortie(sortieType, minCol, groupId, 5, false);
    }
}

function minSortieColumn()
{
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    if (divColumn1.offsetHeight > divColumn2.offsetHeight)
        if(divColumn3.offsetHeight > divColumn2.offsetHeight)
            return 2;
        else
            return 3;    
    else
        return 1;
}

function removeSortieFromPage(groupId)
{
    var sortieIndex = getSortieIndex(groupId);
    if (sortieIndex > -1)
        closeSortie(sortieIndex, true);
}

function getSortieIndex(groupId)
{
    var sortieIndex = -1;

    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].contentType == groupId) {
                sortieIndex = id;
                break;
            }
        }
    }

    if (sortieIndex == -1) {
        for(var i = 0; i < divColumn2.childNodes.length; i++) {
            var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id) {
                if (sObjs[id].contentType == groupId) {
                    sortieIndex = id;
                    break;
                }
            }
        }
    }
    
    if (sortieIndex == -1) {
        for(var i = 0; i < divColumn3.childNodes.length; i++) {
            var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id) {
                if (sObjs[id].contentType == groupId) {
                    sortieIndex = id;
                    break;
                }
            }
        }
    }

    return sortieIndex;
}

function onkeyupWeather()
{
    var w = docelm('idWeatherZip');
    var zipcode = w.value.trim();
    w.value = zipcode;
    var err = docelm('weatherError');
    err.innerHTML = "";
    if(zipcode != '') {
        docelm('cbShowWeather').checked = true;
        if (isNaN(zipcode)) {
            err.innerHTML = "Zip Code must be a number";
            return;
        }
    }
}



function chooseContentImage(groupId, sortieType, userSortieID, sender)
{
    var obj = null;
    if (sender)
        obj = docelm(sender);
    
    if (sortieType == 3) {   // weather
        var zipcode = docelm('idWeatherZip').value.trim();
        var weatherErr = docelm('weatherError');
        weatherErr.innerHTML = "";
        if (zipcode == '') {
            weatherErr.innerHTML = "ZipCode cannot be blank";
            if(obj)obj.disabled = false;
            return;
        }
        else
        {
            if (isNaN(zipcode)) {
                weatherErr.innerHTML = "ZipCode must be a number";
                if(obj)obj.disabled = false;
                return;
            }

            if (userSortieID == -1) { // means user doesn't have a weather sortie yet
                insertWeatherSortie(zipcode);
            }
            else {
                // user already has weather sortie, so find it and reload it with new zip
                reloadWeatherSortie(zipcode);
            }
        }
    }
    else {
        createSortie(sortieType, 1, groupId, 5);
        el.style.display = "none";
        setTimeout('saveBoxes()',100);
    }
}

function insertWeatherSortie(zip) {
    var ajaxPage = homedirectory + 'ajax/insertWeatherSortie.aspx?zip=' + zip;
    ajaxRequest(ajaxPage, callback_insertWeatherSortie);
}

function insertWeatherSortie2(zip) {
	var ajaxPage = homedirectory + 'ajax/insertWeatherSortie.aspx?zip=' + zip;
    ajaxRequest(ajaxPage, callback_insertWeatherSortie2);
}

function insertWeatherSortie3(cityID) {
//	var ajaxPage = homedirectory + 'ajax/insertWeatherSortie.aspx?cityID=' + cityID;
//    ajaxRequest(ajaxPage, callback_insertWeatherSortie3);
    callback_insertWeatherSortie3(cityID);
}

function callback_insertWeatherSortie(html, params)
{
    var cityID = getStringParam(html, 'cityID');
    var zip = getStringParam(html, 'zip');

    createSortie(3, 1, cityID, 5, false);
    el.style.display = 'none';
    setTimeout('saveBoxes()',100);
    updateToolbarWeather(zip);
}

function callback_insertWeatherSortie2(html, params)
{
    var cityID = getStringParam(html, 'cityID');
    var zip = getStringParam(html, 'zip');

    var minCol = minSortieColumn();
    createSortie(3, minCol, cityID, 5, false);
    sortiesChanged = true;
    saveBoxesAfterCustomize();
    updateToolbarWeather(zip);
}

function callback_insertWeatherSortie3(cityID)
{
    //var cityID = getStringParam(html, 'cityID');
    var minCol = minSortieColumn();
    createSortie(3, minCol, cityID, 5, false);
    sortiesChanged = true;
}

function insertFacebookSortie()
{
    var minCol = minSortieColumn();
    createSortie(4, minCol, 0, 10, false);
    sortiesChanged = true;
}

function doFbLogout() {
    ajaxRequest(homedirectory + "fb/logout.aspx", callback_dbFbLogout);
}

function callback_dbFbLogout() {
    window.location.href = homedirectory;
//    var sidx = getSortieIndexByType(4);
//    if (sidx >= 0)
//        sObjs[sidx].reloadSortie();
}

function updateToolbarWeather(zip) {
    // pass sortieID=-1 to update toolbar only
    var ajaxPage = homedirectory + 'ajax/updateWeatherSortie.aspx?sid=-1&zip=' + zip;
    ajaxRequest(ajaxPage);
}

function updateToolbarWeatherCity(cityID) {
    // pass sortieID=-1 to update toolbar only
    var ajaxPage = homedirectory + 'ajax/updateWeatherSortie.aspx?sid=-1&cityID=' + cityID;
    ajaxRequest(ajaxPage);
}

function reloadWeatherSortie(zipcode) {
    var weatherSID = getSortieIndexByType(3);

    if (weatherSID > -1) {
        ajaxUpdateZipThenReloadSortie(weatherSID, zipcode);
    }
}

function reloadWeatherSortie2(zipcode) {
    var weatherSID = getSortieIndexByType(3);

    if (weatherSID > -1) {
        ajaxUpdateZipThenReloadSortie2(weatherSID, zipcode);
    }
}

function reloadWeatherSortie3(cityID) {
    var weatherSID = getSortieIndexByType(3);

    if (weatherSID > -1) {
        ajaxUpdateZipThenReloadSortie3(weatherSID, cityID);
    }
}

function getSortieIndexByType(sortieType)
{
    var sid = -1;

    // find sortie
    var divColumn1 = docelm("dvColumn1");
    var divColumn2 = docelm("dvColumn2");
    var divColumn3 = docelm("dvColumn3");

    for(var i = 0; i < divColumn1.childNodes.length; i++) {
        var id = divColumn1.childNodes[i].id.replace(/[^0-9]/g,'');
        if(id) {
            if (sObjs[id].type == sortieType) {
                sid = id;
                break;
            }
        }
    }

    if (sid == -1) {
        for(var i = 0; i < divColumn2.childNodes.length; i++) {
            var id = divColumn2.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id) {
                if (sObjs[id].type == sortieType) {
                    sid = id;
                    break;
                }
            }
        }
    }
    
    if (sid == -1) {
        for(var i = 0; i < divColumn3.childNodes.length; i++) {
            var id = divColumn3.childNodes[i].id.replace(/[^0-9]/g,'');
            if(id) {
                if (sObjs[id].type == sortieType) {
                    sid = id;
                    break;
                }
            }
        }
    }

    return sid;
}

function ajaxUpdateZipThenReloadSortie(sid, zip) {
    var ajaxPage = homedirectory + 'ajax/updateWeatherSortie.aspx?sid=' + sid + '&zip=' + zip;
    var callbackParams = 'sid:' + sid + '|zip:' + zip;
    ajaxRequest(ajaxPage, callback_reloadWeatherSortie, callbackParams);
}

function ajaxUpdateZipThenReloadSortie2(sid, zip) {
    var ajaxPage = homedirectory + 'ajax/updateWeatherSortie.aspx?sid=' + sid + '&zip=' + zip;
    var callbackParams = 'sid:' + sid + '|zip:' + zip;
    ajaxRequest(ajaxPage, callback_reloadWeatherSortie2, callbackParams);
}

function ajaxUpdateZipThenReloadSortie3(sid, cityID) {
    var ajaxPage = homedirectory + 'ajax/updateWeatherSortie.aspx?sid=' + sid + '&cityID=' + cityID;
    var callbackParams = 'sid:' + sid + '|cityID:' + cityID;
    ajaxRequest(ajaxPage, callback_reloadWeatherSortie2, callbackParams);
}

function getStringParam(params, key) {
    var v1 = params.split('|');
    for(i=0; i<v1.length; i++) {
        var v2 = v1[i].split(':');
        if (v2[0] == key) {
            return v2[1];
        }
    }
    
    return null;
}

function callback_reloadWeatherSortie(html, params) {
    var sid = getStringParam(params, 'sid');
    var cityID = getStringParam(html, 'cityID');
    //var zip = getStringParam(params, 'zip');
    
    // update zip in sortie obj
    sObjs[sid].contentType = cityID;
    sObjs[sid].vars = 'bx:' + sObjs[sid].sortieIndex + ',code:' + cityID + ',type:' + sObjs[sid].type + ',num:' + sObjs[sid].numRows;
    
    sObjs[sid].reloadSortie();
    
    el.style.display = 'none';
    setTimeout('saveBoxes()',100);
}

function callback_reloadWeatherSortie2(html, params) {
    var sid = getStringParam(params, 'sid');
    var cityID = getStringParam(html, 'cityID');
    //var zip = getStringParam(params, 'zip');

    // update zip in sortie obj
    sObjs[sid].contentType = cityID;
    sObjs[sid].vars = 'bx:' + sObjs[sid].sortieIndex + ',code:' + cityID + ',type:' + sObjs[sid].type + ',num:' + sObjs[sid].numRows;
    sObjs[sid].reloadSortie();

    sortiesChanged = true;
    //saveBoxesAfterCustomize();
}

// MOVEMENT EVENTS ////////////////////////////////////////////////////////////////////////////////////////////////

function mouseoverBox()
{
	if(ddCntr==10)return;
	var id = this.id.replace(/[^0-9]/g,'');
	var span = docelm("plusMinus" + id);
	if(span) span.style.display = '';

	var span2 = docelm("plusMinus2_" + id);
	if(span2) span2.style.display = '';
}
function mouseoutBox(e,obj)
{
	if(!obj)obj=this;
	var id = obj.id.replace(/[^0-9]/g,'');
	var span = docelm("plusMinus" + id);
	if(span) span.style.display = 'none';

	var span2 = docelm("plusMinus2_" + id);
	if(span2) span2.style.display = 'none';
}
function mouseoverBox2()
{
    var id = this.id.replace(/[^0-9]/g,'');
    var div = docelm("divPlusMinus" + id);
    if (div) {
        div.style.display = '';
        div.style.visibility = 'visible';
    }
}
function mouseoutBox2(e,obj)
{
    if(!obj)obj=this;
    var id = obj.id.replace(/[^0-9]/g,'');
    var div = docelm("divPlusMinus" + id);
    if (div) {
        div.style.display = 'none';
        div.style.visibility = 'hidden';
    }
}
function mouseoverBoxHeader()
{
	//if(ddCntr==10)return;
	var id = this.id.replace(/[^0-9]/g,'');
	var span = docelm("spnEdit" + id);
	var fbLogout = docelm("fbLogout" + id);
	var refreshImg = docelm("imgRefresh" + id);
	var imgClose = docelm("imgClose" + id);
	if(span) {
	    span.style.display = '';
	    if(span.innerHTML == 'close edit'){
	        if(refreshImg)refreshImg.style.display = 'none';
	        var tmpImg = docelm("imgClose_" + id);
	        if(tmpImg){
	            if(tmpImg.style.display == ''){
	                if(span)span.style.display = 'none';
	            }
	        }
	    }else {
	        if(fbLogout)fbLogout.style.display = '';
	        if(refreshImg)refreshImg.style.display = '';
	        if(imgClose)imgClose.style.display = '';
	    }
	}
	var box = docelm("dvBox" + id);
    if (box) {
        box.style.border = "1px solid #f90";
    }
}
function mouseoutBoxHeader(e,obj)
{
	if(!obj)obj=this;
	var id = obj.id.replace(/[^0-9]/g,'');
	var span = docelm("spnEdit" + id);
	if(span) if(span.innerHTML == 'edit')span.style.display = 'none';
	
	var fbLogout = docelm("fbLogout" + id);
	if(fbLogout) fbLogout.style.display = 'none';
	
	var refreshImg = docelm("imgRefresh" + id);
	if(refreshImg) refreshImg.style.display = 'none';

	var imgClose = docelm("imgClose" + id);
	if(imgClose) imgClose.style.display = 'none';
	
	if(span){
	    if(span.innerHTML == 'close edit'){
	        var tmpImg = docelm("imgClose_" + id);
	        if(tmpImg){
                if(tmpImg.style.display == ''){
                    if(span)span.style.display = 'none';
                }
            }
	    }
	}
	var box = docelm("dvBox" + id);
    if (box) {
        box.style.border = "1px solid #CCCCCC";
    }
}

function initEvents()
{
	document.body.onmousemove = moveDragableElement;
	document.body.onmouseup = stop_dragDropElement;
	document.body.onselectstart = cancelSelectionEvent;
	document.body.ondragstart = cancelEvent;
	docHght = document.documentElement.clientHeight;
}

function moveDragableElement(e){
	if(document.all)e = event;
	if(ddCntr<10)return;

	if(document.all && e.button!=1 && !opera){
		stop_dragDropElement();
		return;
	}

	if(document.body!=dObj.parentNode){
	    if(dObj.parentNode != columnParentBox) {
		    dObj.style.width = (dObj.offsetWidth - (dObjBordWidth*2)) + 'px';
		    dObj.style.position = 'absolute';
		    dObj.style.textAlign = 'left';
			dObj.style.filter = 'alpha(opacity=60)';
			dObj.style.opacity = '0.6';
		    dObj.parentNode.insertBefore(rctDiv,dObj);
		    rctDiv.style.display='';
		    rctDiv.style.backgroundColor = '#dedede';
		    rctDiv.style.padding = '5px';
		    document.body.appendChild(dObj);

		    rctDiv.style.width = dObj.style.width;
		    rctDiv.style.height = (dObj.offsetHeight - (dObjBordWidth*2)) + 'px';
		}
	}
	
	if(e.clientY<50 || e.clientY>(docHght-50)){
		if(e.clientY<50 && !atoScrlActv){
			atoScrlActv = true;
			autoScroll((autoScrollSpeed*-1),e.clientY);
		}

		if(e.clientY>(docHght-50) && document.documentElement.scrollHeight<=docScrollHght && !atoScrlActv){
			atoScrlActv = true;
			autoScroll(autoScrollSpeed,e.clientY);
		}
	}else{
		atoScrlActv = false;
	}		
	var leftPos = e.clientX;
	var topPos = e.clientY + document.documentElement.scrollTop;

	dObj.style.left = (e.clientX - mouse_x + el_x) + 'px';
	dObj.style.top = (el_y - mouse_y + e.clientY + document.documentElement.scrollTop) + 'px';
	
	if(!okToMove)return;
	okToMove = false;

	dstObj = false;	
	rctDiv.style.display = 'none'; 
	
	var objFound = false;
	var tmpParentArray = new Array();
	
	if(!objFound){
		for(var no=0;no<sObjs.length;no++){
		    if(sObjs[no] == null || sObjs[no].containerObj == null)continue;
			if(sObjs[no].containerObj ==dObj)continue;
			tmpParentArray[sObjs[no].containerObj.parentNode.id] = true;
			if(!objFound){
				var tmpX = getLeftPos(sObjs[no].containerObj);
				var tmpY = getTopPos(sObjs[no].containerObj);

				if(leftPos>tmpX && leftPos<(tmpX + sObjs[no].containerObj.offsetWidth) && topPos>(tmpY-20) && topPos<(tmpY + (sObjs[no].containerObj.offsetHeight/2))){
					dstObj = sObjs[no].containerObj;
					dstObj.parentNode.insertBefore(rctDiv,sObjs[no].containerObj);
					rctDiv.style.display = 'block';
					objFound = true;
					break;
				}

				if(leftPos>tmpX && leftPos<(tmpX + sObjs[no].containerObj.offsetWidth) && topPos>=(tmpY + (sObjs[no].containerObj.offsetHeight/2)) && topPos<(tmpY + sObjs[no].containerObj.offsetHeight)){
					objFound = true;
					if(sObjs[no].containerObj.nextSibling){
						dstObj = sObjs[no].containerObj.nextSibling;
						if(!dstObj.tagName){
						    if(dstObj.tagName != 'HR')dstObj = dstObj.nextSibling;
						    }
						if(dstObj!=rctDiv)dstObj.parentNode.insertBefore(rctDiv,dstObj);
					}else{
						dstObj = sObjs[no].containerObj.parentNode;
						sObjs[no].containerObj.parentNode.appendChild(rctDiv);
					}
					rctDiv.style.display = 'block';
					break;
				}

				if(!sObjs[no].containerObj.nextSibling && leftPos>tmpX && leftPos<(tmpX + sObjs[no].containerObj.offsetWidth)
				&& topPos>topPos>(tmpY + (sObjs[no].containerObj.offsetHeight))){
					dstObj = sObjs[no].containerObj.parentNode;
					sObjs[no].containerObj.parentNode.appendChild(rctDiv);
					rctDiv.style.display = 'block';
					objFound = true;
				}
			}
		}
	}

	if(!objFound){
		for(var no=1;no<=numOfCols;no++){
			if(!objFound){
				var obj = docelm('dvColumn' + no);

				var left = getLeftPos(obj)/1;

				var width = obj.offsetWidth;
				if(leftPos>left && leftPos<(left+width)){
					dstObj = obj;
					obj.appendChild(rctDiv);
					rctDiv.style.display='block';
					objFound=true;
				}
			}
		}
	}
	setTimeout('okToMove=true',5);
}

function stop_dragDropElement()
{
	if(ddCntr<10){
		ddCntr = -1
		return;
	}
	ddCntr = -1;
	dObj.style.filter = null;
	dObj.style.opacity = null;
	dObj.style.position = 'static';
	dObj.style.width = null;
	var numericId = dObj.id.replace(/[^0-9]/g,'');
	if(numericId == ""){
	    for(var i = 1; i < sObjs.length; i++)
	    {
	        if(sObjs[i].containerObj.id == dObj.id){
	            numericId = i;
	            break;
	        }
	    }
	}
	if(dstObj && dstObj.id!=dObj.id){
		if(dstObj.id.indexOf('dvColumn')>=0){
			dstObj.appendChild(dObj);
			sObjs[numericId].parentObj = dstObj;
		}else{
			dstObj.parentNode.insertBefore(dObj,dstObj);
			sObjs[numericId].parentObj = dstObj.parentNode;
		}						
	}else{
		if(dObjNxtSib){
			dObjPrnt.insertBefore(dObj,dObjNxtSib);
		}else{
			dObjPrnt.appendChild(dObj);
		}
	}
		
	atoScrlActv = false;
	rctDiv.style.display = 'none';
	dObj = false;
	dObjNxtSib = false;
	dstObj = false;
	
	setTimeout('saveBoxes()',100);

	docHght = document.documentElement.clientHeight;
}

function cancelSelectionEvent(e)
{
	if(document.all)e = event;
	
	if (e.target) source = e.target;
		else if (e.srcElement) source = e.srcElement;
		if (source.nodeType == 3) // defeat Safari bug
			source = source.parentNode;
	if(source.tagName.toLowerCase()=='input')return true;

	if(ddCntr>=0)return false; else return true;
}

function cancelEvent()
{
	return false;
}

function initDragDropBox(e)
{
	ddCntr = 1;
	if(document.all)e = event;

	if (e.target) source = e.target;
		else if (e.srcElement) source = e.srcElement;
		if (source.nodeType == 3) // defeat Safari bug
			source = source.parentNode;

	if(source.tagName.toLowerCase()=='img' || source.tagName.toLowerCase()=='a' || source.tagName.toLowerCase()=='input' || source.tagName.toLowerCase()=='td' || source.tagName.toLowerCase()=='tr' || source.tagName.toLowerCase()=='table')return;

	mouse_x = e.clientX;
	mouse_y = e.clientY;
	var numericId = this.id.replace(/[^0-9]/g,'');
	/*if(numericId == ""){
	    for(var i = 1; i < dBAry.length; i++)
	    {
	        if(dBAry[i]['menuHeaderId'] == this.id){
	            numericId = i;
	            break;
	        }
	    }
	}*/
	el_x = getLeftPos(this.parentNode)/1;
	el_y = getTopPos(this.parentNode)/1 - document.documentElement.scrollTop;

	dObj = this.parentNode;

	docScrollHght = document.documentElement.scrollHeight + 100 + dObj.offsetHeight;

	if(dObj.nextSibling){
		dObjNxtSib = dObj.nextSibling;
		if(dObjNxtSib.tagName!='DIV'){
		    dObjNxtSib = dObjNxtSib.nextSibling;
		}
	}
	dObjPrnt = sObjs[numericId].parentObj;

	ddCntr = 0;
	initDragDropBoxTimer();
	return false;
}

function initDragDropBoxTimer()
{
	if(ddCntr>=0 && ddCntr<10){
		ddCntr++;
		setTimeout('initDragDropBoxTimer()',10);
		return;
	}
	if(ddCntr==10){
		//mouseoutBoxHeader(false,dObj);
	}
}

function getTopPos(inputObj)
{
  var returnValue = inputObj.offsetTop;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetTop;
  }
  return returnValue;
}

function getLeftPos(inputObj)
{
  var returnValue = inputObj.offsetLeft;
  while((inputObj = inputObj.offsetParent) != null){
  	if(inputObj.tagName!='HTML')returnValue += inputObj.offsetLeft;
  }
  return returnValue;
}

function autoScroll(direction,yPos)
{
	if(document.documentElement.scrollHeight>docScrollHght && direction>0)return;
	if(opera)return;
	window.scrollBy(0,direction);
	if(!dObj)return;

	if(direction<0){
		if(document.documentElement.scrollTop>0) dObj.style.top = (el_y - mouse_y + yPos + document.documentElement.scrollTop) + 'px';
		else atoScrlActv = false;
	}else{
		if(yPos>(docHght-50)) dObj.style.top = (el_y - mouse_y + yPos + document.documentElement.scrollTop) + 'px';
		else atoScrlActv = false;
	}
	if(atoScrlActv)setTimeout('autoScroll('+direction+',' + yPos + ')',5);
}

function moveModal(width, height) {
	if (addSortiePopup == true) {
				
		var scTop = parseInt((window.pageYOffset)?(window.pageYOffset):(document.documentElement)?document.documentElement.scrollTop:document.body.scrollTop);
		var scLeft = parseInt((window.pageXOffset)?(window.pageXOffset):(document.documentElement)?document.documentElement.scrollLeft:document.body.scrollLeft);
		addSortCon.style.width = getViewportWidth();
		addSortCon.style.height = getViewportHeight();
				
		addSortCon.style.top = scTop + "px";
		addSortCon.style.left = scLeft + "px";
	}
}

function getViewportHeight() {
	if (window.innerHeight!=window.undefined) return window.innerHeight;
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientHeight;
	if (document.body) return document.body.clientHeight; 
	return window.undefined; 
}
function getViewportWidth() {
	if (window.innerWidth!=window.undefined) return window.innerWidth; 
	if (document.compatMode=='CSS1Compat') return document.documentElement.clientWidth; 
	if (document.body) return document.body.clientWidth; 
	return window.undefined; 
}

function addEvent(obj, evType, fn){
 if (obj.addEventListener){
    obj.addEventListener(evType, fn, false);
    return true;
 } else if (obj.attachEvent){
    var r = obj.attachEvent("on"+evType, fn);
    return r;
 } else {
    return false;
 }
}

addEvent(window, "resize", moveModal);

window.onscroll = moveModal;