window.onresize= function()
{
    ZWWin.docDimensions = ZWWin.findDocumentDimensions();
    ZWWin.winDimensions = ZWWin.findWindowDimensions();
};
var ZWWin = {
    docDimensions : null,
    winDimensions : null,

    getWindowDimensions : function()
    {
        if (!ZWWin.winDimensions) ZWWin.winDimensions = ZWWin.findWindowDimensions();
        return ZWWin.winDimensions;
    },

    findWindowDimensions : function()
    {
        var x,y;
        if (self.innerHeight) // all except Explorer
        {
            x = self.innerWidth;
            y = self.innerHeight;
        }
        else if (document.documentElement && document.documentElement.clientHeight)
            // Explorer 6 Strict Mode
        {
            x = document.documentElement.clientWidth;
            y = document.documentElement.clientHeight;
        }
        else if (document.body) // other Explorers
        {
            x = document.body.clientWidth;
            y = document.body.clientHeight;
        }
        return {"width":x, "height":y};
    },

    getDocumentDimensions : function ()
    {
        if (!ZWWin.docDimensions) ZWWin.docDimensions = ZWWin.findDocumentDimensions();
        return ZWWin.docDimensions;
    },

    findDocumentDimensions : function ()
    {
        var x,y;
        var test1 = document.body.scrollHeight;
        var test2 = document.body.offsetHeight
        if (test1 > test2) // all but Explorer Mac
        {
            x = document.body.scrollWidth;
            y = document.body.scrollHeight;
        }
        else
        {
            // Explorer Mac; would also work in:
            // Explorer 6 Strict, Mozilla and Safari
            x = document.body.offsetWidth;
            y = document.body.offsetHeight;
        }
        return {"width":x, "height":y};
    },
    //usage: ZWWin.getCenteredTopLeft( {"width":200, "height":400} );
    getCenteredTopLeft : function (params)
    {
        var width   = params.width;
        var height  = params.height;
        var dim     = ZWWin.getWindowDimensions();
        var hScroll = 0;
        var vScroll = 0;
        var hPos    = Math.round(hScroll+((dim.width-width)/2));
        var vPos    = Math.round(vScroll+((dim.height-height)/2));
        var left    = (hPos < 0)?0:hPos;
        var top     = (vPos < 0)?0:vPos;
        return {"top":top, "left":left};
    },
    //usage: ZWWin.removeElementbyId('maindiv');
    removeElementbyId : function (element_name)
    {
        d = document.getElementById(element_name);
        p = d.parentNode ? d.parentNode : d.parentElement;
        p.removeChild( d );
    }
};

var ZWDrag = {
    BIG_Z_INDEX : 10000,
    LAST_Z_INDEX : 10001,
    isDragging : false,
    itemindrag : null,
    mouseXinit : null,
    mouseYinit : null,
    lastdragged : null,

    makeDraggable : function(draggableitem,itemhandle) {
        itemhandle.draggableitem   = draggableitem;
        itemhandle.onmousedown     = ZWDrag.onMouseDown;
        itemhandle.style["cursor"]="move";

        initPosition = ZWDragUtils.findPos(draggableitem);
        draggableitem.initPositionX= initPosition.x;
        draggableitem.initPositionY= initPosition.y;
        draggableitem.style["position"]="absolute";
        draggableitem.style["left"]= initPosition.x+"px";
        draggableitem.style["top"]= initPosition.y+"px";
        draggableitem.width = parseInt(draggableitem.style["width"]);
        draggableitem.height= parseInt(draggableitem.style["height"]);
        draggableitem.originalZIndex  = draggableitem.style["zIndex"];
        draggableitem.originalOpacity = draggableitem.style["opacity"];
    },

    onMouseDown : function(event) {

        event = ZWDragUtils.fixEvent(event);
        targ  = ZWDragUtils.findTarget(event);

        while (!targ.draggableitem && targ!=null)
            targ = targ.parentNode ? targ.parentNode : targ.parentElement;
        if (targ==null) return false;
        
        if (ZWDrag.lastdragged)
            ZWDrag.lastdragged.style["zIndex"]  = ZWDrag.lastdragged.originalZIndex;

        ditem = targ.draggableitem;
        ditem.originalLeft = parseInt(ditem.style["left"]);
        ditem.originalTop  = parseInt(ditem.style["top"]);

        document.onmousemove = ZWDrag.onMouseMove;
        document.onmouseup = ZWDrag.onMouseUp;
        ZWDrag.itemindrag = ditem;
        ZWDrag.isDragging = true;
        ZWDrag.mouseXinit = event.clientX;
        ZWDrag.mouseYinit = event.clientY;

        return false;
    },

    onMouseMove : function(event) {
        event = ZWDragUtils.fixEvent(event);
        if (ZWDrag.isDragging)
        {
            ditem = ZWDrag.itemindrag;
            ditem.style["zIndex"]  = ZWDrag.BIG_Z_INDEX;
            ditem.style["opacity"] = 0.75;
            ZWDragUtils.repositionItem(event,ditem);
        }

        return false;
    },

    onMouseUp : function(event) {
        event = ZWDragUtils.fixEvent(event);

        if (ZWDrag.itemindrag)
        {
            ditem = ZWDrag.itemindrag;
//            ditem.style["zIndex"] = ditem.originalZIndex;
            ditem.style["zIndex"] = ZWDrag.LAST_Z_INDEX;
            ditem.style["opacity"]= ditem.originalOpacity;
            ZWDrag.lastdragged = ditem;
        }


        ZWDrag.itemindrag = null;
        ZWDrag.isDragging = false;
        ZWDrag.mouseXinit = null;
        ZWDrag.mouseYinit = null;
        document.onmousemove = null;
        document.onmouseup = null;

        return false;
    }

};

