//获取位置
pt.getPos = function( obj , isNonStatic ) {
var left = 0 , top = 0;
while ( obj ) {
left += obj.offsetLeft;
top += obj.offsetTop;
obj = obj.offsetParent;
if ( isNonStatic && this.isNonStaticPos( obj ) ) {
break;
}
}
return { left: left , top: top };
}
//鼠标定位
pt.fallowMouse = function( e , obj , dir ) {
e = e || window.event;
if ( !this.isNonStaticPos( obj ) || !e ) {//非静态定位left top定位是无效的,或者不是event对象
return false;
}
dir = dir || { left: false , top: false };
var ex = e.clientX;
var ey = e.clientY;
var bl = document.body.scrollLeft || document.documentElement.scrollLeft;
var bt = document.body.scrollTop || document.documentElement.scrollTop;
var bw = document.body.offsetWidth || document.documentElement.offsetWidth;
//var bh = document.body.offsetHeight || document.documentElement.offsetHeight;
var bh = document.documentElement.clientHeight;
var ow = obj.offsetWidth;
var oh = obj.offsetHeight;
var ol = dir.left ? ( ex - ow < bl ? ex + bl : ex + bl - ow ) : ( ex + ow > bw ? ex + bl - ow : ex + bl );
ol = Math.max( 0 , bl , ol );
var ot = dir.top ? ( ey - oh < bt ? ey + bt : ey + bt - oh ) : ( ey + oh > bh ? ey + bt - oh : ey + bt );
ot = Math.max( 0 , bt , ot );
var pNode = this.nearestNonStaticPosPareNode( obj );
if ( pNode ) {
var pos = this.getPos( pNode );
ol -= pos.left;
ot -= pos.top;
}
obj.style.left = ol + 'px';
obj.style.top = ot + 'px';
}
//屏幕中央定位
pt.setCenter = function ( obj ) {
var ocw = obj.offsetWidth;
var och = obj.offsetHeight;
var bsl = document.body.scrollLeft || document.documentElement.scrollLeft;
var bst = document.body.scrollTop || document.documentElement.scrollTop;
var bcw = document.documentElement.offsetWidth;
var bch = document.documentElement.offsetHeight;
var osl = bsl + Math.floor( ( bcw - ocw ) / 2 );
osl = Math.max( bsl , osl );
var ost = bst + Math.floor( ( bch - och ) / 2 );
ost = Math.max( bst , ost );
obj.style.left = osl + 'px';
obj.style.top = ost + 'px';
}
pt.showAutoAdaptText = function ( node , text , pixelWidth , suffix ) {
if ( node.nodeName ) {
pixelWidth = pixelWidth || 14/95;
var len1 = text.getLen();
if ( typeof text == 'string' ) {
var len2 = Math.floor( node.clientWidth * pixelWidth );
var tstr = '';
suffix = suffix || '...';
var vstr = len1 > len2 ? text.subStringPro( len2 - suffix.length ) : text;
if ( text != vstr ) {
tstr = text;
vstr += suffix;
}
node.title = tstr;
node.value = vstr;
}
}
}
pt.getSubCodes = function( data , _code ) {
if ( data.subCodesCache == undefined ) {
data.subCodesCache = [];
for ( var code in data ) {
if ( /^[d]{2}(([d][1-9])|([1-9][d]))$/.test( code ) ) {
var pareCode = code.substr( 0 , 2 ) + '00';
if ( data.subCodesCache[pareCode] == undefined ) {
data.subCodesCache[pareCode] = [];
}
data.subCodesCache[pareCode].push( code );
}
}
}
return data.subCodesCache[_code] || [];
}