/*
Javascript Common Tools Class
Email : Daniel.Chow.Tech@Hotmail.Com
Blog : http://www.cnblogs.com/DanielChow
*/
// 2010-2-20 update
var
Js
=
new
Object;
Js.IsDebug
=
true
;
Js.Domain
=
"
127.0.0.1
"
;
Js.NetUrl
=
"
http://127.0.0.1
"
;
Js.Locale
=
"
/
"
;
Js.CopyRight
=
"
(C) Your.COM
"
;
Js.Event
=
new
Object;
Js.Event.add
=
function
(o, t, f) {
if
(o.addEventListener) {
o.addEventListener(t, f,
false
);
}
else
if
(o.attachEvent) {
o.attachEvent(
"
on
"
+
t, f);
}
else
{
o[
"
on
"
+
t]
=
f;
}
};
Js.Event.remove
=
function
(o, t, f) {
if
(o.removeEventListener) {
o.removeEventListener(t, f,
false
);
}
else
if
(o.detachEvent) {
o.detachEvent(
"
on
"
+
t, f);
}
else
{
o[
"
on
"
+
t]
=
null
;
}
};
/*
compatible in IE6+,ff3.0,chrome,oprea
*/
Js.floatElement
=
function
(Id, Position) {
_bodyfrm
=
(document.compatMode.toLowerCase()
==
"
css1compat
"
)
?
document.documentElement : document.body;
_adst
=
document.getElementById(Id).style;_adst.position
=
"
absolute
"
; _intWidth
=
_adst.width.replace(
"
px
"
,
""
); _intHeight
=
_adst.height.replace(
"
px
"
,
""
);
_move(Position);window.onscroll
=
window.onresize
=
function
() {_move(Position);};
function
_move(Position) {
switch
(Position) {
case
"
rightbottom
"
: _adst.left
=
(_bodyfrm.scrollLeft
+
_bodyfrm.clientWidth
-
_intWidth)
+
"
px
"
;_adst.top
=
(_bodyfrm.clientHeight
+
_bodyfrm.scrollTop
-
_intHeight)
+
"
px
"
;
break
;
case
"
leftbottom
"
: _adst.left
=
"
0px
"
;_adst.top
=
(_bodyfrm.clientHeight
+
_bodyfrm.scrollTop
-
_intHeight)
+
"
px
"
;
break
;
case
"
righttop
"
: _adst.left
=
(_bodyfrm.scrollLeft
+
_bodyfrm.clientWidth
-
_intWidth)
+
"
px
"
;_adst.top
=
_bodyfrm.scrollTop
+
"
px
"
;
break
;
case
"
lefttop
"
: _adst.left
=
"
0px
"
; _adst.top
=
_bodyfrm.scrollTop
+
"
px
"
;
break
;
};
};
};
Js.Guid
=
function
() {
var
guid
=
""
;
for
(
var
i
=
1
; i
<=
32
; i
++
) {
var
n
=
Math.floor(Math.random()
*
16.0
).toString(
16
);
guid
+=
n;
if
((i
==
8
)
||
(i
==
12
)
||
(i
==
16
)
||
(i
==
20
))
guid
+=
"
-
"
;
}
return
guid;
};
Js.SuggestStr
=
function
(len, IsAC) {
//
include additional characters
var
AC
=
'
abcdefhijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWYXZ~!@$^*+-|/
'
;
var
noAC
=
'
abcdefhijklmnopqrstuvwxyz0123456789ABCDEFGHIJKLMNOPQRSTUVWYXZ
'
;
function
returnStr(list, len) {
var
re
=
''
;
for
(i
=
0
; i
<
len; i
++
) {
re
+=
list.charAt(Math.floor(Math.random()
*
list.length))
}
return
re;
}
return
IsAC
?
returnStr(AC, len) : returnStr(noAC, len);
};
Js.Str2XML
=
function
(str) {
if
(window.ActiveXObject) {
xmlDoc
=
new
ActiveXObject(
"
Microsoft.XMLDOM
"
);
xmlDoc.async
=
"
false
"
;
xmlDoc.loadXML(str);
return
xmlDoc;
}
else
{
parser
=
new
DOMParser();
xmlDoc
=
parser.parseFromString(str,
"
text/xml
"
);
return
xmlDoc;
}
};
Js.XML2Str
=
function
(xmlObject) {
if
(window.ActiveXObject) {
return
xmlObject.xml;
}
else
{
return
(
new
XMLSerializer()).serializeToString(xmlObject);
}
};
Js.Str2Json
=
function
(str) {
return
eval(
'
(
'
+
str
+
'
)
'
);
}
Js.ErrorHandler
=
function
(msg, url, l) {
//
if (Js.IsDebug) {
//
// for debug
//
var txt = "";
//
txt = "本页中存在错误。\n\n"
//
txt += "错误:" + msg + "\n"
//
txt += "URL: " + url + "\n"
//
txt += "行:" + l + "\n\n"
//
txt += "点击“确定”继续。\n\n"
//
alert(txt);
//
}
return
false
;
//
false , page response errors directly
//
true , var script above to handle errors
//
or you can save errors to server (to create logs file)
};
Js.Url
=
{
encode:
function
(string) {
return
escape(
this
._utf8_encode(string));
},
decode:
function
(string) {
return
this
._utf8_decode(unescape(string));
},
request:
function
(string)
{
var
url
=
location.href;
var
paraObj
=
{};
var
paraString
=
url.substring(url.indexOf(
"
?
"
)
+
1
, url.length).split(
"
&
"
);
for
(i
=
0
; j
=
paraString[i]; i
++
) { paraObj[j.substring(
0
, j.indexOf(
"
=
"
)).toLowerCase()]
=
j.substring(j.indexOf(
"
=
"
)
+
1
, j.length);}
var
returnValue
=
paraObj[string.toLowerCase()];
if
(
typeof
(returnValue)
==
"
undefined
"
) {
return
""
; }
else
{
return
returnValue; }
},
//
private method
_utf8_encode:
function
(string) {
string
=
string.replace(
/
\r\n
/
g,
"
\n
"
);
var
utftext
=
""
;
for
(
var
n
=
0
; n
<
string.length; n
++
) {
var
c
=
string.charCodeAt(n);
if
(c
<
128
) {
utftext
+=
String.fromCharCode(c);
}
else
if
((c
>
127
)
&&
(c
<
2048
)) {
utftext
+=
String.fromCharCode((c
>>
6
)
|
192
);
utftext
+=
String.fromCharCode((c
&
63
)
|
128
);
}
else
{
utftext
+=
String.fromCharCode((c
>>
12
)
|
224
);
utftext
+=
String.fromCharCode(((c
>>
6
)
&
63
)
|
128
);
utftext
+=
String.fromCharCode((c
&
63
)
|
128
);
}
}
return
utftext;
},
_utf8_decode:
function
(utftext) {
var
string
=
""
;
var
i
=
0
;
var
c
=
c1
=
c2
=
0
;
while
(i
<
utftext.length) {
c
=
utftext.charCodeAt(i);
if
(c
<
128
) {
string
+=
String.fromCharCode(c);
i
++
;
}
else
if
((c
>
191
)
&&
(c
<
224
)) {
c2
=
utftext.charCodeAt(i
+
1
);
string
+=
String.fromCharCode(((c
&
31
)
<<
6
)
|
(c2
&
63
));
i
+=
2
;
}
else
{
c2
=
utftext.charCodeAt(i
+
1
);
c3
=
utftext.charCodeAt(i
+
2
);
string
+=
String.fromCharCode(((c
&
15
)
<<
12
)
|
((c2
&
63
)
<<
6
)
|
(c3
&
63
));
i
+=
3
;
}
}
return
string;
}
}