/**
 *  Author: Robin Pan (htmlor [at] gmail.com)
 *
 *
 *  三色鱼系统通用方法
 *
/*----------------------------------------------------------------*/


/* ===== common ===== */


// 计算照片所在的服务器
var MAX_PIDS = [1, 30000000];

function getServerId(iPhotoId){
    var i, n;
    for(i=MAX_PIDS.length-1; i>=0; i--){
        if(iPhotoId >= MAX_PIDS[i]){
            n = i + 1;
            return n;
        }
        else{
            continue;
        }
    }
    return null;
}

// 打开弹出窗口
function openPopupWindow(sUrl, iWidth, iHeight, iX, iY){
    if(iX == null){
        iX = Math.round((window.screen.width - iWidth) / 2);
    }
    if(iY == null){
        iY = Math.round((window.screen.height - iHeight) / 2);
    }
    window.open(sUrl, "", "width=" + iWidth + ",height=" + iHeight + ",left=" + iX + ",top=" + iY + ",scrollbars=yes,resizable=yes");
}

// 设置离开页面前的通知
function setWindowInformer(sMessage){
    if(sMessage == null){
        window.onbeforeunload = null;
        return;
    }

    window.onbeforeunload = function(){
        return sMessage;
    };
}

// 根据参数得到页面地址
function getAlbumsPageUrl(sUserId){
    var url = PRIMARY_SERVER_DOMAIN + "/" + sUserId + "/";
    return url;
}
function getAlbumPageUrl(sUserId, iAlbumId){
    var url = PRIMARY_SERVER_DOMAIN + "/" + sUserId + "/" + iAlbumId + "/";
    return url;
}
function getPhotoPageUrl(sUserId, iAlbumId, iPhotoId){
    var url = PRIMARY_SERVER_DOMAIN + "/" + sUserId + "/" + iAlbumId + "/" + iPhotoId + "/";
    return url;
}

// 由缩略图地址得到照片数据
function getPhotoInfo(sPhotoUrl){
    var matches = sPhotoUrl.match(/\/(\w+)\/(\d+)\/(__scale__\d_)?(\d+)\.(jpg|gif)$/i);
    if(!matches){
        return null;
    }

    var info = {
        userid: matches[1],
        albumid: parseInt(matches[2]),
        photoid: parseInt(matches[4])
    };

    return info;
}
function getPhotoThumbUrl(sUserId, iAlbumId, iPhotoId, iType){
    if(iPhotoId == 0){
        return EMPTY_ALBUM_COVER_URL;
    }
    var url = getPhotoUrl(sUserId, iAlbumId, iPhotoId, iType, 1);
    return url;
}
function getPhotoMediumUrl(sUserId, iAlbumId, iPhotoId, iType){
    var url = getPhotoUrl(sUserId, iAlbumId, iPhotoId, iType, 2);
    return url;
}
function getPhotoTmpUrl(sUserId, iAlbumId, iPhotoId, iType){
    var url = getPhotoUrl(sUserId, iAlbumId, iPhotoId, iType, 3);
    return url;
}
function getPhotoOriginalUrl(sUserId, iAlbumId, iPhotoId, iType){
    var url = getPhotoUrl(sUserId, iAlbumId, iPhotoId, iType);
    return url;
}
function getPhotoUrl(sUserId, iAlbumId, iPhotoId, iType, iLevel){
    if(iLevel == null){
        iLevel = 0;
    }
    var prefix = PHOTO_SCALE_PREFIXES[iLevel];
    switch(iType)
    {
        case 1  :   var extension = ".gif";break;
        case 2  :   var extension = ".jpg";break;
        default :   var extension = ".jpg";break;
    }
    var serverid = getServerId(iPhotoId);
    var domain = PHOTOS_SERVER_DOMAIN.replace("%SID%", serverid);
    var url = domain + "/" + sUserId + "/" + iAlbumId + "/" + prefix + iPhotoId + extension;
    return url;
}
// 得到制作礼品时生成的图片地址
function getGiftPhotoThumbTmpUrl(sFileId){
    var url = GIFT_PHOTO_SERVER_DOMAIN + "/project_tmp_file/" + PHOTO_SCALE_PREFIXES[1] + sFileId + ".jpg";
    return url;
}
// 得到制作礼品时编辑生成的临时图片地址
function getGiftPhotoThumbEditingUrl(sFileId){
    var url = GIFT_PHOTO_SERVER_DOMAIN + "/project_tmp_file/" + PHOTO_SCALE_PREFIXES[1] + "e_" + sFileId + ".jpg";
    return url;
}
function getGiftPhotoThumbUrl(sUserId, iProjectId, sFileId){
    var serverid = 1;
    var domain = PHOTOS_SERVER_DOMAIN.replace("%SID%", serverid);

    var url = domain + "/" + sUserId + "/projects/" + iProjectId + "/" + PHOTO_SCALE_PREFIXES[1] + sFileId + ".jpg";
    return url;
}

// 从pt得到px
function getPxFromPt(iPt){
    var px = iPt / 72 * 96;
    return px;
}
// 分辨率是否足够
function hasEnoughResolution(oPhotoDim, oTrayExportDim){
    var w = oPhotoDim[0], h = oPhotoDim[1];
    if(w >= oTrayExportDim.w && h >= oTrayExportDim.h){
        return true;
    }
    if(h >= oTrayExportDim.w && w >= oTrayExportDim.h){
        return true;
    }
    return false;
}

