/******************************************************************************
  Crossday Discuz! Board - Common Modules for Discuz!
  Copyright 2001-2006 Comsenz Inc. (http://www.comsenz.com)
*******************************************************************************/

var sPop = null;
var postSubmited = false;

document.write("<style type='text/css'id='defaultPopStyle'>");
document.write(".cPopText { font-family: Tahoma, Verdana; background-color: #FFFFCC; border: 1px #000000 solid; font-size: 12px; padding-right: 4px; padding-left: 4px; line-height: 18px; padding-top: 2px; padding-bottom: 2px; visibility: hidden; filter: Alpha(Opacity=80)}");

document.write("</style>");
document.write("<div id='popLayer' style='position:absolute;z-index:1000' class='cPopText'></div>");

function showPopupText(event) {
	if(event.srcElement) o = event.srcElement; else o = event.target;
	MouseX=event.clientX;
	MouseY=event.clientY;
	if(o.alt!=null && o.alt!="") { o.pop=o.alt;o.alt="" }
	if(o.title!=null && o.title!=""){ o.pop=o.title;o.title="" }
	if(o.pop!=sPop) {
		sPop=o.pop;
		if(sPop==null || sPop=="") {
			document.getElementById("popLayer").style.visibility="hidden";        
		} else {
			if(o.dyclass!=null) popStyle=o.dyclass; else popStyle="cPopText";
			document.getElementById("popLayer").style.visibility="visible";
			showIt();
		}
	}
}

function showIt() {
	document.getElementById("popLayer").className=popStyle;
	document.getElementById("popLayer").innerHTML=sPop.replace(/<(.*)>/g,"&lt;$1&gt;").replace(/\n/g,"<br>");;
	popWidth=document.getElementById("popLayer").clientWidth;
	popHeight=document.getElementById("popLayer").clientHeight;
	if(MouseX+12+popWidth>document.body.clientWidth) popLeftAdjust=-popWidth-24; else popLeftAdjust=0;
	if(MouseY+12+popHeight>document.body.clientHeight) popTopAdjust=-popHeight-24; else popTopAdjust=0;
	document.getElementById("popLayer").style.left=MouseX+12+document.body.scrollLeft+popLeftAdjust;
	document.getElementById("popLayer").style.top=MouseY+12+document.body.scrollTop+popTopAdjust;
}

function ctlent(event) {
	if(postSubmited == false && (event.ctrlKey && event.keyCode == 13) || (event.altKey && event.keyCode == 83)) {
		if(this.document.input.pmsubmit) {
			postSubmited = true;
			this.document.input.pmsubmit.disabled = true;
			this.document.input.submit();
		} else if(validate(this.document.input)) {
			postSubmited = true;
			if(this.document.input.topicsubmit) this.document.input.topicsubmit.disabled = true;
			if(this.document.input.replysubmit) this.document.input.replysubmit.disabled = true;
			if(this.document.input.editsubmit) this.document.input.editsubmit.disabled = true;
			this.document.input.submit();
		}
	}
}

function checkall(form, prefix, checkall) {
	var checkall = checkall ? checkall : 'chkall';
	for(var i = 0; i < form.elements.length; i++) {
		var e = form.elements[i];
		if(e.name != checkall && (!prefix || (prefix && e.name.match(prefix)))) {
			e.checked = form.elements[checkall].checked;
		}
	}
}

function findobj(n, d) {
	var p, i, x;
	if(!d) d = document;
	if((p = n.indexOf("?"))>0 && parent.frames.length) {
		d = parent.frames[n.substring(p + 1)].document;
		n = n.substring(0, p);
	}
	if(x != d[n] && d.all) x = d.all[n];
	for(i = 0; !x && i < d.forms.length; i++) x = d.forms[i][n];
	for(i = 0; !x && d.layers && i < d.layers.length; i++) x = findobj(n, d.layers[i].document);
	if(!x && document.getElementById) x = document.getElementById(n);
	return x;
}


function copycode(obj) {
	var rng = document.body.createTextRange();
	rng.moveToElementText(obj);
	rng.scrollIntoView();
	rng.select();
	rng.execCommand("Copy");
	rng.collapse(false);
}

function toggle_collapse(objname) {
	obj = findobj(objname);
	img = findobj(objname+"_img");
	collapsed = getcookie("discuz_collapse");
	cookie_start = collapsed ? collapsed.indexOf(objname) : -1;
	cookie_end = cookie_start + objname.length + 1;

	if(obj.style.display == "none") {
		obj.style.display = "";
		img_re = new RegExp("_yes\\.gif$");
		img.src = img.src.replace(img_re, '_no.gif');
		if(cookie_start != -1) collapsed = collapsed.substring(0, cookie_start) + collapsed.substring(cookie_end, collapsed.length);
	} else {
		obj.style.display = "none";
		img_re = new RegExp("_no\\.gif$");
		img.src = img.src.replace(img_re, '_yes.gif');
		if(cookie_start == -1) collapsed = collapsed + objname + " ";
	}

	expires = new Date();
	expires.setTime(expires.getTime() + (collapsed ? 86400 * 30 : -(86400 * 30 * 1000)));
	document.cookie = "discuz_collapse=" + escape(collapsed) + "; expires=" + expires.toGMTString() + "; path=/";
}

