// $Id: common.js,v 1.4 2007/02/15 05:54:48 shiozaki Exp $

function mlPx(v) {
    return Math.round(v)+"px";
}

function mlGetEl(id) {
    return document.getElementById(id);
}

function mlStopEvent(e) {
    if(window.event){
        e = window.event;
        e.cancelBubble=true;
        e.returnValue=false;
    } else if(e){
        e.stopPropagation();
        e.preventDefault();
    }
}

function mlGetPageEventCoords(evt) {
    var coords = {left:0, top:0};
    if(evt.pageX) {
        coords.left = evt.pageX;
        coords.top = evt.pageY;
    } else if (evt.clientX) {
        coords.left = evt.clientX + document.body.scrollLeft - document.body.clientLeft;
        coords.top  = evt.clientY + document.body.scrollTop  - document.body.clientTop;
        if (document.body.parentElement && document.body.parentElement.clientLeft) {
            var bodParent = document.body.parentElement;
            coords.left += bodParent.scrollLeft - bodParent.clientLeft;
            coords.top += bodParent.scrollTop - bodParent.clientTop;
        }
    }
    return coords;
}

function tokyo_to_wgs(lng, lat) {
    t_lng = lng - 0.000046038*lat - 0.000083043*lng + 0.010040;
    t_lat = lat - 0.00010695*lat + 0.000017464*lng + 0.0046017;
    return {longitude:t_lng, latitude:t_lat};
}

function wgs_to_tokyo(lng, lat) {
    t_lng = lng + 0.000046047*lat + 0.000083049*lng - 0.010041;
    t_lat = lat + 0.00010696*lat - 0.000017467*lng - 0.0046020;
    return {longitude:t_lng, latitude:t_lat};
}

function getExpDate(days, hours, minutes) {
    var expDate = new Date();
    if(typeof days == "number" && 
       typeof hours == "number" && 
       typeof minutes == "number") {
        expDate.setDate(expDate.getDate() + parseInt(days));
        expDate.setHours(expDate.getHours() + parseInt(hours));
        expDate.setMinutes(expDate.getMinutes() + parseInt(minutes));
        return expDate.toGMTString();
    }
}

function getCookieVal(offset) {
    var endstr = document.cookie.indexOf(";", offset);
    if(endstr == -1) {
        endstr = document.cookie.length;
    }
    return unescape(document.cookie.substring(offset, endstr));
}

function getCookie(name) {
    var arg = name + "=";
    var alen = arg.length;
    var clen = document.cookie.length;
    var i= 0;
    while (i < clen) {
        var j = i + alen;
        if(document.cookie.substring(i, j) == arg) {
            return getCookieVal(j);
        }
        i = document.cookie.indexOf(" ", i) + 1;
        if (i == 0) break;
    }
    return "";
}

function setCookie(name, value, expires, path, domain, secure) {
    document.cookie = name + "=" + escape(value) +
        ((expires) ? "; expires=" + expires : "") +
        ((path)    ? "; path="    + path : "") +
        ((domain)  ? "; domain="  + domain : "") +
        ((secure)  ? "; secure"   : "");
}

function deleteCookie(name, path, domain) {
    if (getCookieVal(name)) {
        document.cookie = name + "=" +
        ((path)   ? "; path="   + path : "") +
        ((domain) ? "; domain=" + domain : "") +
        "; expires=Thu, 01-Jan-70 00:00:01 GMT";
    }
}

function mlLoadPngs(){
    var agent = navigator.appVersion.match(/MSIE (\d+\.\d+)/, '');
    if(agent == null || Number(agent[1]) < 5.5){
        return;
    }
    
    for (var i = document.images.length - 1, img = null; (img = document.images[i]); i--) {
        if (img.src.match(/.png$/i) != null && img.id.match(/^mapicon/i) != null) {
            var src = img.src;
            var div = document.createElement("div");
            div.style.filter = "progid:DXImageTransform.Microsoft.AlphaImageLoader(src='" + src + "', sizing='scale')"
            div.style.width = img.width + "px";
            div.style.height = img.height + "px";
            img.replaceNode(div);
        }
    }
}

/**
 * 地図アイコンを表示
 */
function mlShowPoint(pointId){
    for(var i=0; i<mlMaps.length; i++){
        var points = mlPoints[mlMaps[i].id];
        for(var j=0; j<points.length; j++){
            if(points[j].pointId==pointId){
                mlShowMarkerInfo(points[j].marker);
            }
        }
    }
}

//--------------------------------------------------------------------------------
// Comment form
//--------------------------------------------------------------------------------
function rememberCommentForm(f) {
    var expDate = getExpDate(180,0,0);
    if (f.author != undefined)
       setCookie("ml_comment_auth", f.author.value, expDate, '/');
    if (f.email != undefined)
       setCookie("ml_comment_email", f.email.value, expDate, '/');
    if (f.url != undefined)
       setCookie("ml_comment_url", f.url.value, expDate, '/');
}

function forgetCommentForm(f) {
    deleteCookie('ml_comment_auth', '/', '');
    deleteCookie('ml_comment_email', '/', '');
    deleteCookie('ml_comment_url', '/', '');
    f.author.value = '';
    f.email.value = '';
    f.url.value = '';
}

function resumeCommentForm(f){
    var author = getCookie("ml_comment_auth");
    var email  = getCookie("ml_comment_email");
    var url    = getCookie("ml_comment_url");
    
    if(f.author && author){
        f.author.value = author;
    }
    
    if(f.email && email){
        f.email.value = email;
    }
    
    if(f.url && url){
        f.url.value = url;
    }
    
    if(f["savecookie"]) {
        if (author || url) {
            f.savecookie.checked = true;
        } else {
            f.savecookie.checked = false;
        }
    }
}

function trimDegree(value){
    return Math.floor(value * 100000) / 100000;
}

function search(){
    var center = mlGetMapCenter();
    
    var x = trimDegree(center.longitude);
    var y = trimDegree(center.latitude);
    var z = mlGetMapZoom();
    var q = encodeURIComponent(mlGetEl('keyword').value);
    var a = mlGetEl('area0').checked ? 0 : 1;
    var category = ""
    if(mlGetEl('category')){
      category = mlGetEl('category').value;
    }
    var params = "x="+x+"&y="+y+"&z="+z+"&a="+a+"&q="+q+"&c="+category;
    if(a==1){
        var bounds = mlGetBounds();
        var gn = trimDegree(bounds.minLng);
        var gx = trimDegree(bounds.maxLng);
        var tn = trimDegree(bounds.minLat);
        var tx = trimDegree(bounds.maxLat);
        params += '&gn='+gn+'&gx='+gx+'&tn='+tn+'&tx='+tx;
    }
    
    window.location.href = siteUrl + "search.php?" + params;
}

