/*
 Class Contacts (Singleton)
*/

var oContacts = function()
{

    var openFlags = new Array();
    var storage = new Array();

    var messengers = {

		/* Anton    */
        1: {
            'msn':   'msnim:add?contact=allantodd8@hotmail.com',
            'icq':   'http://www.icq.com/people/about_me.php?uin=613821060',
            'aim':   'aim:goim?screenname=allantodd8',
            'yim':   'ymsgr:sendIM?allantodd_8',
            'skype': 'callto://allantodd8'
        },


        /* Tina Wheeler */
        2: {
            'msn':   'msnim:add?contact=eltimasoftware@hotmail.com',
            'icq':   'http://www.icq.com/people/about_me.php?uin=388729564',
            'aim':   'aim:goim?screenname=eltimasoftware@aol.com',
            'yim':   'ymsgr:sendIM?eltimasoftware@yahoo.com',
            'skype': 'callto://eltima-support'
        },
		
        /* Stas abbath */
        3: {
            'msn':   'msnim:add?contact= bennett.elma@hotmail.com',
            'icq':   'http://www.icq.com/people/about_me.php?uin=635437777',
            'aim':   'aim:goim?screenname=bennstanl@aim.com',
            'yim':   'ymsgr:sendIM?bennett.eltima',
            'skype': 'callto://bennett.elma'
        },

		/*   Marina   */
        4: {
            'msn':   'msnim:add?contact=maryblack_work@hotmail.com',
            'icq':   'http://www.icq.com/people/about_me.php?uin=630574151',
            'aim':   'aim:goim?screenname=maryblack2011',
            'yim':   'ymsgr:sendIM?maryblack_eltima@ymail.com',
            'skype': 'callto://mary_black2011'
        }
    };

    var products2MessengersIndex = {
        /* Anton */
		128: 1,    //Show.kit
		115: 1,    //Elmedia Player for Mac

        /* Tina Wheler */
		69: 2,  //Virtual Serial Port ActiveX Control
		70: 2,    //Virtual Serial Port Drivers Bundle
		71: 2,    //Virtual Serial Port Driver
		72: 2,  //Virtual Serial Port Driver CE
		73: 2,  //Serial Splitter
		76: 2,    //Advanced Keylogger
		85: 2,    //VSPD All-in-one		
		86: 2,    //Network Virtual Serial Port Driver
		88: 2,    //Shared Serial Ports
		89: 2,    //Serial Port ActiveX Control
		90: 2,    //Application as Service
		92: 2,    //Serial Port Sniffer ActiveX Control
		93: 2,    //Powered Keylogger
		94: 2,    //Serial Port Monitor [Professional Edition]
		100: 2,    //Virtual Serial Port Driver Mobile
		103: 2,    //Virtual Serial Port Driver XP Lite
		105: 2,    //Run Service ActiveX
		108: 2,    //Serial Splitter Mobile
		110: 2,    //Advanced Serial Port Terminal
		111: 2,    //Advanced COM Port Redirector
		114: 2,    //Serial to Ethernet Connector	
		116: 2,    //RS232 Data Logger
		117: 2,    //Serial Port Monitor ActiveX
		118: 2,    //Smart Call Manager	
		119: 2,    //Virtual Modem PRO
		120: 2,    //Manage Registry ActiveX Control	
		123: 2,    //USB to Ethernet Connector		
		129: 2,    //Serial Port Monitor [Standard Edition]
		134: 2,    //USB to Ethernet Connector for Linux		
		
        /* Stas Abbath */
        125: 3,  // SyncMate

        /* Marina */
		77: 4,    //Show.kit
		83: 4,    //Flasher Suite
		96: 4,    //Absolute Color Picker ActiveX Control
		97: 4,    //Absolute Color Picker
		98: 4,    //SWF Live Preview
		122: 4,    //SWF to FLA Converter for PC
		74: 4,    //Flash Optimizer
		75: 4,    //Flash Optimizer [Lite Edition]
		79: 4,    //Flash Decompiler Trillix
		87: 4,    //Show.kit 2.11
		91: 4,    //Visual Java/SWING Components Library
		101: 4,    //Flash Optimizer for Mac
		102: 4,    //Flash Optimizer [Lite] for Mac
		104: 4,    //Hide My Folders
		106: 4,    //Hide My Folders ActiveX
		107: 4,    //SWF & FLV Toolbox
		109: 4,    //Java Chart Designer
		112: 4,    //EXE Password Protector
		113: 4,    //Flash Decompiler Trillix for Mac
		121: 4,    //SWF Video Converter
		124: 4,    //Free SWF & FLV Player
		127: 4,    //Flash'In'App
		132: 4,    //Recover PDF Password
		133: 4    //Recover PDF Password for Mac	

    };
 

    var publicObject = {

        expandCollapse: function(elementId, link, storageKey) {
            var elem = $('#' + elementId);
            if(elem.css('display') == 'none') {

                elem.slideDown('fast', function() {
                    publicObject.renderHiders();
                    publicObject.renderFormHiders();
                });

                if(link != undefined) {
                    $(link).attr('class', $(link).attr('class').replace(' close', ''));
                }

                if(storageKey) {
                    if(!storage[storageKey]) {
                        storage[storageKey] = new Array();
                    }
                    storage[storageKey][elementId] = elem;
                    for(var i in storage[storageKey]) {
                        if(storage[storageKey][i].is(':visible') && i != elementId) {
                            storage[storageKey][i].slideUp('fast', function() {
                                publicObject.renderHiders();
                                publicObject.renderFormHiders();
                            });
                        }
                    }
                }
            } else {
                elem.slideUp('fast', function() {
                   // publicObject.renderHiders();
                    //publicObject.renderFormHiders();
                });

                if(link != undefined) {
                    $(link).attr('class', $(link).attr('class') + ' close');
                }
            }
        },

        openCloseTable: function(elementId, dontHideMessengers, productid) {

            var elem = $('#' + elementId);
			if (productid)
				var product = document.getElementById(productid);
			else
				var product = $('#' + elementId+' select[name=product]');
            if(elem.css('display') == 'none') {
//                elem.slideDown('fast', function() {
                elem.show('fast', function() {												
                    if( !openFlags[elementId] && !dontHideMessengers) {
                        publicObject.createHider(elementId);
                    }
                    publicObject.renderHiders();
                    publicObject.renderFormHiders();
                    if (!dontHideMessengers) 
						publicObject.showMessengers(product, elementId);
                });

            } else {
				
                if(openFlags[elementId]) {
                    publicObject.removeHider(elementId);
                }

//                elem.slideUp('fast', function() {
                elem.hide('fast', function() {
				publicObject.renderHiders();
                    publicObject.renderFormHiders();
                });
            }
        },

		openTable: function(elementId, dontHideMessengers) {

            var elem = $('#' + elementId);
                elem.slideDown('fast', function() {

                    if(!openFlags[elementId]['td'] && !dontHideMessengers) {
                        publicObject.createHider(elementId);
                    }
                    publicObject.renderHiders();
                    publicObject.renderFormHiders();

                    if(elementId == 'requst_tech_table') {
                        publicObject.showMessengers(document.getElementById('tech_prod_select'), 'requst_tech_table');
                    }
                });
        },


        createHider: function(elementId, onlymail) {
			return false;
			if (!openFlags[elementId])
			{
            var elem = $('#' + elementId);
            var td = $('#' + elementId + ' td[class="messengers"]');
            var div = $(document.createElement('div'));
            var strong = $(document.createElement('div'));
            var text = $(document.createElement('strong'));

            div.css('position', 'absolute')
               .css('z-index', 1111)
               .css('width', 560)
               .css('height', 39)
               .css('background', 'url(/images/contacts/current.gif)')
               .css('opacity', 0.4)
               .css('border-bottom', '1px solid #555');

            strong.css('position', 'absolute')
                  .css('z-index', 1112)
                  .css('width', 560)
                  .css('height', 40)
                  .css('line-height', '40px')
                  .css('color', '#000')
                  .css('text-align', 'center')
                  .css('font-weight', 'bold');

            text.css('background', '#A7A7A7');

			if(onlymail == true){		
				text.html($('#only_mail').html());
			}else{
				text.html($('#select_your_product').html());
			}	

            strong.append(text);
            elem.append(div);
            elem.append(strong);

            openFlags[elementId] = new Array();
            openFlags[elementId]['td'] = td;
            openFlags[elementId]['div'] = div;
            openFlags[elementId]['strong'] = strong;

			}
        },

        removeHider: function(elementId) {
            if(openFlags[elementId]) {
                openFlags[elementId]['div'].remove();
                openFlags[elementId]['strong'].remove();
                delete(openFlags[elementId]);
            }
        },

        renderHiders: function() {
            for(var i in openFlags) {
                //alert(i);
                //alert($('#' + i).parent().parent().attr('id') + ' ' + $('#' + i).parent().parent().css('display'));

                if($('#' + i).parent().css('display') == 'none' ||
                   $('#' + i).parent().parent().css('display') == 'none' ||
                   $('#' + i).parent().parent().parent().css('display') == 'none') {//alert(1);

                    this.removeHider(i);

                    if($('#' + i).css('display') != 'none')
					{
						//alert(2);
                        $('#' + i).css('display', 'none');
                    }

                } else {

                    var offset = openFlags[i]['td'].offset();
                    //alert(i + '= ' + offset.left + ' ' + offset.top);
                    openFlags[i]['div'].css('left', offset.left);
                    openFlags[i]['div'].css('top', offset.top);
                    openFlags[i]['strong'].css('left', offset.left);
                    openFlags[i]['strong'].css('top', offset.top);
                }
            }

        },


        sendForm: function(formId, theEndText) {

            if(storage[formId]) { return; };

            this.blockForm(formId);

            var form = $('#' + formId);

            form.ajaxSubmit({
                url: '/jcontroller/index.php',
                success: function(response) {

					oContacts.image_reload('.captcha_image');

                    eval('var formFields = ' + response + ';');

                    form.find('table td[class="invalid"]').removeAttr('class');
                    form.find('table td .hint').html('');

                    if(formFields['error'].length == 0) {

                        var cover = storage[formId]['cover'];
                        var loading = storage[formId]['loading'];
                        var anchor = $(document.createElement('a'));
                        var another = $(document.createElement('div'));
                        storage[formId]['another'] = another;

                        anchor.attr('href', 'javascript:void(0);')
                              .css('color', '#fff')
                              .css('text-decoration', 'underline');
                        anchor.html('Send another one');
                        anchor.click(function() {
                            oContacts.unblockForm(formId);
                            form.resetForm();
                            another.remove();
                        });

                        offset = form.offset();
                        loading.hide();

                        another.css('position', 'absolute')
                               .css('z-index', 1115)
                               .css('width', 560)
                               .css('top', offset.top + (form.height() / 2) - 20)
                               .css('left', offset.left)
                               .css('text-align', 'center')
                               .css('font-size', '16px')
                               .css('color', '#fff');
                        
                        if(theEndText) {
                            another.html(theEndText);
                        } else {
                            another.html('Message has been sent!<br/>');
                        }
                        another.append(anchor);
                        another.appendTo(form);

                    } else {
                    	oContacts.unblockForm(formId);

	                    for(var i in formFields['error']) {
                            var td = form.find('input[name="' + i + '"],textarea[name="' + i + '"],select[name="' + i + '"]').parent().parent();
                            td.attr('class', 'invalid');
                            td.find('.hint').html($('#value_is_wrong').html());
                        }
                    }
                }
            });

        },

        blockForm: function(formId) {

            var form = $('#' + formId);
            var offset = form.offset();
            var cover = $(document.createElement('div'));
            var loading = $(document.createElement('img'));

            var submitButton = form.find('.submit');

            submitButton.attr('disabled', 'disabled');

            cover.css('position', 'absolute')
                 .css('z-index', 1114)
                 .css('left', offset.left)
                 .css('top', offset.top)
                 .css('width', 560)
                 .css('height', form.height())
                 .css('background', '#000')
                 .css('opacity', 0.4);


            loading.attr('src', '/images/white-loader.gif')
                   .attr('width', 24)
                   .attr('height', 24)
                   .attr('alt', 'Loading');

            loading.css('position', 'absolute')
                   .css('z-index', 1115)
                   .css('left', offset.left + 268)
                   .css('top', offset.top + (form.height() / 2) - 12);

            $(form).append(cover);
            $(form).append(loading);

            storage[formId] = new Array();
            storage[formId]['cover'] = cover;
            storage[formId]['loading'] = loading;
            storage[formId]['submit'] = submitButton;
        },

        unblockForm: function(formId)
		{
            storage[formId]['cover'].remove();
			storage[formId]['loading'].remove();
            storage[formId]['submit'].removeAttr('disabled');
       	    delete(storage[formId]);
        },

        renderFormHiders: function() {
            for(var i in storage) {
                var form = $('#' + i);
                if(form.parent().is(':visible') && form.parent().parent().is(':visible')) {
                    var offset = form.offset();

                    storage[i]['cover'].css('left', offset.left)
                                       .css('top', offset.top);

                    storage[i]['loading'].css('left', offset.left + 268)
                                         .css('top', offset.top + (form.height() / 2) - 12);

                    if(storage[i]['another']) {
                        storage[i]['another'].css('top', offset.top + (form.height() / 2) - 20)
                                             .css('left', offset.left);
                    }
                } else if(storage[i]) {
                    form.resetForm();
                    storage[i]['cover'].remove();
                    storage[i]['loading'].remove();
                    storage[i]['another'].remove();
                    delete(storage[i]);
                }

            }
        },

        showMessengers: function(select, containerId) {

            var productId = $(select).val();

            if(productId != '' && productId != '87') {
                var td    = $('#' + containerId + ' td[class="messengers"]');
                var msn   = td.find('a[class="im msn"]');
                var icq   = td.find('a[class="im icq"]');
                var aim   = td.find('a[class="im aim"]');
                var yim   = td.find('a[class="im yahoo"]');
                var skype = td.find('a[class="im skype"]');

                msn.attr('href', messengers[products2MessengersIndex[productId]]['msn']);
                icq.attr('href', messengers[products2MessengersIndex[productId]]['icq']);
                aim.attr('href', messengers[products2MessengersIndex[productId]]['aim']);
                yim.attr('href', messengers[products2MessengersIndex[productId]]['yim']);
                skype.attr('href', messengers[products2MessengersIndex[productId]]['skype']);

                this.removeHider(containerId);
            } else {
                this.createHider(containerId , false);
                this.renderHiders();
            }
        },
        showTechnicalSupportContainer: function(select, links) {

            var productId = $(select).val();
            var container = $('#requst_tech');

            if(productId != '') {
                var faqlink = $('#tech_sup_faq_link');
                var productInput = $('#techical_support_form input[name="product"]');

                productInput.val(productId);

                if(links[productId] != '') {
                    faqlink.attr('href', links[productId]);
                } else {
                    faqlink.attr('href', 'http://wiki.eltima.com');
                }

                if(!container.is(':visible')) {
                    container.slideDown('fast', function() {
                        publicObject.renderHiders();
                        publicObject.renderFormHiders();
                    });
                }

            } else {
                container.slideUp('fast', function(){
                    publicObject.renderHiders();
                    publicObject.renderFormHiders();
                });
            }
        },
		image_reload: function(obj) {
			$(obj).attr('src','/captcha.php?rnd='+Math.round(Math.random(0)*1000));
		}
    };

    $(document).ready(function() {
	 $('.messengers').hide();
      $('.captcha_image').bind('click', function(){ publicObject.image_reload('.'+$(this).attr('class'))});
	   if(String(window.location).indexOf('?open=upgrade-questions') != -1)
		{
            publicObject.expandCollapse('fc_2', null);
            publicObject.expandCollapse('upgrade_quest_table', null);
		    if(String(window.location).indexOf('&product=') != -1)
			{	
				$('#upgradeQuestProduct').find('option[value=' + String(window.location).substring(String(window.location).indexOf('&product=') + 9) + ']').attr('selected', 'selected');
			}
	    }
		else if (String(window.location).indexOf('?open=purchase-questions') != -1)
		 {
            publicObject.expandCollapse('fc_1', null);
            publicObject.expandCollapse('purch_quest_table', null);
		
		    if(String(window.location).indexOf('&product=') != -1)
			{	
				$('#purchQuestProduct').find('option[value=' + String(window.location).substring(String(window.location).indexOf('&product=') + 9) + ']').attr('selected', 'selected');
		    }
        } 
		else
		{
            publicObject.expandCollapse('fc_1', null);
        }

        $('input[class="text"]').bind('focus', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.attr('class', 'current');
            }
        });
        $('input[class="text"]').bind('blur', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.removeAttr('class');
            }
        });
        $('textarea[class="textarea"]').bind('focus', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.attr('class', 'current');
            }
        });
        $('textarea[class="textarea"]').bind('blur', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.removeAttr('class');
            }
        });
        $('select[class="select"]').bind('focus', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.attr('class', 'current');
            }
        });
        $('select[class="select"]').bind('blur', function() {
            var parentNode = $(this).parent().parent();
            if(parentNode.attr('class') != 'invalid') {
                parentNode.removeAttr('class');
            }
        });

        $(window).bind('resize', function(){
            publicObject.renderHiders();
            publicObject.renderFormHiders();
        });
		
		$(".er_contact").colorbox({
			iframe:true, 
			innerWidth:'540px', 
			innerHeight:'565px', 
			speed:200,
			opacity:0.8
		});
		$(".contact").colorbox({
			iframe:true, 
			innerWidth:'540px', 
			innerHeight:'565px', 
			speed:200,
			opacity:0.8
		});	
		$("#upgradeNow option:first-child").attr('selected', 'selected');
		$("#upgradeNow").change( function(){
			productVer 	= $(this).attr('rel');
			selectedVal = $(this).val();
			if (parseInt(productVer) == parseInt(selectedVal)){
				$("#upgrade_link").colorbox({
					width:"50%", 
					inline:true, 
					href:"#upgrade_info_container p"
				});
			}else{
				$("#upgrade_link").unbind($.cbox_click).removeData($.colorbox).removeClass("cboxelement");
			}
		});
		var licLinks = $(".license");
		$.each(licLinks, function(){
			this.href = this.href + '?ajax=true';
			$(this).colorbox({
				iframe:true, innerWidth:'80%', innerHeight:'70%', speed:200,opacity:0.8
			});
		});
	});
    return publicObject;

}();
