
function initialize()
{
	iBox.initialize();

	styled_select.init();
	
	teaser_details_switch.init();
	faq.init();
	
	googleMapsLink.init();
	
	login.init();
		
	account.init();
	
}
Element.observe( window, 'load', initialize, false );

function ShowHide(id)
{
    obj = document.getElementsByTagName("div");

    if (obj["storeEvents_" + id].style.display == 'block')
    {
        obj["storeEvents_" + id].style.display = 'none';
    }
    else
    {
        obj["storeEvents_" + id].style.display = 'block';
    }
}

var teaser_details_switch = {
	init: function() {
		var switches = $$('.switch a');
		for( var i=0; i<switches.length; i++ ){
    		var aswitch = switches[i];
    		var parent = Element.extend( aswitch.parentNode.parentNode );
    		var counter = Element.extend( parent.parentNode ).select( '.' + (-1!=parent.className.indexOf('teaser') ? 'details' : 'teaser') );
    		if( 1==counter.length )
    			aswitch.observe('click', teaser_details_switch.__performSwitch.bindAsEventListener( parent ) );
		}
	}
	
	,__performSwitch: function( ev ) {
   		var parent = Element.extend( this );
   		var counter = Element.extend( parent.parentNode ).select( '.' + (-1!=parent.className.indexOf('teaser') ? 'details' : 'teaser') );
		
		if( 1==counter.length ) {
			parent.style.display = 'none';
			counter[0].style.display = 'block';
		}
	}
};

var faq = {
	current_open: null
	
	,init: function() {
		var entries = $$('.faq');
		for( var i=0; i<entries.length; i++ ){
			var entry = entries[i];
			var questions = entry.select('a.question');
			var answers = entry.select('.answer');
			if( 1==questions.length && 0<answers.length )
				questions[0].observe('click', faq.__toggleFaq.bindAsEventListener( entry ) );
		}
	}
	,__toggleFaq: function( ev ) {
		if( null!=faq.current_open ) faq.current_open.className = 'faq';
		if( this!=faq.current_open ) {
			faq.current_open = this;
			faq.current_open.className = 'faq_open';
		}
		else faq.current_open = null;
	}
};

box_layer = {
 __onAjaxSuccess: function( req ) {
	iBox.show( req.responseText );
 }
 ,__onAjaxFailure: function( req ) {
 }
};

var googleMapsLink = {
	showMapLoc: null
	,init: function() {
		googleMapsLink.showMapLoc = $$('a.showMapLocation');

		for( var i=0; i<googleMapsLink.showMapLoc.length; i++ ){
	    	var ashowMapLoc = googleMapsLink.showMapLoc[i];
		 	ashowMapLoc.observe('click', googleMapsLink.__performSelect.bindAsEventListener(ashowMapLoc, i), false );
	 	}
	}
	
	,__performSelect: function( ev, resultIdx) {
		if(!empty(ev)) {
			var blank = 0;
			var markerIdx = resultIdx;
			/*if (googleMapsLink.showMapLoc.length>5) {
				blank = resultIdx - (2*(googleMapsLink.showMapLoc.length-5));
				markerIdx = resultIdx + (blank > 0 ? blank : 0);
				markerIdx = (markerIdx & 1) * 5 + (markerIdx >> 1);
			}*/
			showLocation(markerIdx);
		}
		for( var i=0; i<googleMapsLink.showMapLoc.length; i++ ){
			var ashowMapLoc = googleMapsLink.showMapLoc[i];
			var desc = Element.extend(ashowMapLoc.select('.description'));
			if( 1==desc.length ) {
				if( i==resultIdx )
					desc[0].addClassName('active');
				else
					desc[0].removeClassName('active');
			}
		}
	}
};

var login = {
 activeBox: 'loginBox'

 ,init: function(){
 	var links = { // link_id => box_id that should be displayed
 		recover_password_link: 'recoverBox',
 		no_password_link: 'nopasswordBox',
 		close_recover_box_link: 'loginBox',
 		close_no_password_link: 'loginBox'
 	};
 	var loginSite = false;
 	for( var key in links ) {
 		var link = $(key);
 		var box = $(links[key]);
 		if( null != link && null != box ) {
			loginSite = true;
 			link.observe('click', login.__linkClicked.bindAsEventListener( link, links[key] ), false );
 			if( box.style.display=='inline' ) login.activeBox = links[key];
 		}
 	}
 	if( loginSite ) {
		//check that cookies are enabled
		if( navigator.cookieEnabled==0 || !document.cookie.match(/dw.*/) ) 
			iBox.show( $('cookie_error').innerHTML );
 	}
 	
 	var link = $('register_link');
 	if( null!=link )
 		link.observe('click', login.__registerLinkClicked.bindAsEventListener( link ), false );
 }
 
 ,__linkClicked: function( ev, toBox ){
    var fromBox = login.activeBox;
 	var from_box = $(fromBox);
 	var to_box = $(toBox);
 	if( null!=from_box && null!=to_box ) {
 		from_box.style.display = 'none';
 		to_box.style.display = 'inline';
 		login.activeBox = toBox;
 	}
 }
 
 ,__registerLinkClicked: function( ev ) {
 	var button = $('register_button');
 	if( null!=button )
 		button.click();
 	ev.stop();
 	return false;
 }
};