var ZWDragUtils = {

    fixEvent : function (e) {
         return (!e) ? window.event : e;
    },

    findPos : function (obj) {
        var curleft = curtop = 0;
        if (obj.offsetParent) {
            curleft = obj.offsetLeft
            curtop = obj.offsetTop
            while (obj = obj.offsetParent) {
                curleft += obj.offsetLeft
                curtop += obj.offsetTop
            }
        }
        return {"x":curleft, "y":curtop};
    },

    findTarget : function (e) {
        if (e.target) targ = e.target;
        else if (e.srcElement) targ = e.srcElement;
        if (targ.nodeType == 3) // defeat Safari bug
        targ = targ.parentNode;
        return targ;
    },

    repositionItem : function (event,ditem) {
        eventx    = event.clientX;
        eventy    = event.clientY;

        newleft   = (ditem.originalLeft + eventx - ZWDrag.mouseXinit)*1;
        newtop    = (ditem.originalTop + eventy - ZWDrag.mouseYinit)*1;

        ditem.style["left"] = newleft+"px";
        ditem.style["top"]  = newtop+"px";
    }

};

//-------------------------------------------------------------------------------------------------
var CommentDialog = {
    Close : function (e){
    	document.getElementById(this.dialog_id).style.display = "none";
    	clearFields();
    },
    Show : function (parent, dlg_id, handle_id, w, h, t, l) {
		
		dlg_id = (dlg_id) ? dlg_id : 'comment-dialog';
		handle_id = (handle_id) ? handle_id : 'dialog-header';
		
		var dlg = document.getElementById(dlg_id);
		var handle = document.getElementById(handle_id);
		
		this.dialog_id = dlg_id;

		document.getElementById('parent_id').value = parent;

        //set defaults
        w = (w) ? w : 463;
        h = (h) ? h : 200;
        if (!t && !l) {
            c = ZWWin.getCenteredTopLeft( {"width":w, "height":h} );
            t = (t) ? t : c.top;
            l = (l) ? l : c.left;
        }
        
        //make draggable with dialog container and handle
        var start = go2center();
        dlg.style.display = 'block';
        dlg.style.left = start.left;
        dlg.style.top = start.top;
//        dlg.setAttribute("style", "width:"+w+"px; top:"+start.top+"px; left:"+start.left+"px;position:absolute;z-index:"+1001);

        ZWDrag.makeDraggable( dlg, handle );
    },
    Comment : function(){
    	var news_id = document.getElementById('news_id').value;
    	var parent_id = document.getElementById('parent_id').value;
    	
    	var posted_by = document.getElementById('cname').value;
    	var body = document.getElementById('cbody').value;
    	
		var proc = function(response){
			var data = eval('(' + response + ')');
			if(data.result == 'success'){
				clearFields();
		    	document.getElementById('parent_id').value = "";
				document.getElementById('news_comments').innerHTML = data.response;
				document.getElementById('comment-dialog').style.display = "none";
			}
			else{
				document.getElementById('comment_error_msg').innerHTML = data.response;
			}
		};
		clearFields();
		MC_processOnConn('/news/action/index.jsp', proc, 'mode=comment&news_id='+news_id+'&parent_id='+parent_id+'&posted_by='+posted_by+'&body='+body);
    },
    Mail : function(){
    	var news_id = document.getElementById('news_id').value;
    	var s_name = document.getElementById('s_name').value;
    	var r_email = document.getElementById('r_email').value;
    	var s_email = document.getElementById('s_email').value;
    	var mail_descr = document.getElementById('mail_descr').value;
    	
		var proc = function(response){
			var data = eval('(' + response + ')');
			if(data.result == 'success'){
				clearFields();
				document.getElementById('mail_success_msg').innerHTML = data.response;
			}
			else{
				var errors = data.response;
				if(document.getElementById('s_name_error') && errors['s_name']){
					document.getElementById('s_name_error').innerHTML = errors['s_name'];
				}				
				if(document.getElementById('r_email_error') && errors['r_email']){
					document.getElementById('r_email_error').innerHTML = errors['r_email'];
				}				
				if(document.getElementById('s_email_error') && errors['s_email']){
					document.getElementById('s_email_error').innerHTML = errors['s_email'];
				}				
			}
		};
		clearFields();
		MC_processOnConn('/news/action/index.jsp', proc, 'mode=mail&news_id='+news_id+'&s_name='+s_name+'&s_email='+s_email+'&r_email='+r_email+'&mail_descr='+mail_descr);
    }
};

