//Set all Global Variables
var ua = navigator.userAgent;
var rightBrowser = true;
var d = document;
var theService;
var serviceClicked;
var lastDragID = "";
var setDragMark = true;
var setDragScroll = true;
var stID;
var sideSpace = 3;
var sideSpaceGutter = 0;
var menuWidth = 104;
var cX,cY;
var dhtmlWinWidth = 430;
var w;
var mainDisplayed=false;
var winObj;

function init(doc) {
	d = doc;
	if (ua.indexOf('MSIE 5')!=-1||ua.indexOf("MSIE 6")!=-1)
		rightBrowser = true;
	else if (navigator.appName=="Netscape" && parseInt(navigator.appVersion)>=5)
		rightBrowser = true;
	else
		rightBrowser = false;
	
	if (rightBrowser) {
		sizeVals();
		winObj = null;
		d.onmousedown = engage;
		d.onmousemove = drag;
		d.onmouseup = release;
		window.onresize = sizeVals; 
	}
}

function whichPosition(id) {
    if (rightBrowser) {
		 var pos;
		 var col=whichColumn(id);
		 for (i=0;i<eval('col'+col+'Serv.length');i++) {
			 if(eval('col'+col+'Serv[i]')==id){pos=i;break;}
		 }
		 
		 return pos;
    }
}


function whichColumn(id) {
    if (rightBrowser) {
		var col=1;
		 
		if (id.indexOf("column")!=-1||id.indexOf("topcol")!=-1) {
			col=id.substring(6);
		}
		else {
			for (i=0;i<col2Serv.length;i++) {
				if(col2Serv[i]==id) {col=2; break;};
			}
			for (i=0;i<col3Serv.length;i++) {
				if(col3Serv[i]==id) {col=3; break;};
			}
	   	}
		return col;
	}
}

function deleteElement(id, sendSave, clickpath) {
    if (rightBrowser) {
		var temp=new Array();
		var i,ii=0;
		var col=whichColumn(id);
  
		for (i=0; i<eval('col'+col+'Serv.length'); i++) {
			if (eval('col'+col+'Serv['+i+']')!=id) {
				temp[ii]=eval('col'+col+'Serv['+i+']');
				ii++
			}
		}
    
        //Was left column services modified or right?
		if (col==1)
			col1Serv=temp;
		else if (col==2)
			col2Serv=temp;
		else
			col3Serv=temp;	

		//document.getElementById("haha").innerHTML = "Delete....<br>col=" + col + "<br>col1Serv=" + col1Serv + "<br>col2Serv=" + col2Serv;
		if (sendSave) {
			d.getElementById('main_'+id).style.display="none";
			saveLayout(clickpath);
		}
    }
}

function insertElement(insertWhichID,insertAfterID,col,first) {
    if (rightBrowser) {
		var temp=new Array();
		var i=0,ii=0;
		
		//If services array is empty, set first element to 'insertWhichID'
		if (first==1) {
			temp[0]=insertWhichID;
			ii++;
		}
		if (insertAfterID=="topcol"+col) {
			temp[0]=insertWhichID;
			ii++;
		}
		if (eval('col'+col+'Serv.length')==0) {
			temp[0]=insertWhichID;
		}
		else {
			for (; i<eval('col'+col+'Serv.length'); i++) {
			 	if (eval('col'+col+'Serv['+i+']')!=insertAfterID) {
				temp[ii]=eval('col'+col+'Serv['+i+']'); ii++;
				}
			 	else if(eval('col'+col+'Serv['+i+']')==insertAfterID) {
				  	//Add 'insertWhichID' next
				  	temp[ii]=eval('col'+col+'Serv['+i+']'); ii++;
				  	temp[ii]=insertWhichID; ii++;
			 	}
			}
		}
			 
		if (insertAfterID=="column"+col&&eval('col'+col+'Serv.length')!=0&&first!=1)
			temp[temp.length]=insertWhichID;
		 
		if (col==1)
			col1Serv=temp;
		else if (col==2)
			col2Serv=temp;
		else
			col3Serv=temp;
					 
		//document.getElementById("haha").innerHTML = document.getElementById("haha").innerHTML + "Insert.....<br>col=" + col + "<br>col1Serv=" + col1Serv + "<br>col2Serv=" + col2Serv;
    }
}