var account = {
 current_form_id: null

 ,init: function(){
 	var formIds = ['account_base', 'account_billingaddress', 'account_shippingaddress', 'account_shippingmethod', 'account_payment'];
 	for( var i=0; i < formIds.length; i++ )
 		account.__initForm( formIds[i] );
 }
 ,__initForm: function( form_id ) {
	var form = $(form_id + '_form_container');
	if( null==form ) return;
	if( form.style.display!='none' ) {
		account.current_form_id = form_id;
	}

	var edit_button = $('edit_' + form_id );
 	if( null!=edit_button )
 		edit_button.observe('click', account.__setCurrentFormClick.bindAsEventListener( edit_button, form_id ), false );
 	
 	var submit_button = $('submit_' + form_id ); 	
 	if( null!=submit_button )
 		submit_button.observe('click', account.__submitAjaxFormClick.bindAsEventListener( submit_button, form_id ), false );
 	
 }
 
 ,__setCurrentForm: function( form_id ) {
 	var form, view, current_form_id = account.current_form_id;
 	if( form_id == current_form_id ) return;
 	
 	if( null!=current_form_id ) {
 		form = $(current_form_id + '_form_container');
 		view = $(current_form_id + '_view');
 		if( null!=form ) form.style.display = 'none';
 		if( null!=view ) view.style.display = 'block';
 	}

 	account.current_form_id = form_id;
 	if( null!=form_id ) {
 		form = $(form_id + '_form_container');
 		view = $(form_id + '_view');
 		if( null!=form ) form.style.display = 'block';
 		if( null!=view ) view.style.display = 'none';
 	}
 }

 ,__setCurrentFormClick: function( ev, form_id ) {
 	account.__setCurrentForm( form_id );
 }
 
 ,__submitAjaxFormClick: function( ev ) {
    var form_id = account.current_form_id;
    var form = $(form_id + '_form');
    if( null==form ) return;
    form = Element.extend(form);
    
	var ajaxUrl = form.action;
 	if( empty(ajaxUrl) ) return;
	
	//disable the form
	var parameters = Form.serialize( form, true ); //after disable this wont work!
	Form.disable( form );

	parameters['ajaxFormId'] = form_id;
	
	var ajaxData = {
		method: 'post',
		parameters: parameters, 
		onSuccess: account.__onAjaxFormSuccess.bind(this), 
		onFailure: account.__onAjaxFormFailure.bind(this)
	};
	new Ajax.Request( ajaxUrl, ajaxData );
	
	Event.stop (ev);
	return false;
 }
 
 ,__onAjaxFormSuccess: function( req ) {
 	var form_id = account.current_form_id;
    var old_form = $(form_id);
 	if( null!=old_form ) {
		var oldDiv = old_form;
		var newDiv = document.createElement(oldDiv.tagName);
		
		newDiv.id = oldDiv.id;
		newDiv.className = oldDiv.className;
		newDiv.innerHTML = req.responseText;
		
		oldDiv.parentNode.replaceChild(newDiv, oldDiv);
		
		account.__initForm( form_id );
		
		var form = $(form_id + '_form_container');
		if( form.style.display=='none' ) account.__setCurrentForm( null );
 	}
 }
 
 ,__onAjaxFormFailure: function( req ) {
 	//maybe we shold display an error ibox
 	
 	//enable form for another commit trial
 	var form_id = account.current_form_id;
    var form = $(form_id + '_form');
    if( null==form ) return;
    Form.enable( form );
 } 
 
 ,__showPaymentTooltip: function(){
	var pos_y = Element.positionedOffset( $('payment_tooltip_link') ).top - Element.getHeight( $('payment_tooltip') ) - 5;
 	var pos_x = Element.positionedOffset( $('payment_tooltip_link') ).left - 100;
 	
 	$('payment_tooltip').style.left = pos_x + "px";
	$('payment_tooltip').style.top = pos_y + "px";
	$('payment_tooltip').style.display = "block";
	$('payment_tooltip').style.visibility = 'visible'; 	
 }
 
 ,__hidePaymentTooltip: function(){
 	$('payment_tooltip').style.visibility = 'hidden';
 }
 
};

function iBoxShowFromUrl(url, width, height) {
	var old = iBox.default_width;
	iBox.default_width=width+1;
	iBox.show('<iframe src="'+ url + '" width="' + width + '" height="' + height + '" name="nlIframe" frameborder="no" scrolling="no"></iframe>');
	iBox.default_width = old;
}


