# -*- coding: iso-8859-1 -*-
"""
    MoinMoin - StreetView Macro
"""
from MoinMoin import wikiutil
import re, time
_arg_lat = r'(,\s*lat=(?P<lat>\d+))?'
_arg_lng = r'(,\s*lng=(?P<lng>\d+))?'
_arg_yaw = r'(,\s*yaw=(?P<yaw>\d+))?'
_arg_pitch = r'(,\s*pitch=(?P<pitch>\d+))?'
_arg_zoom = r'(,\s*zoom=(?P<zoom>\d+))?' 
_args_re_pattern = r'^(%s)?(%s)?(%s)?(%s)?(%s)?$' % (_arg_lat, _arg_lng, _arg_yaw, _arg_pitch, _arg_zoom)

def execute(macro, text):
    request = macro.request
    formatter = macro.formatter
    _ = request.getText
    args_re = re.compile(_args_re_pattern)
    gkey = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQUexDMtc4eREioiWSpX_Y7fpoKghQhUCefr4eJwudYofs3YH9eyyZ3_g'
    gkey2 = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RRyEbBFkcIcf1l0xXknIhElMWaAuBQ_2YFGNyOJB1ziI9lSzlpCIilgNw'
    #gkey = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQb5vo-4Bph0C_4e_e9IEgkaF03hxSX2F6kxStG0StGHPlKCc7vTMZJQQ'
    #gkey2 = 'ABQIAAAA7rwZfsyEYZknlS0QWmZI4RQb5vo-4Bph0C_4e_e9IEgkaF03hxSX2F6kxStG0StGHPlKCc7vTMZJQQ'
    
    if text is None:
        lat, lng, yaw, pitch, zoom =\
            45.5495012187901, -122.675131559372, 270, -10, 1
    else:
        #args = args_re.match(text)
        if not text:
             return ('<p><strong class="error">%s</strong></p>' % _('Invalid StreetView arguments "%s"!')) % (text,)
        else:
            macro_args = text.split(",") 
	    try:
	    	if macro_args[0].strip() != "":
	   		lat = macro_args[0]
	    	else:
	    		lat = '45.5495012187901'
	    except:
	    	lat = '45.5495012187901' 
	    try:
	    	if macro_args[1].strip() != "":
	        	lng = macro_args[1]
	    	else:
	    		lng = '-122.675131559372'
	    except:
	    	lng = '-122.675131559372'
	    try:
	    	if macro_args[2].strip() != "":
	        	yaw = macro_args[2]
	    	else:
	    		yaw = '0'
	    except:
	    	yaw = '0'
	    try:
	    	if macro_args[3]:
	        	pitch = macro_args[3]
	    	else:
	    		pitch = '0'
     	    except:
	        pitch = '0'
	    try:
	    	if macro_args[4].strip() != "":
	        	zoom = macro_args[4]
            	else:
	    		zoom = '0'
	    except:
	    	zoom = '0'
	    html = '''
<script type="text/javascript">                                                                                                
    if( (window.location.href).indexOf("www.") == -1 ) {                                                                           
        writeScript("%s");                         
    } else {                                                                                                                       
        writeScript("%s");}                        
function writeScript(key) {var ret='<'+'script src="http://maps.google.com/maps?file=api&v=2&key='+key+'"'+'type="text/javascript"><'+'/script>';document.write(ret);}
</script>
    
<script type="text/javascript">
function addLoadEvent(func) {
      var oldonload = window.onload;
      if (typeof window.onload != 'function') {
        window.onload = func;
      }
      else {                     
        window.onload = function() {
            if (oldonload) {
                oldonload();
                }
            func();
            }
        }
      }
addLoadEvent(function() {    
    var rand = Math.floor(Math.random()*101)
    document.getElementById("pano").id="pano" + rand;
    var myPano = new GStreetviewPanorama(document.getElementById("pano" + rand));
    coords = new GLatLng(%s,%s);
    myPOV = {yaw:%s,pitch:%s,zoom:%s};
    myPano.setLocationAndPOV(coords, myPOV);
})    
</script>
    <div name="pano" id="pano" style="width: 500px; height: 400px;">
    </div>
    ''' % (gkey, gkey2, lat, lng, yaw, pitch, zoom)
    return html