// 礼品字符变量中是否含有照片
function hasPhotoInVars(sVars){
    var re = /\d+\.\d+#\w{32}/;
    var exists = re.test(sVars);
    return exists;
}
// 礼品字符变量中是否缺少照片（台历和个人画册）
function lackPhotoInVars(sVars){
    var re = /(\d+|fc|bc)\-\d+\-\-/;
    var lack = re.test(sVars);
    return lack;
}
// 贴纸照片是否缺少
function lackStickerPhotoInVars(sVars){
    var re = /\d+\-(,|$)/;
    var lack = re.test(sVars);
    return lack;
}
// 彩报照片是否缺少
function lackPictorialPhotoInVars(sVars){
    var re = /photos:(.*)\|/;
    var matches = sVars.match(re);
    var re2 = /\d+\-(,|\|)/;
    var lack = re2.test(matches[1]);
    return lack;
}
function lackPhotobookPhotoInVars(sVars){
    var re = /\.#/;
    var lack = re.test(sVars);
    return lack;
}
function lackCalendarPhotoInVars(sVars){
    var re = /\.#/;
    var lack = re.test(sVars);
    return lack;
}
function lackPlayingcardsPhotoInVars(sVars){
    var re = /\.#/;
    var lack = re.test(sVars);
    return lack;
}
function lackNotepadPhotoInVars(sVars){
    var re = /(\.#)|(\d+\-(cover|back)\-\-)/;
    var lack = re.test(sVars);
    return lack;
}
function lackFestcardsPhotoInVars(sVars){
    var re = /(\.#)|(\d+\-(cover|back)\-(,|\|\-))/;
    var lack = re.test(sVars);
    return lack;
}
function lackPuzzlePhotoInVars(sVars){
    var re = /\.#/;
    var lack = re.test(sVars);
    return lack;
}
function lackBizcardsPhotoInVars(sVars){
    var re = /\d+\-\w+\-(,|\|)/;
    var lack = re.test(sVars);
    return lack;
}
// 杯子照片是否缺少
function lackCupPhotoInVars(sVars){
    var re = /\.#\-(,|$)/;
    var lack = re.test(sVars);
    return lack;
}
// 得到表单元素的值
function getElementValue(eTarget){
    // 单个元素
    if(eTarget.nodeName){
        var nn = eTarget.nodeName.toLowerCase();
        if(nn == "input" && eTarget.type == "checkbox"){
            return getCheckboxValue(eTarget);
        }
    }
    // 多个元素
    else{
        var n = eTarget[0];
        var nn = n.nodeName.toLowerCase();
        if(nn == "input"){
            switch(n.type){
                case "radio":
                    return getRadioValue(eTarget);
                    break;
                case "checkbox":
                    return getCheckboxValue(eTarget);
                    break;
            }
        }
    }
    return eTarget.value;
}
function getElementTitle(eTarget){
    // 多个元素
    if(!eTarget.nodeName){
        return eTarget[0].title;
    }
    return eTarget.title;
}

function getRadioValue(eCheckers){
    // bt的ie不把单个radio当成数组
    if(eCheckers.nodeName){
        return (eCheckers.checked ? eCheckers.value : null);
    }

    var i, checker;
    for(i=0; checker=eCheckers[i]; i++){
        if(checker.checked){
            return checker.value;
        }
    }
    return null;
}
function getCheckboxValue(eCheckers){
    // bt的ie不把单个checkbox当成数组
    if(eCheckers.nodeName){
        return (eCheckers.checked ? eCheckers.value : null);
    }

    var i, checker;
    var values = [];
    for(i=0; checker=eCheckers[i]; i++){
        if(checker.checked){
            values.push(checker.value);
        }
    }
    return values;
}

// 全选，全不选，反选
function doCheckAll(eChecker){
    var checked = eChecker.checked;
    var f = document.forms[0];
    if(checked){
        checkAll(f);
    }
    else{
        checkAll(f, 2);
    }
}
function checkAll(eForm, bStatus){
    if(!bStatus){
        bStatus = 1;
    }

    var eles = eForm.elements;
    var i, ele;
    for(i=0; ele=eles[i]; i++){
        if(ele.type == "checkbox"){
            switch(bStatus){
                // 全选
                case 1:
                    ele.checked = true;
                    break;
                // 全不选
                case 2:
                    ele.checked = false;
                    break;
                // 反选
                case 3:
                    ele.checked = (!ele.checked);
                    break;
            }
        }
    }
}

function checkRadio(eCheckers, sValue){
    var i, checker;
    if(sValue == ""){
        for(i=0; checker=eCheckers[i]; i++){
            checker.checked = false;
        }
        return;
    }
    for(i=0; checker=eCheckers[i]; i++){
        if(checker.value == sValue){
            checker.checked = true;
            break;
        }
    }
}
function checkCheckbox(eCheckers, sValue){
    var i, checker;
    for(i=0; checker=eCheckers[i]; i++){
        checker.checked = (checker.value == sValue ? true : false);
    }
}
function checkSelector(eSelector, sValue){
    if(sValue == ""){
        eSelector.selectedIndex = 0;
        return;
    }

    var i, opt;
    for(i=0; opt=eSelector.options[i]; i++){
        if(opt.value == sValue){
            eSelector.selectedIndex = i;
            break;
        }
    }
}

// 显示页面操作结果
function showPageResponse(sMessage){
    var infobar = $("#infobar");
    if(!infobar){
        return;
    }

    displayElement(infobar);
    infobar.innerHTML = sMessage;
    //window.alert(sMessage);
}

function goTo(sUrl){
    window.location.assign(sUrl);
}
function goBack(){
    window.history.back();
}

// 页数切换
function pageJump(iPage){
    if(iPage == ""){
        return false;
    }

    var page = parseInt(iPage, 10);
    if(isNaN(page) || page <= 0){
        return false;
    }

    var url = window.location.href;
    var newurl;

    // 是否rewrite过
    var long_url = (url.indexOf(".php") != -1);
    var exists = (url.indexOf("page=") != -1 || url.indexOf("/page") != -1);
    // 一般url
    if(long_url){
        if(exists){
            newurl = url.replace(/page\=\d+/, "page=" + page);
        }
        else{
            newurl = url + (window.location.search == "" ? "?" : "&") + "page=" + page;
        }
    }
    else{
        if(exists){
            newurl = url.replace(/page\d+/, "page" + page);
        }
        else{
            newurl = url + (url.lastIndexOf("/") == (url.length - 1) ? "" : "/") + "page" + page + "/";
        }
    }

    goTo(newurl);

    return false;
}

// 切换相册
function switchAlbum(eTrigger, bForce){
    if(bForce == null){
        bForce = true;
    }

    var albumid = eTrigger.value;
    if(albumid == ""){
        return;
    }

    var newurl;
    if(bForce){
        newurl = getAlbumPageUrl(gUserId, albumid);
    }
    else{
        newurl = window.location.href.replace(/albumid=\d+/, "albumid=" + albumid);
    }
    goTo(newurl);
}


/* ===== albums ===== */

// 获取选定的相册
function findCheckedAlbums(eForm){
    if(!eForm){
        return [];
    }
    var i, ele;
    var albumids = [];
    for(i=0; ele=eForm.elements[i]; i++){
        if(ele.type == "checkbox" && ele.name == "albumid[]" && ele.checked){
            albumids.push(ele.value);
        }
    }
    return albumids;
}
// 获取选定的照片
function findCheckedPhotos(eForm){
    if(!eForm){
        return [];
    }
    var i, ele;
    var photoids = [];
    for(i=0; ele=eForm.elements[i]; i++){
        if(ele.type == "checkbox" && ele.name == "photoid[]" && ele.checked){
            photoids.push(ele.value);
        }
    }
    return photoids;
}

// 上传照片到选定的相册
function doUploadPhotos(eLink){
    var f = document.forms[0];
    var albumids = findCheckedAlbums(f);
    if(albumids.length != 1){
        window.alert("请选择要上传照片的相册。");
        return false;
    }
    goTo(UPLOAD_SERVER_DOMAIN + "/upload.php?albumid=" + albumids[0]);
    return false;
}
// 冲印选定相册的照片
function doOrderAlbumPrints(eLink){
    var f = document.forms[0];
    var albumids = findCheckedAlbums(f);
    if(albumids.length != 1){
        window.alert("请选择要冲印照片的相册。");
        return false;
    }
    goTo(PRIMARY_SERVER_DOMAIN + "/orderprints.php?albumid=" + albumids[0]);
    return false;
}
// 冲印整个相册
function doOrderEntireAlbum(eLink){
    var f = document.forms[0];
    f.action = PRIMARY_SERVER_DOMAIN + "/orderprints.pro.php";
    f.method = "post";
    f.elements['orderall'].value = "yes";
    f.submit();
    return false;
}
// 冲印相册中选定的照片
function doOrderPrints(eLink){
    var f = document.forms[0];
    var photoids = findCheckedPhotos(f);
    if(photoids.length == 0){
        window.alert("请选择要冲印的照片。");
        return false;
    }
    f.action = PRIMARY_SERVER_DOMAIN + "/orderprints.pro.php";
    f.method = "post";
    f.submit();
    return false;
}
// 冲印单张照片
function doOrderPhoto(eLink){
    var f = document.forms[0];
    f.action = PRIMARY_SERVER_DOMAIN + "/orderprints.pro.php";
    f.method = "post";
    f.submit();
    return false;
}
// 编辑相册信息
function doEditAlbum(eLink){
    var f = document.forms[0];
    var albumids = findCheckedAlbums(f);
    if(albumids.length != 1){
        window.alert("请选择要编辑的相册。");
        return false;
    }
    goTo(PRIMARY_SERVER_DOMAIN + "/album.edit.php?albumid=" + albumids[0]);
    return false;
}
// 移动相册中选定的照片
function doMovePhotos(eLink){
    var f = document.forms[0];
    var photoids = findCheckedPhotos(f);
    if(photoids.length == 0){
        window.alert("请选择要移动的照片。");
        return false;
    }
    showMoveBox();
    return false;
}
// 移动单张照片
function doMovePhoto(iPhotoId, eLink){
    showMoveBox();
    return false;
}
// 给选定的相册的照片排序
function doRearrangePhotos(eLink){
    var f = document.forms[0];
    var albumids = findCheckedAlbums(f);
    if(albumids.length != 1){
        window.alert("请选择要排序的相册。");
        return false;
    }
    goTo(PRIMARY_SERVER_DOMAIN + "/rearrange.photos.php?albumid=" + albumids[0]);
    return false;
}
// 设置选定的照片为相册封面
function doSetCover(eLink){
    var f = document.forms[0];
    var photoids = findCheckedPhotos(f);
    if(photoids.length != 1){
        window.alert("请选择要设为封面的照片。");
        return false;
    }
    var albumid = f.elements['albumid'].value;
    goTo(PRIMARY_SERVER_DOMAIN + "/setcover.pro.php?albumid=" + albumid + "&photoid=" + photoids[0]);
    return false;
}
// 对选定的照片做图像编辑
function doEditImage(eLink){
    var f = document.forms[0];
    var photoids = findCheckedPhotos(f);
    if(photoids.length != 1){
        window.alert("请选择要编辑的照片。");
        return false;
    }
    var albumid = f.elements['albumid'].value;
    goTo(PRIMARY_SERVER_DOMAIN + "/imgedit.photo.php?albumid=" + albumid + "&photoid=" + photoids[0]);
    return false;
}
// 删除选定的相册
function doDelAlbums(eLink){
    var f = document.forms[0];
    var albumids = findCheckedAlbums(f);
    if(albumids.length == 0){
        window.alert("请选择要删除的相册。");
        return false;
    }
    var confirmed = window.confirm("确定要删除这些相册吗？");
    if(!confirmed){
        return false;
    }
    f.action = PRIMARY_SERVER_DOMAIN + "/album.del.pro.php";
    f.method = "post";
    f.submit();
    return false;
}
// 删除选定的照片
function doDelPhotos(eLink){
    var f = document.forms[0];
    var photoids = findCheckedPhotos(f);
    if(photoids.length == 0){
        window.alert("请选择要删除的照片。");
        return false;
    }
    var confirmed = window.confirm("确定要删除这些照片吗？");
    if(!confirmed){
        return false;
    }
    f.action = PRIMARY_SERVER_DOMAIN + "/photo.del.pro.php";
    f.method = "post";
    f.submit();
    return false;
}
// 删除单个相册
function doDelAlbum(iAlbumId, eLink){
    var confirmed = window.confirm("确定要删除这个相册吗？");
    if(!confirmed){
        return false;
    }
    goTo(PRIMARY_SERVER_DOMAIN + "/album.del.pro.php?albumid=" + iAlbumId);
    return false;
}
// 删除单张照片
function doDelPhoto(iPhotoId, eLink){
    var confirmed = window.confirm("确定要删除这张照片吗？");
    if(!confirmed){
        return false;
    }
    var f = document.forms[0];
    var albumid = f.elements['albumid'].value;
    var page = f.elements['page'].value;
    goTo(PRIMARY_SERVER_DOMAIN + "/photo.del.pro.php?albumid=" + albumid + "&photoid=" + iPhotoId + "&page=" + page);
    return false;
}


/* ===== actions ===== */

// 生成页面屏障（黑色半透明）
function createPageMask(){
    var div = document.createElement("div");
    div.id = "pagemask";
    div.className = "pagemask";
    // ie中会出现下拉框遮挡不住的情况，需用iframe制服
    var browser = new Browser();
    if(browser.isIE){
        div.innerHTML = '<iframe src="' + PRIMARY_SERVER_DOMAIN +  + '/blank.html" width="100%" height="100%" frameborder="0" scrolling="no"></iframe>';
    }
    document.body.appendChild(div);

    return div;
}
function showPageMask(){
    var page_mask = $("#pagemask");
    if(page_mask == null){
        page_mask = createPageMask();

        var bdim = getBodyDim();
        setDim(page_mask, bdim.w, bdim.h);
    }
    displayElement(page_mask);
    hideSelectOptions("hidden");
}
function hideSelectOptions(eValue){
    if(eValue=="" || eValue==null){
        evalue = "hidden";
    }
    var selectOptions = document.getElementsByTagName("select");
    if(selectOptions){
        for(var i=0; i<selectOptions.length; i++){
            selectOptions[i].style.visibility = eValue;
        }
    }
}
function hidePageMask(){
    var page_mask = $("#pagemask");
    displayElement(page_mask, 0);
    hideSelectOptions("visible");
}

// 生成移动表单
function createMoveBox(){
    var album_selector = $("#album-selector");
    var html = '\
<form>\
<h3 class="title-common">您要将选中照片转移到：</h3>\
<p>\
<select name="albumid" class="album-selector compact-left">\
' + album_selector.innerHTML + '\
</select>\
</p>\
<p class="submit-line">\
<button class="w-small compact-left" type="button" onclick="submitMoveForm(this);">确定</button>\
<a href="javascript:void(0);" onclick="return hideMoveBox();">取消</a>\
</p>\
</form>';

    var div = document.createElement("div");
    div.id = "movebox";
    div.className = "movebox";
    div.innerHTML = html;
    document.body.appendChild(div);

    return div;
}
function showMoveBox(){
    showPageMask();

    var move_box = $("#movebox");
    if(move_box == null){
        move_box = createMoveBox();
    }

    displayElement(move_box);

    var bdim = getBodyDim(),
    bscroll = getBodyScroll();
    var x = Math.floor((bdim.cw - 315) / 2) + bscroll.x,
    y = Math.floor((bdim.ch - 200) / 2) + bscroll.y;
    setCoor(move_box, x, y);
}
function hideMoveBox(){
    var move_box = $("#movebox");
    setCoor(move_box, -1000, -1000);
    displayElement(move_box, 0);

    hidePageMask();
}
// 提交移动表单
function submitMoveForm(eTrigger){
    var albumid = eTrigger.form.elements['albumid'].value;
    if(albumid == ""){
        return;
    }

    var f = document.forms[0];
    f.elements['albumid'].value = albumid;
    f.action = PRIMARY_SERVER_DOMAIN + "/photo.move.pro.php";
    f.method = "post";
    f.submit();
}

// 输出产品名称
function doInputGiftAlias(sText){
    /***
    if( is_share == null ){
        is_share = 1;
    }
    showGiftAliasBox(sText);
    if( is_share == 1 ){
        _gObj("form2").elements["is_share_2"].disabled = true;
        _gObj("form2").elements["is_share_1"].checked = true;
        _gObj("share-keys").style.display="none";
        _gObj("form2").elements["is_share_set"].value="0";
        _gObj("form2").elements["keywords"].value="";
        _gObj("form2").elements["summary"].value="";
    }
    else{
        _gObj("form2").elements["is_share_2"].disabled = false;
    }
    ****/
    showGiftAliasBox(sText);
    var eAlias = _gObj("form2").elements['alias'];
    var eKeywords = _gObj("form2").elements['keywords'];
    var eSummary = _gObj("form2").elements['summary'];
    var msgTip = "请设置印品信息";
    eAlias.value = (eAlias.value=="")? msgTip:eAlias.value;
    eKeywords.value = (eKeywords.value=="")? msgTip:eKeywords.value;
    eSummary.value = (eSummary.value=="")? msgTip:eSummary.value;

    return false;
}
function callbackInputGiftAlias(eForm, _my_userid, _projectid, _typeid){
    // 新创建的产品需要特殊处理
    if( _projectid == 0 ){
        var frmProj = document.forms[0];
        if( frmProj ){
            var _is_share = 0;

            if(eForm.elements['is_share_set'].value == 1
            || frmProj.elements['is_share_set'].value == 1 ){
                _is_share = 1;
            }
            var msgTip = "请设置印品信息";

            var alias = eForm.elements['alias'].value;
            var is_share = eForm.elements['is_share_set'].value;
            var keywords = eForm.elements['keywords'].value;
            var summary = eForm.elements['summary'].value;
            if( alias == null || alias =="" || (is_share==1&&(keywords == null||keywords == ""||keywords == msgTip||summary == null||summary == ""||summary == msgTip)) ){
                _gObj('tips-1').innerHTML = "请输入印品信息　";
                eForm.elements['submitter'].disabled = false;
                eForm.elements['cancel'].disabled = false;
                return false;
            }
            var user_alias="";
            var user_keywords="";
            var user_summary="";
            if( eForm.elements['alias'] && eForm.elements['alias'].value!="" ){
                user_alias = eForm.elements['alias'].value;
            }
            if( eForm.elements['keywords'] && eForm.elements['keywords'].value!="" ){
                user_keywords = eForm.elements['keywords'].value;
            }
            if( eForm.elements['summary'] && eForm.elements['summary'].value!=""){
                user_summary = eForm.elements['summary'].value;
            }
            var params = {
                'is_share' :    _is_share,
                'mode' :        frmProj.elements['mode'].value,
                'itemid' :      frmProj.elements['itemid'].value,
                'projectid' :   frmProj.elements['projectid'].value,
                'typeid' :      _typeid,
                'alias' :       user_alias,
                'pasid' :       frmProj.elements['pasid'] ? frmProj.elements['pasid'].value : "",
                'pkeywords' :   user_keywords,
                'psummary' :    user_summary,
                'productid' :   frmProj.elements['productid'].value,
                'varstr' :      escape(frmProj.elements['varstr'].value),
                'quantity' :    frmProj.elements['quantity'].value,
                'addtocart' :   frmProj.elements['addtocart'].value,
                'style' :       frmProj.elements['style'] ? frmProj.elements['style'].value : "",
                'pages' :       frmProj.elements['pages'] ? frmProj.elements['pages'].value : ""
            };

            var is = new InstSubmit( "/ajax.save.project.php", params );
            is.resComplete = function(oReq){
                if(!oReq.responseText || oReq.responseText == ""){
                    this.onFailure(oReq);
                }
                if(frmProj.elements['addtocart'].value!='yes'){
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/my/projects/");
                }else{
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/cart/");
                }

            };
            is.onLoading = function(oReq){
                onCreatingPreviewGift();
            };
            is.onFailure = function(oReq){
                alert('预览图生成失败！');
                creatingComplete("");
            };
            is.execute();

        }
    }else{
        var alias = eForm.elements['alias'].value;
        var msgTip = "请设置印品信息";
        if( eForm.elements['keywords'].value == msgTip ){
            eForm.elements['keywords'].value = "";
        }
        if( eForm.elements['summary'].value == msgTip ){
            eForm.elements['summary'].value = "";
        }
        var is_share = eForm.elements['is_share_set'].value;
        var keywords = eForm.elements['keywords'].value;
        var summary = eForm.elements['summary'].value;
        if( alias == null || alias =="" || (is_share==1&&(keywords == null||keywords == ""||summary == null || summary == "")) ){
            _gObj('tips-1').innerHTML = "请输入印品信息　";
            eForm.elements['submitter'].disabled = false;
            eForm.elements['cancel'].disabled = false;
            return false;

        }
        if(checkSpecialChar(alias)){

            var f = document.forms[0];
            _gObj('tips-1').innerHTML = "";
            eForm.elements['submitter'].disabled = true;
            eForm.elements['cancel'].disabled = true;
            //val = eForm.elements['alias'].value;
            f.elements['alias'].value = alias;
            f.elements['keywords'].value = keywords;
            f.elements['summary'].value = summary;
            f.elements['is_share_set'].value = is_share;
            //alert(alias);alert(keywords);alert(summary);
            document.forms[0].submit();

        }else{
            _gObj('tips-1').innerHTML = "含非法字符　";
            eForm.elements['alias'].value = "";
            eForm.elements['submitter'].disabled = false;
            eForm.elements['cancel'].disabled = false;
        }
    }
    return false;
}

function exportProjectPreview(_my_userid, _projectid, _typeid, oForm){
    var params = {
        'my_userid': _my_userid,
        'projectid': _projectid,
        'project_type': _typeid,
        'is_share' :    oForm.elements['is_share_set'] ? oForm.elements['is_share_set'].value : 0,
        'mode' :        oForm.elements['mode']? oForm.elements['mode'].value : "",
        'itemid' :      oForm.elements['itemid']? oForm.elements['itemid'].value : "" ,
        'projectid' :   oForm.elements['projectid']? oForm.elements['projectid'].value : "",
        'typeid' :      _typeid,
        'alias' :       oForm.elements['alias']? oForm.elements['alias'].value : "",
        'pasid' :       oForm.elements['pasid'] ? oForm.elements['pasid'].value : "",
        'keywords' :   oForm.elements['keywords']? oForm.elements['keywords'].value : "",
        'summary' :    oForm.elements['summary']? oForm.elements['summary'].value : "",
        'productid' :   oForm.elements['productid']? oForm.elements['productid'].value : "",
        'varstr' :      escape( oForm.elements['varstr']? oForm.elements['varstr'].value : "" ),
        'quantity' :    oForm.elements['quantity']? oForm.elements['quantity'].value : "",
        'addtocart' :   oForm.elements['addtocart']? oForm.elements['addtocart'].value : "",
        'style' :       oForm.elements['style'] ? oForm.elements['style'].value : "",
        'pages' :       oForm.elements['pages'] ? oForm.elements['pages'].value : ""
    };

    var is = new InstSubmit("/ajax.export.preview.php", params);
    is.resComplete = function(oReq){
        if(!oReq.responseText == ""){
            if(oForm.elements['addtocart']){
                if(oForm.elements['addtocart'].value!='yes'){
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/my/projects/");
                }else{
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/cart/");
                }
            }else{
                creatingComplete(PRIMARY_SERVER_DOMAIN + "/my/projects/");
            }
        }else{
            this.onFailure(oReq);
        }
    };
    is.onLoading = function(oReq){
        onCreatingPreviewGift();
    };
    is.onFailure = function(oReq){
        alert("生成预览图失败");
    };
    is.execute();
}

function modifyProjectPreview(eForm, _my_userid, _projectid, _typeid){
    if( eForm ){
        var _is_share = 0;
        if( eForm.elements['is_share_set'].value == 1 ){
            _is_share = 1;
        }
        var params = {
            'is_share' :    _is_share,
            'mode' :        eForm.elements['mode'].value,
            'itemid' :      eForm.elements['itemid'].value,
            'projectid' :   eForm.elements['projectid'].value,
            'typeid' :      _typeid,
            'alias' :       eForm.elements['alias'].value,
            'pasid' :       eForm.elements['pasid'] ? eForm.elements['pasid'].value : "",
            'pkeywords' :   eForm.elements['keywords'].value,
            'psummary' :    eForm.elements['summary'].value,
            'productid' :   eForm.elements['productid'].value,
            'varstr' :      escape(eForm.elements['varstr'].value),
            'quantity' :    eForm.elements['quantity'].value,
            'addtocart' :   eForm.elements['addtocart'].value,
            'style' :       eForm.elements['style'] ? eForm.elements['style'].value : "",
            'pages' :       eForm.elements['pages'] ? eForm.elements['pages'].value : ""
        };

        var is = new InstSubmit( "/ajax.save.project.php", params );
        is.resComplete = function(oReq){
            if(!oReq.responseText == ""){
                if(eForm.elements['addtocart'].value!='yes'){
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/my/projects/");
                }else{
                    creatingComplete(PRIMARY_SERVER_DOMAIN + "/cart/");
                }
            }else{
                this.onFailure(oReq);
            }
        };
        is.onLoading = function(oReq){
            onCreatingPreviewGift();
        };
        is.onFailure = function(oReq){
            if(!oReq.responseText || oReq.responseText == "" ){
                alert('预览图生成失败！');
                creatingComplete("");
            }
        };
        is.execute();

    }

    return false;
}

function checkSpecialChar(valstr){
    var code;
    var spechars = new Array("2,31", "128,19926", "40870,63742", "64046,65280","65375,65800");
//  var excludes = new Array("10", "12");
    if(valstr==null || valstr=="")return false;
    for(var i=0; i<spechars.length; i++ ){
        code = spechars[i].split(/,/);
        for(var j=0; j<valstr.length; j++){
            if(valstr.charCodeAt(j)>=code[0] && valstr.charCodeAt(j)<=code[1]){
                return false;
            }
        }
    }
    return true;
}

function getPopupGift(params){
        var is = new InstSubmit("/ajax.popup.gift.php", params, null);
        is.resComplete = function(oReq){
            if(oReq.responseText == ""){
                this.onFailure(oReq);
            }
            else{
                //window.alert(oReq.responseText);
                doInputGiftAlias(oReq.responseText);
            }
        };
        is.onLoading = function(oReq){
        };
        is.onFailure = function(oReq){
        };
        is.execute();
}

function show_shares(is_share){
    _gObj('tips-1').innerHTML = "";
    if( is_share ){
        if( _gObj("form2").elements["can_share"].value == 0 ){
            window.alert("您还没有选择完照片");
            return false;
        }
        _gObj("share-keys").style.display="block";
        _gObj("form2").elements["is_share_set"].value="1";
    }
    else{
        _gObj("share-keys").style.display="none";
        _gObj("form2").elements["is_share_set"].value="0";
        //_gObj("form2").elements["keywords"].value="";
        //_gObj("form2").elements["summary"].value="";

    }
    return true;
}

// 产品名称表单
function createGiftAliasBox(sText){
    var main_div = document.createElement("div");
    document.body.appendChild(main_div);

    var div = document.createElement("div");
    div.id = "giftalias-form";
    div.className = "giftalias-form" ;
    div.innerHTML = sText;
    main_div.appendChild(div);

    var div_pic = document.createElement("div");
    div_pic.id = "show-loading";
    div_pic.style.cssText = "position: absolute; display: none; z-index: 99; top: 523px; left: 647px;" ;
    div_pic.innerHTML = "<img src=\"http://img1.3seyu.com/images/preview_loading.gif\"/>";
    main_div.appendChild(div_pic);

    /*
    var div = document.createElement("div");
    div.id = "giftalias-form";
    div.className = "giftalias-form" ;
    div.innerHTML = sText;
    document.body.appendChild(div);
    */
    return div;
}
function showGiftAliasBox(sText){
    showPageMask();

    var gab = $("#giftalias-form");
    if(gab == null){
        gab = createGiftAliasBox(sText);
    }
    else{
        gab.innerHTML = sText;
    }
    displayElement(gab);

    var bdim = getBodyDim(),
    bscroll = getBodyScroll();
    var x = Math.floor((bdim.cw - 455) / 2) + bscroll.x,
    y = Math.floor((bdim.ch - 551) / 2) + bscroll.y;
    setCoor(gab, x, y);
    /**
    if(sText != null){
        var gaf = $("form", gab)[0];
        var inputter = gaf.elements['alias'];
        //inputter.value = "";
        inputter.focus();
        inputter.select();
    }
    **/
}
function hideGiftAliasBox(){
    var gab = $("#giftalias-form");
    setCoor(gab, -1000, -1000);
    document.getElementById('tips-1').innerHTML = "";
    displayElement(gab, 0);

    hidePageMask();
    if( document.forms[0].elements['submitter'] ){
        document.forms[0].elements['submitter'].disabled = false;
    }
}

// 产生蒙板，显示Loading动画，后台制作预览图
function onCreatingPreviewGift(){
    var gab = $("#giftalias-form");
    var page_mask = $("#pagemask");
    if(gab){
        setCoor(gab, -1000, -1000);
        document.getElementById('tips-1').innerHTML = "";
        displayElement(gab, 0);
    }

    showPageMask();

    var bdim = getBodyDim();
    var bscroll = getBodyScroll();
    var img_left = Math.floor((bdim.cw - 150) / 2) + bscroll.x;
    var img_top = Math.floor((bdim.ch - 150) / 2) + bscroll.y;

    var eShowLoading = $("#show-loading");
    if(eShowLoading){
        eShowLoading.style.top = img_top + 'px';
        eShowLoading.style.left = img_left + 'px';
    }else{
        var div_pic = document.createElement("div");
        div_pic.id = "show-loading";
        div_pic.style.cssText = "position: absolute; display: none; z-index: 99; top: " + img_top + "px; left: " + img_left + "px;" ;
        div_pic.innerHTML = "<img src=\"http://img1.3seyu.com/images/preview_loading.gif\"/>";
        document.body.appendChild(div_pic);
    }

    if(page_mask){
        eShowLoading.style.display = 'block';
    }
}
function creatingComplete(_url){
    hidePageMask();

    var eShowLoading = $("#show-loading");
    if(eShowLoading){
        eShowLoading.style.display = 'none';
    }
    if(_url != ""){
        goTo(_url);
    }
}
/* ===== projects ===== */

function doEditProject(iType, iProjectId, iStatus){
    var confirmed = true;
    if(iStatus == 1){
        confirmed = window.confirm("这个产品已加入到购物车，如果编辑，购物车中的产品也会变化。\n确定要编辑吗？");
    }
    if(confirmed){
        var url = PRIMARY_SERVER_DOMAIN + "/editproject.php?type=" + iType + "&projectid=" + iProjectId;
        goTo(url);
    }
    return false;
}
function doDelProject(iProjectId, iStatus){
    var msg = (iStatus == 1 ? "这个产品已加入到购物车，如果删除，购物车中的产品也会被删除。\n确定要删除吗？" : "确定要删除这个产品吗？");
    var confirmed = window.confirm(msg);
    if(confirmed){
        var source = (window.location.href.indexOf("home") != -1 ? "home" : "projects");
        var url = PRIMARY_SERVER_DOMAIN + "/delproject.pro.php?projectid=" + iProjectId + "&source=" + source;
        goTo(url);
    }
    return false;
}



/* ===== locations ===== */

// 在目标下拉菜单中显示省份列表
function showProvinces(eTarget, iProvinceId){
    // 清空列表项
    eTarget.options.length = 0;
    // 加一个空项
    var opt = new Option("-", "");
    eTarget.options.add(opt);
    // 循环加入列表项
    for(var provinceid in gProvinces){
        opt = new Option(gProvinces[provinceid], provinceid);
        eTarget.options.add(opt);
    }

    if(iProvinceId){
        applyProvince(iProvinceId, eTarget);
    }
}
function applyProvince(iProvinceId, eTarget){
    var i, opt;
    for(i=0; opt=eTarget.options[i]; i++){
        if(opt.value == iProvinceId){
            opt.selected = true;
            break;
        }
    }
}

// 在目标下拉菜单中显示城市列表
function showCities(iProvinceId, eTarget, iCityId){
    if(iProvinceId == ""){
        return;
    }
    // 清空列表项
    eTarget.options.length = 0;
    // 加一个空项
    var opt = new Option("-", "");
    eTarget.options.add(opt);
    // 循环加入列表项
    for(var cityid in gCities[iProvinceId]){
        opt = new Option(gCities[iProvinceId][cityid], cityid);
        eTarget.options.add(opt);
    }

    if(iCityId){
        applyCity(iCityId, eTarget);
    }
}
function applyCity(iCityId, eTarget){
    var i, opt;
    for(i=0; opt=eTarget.options[i]; i++){
        if(opt.value == iCityId){
            opt.selected = true;
            break;
        }
    }
}

//得到相应ID的obj
function _gObj(id) {
    return document.getElementById(id);
}

function addfavorite()
{
    var url ='http://www.3seyu.com';
    var name ='三色鱼 - 我的个性印品定制平台';
    if (document.all)
    {
        window.external.addFavorite(url,name);
    }
    else if (window.sidebar)
    {
        window.sidebar.addPanel(name, url, "");
    }
    return false;
}


/* ===== 图片自动拖入 ===== */
// 选择自动加载的相册
function getPopupAutoPics(params){
        var is = new InstSubmit("/ajax.popup.autopics.php", params, null);
        is.resComplete = function(oReq){
            if(oReq.responseText == ""){
                this.onFailure(oReq);
            }
            else{
                doInputAutoPics(oReq.responseText);
            }
        };
        is.onLoading = function(oReq){
        };
        is.onFailure = function(oReq){
        };
        is.execute();
}
function doInputAutoPics(sText){
    showAutoPicsBox(sText);
    return false;
}
function createAutoPicsBox(sText){
    var main_div = document.createElement("div");
    document.body.appendChild(main_div);
    var div = document.createElement("div");
    div.id = "autopics-form";
    div.className = "autopics-form";
    div.innerHTML = sText;
    main_div.appendChild(div);

    var div_pic = document.createElement("div");
    div_pic.id = "show-loading";
    div_pic.style.cssText = "position: absolute; display: none; z-index: 99; top: 523px; left: 647px;" ;
    div_pic.innerHTML = "<img src=\"http://img1.3seyu.com/images/preview_loading.gif\"/>";
    main_div.appendChild(div_pic);

    return div;
}
function showAutoPicsBox(sText){
    showPageMask();

    var gab = $("#autopics-form");
    if(gab == null){
        gab = createAutoPicsBox(sText);
    }else{
        gab.innerHTML = sText;
    }
    displayElement(gab);

    var bdim = getBodyDim(),
    bscroll = getBodyScroll();
    var x = Math.floor((bdim.cw - 455) / 2) + bscroll.x,
    y = Math.floor((bdim.ch - 551) / 2) + bscroll.y;
    setCoor(gab, x, y);

    var _oSlted = $("#sltedIdx");
    if(_oSlted){
        initAutoPicsAlbumSwitch(_oSlted.value);
    }
}
function hideAutoPicsBox(){
    var gab = $("#autopics-form");
    setCoor(gab, -1000, -1000);
    displayElement(gab, 0);

    hidePageMask();
    if( document.forms[0].elements['submitter'] ){
        document.forms[0].elements['submitter'].disabled = false;
    }
}
function initAutoPicsAlbumSwitch(_sltedIdx){
    var i, opt;
    opt = new Option("选择其他相册照片", "");
    var apAlbumsSwitch = $("#auto-album-switch");
    apAlbumsSwitch.options.add(opt);
    var numAlbums = (gAlbumIds)?gAlbumIds.length:0;
    for(i=0; i < numAlbums; i++){
        opt = new Option(gAlbumTitles[i], gAlbumIds[i]);
        apAlbumsSwitch.options.add(opt);
    }

    if(_sltedIdx && _sltedIdx!=""){
        apAlbumsSwitch.selectedIndex = _sltedIdx;
    }

    apAlbumsSwitch.onchange = function(){
        if(apAlbumsSwitch.value != ""){
            // 令小窗口中的相册于主页面中的相册保持同步
            document.form3.curAlbumid.value = apAlbumsSwitch.value;
            var mainAlbumSwitch = $("#album-switch");
            mainAlbumSwitch.selectedIndex = document.form3.curAlbumid.selectedIndex;
            mainAlbumSwitch.value = document.form3.curAlbumid.value;
    		if(PhotoChooser.handlers.albumswitch){
    			PhotoChooser.handlers.albumswitch();
    		}
            PhotoChooser.loadPhotos(apAlbumsSwitch.value);
        }
    };
}

function syncNumberPhotos(){
    var oNumPics = $("#numPics");
    if(oNumPics){
        oNumPics.value = (gPhotoIds)?gPhotoIds.length:0;
    }
    msgTipAutoPics();
}

function msgTipAutoPics(){
    var oNumPics = $("#numPics");
    var oNumTrays = $("#numTrays");
    var oTipsAutoPics = $("#tips-autopics");
    
    var _numPics = oNumPics ? oNumPics.value : '0';
    var _numTrays = oNumTrays ? oNumTrays.value : '0';
    var _msg = "（当前相册里有<a style='color:red;'>" + _numPics + "</a>张照片";
    if( 1*_numTrays > 1*_numPics ){
        _msg += "，制作本产品还需<a style='color:red;'>" + ( 1*_numTrays - 1 * _numPics ) + "</a>张照片）";
    }else{
        _msg += "，制作本产品只需<a style='color:red;'>" + ( 1*_numTrays ) + "</a>张照片）";
    }
    
    if(oTipsAutoPics){
        oTipsAutoPics.innerHTML = _msg;
    }
}

// 产生蒙板，显示Loading动画，后台制作预览图
function onCreatingAutoPics(){
    var gab = $("#autopics-form");
    var page_mask = $("#pagemask");
    if(gab){
        setCoor(gab, -1000, -1000);
        displayElement(gab, 0);
    }

    showPageMask();

    var bdim = getBodyDim();
    var bscroll = getBodyScroll();
    var img_left = Math.floor((bdim.cw - 150) / 2) + bscroll.x;
    var img_top = Math.floor((bdim.ch - 150) / 2) + bscroll.y;

    var eShowLoading = $("#show-loading");
    if(eShowLoading){
        eShowLoading.style.top = img_top + 'px';
        eShowLoading.style.left = img_left + 'px';
    }else{
        var div_pic = document.createElement("div");
        div_pic.id = "show-loading";
        div_pic.style.cssText = "position: absolute; display: none; z-index: 99; top: " + img_top + "px; left: " + img_left + "px;" ;
        div_pic.innerHTML = "<img src=\"http://img1.3seyu.com/images/preview_loading.gif\"/>";
        document.body.appendChild(div_pic);
    }

    if(page_mask){
        eShowLoading.style.display = 'block';
    }
}
function autoPicsComplete(){
    hidePageMask();

    var eShowLoading = $("#show-loading");
    if(eShowLoading){
        eShowLoading.style.display = 'none';
    }
}

function getNumberPics(){
    return (gPhotoIds)?gPhotoIds.length:0;
}

// caculate dims with angle
function calcDimsWithAngle( oDim, oCoor, deg ){
    rad = Math.abs(deg * RADIAN_PER_DEGREE);
    nW = Math.round( oDim.w * Math.cos(rad) + oDim.h * Math.sin(rad) );
    nH = Math.round( oDim.w * Math.sin(rad) + oDim.h * Math.cos(rad) );
    nX = Math.round( deg > 0 ? oCoor.x - oDim.h * Math.sin(rad) : oCoor.x );
    nY = Math.round( deg < 0 ? oCoor.y - oDim.w * Math.sin(rad) : oCoor.y );
    return {w: nW, h: nH, x: nX, y: nY, r: rad};
}

function searchInArray(str,ary){
    if(str==null || ary==null) return false;
    for(var i=0; i<ary.length; i++ ){
        if(str == ary[i]){
            return true;
        }
    }
    return false;
}


