/*@cc_on _d=document;eval('var document=_d')@*/

var orientation_disp_init = false;

/* direction */
var north = "1";
var northeast = "2";
var east = "3";
var southeast = "4";
var south = "5";
var southwest = "6";
var west = "7";
var northwest = "8";

/* orientation */
var HORIZONTAL = "1";
var MIRROR = "2";
var ROTATE_180 = "3";
var MIRROR_VERTICAL = "4";
var MIRROR_HORIZONTAL_AND_ROTATE_270_CW = "5";
var ROTATE_90_CW = "6";
var MIRROR_HORIZONTAL_AND_ROTATE_90_CW = "7";
var ROTATE_270_CW = "8";

(function($) {
    $.fn.orientationDisp = function(id, orientation) {

        /* browser type */
        var ie = false;
        var firefox = false;

        /* image */
        var width;
        var height;

        function _initialize() {

            orientation_disp_init = true;

            if (document.all) {
                ie = true;
            } else if (document.getElementById) {
                firefox = true;
            }

            // CSSリセット
            if (ie) {
                $(id).css("filter", "");
            } else {
                $(id).css("-moz-transform", "");
                $(id).css("-moz-transform-origin", "");
            }

            width = $(id).width();
            height = $(id).height();

            switch (orientation) {
                case HORIZONTAL:
                    _horizontal();
                    break;
                case MIRROR:
                    _mirror();
                    break;
                case ROTATE_180:
                    _rotate180();
                    break;
                case MIRROR_VERTICAL:
                    _mirrorVertical();
                    break;
                case MIRROR_HORIZONTAL_AND_ROTATE_270_CW:
                    _mirrorHorizontalAndRotate270Cw();
                    break;
                case ROTATE_90_CW:
                    _rotate90Cw(width, height);
                    break;
                case MIRROR_HORIZONTAL_AND_ROTATE_90_CW:
                    _mirrorHorizontalAndRotate90Cw();
                    break;
                case ROTATE_270_CW:
                    _rotate270Cw();
                    break;
                default:
                    break;
            }
        }

        // 変更なし
        function _horizontal() {
        }

        // 左右反転
        function _mirror() {
            if (ie) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            } else if (firefox) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            }
        }

        // 180°回転(CW)
        function _rotate180() {
            if (ie) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            } else if (firefox) {
                if (width == height) {
                    // TODO パノラマ以外の画像
                } else if (width <= height) {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                } else {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                }
            }
        }

        // 上下反転
        function _mirrorVertical() {
            if (ie) {
                $(id).css("filter", "flipv()");
            } else if (firefox) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            }
        }

        // 左右反転 / 270°回転(CW)
        function _mirrorHorizontalAndRotate270Cw() {
            if (ie) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            } else if (firefox) {
                if (width == height) {
                    // TODO パノラマ以外の画像
                } else if (width < height) {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                } else {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                }
            }
        }

        // 90°回転(CW)
        function _rotate90Cw(width, height) {
            if (ie) {
                $(id).css("filter", "progid:DXImageTransform.Microsoft.basicimage(rotation=1)");
            } else if (firefox) {
                if (width == height) {
                    // translateは,回転前のxy座標を指定
                    $(id).css("-moz-transform", "rotate(90deg)");
                    $(id).css("-moz-transform-origin", "center center");
                } else if (width < height) {
                    // 縦長(回転前)→横長(回転後)
                    // translateは,回転前のxy座標を指定
                    if (width < $(window).height()) {
                        $(id).css("-moz-transform", "rotate(90deg) translate(0px, -" + height + "px)");
                        $(id).css("-moz-transform-origin", "left top");
                    } else {
                        $(id).css("-moz-transform", "rotate(90deg) translate(0px, -" + $(window).width() + "px)");
                        $(id).css("-moz-transform-origin", "left top");
                    }
                } else {
                    // 横長(回転前)→縦長(回転後)
                    // translateは,回転前のxy座標を指定
                    if (height < $(window).width()) {
                        $(id).css("-moz-transform", "rotate(90deg) translate(0px, -" + height + "px)");
                        $(id).css("-moz-transform-origin", "left top");
                    } else {
                        $(id).css("-moz-transform", "rotate(90deg) translate(0px, -" + $(window).width() + "px)");
                        $(id).css("-moz-transform-origin", "left top");
                    }
                }
            }
        }

        // 左右反転 / 90°回転(CW)
        function _mirrorHorizontalAndRotate90Cw() {
            if (ie) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            } else if (firefox) {
                if (width == height) {
                } else if (width < height) {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                } else {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                }
            }
        }

        // 270°回転(CW)
        function _rotate270Cw() {
            if (ie) {
                // TODO 2010/3版では,Firefoxの反転表示はサポート外
            } else if (firefox) {
                if (width == height) {
                    // TODO パノラマ以外の画像
                } else if (width < height) {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                } else {
                    // TODO 2010/3版では,Firefoxの反転表示はサポート外
                }
            }
        }

        function _exe(){
            if(orientation_disp_init){
                _initialize();
            } else {
                _initialize();
            }
        }

        _exe();
        return $(window).bind('load',_initialize);
    };
})(jQuery);