function imgzoom(o) {
	if(event.ctrlKey) {
		var zoom = parseInt(o.style.zoom, 10) || 100;
		zoom -= event.wheelDelta / 12;
		if(zoom > 0) {
			o.style.zoom = zoom + '%';
		}
		return false;
	} else {
		return true;
	}
}

function getcookie(name) {
	var cookie_start = document.cookie.indexOf(name);
	var cookie_end = document.cookie.indexOf(";", cookie_start);
	return cookie_start == -1 ? '' : unescape(document.cookie.substring(cookie_start + name.length + 1, (cookie_end > cookie_start ? cookie_end : document.cookie.length)));
}

if(!document.onmouseover) {
	document.onmouseover = function(e) {
		if (!e) showPopupText(window.event); else showPopupText(e);
	};
}

/***********
 *add by cc
 *
 ***********/
 function $() {
  var elements = new Array();

  for (var i = 0; i < arguments.length; i++) {
    var element = arguments[i];
    if (typeof element == 'string')
      element = document.getElementById(element);

    if (arguments.length == 1)
      return element;

    elements.push(element);
  }

  return elements;
}

function fixEvent(event)
{
	event = event ? event : window.event;
	event.X = event.clientX;
	event.Y = event.clientY;
	return event;
};

var myClip = {
	"obj" : null,
	"lastX" : null,
	"lastY" : null,

	"registerClip" : function(obj, owner, direct)
	{
		obj.owner 	= owner;
		obj.direct	= direct;
		obj.onmousedown = myClip.start;
	},

	"start" : function()
	{
		myClip.obj = this;
		document.onmousemove = myClip.resize;
		document.onmouseup = myClip.end;
		return false;
	},

	"resize" : function(event)
	{
		event = fixEvent(event);
		if (!myClip.lastX || myClip.lastX=="undefined")
		{
			myClip.lastX = event.X;
			myClip.lastY = event.Y;
			return false;
		}

		offsetX = event.X - myClip.lastX;
		offsetY = event.Y - myClip.lastY;

		myClip.lastX = event.X;
		myClip.lastY = event.Y;

		var strDirect = myClip.obj.direct;
		var pobj = myClip.obj.owner;
		var MIN_SIZE = 20;

		oL = oT = oR = oB = 0;
		if (strDirect.indexOf('L') != -1)
		{
			if (pobj.myLeft+offsetX < pobj.myMinLeft) oL = pobj.myMinLeft - pobj.myLeft;
			else if ( pobj.myLeft+offsetX > pobj.myRight-MIN_SIZE) oL = pobj.myRight - MIN_SIZE - pobj.myLeft;
			else oL = offsetX;
		}
		if (strDirect.indexOf('R') != -1)
		{
			if (pobj.myRight+offsetX > pobj.myMaxRight) oR = pobj.myMaxRight - pobj.myRight;
			else if (pobj.myRight+offsetX < pobj.myLeft + MIN_SIZE) oR = pobj.myLeft + MIN_SIZE - pobj.myRight;
			else oR = offsetX;
		}
		if (strDirect.indexOf('T') != -1)
		{
			if (pobj.myTop+offsetY < pobj.myMinTop) oT = pobj.myMinTop - pobj.myTop;
			else if (pobj.myTop+offsetY > pobj.myBottom-MIN_SIZE) oT = pobj.myBottom - MIN_SIZE - pobj.myTop;
			else oT = offsetY;
		}
		if (strDirect.indexOf('B') != -1)
		{
			if (pobj.myBottom+offsetY > pobj.myMaxBottom) oB = pobj.myMaxBottom - pobj.myBottom;
			else if (pobj.myBottom+offsetY < pobj.myTop + MIN_SIZE) oB = pobj.myTop + MIN_SIZE - pobj.myBottom;
			else oB = offsetY;
		}

		if (isConstrain && strDirect != "MV")
		{
			if (strDirect=="L" || strDirect=="T") strDirect = "TL";
			else if (strDirect=="R" || strDirect=="B") strDirect = "BR";

			if (strDirect == 'TL')
			{
				rate = oT == 0 ? 1000 : oL/oT;
				rate = Math.abs(rate);
				if (rate > THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT) oL = oT * THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT;
				else oT = oL * THUMBNAIL_HEIGHT/THUMBNAIL_WIDTH;
			}
			else if (strDirect == 'TR')
			{
				rate = oT == 0 ? 1000 : oR/oT;
				rate = Math.abs(rate);
				if (rate > THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT) oR = -oT * THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT;
				else oT = -oR * THUMBNAIL_HEIGHT/THUMBNAIL_WIDTH;
			}
			else if (strDirect == 'BL')
			{
				rate = oB == 0 ? 1000 : oL/oB;
				rate = Math.abs(rate);
				if (rate > THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT) oL = -oB * THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT;
				else oB = -oL * THUMBNAIL_HEIGHT/THUMBNAIL_WIDTH;
			}
			else if (strDirect == 'BR')
			{
				rate = oB == 0 ? 1000 : oR/oB;
				rate = Math.abs(rate);
				if (rate > THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT) oR = oB * THUMBNAIL_WIDTH/THUMBNAIL_HEIGHT;
				else oB = oR * THUMBNAIL_HEIGHT/THUMBNAIL_WIDTH;
			}
		}

		pobj.myLeft += oL;
		pobj.myTop += oT;
		pobj.myRight += oR;
		pobj.myBottom += oB;

		if (strDirect == "MV")
		{
			if (pobj.myLeft+offsetX < pobj.myMinLeft) offsetX = -pobj.myLeft;
			else if (pobj.myRight+offsetX > pobj.myMaxRight) offsetX = pobj.myMaxRight - pobj.myRight;
			if (pobj.myTop+offsetY < pobj.myMinTop) offsetY = -pobj.myTop;
			else if (pobj.myBottom+offsetY > pobj.myMaxBottom) offsetY = pobj.myMaxBottom - pobj.myBottom;
			pobj.myLeft += offsetX;
			pobj.myRight += offsetX;
			pobj.myTop += offsetY;
			pobj.myBottom += offsetY;
		}

		myClip.obj.owner.resize();

		return false;
	},

	"end" : function()
	{
		myClip.obj = null;
		myClip.lastX = null;
		myClip.lastY = null;
		document.onmousemove = null;
		document.onmouseup = null;
		return false;
	}
};