function moveWidget(moveBelowThisWidget) {
    if (rightBrowser) {
		var pos,col,html,where="AfterEnd";
		col=whichColumn(moveBelowThisWidget);
		
		if (moveBelowThisWidget=="column"+col) {
			if (eval('col'+col+'Serv.length==0')) {
				//make first service in column
				moveBelowThisWidget='topcol'+col;
			}
			else {
				//move below last service in column
				moveBelowThisWidget=eval('col'+col+'Serv[col'+col+'Serv.length-1]');
			}
		}
		
		html=d.getElementById('main_'+theService).outerHTML;
		d.getElementById('main_'+theService).outerHTML="";
		deleteElement(theService,false);
		insertElement(theService,moveBelowThisWidget,col,0);
		
		//insert dragged widget to new position
		d.getElementById('main_'+moveBelowThisWidget).insertAdjacentHTML(where,html);
    }
}

function sizeVals() {
    if (rightBrowser) {
		//Set global size values
		browserWidth=d.body.clientWidth;
		//if fixed width
		if (pageWidth.indexOf('%')==-1)
			widgetWidth=parseInt(pageWidth/2-sideSpace*2-9);
		//if not fixed width
		else
			widgetWidth=parseInt((browserWidth-sideSpace*2-9)/2);
		
		if (pageWidth.indexOf('%')==-1&&browserWidth<pageWidth) {
			browserWidth=pageWidth; widgetWidth=parseInt(pageWidth/2-sideSpace*2-9);
		}
		else if (browserWidth<pageWidth) {
			browserWidth=585; widgetWidth=285;
		}
		
		if (pageWidth.indexOf('%')==-1)
			sideSpaceGutter=(browserWidth-pageWidth)/2;
		else
			sideSpaceGutter=0;
		
		browserHeight=d.body.clientHeight;
		yScroll=browserHeight/2-(browserHeight/3);
		//d.getElementById('channelmenu').style.display="none"; //hide menu if browser resized, Comment by christine
		// formsDisplay('visible'); //Comment by Christine
    }
}

//***** START WINDOW DRAGGING FUNCTIONS *****//
function engage() {
    if (rightBrowser) {
		//alert(window.event);
		var elemID=window.event.srcElement.id;
		//theService: The element being dragged; make global;
		theService=elemID.substring(5);
		if (elemID.indexOf("move_")==-1) {winObj=null; return false;}
		
		winObj=d.getElementById('winDrag').style;
		orgLeft=offsetX=window.event.clientX;
		
		if (window.event.clientX>(widgetWidth+sideSpace+sideSpaceGutter+menuWidth))
			orgLeft=window.event.clientX-widgetWidth-sideSpace-sideSpaceGutter;
		
		offsetY=window.event.clientY+d.body.scrollTop;
		if (whichColumn(theService)==1)
			winObj.pixelLeft=window.event.clientX-orgLeft+sideSpace*2+sideSpaceGutter+menuWidth;
		else
			winObj.pixelLeft=offsetX-orgLeft+sideSpace+9;
		
		winObj.pixelTop = offsetY;
		winObj.width = widgetWidth;
		winObj.height = d.getElementById('h_'+theService).clientHeight;
		winObj.display = "";
		return false;
    } 
}

function drag() {
    if (rightBrowser) {
	if (winObj) {
		cX=window.event.clientX; cY=window.event.clientY;
		d.getElementById('hint').style.display="none";
	
		//Hide channel widget popup if dragging occurs
		// d.getElementById('channelmenu').style.display="none"; //Comment By Christine
	   
		if (whichColumn(theService)==1)
			winObj.pixelLeft = window.event.clientX - orgLeft + sideSpace * 2 + sideSpaceGutter
		else
			winObj.pixelLeft=window.event.clientX-orgLeft+sideSpace*2+9;
	   
		winObj.pixelTop=window.event.clientY+d.body.scrollTop;
		if (cY<10||cY>browserHeight-10||cX<10||cX>browserWidth-10) {
			winObj.display="none";
			winObj=null;
			//alert(dragErr);
			setDragScroll=true;
			return false;
		}
	   
		if (setDragScroll) {setDragScroll=false;scrollIt();}
			if (setDragMark&&setDragScroll) dragMarker();
			//prevent further system response to dragging
			return false;
		}
    }
}

function scrollIt() {
    if (rightBrowser) {
		if (winObj) {
			if ((cY>browserHeight-yScroll&&d.body.scrollTop+browserHeight<d.body.scrollHeight)||(cY<yScroll+50&&d.body.scrollTop!=0)) {
				yInt=25;
			   
				if (cY<yScroll+50) {
					yInt=-25;
				}
			
				winObj.display="none";
				scrollBy(0,yInt);
				winObj.display="";
				setTimeout("scrollIt()",5);
				winObj.display="";
			}
			else
				setDragScroll=true;
		}
		else
			setDragScroll=true;
    }
}

