// calculator namespace
var calculator = calculator || {};

// main settings
calculator.settings = {
    rootUrl: 'http://www.ic-ins.com',
	// rootUrl: 'http://127.0.0.1:8888',
	// rootUrl: 'http://test.ic-ins.com',
    css:[
       'autoutro.css', 
       'ie.css'
    ],
	jquery:'jquery.js',
    js: [
       'jquery.validate.js', 
       'jquery.form.js',
	   //'jquery.pngFix.js',
	   'http://www.google-analytics.com/ga.js',
	   'http://yandex.st/jquery/cookie/1.0/jquery.cookie.js',
	   'analytics.js',
       'ajax.js',
       'loader.js'
    ],
    partnerId: '14',
	partnerTitle:'auto.utro.ru',
    currentStep: '1',
    debug: true,
    log: 'alert',
    useFrame: false,
    useHtml: true
};

calculator.log = function(text){
    if(calculator.settings.log == 'alert'){
        alert(text);
    }
};

// custom functions
calculator.utils = {
    // create url for calculator steps
    stepUrl: function(partnerId, step){
        return [calculator.settings.rootUrl, 'partners', partnerId, 'steps', step].join('/');  
    },
    cssUrl: function(cssName){
        return [calculator.settings.rootUrl, 'css', cssName].join('/');
    },
    jsUrl: function(jsName){
		if (jsName.indexOf('http') > -1) {
			return jsName;
		}
		else {
			return [calculator.settings.rootUrl, 'js', jsName].join('/');
		}
    },
    getPlaceHolder: function(){
        var placeHolder = document.getElementById('calculator');
        if(!placeHolder){
            calculator.log("The element misses <div id='calculator'></div>");
        }
        return placeHolder;
    },
    getHeadNode: function(){
        return document.getElementsByTagName("head")[0];
    },
    createHeadNode: function(nodeName, nodeInit){
        var head = calculator.utils.getHeadNode();
        var node = document.createElement(nodeName);
        nodeInit(node);
        head.appendChild(node);
    },
    createCss: function(cssName){
        calculator.utils.createHeadNode('link', function(node){
            node.type = 'text/css';
            node.rel = 'stylesheet';
            node.href = calculator.utils.cssUrl(cssName);
        });
    },
    createJs: function(jsName){
        calculator.utils.createHeadNode('script', function(node){
            node.type = 'text/javascript';
            node.src = calculator.utils.jsUrl(jsName);
			node.charset = 'UTF-8';
        });
    },
	createJQuery: function(){
        calculator.utils.createHeadNode('script', function(node){
            node.type = 'text/javascript';
            node.src = calculator.utils.jsUrl(calculator.settings.jquery);

            // it's evaluted when jquery is loaded
			if (window.opera) {
				textNode = document.createTextNode('calculator.utils.loadUserJavascripts()');
				node.appendChild(textNode);
			}else{
				node.text = 'calculator.utils.loadUserJavascripts();$.noConflict();';
			}
        });
	},
	loadUserJavascripts: function(){
        calculator.utils.map(
            calculator.settings.js,
            calculator.utils.createJs
        );
	},
    map: function(items, fn){
	var len = items.length;
        for(var i=0; i<len; i++){
            fn(items[i]);
        }
    }
    
};


calculator.eventNames = {
	firstStepLoaded:  'FirstStepLoadedEvent',
	secondStepLoaded: 'SecondStepLoadedEvent',
	thirdStepLoaded:  'ThirdStepLoadedEvent'
};

// set steps
calculator.steps = {
    first:  calculator.utils.stepUrl(calculator.settings.partnerId, '1'),
    second: calculator.utils.stepUrl(calculator.settings.partnerId, '2'),
    third:  calculator.utils.stepUrl(calculator.settings.partnerId, '3')
};

calculator.events = {
    // bind function for events
    bind: function(obj, evType, fn){ 
        if (obj.addEventListener){ 
            obj.addEventListener(evType, fn, false); 
            return true; 
        } else if (obj.attachEvent){ 
            return obj.attachEvent('on'+evType, fn);
        } else { 
            return false;
        }
    },
    // bind function on window loaded event
    load: function(fn){
        calculator.events.bind(window, 'load', fn);
    }
    
};

// inject html code into iframe
calculator.insertFrame = function(){
    var placeHolder = calculator.utils.getPlaceHolder();
    var frame = document.createElement('IFRAME');
    frame.setAttribute('src', calculator.steps.first);
    frame.setAttribute('align', 'left');
    frame.setAttribute('frameborder', 'no');
    frame.style.width = '640px';
    frame.style.height = '480px';
    
    placeHolder.appendChild(calculator);
};


calculator.insert = {
    body: function(){
    },
    css: function(){
        calculator.utils.map(
            calculator.settings.css,
            calculator.utils.createCss
        );
    },
    js: function(){
		calculator.utils.createJQuery();
    }
};

// inject html code into <div id="calculator"></div>
calculator.insertHtml = function(){
    calculator.insert.js();
    calculator.insert.css();
    calculator.insert.body();
};


// choose yours methods
calculator.main = function(){
	
	// execute one time
    if (arguments.callee.done) return;
    arguments.callee.done = true;
	
	
    if(calculator.settings.useFrame){
        calculator.insertFrame();
    }
    if(calculator.settings.useHtml){
        calculator.insertHtml();
    }
};

calculator.checkAboveDivTag = function(){
	if(document.getElementById('calculator')){
		calculator.main();
	}
}

// run
calculator.events.load(function(){
	calculator.main();
});

// if div tag above this script

calculator.checkAboveDivTag();