function registerCrop(obj, owner)
{
	obj.owner = owner;
	obj.myLeft = 0;
	obj.myTop = 0;
	obj.myRight = parseInt(obj.style.width);
	obj.myBottom = parseInt(obj.style.height);
	obj.myMinLeft = 0;
	obj.myMinTop = 0;
	obj.myMaxRight = parseInt(owner.style.width);
	obj.myMaxBottom = parseInt(owner.style.height);

	var arrClip = new Array(
		Array("divCropDrag", "MV"),
		Array("divTopLeft", "TL"),
		Array("divTopRight", "TR"),
		Array("divBottomLeft", "BL"),
		Array("divBottomRight", "BR")
	);

	obj.innerHTML = '<table height="100%" width="100%" cellspacing="0" cellpadding="0"><tr><td height="100%" width="100%"><div id="'+ arrClip[0][0] +'"></div></td></tr></table>';
	myClip.registerClip($(arrClip[0][0]), obj, arrClip[0][1]);

	for (i=1; i<arrClip.length; i++)
	{
		tmpDiv = document.createElement('DIV');
		tmpDiv.id = arrClip[i][0];
		tmpDiv.className = "border";
		obj.appendChild(tmpDiv);
		myClip.registerClip(tmpDiv, obj, arrClip[i][1]);
	}

	obj.resize = function()
	{
		this.style.left = this.myLeft + "px";
		this.style.top = this.myTop + "px";
		this.style.width = (this.myRight-this.myLeft) + "px";
		this.style.height = (this.myBottom-this.myTop) + "px";

		setClipPos();
	}
};

function setClipPos()
{
	var t = (divCropOwner.offsetTop);
	var l = (divCropOwner.offsetLeft);
	var top = divCrop.offsetTop-t;
	var right = divCrop.offsetLeft+divCrop.offsetWidth-l;
	var bottom = divCrop.offsetTop+divCrop.offsetHeight-t;
	var left = divCrop.offsetLeft-l;
	var r = {t:top,r:right,b:bottom,l:left};
	var rect = "rect("+r.t+","+r.r+","+r.b+","+r.l+")";
	divCropOwner.style.clip = rect;

	xRate = THUMBNAIL_WIDTH / divCrop.offsetWidth;
	yRate = THUMBNAIL_HEIGHT / divCrop.offsetHeight;
	imgResult.style.height = divCropOwner.offsetHeight * yRate + "px";
	imgResult.style.width = divCropOwner.offsetWidth * xRate + "px";

	divResult.scrollTop = (divCrop.offsetTop-t) * yRate;
	divResult.scrollLeft = (divCrop.offsetLeft-l) * xRate;

	getClipPos();
}

function getClipPos()
{
	var t = (divCropOwner.offsetTop);
	var l = (divCropOwner.offsetLeft);
	var top = divCrop.offsetTop-t;
	var right = divCrop.offsetLeft+divCrop.offsetWidth-l;
	var bottom = divCrop.offsetTop+divCrop.offsetHeight-t;
	var left = divCrop.offsetLeft-l;

	//var info = parseInt(left/imgZoom)+","+parseInt(top/imgZoom)+","+parseInt(right/imgZoom)+","+parseInt(bottom/imgZoom);
	var info = parseInt(top/imgZoom)+","+parseInt(right/imgZoom)+","+parseInt(bottom/imgZoom)+","+parseInt(left/imgZoom);
	//$('info').innerHTML = info;
	$('uploadimgrect').value = info;
}