function showHint(ser) {
    if (rightBrowser) {
		//if (window.event.srcElement.id.indexOf('edit_')!=-1) return;
		var col=whichColumn(ser);
		/*
		d.getElementById('hint').style.display="none";
		
		if (col==1)
		d.getElementById('hint').style.pixelLeft=sideSpace+2+10+sideSpaceGutter;
		else
		d.getElementById('hint').style.pixelLeft=sideSpace+widgetWidth+18+6+10+sideSpaceGutter;

		d.getElementById('hint').style.pixelTop=window.event.clientY+10+d.body.scrollTop;
		stID=setTimeout('d.getElementById("hint").style.display="";',500);
		setTimeout('d.getElementById("hint").style.display="none";',5500);
		*/
    }
}

function dragMarker() {
    if (rightBrowser) {
         setDragMark=false;
         var col;
         var lastService="";
         var lastServiceIndex;
         var elementHTML=window.event.srcElement;
         var widgetID=theWidgetID(); //The widget that was dragged
         
         if (widgetID!=0) {
            if (lastDragID!="") {
               //d.getElementById('drop_'+lastDragID).style.visibility="hidden";
	           }
            
            col=whichColumn(widgetID);
	           
            if (widgetID.indexOf("column")!=-1) {
               if (eval('col'+col+'Serv.length')!=0) {
                  widgetID=eval('col'+col+'Serv[col'+col+'Serv.length-1];');
			              //d.getElementById('drop_'+widgetID).style.visibility="visible";
			              lastDragID=widgetID;
               }
               else {
			               //d.getElementById('drop_topcol'+col).style.visibility="visible";
			               lastDragID="topcol"+col;
		            }
            }
            else if (widgetID.indexOf("topcol")!=-1) {
              //d.getElementById('drop_topcol'+col).style.visibility="visible";
		           lastDragID="topcol"+col;
            }
            else {
		          //d.getElementById('drop_'+widgetID).style.visibility="visible";
		          lastDragID=widgetID;
	          }
         }
         //the mouse cursor is above an invalid area. hide all "reposition" layers
         else if (lastDragID!="") { 
	          //d.getElementById('drop_'+lastDragID).style.visibility="hidden";
         }
         setTimeout("setDragMark=true",10);//limit the invocation rate of this function
         return false;
    }
}

function release() {
    if (rightBrowser) {
         setDragScroll=true;
         var col;

         if (winObj) {
            var widgetID=theWidgetID();
            winObj.display="none";
            winObj=null;
				  
            //if theService dragged within constraints of the two columns and the widget is not dropped on top of itself, then process request
            if (widgetID!="0") {
	              moveWidget(widgetID);
	              var col1,col2,col3;
	              col1=col1Serv.join(",");	
	              col2=col2Serv.join(",");	
	              col3=col3Serv.join(",");	
	              if (col1==""||col1==null) col1="NULL";
	              if (col2==""||col2==null) col2="NULL";
	              if (col3==""||col3==null) col3="NULL";
               
               //Comment by CHristine
					window.frames["widget_reload"].location.href="saveSeq.asp?boxesCol1=" + col1 + "&boxesCol2=" + col2;
               //	window.frames["widget_reload"].location.href="/shared/savelayout.psp?set:user/nss/"+cobrand+"/pages/"+pageID+"/services1="+col1+"&set:user/nss/"+cobrand+"/pages/"+pageID+"/services2="+col2+"&set:user/nss/"+cobrand+"/pages/"+pageID+"/services3="+col3;

           }

           if (lastDragID!="") {
	             //d.getElementById('drop_'+lastDragID).style.visibility="hidden";
				}
          lastDragID="";
				
				// Added by Christine
				MoveCellStyleHandler(theService, '');
				
          return false;
         }
    }
}

