//解析Hash
function getSendToArr(hash){
if(hash.indexOf('#') == 0)hash = hash.substr(1);
hash = hash.split('&');
var datas = [];
for(k in hash){
var tmp = hash[k].split('=');
datas[tmp[0]] = tmp[1];
};
return datas;
};
//轉成&k=v&k=v字串的值
function getKeyValueStr(hash){
hash = hash.substr(1);
return "&" + hash;
};
//回上頁下頁ajax
function LoadPages($obj){
//判斷避免重覆執行ajax換頁
if(_SYSTEM.IS_AJAXed == true){
_SYSTEM.IS_AJAXed = false;
return;
};
var datas = getSendToArr(window.location.hash);
if(!datas['url'])return false;
var send = getKeyValueStr(window.location.hash);
$("body").delayBox({msg : "讀取中...",
src : "/config/fun/delayBox/load.gif",
display : true,
mask : true
});
ajaxRequest(datas['url'], send, function(html){
$obj.html(html);
$("body").delayBox({display: false});
}, 'html');
//menu
if(window.location.hash){
$("#index_menubox ul li img").each(function(){
$(this).attr('src', $(this).attr('src').replace('o.jpg', '.jpg'));
});
var MD = getSendToArr(window.location.hash);
var $MDimg = $("#index_menubox ul li[menu='" + datas['menu'] + "'] img");
$MDimg.attr('src', $MDimg.attr('src').replace('.jpg', 'o.jpg'));
$("#main_icontitlebox").html($MDimg.parent('li').attr('menustr'));
};
//iconv
if(window.location.hash){
$("#main_iconbox ul li").attr('class', 'main_icon_default');
//自動focus此選項
var tmp = window.location.hash.split('/')[0].substr(1);
$("#main_iconbox").find('a').each(function(){
if($(this).attr('send').split(tmp)[1]){
$(this).parent('li').attr('class', 'main_icon_focus');
};
});
$("#main_iconbox ul").hide();
var $ICDu = $("#main_iconbox ul[menu='" + datas['menu'] + "']");
$ICDu.show();
}
else{
$("#main_iconbox ul:eq(0)").show();
};
};
//非同步AJAX
function ajaxRequest(url, send, callback, dataType){
var loc = window.location.toString();
loc = loc.match(/\?uniqid=\w+/).toString().substr(1);
send += "&" + loc;
$.ajax({
type : "POST",
url : url,
dataType : dataType,
async : true,
data : send,
success : function(html){
if($.isFunction(callback))callback(html);
}
});
};
//背景執行後切換頁面
function backGo(url, send){
if(window.location.hash)send += getKeyValueStr(window.location.hash);
$("body").delayBox({msg : "讀取中...",
src : "/config/fun/delayBox/load.gif",
display : true,
mask : true
});
ajaxRequest(url, send,
function(html){
$('#main_rightbox').html(html);
$('body').delayBox({display: false});
}, 'html');
};
function rawurldecode (str) {
return decodeURIComponent(str);
}
function rawurlencode (str) {
str = (str+'').toString();
return encodeURIComponent(str).replace(/!/g, '%21').replace(/'/g, '%27').replace(/\(/g, '%28').replace(/\)/g, '%29').replace(/\*/g, '%2A');
}
function utf8_decode ( str_data ) {
var tmp_arr = [], i = 0, ac = 0, c1 = 0, c2 = 0, c3 = 0;
str_data += '';
while ( i < str_data.length ) {
c1 = str_data.charCodeAt(i);
if (c1 < 128) {
tmp_arr[ac++] = String.fromCharCode(c1);
i++;
} else if ((c1 > 191) && (c1 < 224)) {
c2 = str_data.charCodeAt(i+1);
tmp_arr[ac++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));
i += 2;
} else {
c2 = str_data.charCodeAt(i+1);
c3 = str_data.charCodeAt(i+2);
tmp_arr[ac++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));
i += 3;
}
}
return tmp_arr.join('');
}
function base64_decode(data) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, dec = "", tmp_arr = [];
if (!data) {
return data;
}
data += '';
do { // unpack four hexets into three octets using index points in b64
h1 = b64.indexOf(data.charAt(i++));
h2 = b64.indexOf(data.charAt(i++));
h3 = b64.indexOf(data.charAt(i++));
h4 = b64.indexOf(data.charAt(i++));
bits = h1<<18 | h2<<12 | h3<<6 | h4;
o1 = bits>>16 & 0xff;
o2 = bits>>8 & 0xff;
o3 = bits & 0xff;
if (h3 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1);
} else if (h4 == 64) {
tmp_arr[ac++] = String.fromCharCode(o1, o2);
} else {
tmp_arr[ac++] = String.fromCharCode(o1, o2, o3);
}
} while (i < data.length);
dec = tmp_arr.join('');
dec = utf8_decode(dec);
return dec;
}
function utf8_encode(argString) {
var string = (argString+'').replace(/\r\n/g, "\n").replace(/\r/g, "\n");
var utftext = "";
var start, end;
var stringl = 0;
start = end = 0;
stringl = string.length;
for (var n = 0; n < stringl; n++) {
var c1 = string.charCodeAt(n);
var enc = null;
if (c1 < 128) {
end++;
} else if((c1 > 127) && (c1 < 2048)) {
enc = String.fromCharCode((c1 >> 6) | 192) + String.fromCharCode((c1 & 63) | 128);
} else {
enc = String.fromCharCode((c1 >> 12) | 224) + String.fromCharCode(((c1 >> 6) & 63) | 128) + String.fromCharCode((c1 & 63) | 128);
}
if (enc !== null) {
if (end > start) {
utftext += string.substring(start, end);
}
utftext += enc;
start = end = n+1;
}
}
if (end > start) {
utftext += string.substring(start, string.length);
}
return utftext;
}
function base64_encode( data ) {
var b64 = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";
var o1, o2, o3, h1, h2, h3, h4, bits, i = 0, ac = 0, enc="", tmp_arr = [];
if (!data) {
return data;
}
data = utf8_encode(data+'');
do { // pack three octets into four hexets
o1 = data.charCodeAt(i++);
o2 = data.charCodeAt(i++);
o3 = data.charCodeAt(i++);
bits = o1<<16 | o2<<8 | o3;
h1 = bits>>18 & 0x3f;
h2 = bits>>12 & 0x3f;
h3 = bits>>6 & 0x3f;
h4 = bits & 0x3f;
// use hexets to index into b64, and append result to encoded string
tmp_arr[ac++] = b64.charAt(h1) + b64.charAt(h2) + b64.charAt(h3) + b64.charAt(h4);
} while (i < data.length);
enc = tmp_arr.join('');
switch( data.length % 3 ){
case 1:
enc = enc.slice(0, -2) + '==';
break;
case 2:
enc = enc.slice(0, -1) + '=';
break;
}
return enc;
}
function stripslashes (str) {
return (str + '').replace(/\\(.?)/g, function (s, n1) {
switch (n1) {
case '\\':
return '\\';
case '0':
return '\u0000';
case '':
return '';
default:
return n1;
};
});
}
function in_array(needle, haystack, argStrict){
var key = '', strict = !! argStrict;
if(strict){
for(key in haystack){
if(haystack[key] === needle){
return true;
};
};
}
else{
for(key in haystack){
if(haystack[key] == needle){
return true;
};
};
};
return false;
}
//單檔上傳
function do_uploadify(ObjID, SaveID, Path, FileType, doFun, viewImgSize){
$(document).ready(function(){
$('#' + ObjID).uploadify({
'uploader' : '/plugin/uploadify/flash/uploadify.swf',
'script' : '/oper/upload-p.php',
'cancelImg' : '/plugin/uploadify/cancel.png',
'folder' : Path,
'auto' : true,
'fileExt' : FileType,
'fileDesc' : FileType,
'sizeLimit' : 2048000000,
'queueID' : ObjID + '_QueQue',
'scriptData' : {'doFun': doFun},
'onInit' : function(){
var val = $("#" + ObjID + "_QueQue").find("#" + SaveID).val();
if(val){
var thePathItem = ExtChk(Path, rawurldecode(val));
$("#" + ObjID + "_QueQue").css({margin: 5}).find('.info').html('' +
'
' +
'' +
thePathItem
);
$("#shui_del_uploadify_" + ObjID).one("click",function(){
$("#" + ObjID + "_QueQue").find('.info').html('');
$("#" + ObjID + "_QueQue").find("#" + SaveID).val('');
});
};
},
'onComplete' : function(event,ID, fileObj, response, data){
response = $.trim(response);
if(response == 'error'){
$('#' + $(event.target).attr('id') + ID).parents('#' + ObjID +'_QueQue').find('.info').text('上傳失敗!');
return false;
};
var thePathItem = ExtChk(Path,stripslashes(rawurldecode(response)));
$('#' + $(event.target).attr('id') + ID).parents('#' + ObjID + '_QueQue').find('.info')
.html('' +
'
' +
'' +
thePathItem
);
$("#shui_del_uploadify_" + ObjID).one("click",function(){
$("#" + ObjID + "_QueQue").find('.info').html('');
$("#" + ObjID + "_QueQue").find("#" + SaveID).val('');
});
$('#' + $(event.target).attr('id') + ID).parents('#' + ObjID + '_QueQue').css({margin: 5}).find('#'+SaveID).val(stripslashes(rawurldecode(response)));
}
});
});
function ExtChk(Path, valPath){
var thePath = valPath;
var thePath = thePath.split(".");
var Ext = thePath[thePath.length - 1];
var thePathItem = "";
//縮小一半
if(viewImgSize){
var pw = 'width="' + parseInt(viewImgSize.width / 2) + '"';
var pa = parseInt(viewImgSize.width / 2) / viewImgSize.width;
var ph = 'height="' + parseInt(pa * viewImgSize.height) + '"';
}
(Ext == 'jpg' || Ext == 'gif' || Ext == 'png' || Ext == 'bmp')?
thePathItem = '' +
'
' +
'':
thePathItem = '' + valPath + '' ;
return thePathItem;
};
};
//批次上傳
function uploadify_multi(Path, Script, FileType, Pic_Size, Over){
$('#Filedata_Multi').uploadify({
'uploader' : '/plugin/uploadify/flash/uploadify.swf',
'script' : Script,
'cancelImg' : '/plugin/uploadify/cancel.png',
'folder' : Path,
'multi' : true,
'auto' : true,
'fileExt' : FileType,
'fileDesc' : FileType,
'queueID' : 'custom-queue',
'queueSizeLimit' : 99,
'simUploadLimit' : 99,
'removeCompleted': false,
'sizeLimit' : 2048000000,
'scriptData' : {'pic_size':Pic_Size, 'Over':Over},
'onOpen' : function (event,ID,fileObj){
$('#' + $(event.target).attr('id') + ID).append('
等待傳輸中');
},
'onProgress' : function(event,ID,fileObj,data) {
var bytes = Math.round(data.bytesLoaded / 1024);
var AllBytes = Math.round(fileObj.size / 1024);
if(data.percentage > 95){
var info = '上傳尚未完成檔案搬移中請稍侯!';
}
else{
var info = '(上傳中) ' + bytes + 'KB / ' + AllBytes;
}
$('#' + $(event.target).attr('id') + ID).find('.info').html(info);
},
'onSelectOnce' : function(event,data) {
$('#status-message').text(data.filesSelected + ' 個檔案放到上傳佇列中.');
},
'onComplete' : function(event,ID,fileObj,response,data){
response = $.trim(response);
if(response == 'error'){
$('#' + $(event.target).attr('id') + ID).find('.info').html('上傳失敗');
return;
}
$('#' + $(event.target).attr('id') + ID).find('.info').html('上傳成功');
$('#' + $(event.target).attr('id') + ID).append('');
},
'onAllComplete' : function(event,data) {
var errStr = '';
if(data.errors > 0){
errStr = ', ' + data.errors + ' 個上傳失敗.';
}
$('#status-message').text(data.filesUploaded + ' 個上傳完成' + errStr);
}
});
};
//網頁編輯器-門面模式。簡化編輯器操作的介面
var FacadeEditor = function(){
//創建
this.create = function(id, option){
var settings = {
resizeType: 1,
items : [
'source', '|', 'undo', 'redo', '|', 'preview', 'cut', 'copy', 'paste',
'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
'superscript', 'clearhtml', 'selectall', '|', 'fullscreen', '/',
'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image',
'insertfile', 'table', 'hr',
'link', 'unlink'
],
themeType: 'simple'
};
$.extend(settings, option);
return KindEditor.create("textarea[id='" + id + "']", settings);
};
//取值
this.getValue = function(editor){
return editor.html();
};
};
//jquery-UI門面模式
var FacadeJquery = function(){
//日期
this.datepicker = function(s, option){
var settings = {
buttonImage: 'images/calendar.gif',
changeMonth:true,
changeYear:true,
dateFormat:"yy-mm-dd",
monthNamesShort:['1','2','3','4','5','6','7','8','9','10','11','12']
};
$.extend(settings, option);
$(s).datepicker(settings);
};
};