function clearFields(){
    	document.getElementById('cname').value = "";
    	document.getElementById('cbody').value = "";

    	document.getElementById('s_name').value = "";
    	document.getElementById('r_email').value = "";
    	document.getElementById('s_email').value = "";
    	document.getElementById('mail_descr').value = "";

		if(document.getElementById('comment_error_msg')){
			document.getElementById('comment_error_msg').innerHTML = '';
		}
		if(document.getElementById('s_name_error')){
			document.getElementById('s_name_error').innerHTML = '';
		}				
		if(document.getElementById('r_email_error')){
			document.getElementById('r_email_error').innerHTML = '';
		}				
		if(document.getElementById('s_email_error')){
			document.getElementById('s_email_error').innerHTML = '';
		}				
}
function go2center(){
	var myWidth = 0, myHeight = 0;
	  if( typeof( window.innerWidth ) == 'number' ) {
	    //Non-IE
	    myWidth = window.innerWidth;
	    myHeight = window.innerHeight;
	  } else if( document.documentElement && ( document.documentElement.clientWidth || document.documentElement.clientHeight ) ) {
	    //IE 6+ in 'standards compliant mode'
	    myWidth = document.documentElement.clientWidth;
	    myHeight = document.documentElement.clientHeight;
	  } else if( document.body && ( document.body.clientWidth || document.body.clientHeight ) ) {
	    //IE 4 compatible
	    myWidth = document.body.clientWidth;
	    myHeight = document.body.clientHeight;
	  }			
	var scrOfX = 0, scrOfY = 0;
	if( typeof( window.pageYOffset ) == 'number' ) {
	    //Netscape compliant
	    scrOfY = window.pageYOffset;
	    scrOfX = window.pageXOffset;
	} else if( document.body && ( document.body.scrollLeft || document.body.scrollTop ) ) {
	    //DOM compliant
	    scrOfY = document.body.scrollTop;
	    scrOfX = document.body.scrollLeft;
	} else if( document.documentElement && (document.documentElement.scrollLeft || document.documentElement.scrollTop ) ) {
	    //IE6 standards compliant mode
	    scrOfY = document.documentElement.scrollTop;
	    scrOfX = document.documentElement.scrollLeft;
	}

	var start = {};
	start.left = myWidth/2 - 300;
	start.top = scrOfY + myHeight/2 - 150;
	return start;
}
function select_tab(el, index){
	for(var i = 1;i <= 2; i ++){
		document.getElementById('dialog_tab_cont_'+i).style.display = 'none';
		document.getElementById('dialog_tab_'+i).className = '';
	}
	
	document.getElementById('dialog_tab_cont_'+index).style.display = 'block';
	document.getElementById('dialog_tab_'+index).className = 'selected';
	
	document.getElementById('dialog-title').innerHTML = el.innerHTML
}
function validate_length(target, obj, maxLength){
	document.getElementById(target).innerHTML = (obj.value.length+1)+'/'+maxLength;
	if(obj.value.length > maxLength-2){
		obj.value = obj.value.substr(0,maxLength-2);
	}
}