function theWidgetID() {
    if (rightBrowser)
    {
         var elementHTML=window.event.srcElement; //The widget that the dragged window was dropped on
         var widgetID;
         
         //keep looping (bubble up and check IDs for each parent HTML element)
         //until we find out which widget the draggable window was dropped on top of
         while (true)
         {
	              if (elementHTML.id.indexOf('main_')!=-1)
               {
		               //We found the widget the ID!
		               widgetID=elementHTML.id.substring(5); break;//alert("case1");
	              }
               else if (elementHTML.id.indexOf('bodyTag')!=-1)
               {
                    widgetID="0";break;//alert("Case2");
	              }
					
               else
               {
                    elementHTML=elementHTML.parentElement;
	              }
         }
         
         if (widgetID.indexOf("column")!=-1)
         {
               //theService dragged and dropped into its own column?
               	if (parseInt(widgetID.substring(6))==whichColumn(theService)) 
                {
                     //if theService dragged is the last item, then do nothing
                     if (whichPosition(theService)==eval('col'+parseInt(widgetID.substring(6))+'Serv.length')-1)
                        widgetID="0";
	               }	
        }

        if (widgetID==theService) 
           widgetID="0";

       if (widgetID.indexOf('topcol')!=-1)
       {
        	col=widgetID.substring(6);
          if (eval('col'+col+'Serv[0]')==theService)
               widgetID="0";
       }

       return widgetID;
    }
}
//***** END WINDOW DRAGGING FUNCTIONS *****//
/*
function saveVals(form,att,serviceID) {
var checkedVals="set:user/nss/"+att;
var newStuff="";
for (i=0;i<form.elements.length;i++) {
	if (form.elements[i].type=="checkbox")
		if (form.elements[i].checked==true){
			newStuff+=form.elements[i].name+",";
		}
}
if (newStuff.indexOf(",")!=-1)//if there is actual content...
	newStuff=newStuff.substring(0,newStuff.length-1);
else newStuff="NULL";
d.getElementById(serviceID+'_content').innerHTML="&nbsp;<B>"+reloadingContent+"</B>";
window.frames["widget_reload"].location.href="/shared/reloadservice.psp?service="+serviceID+"&"+checkedVals+"="+newStuff;
parent.closeDHTMLWin();
}

function radioIndex(radioGroup) {
for (var i=0; i<radioGroup.length; i++)
	if (radioGroup[i].checked==true) break;
	return i;
}

function checkError(inputText,err)
{
for (i=0; i<inputText.length; i++) {
    ch=inputText.charAt(i);
    if (validChars.indexOf(ch) == -1) {
        alert(err);
        return false; }
  }
        return true;
}

function cp(cp,url,sb) { //clickpath logging and targeting
//var h="/shared/z.psp?cp="+cp+"/"+url;
var h="http://info.netscape.com/fwd"+cp+"/"+url;
if (url.indexOf("aol://")==-1 && (sb==''||sb==null)) {//is internal type url
        newWin=window.open(h,"newWin");
        newWin.focus();
}
else {//is http type url
   newWin=window.open(h,"_content");
}
}
function setupWin(url,serviceID,theWidth,theHeight,clickpath){
if (!clickpath || clickpath=="") clickpath="XX";
wrapper_win=window.open('','wrapper_win','width='+theWidth+',height='+theHeight+',scrollbars');
wrapper_win.focus();
wrapper_win.document.open();
wrapper_win.document.write('<html><body><B>Loading content. Please wait.</B></body></html>');
wrapper_win.document.close();
wrapper_win.location.href="/shared/dhtmlwrapper.psp?cp="+clickpath+"&service="+serviceID+"&url="+es(url)+"/form.psp&get=int";
//alert("/shared/dhtmlwrapper.psp?service="+serviceID+"&url="+es(url)+"/"+serviceID+"/form.psp");
return false;
}
function setupWin2(host, url,serviceID,theWidth,theHeight, clickpath){

if (isGuest=="1") {signInURL();return false;} 

clickpath = "http://info.netscape.com/fwd/" + clickpath + "/" + host;

var wrapperGet="int";
if (customizeIDs.indexOf(serviceID)!=-1){wrapper_winn=window.open(clickpath+'/'+url+'/form.psp','wrapper_winn','width='+theWidth+',height='+theHeight);
wrapper_winn.focus();
}
else {
wrapper_winn=window.open(clickpath+'/shared/dhtmlwrapper.psp?service='+serviceID+'&url='+es(url).replace(/\./g,"%2E")+'/form.psp&get=int','wrapper_winn','width='+theWidth+',height='+theHeight);
wrapper_winn.focus();
}
return false;
}
*/

function MoveCellStyleHandler(id, color)
{
		if (rightBrowser)
		{
			    var oCell_1 = document.getElementById("moveTable_" + id);
			    //oCell_1.style.cursor = 'move';
			    
			    if (winObj == null)
			    {	 
						 
						  if (document.all)
			    	  oCell_1.style.backgroundColor = color;
				  		
			    }
		}
}