/**
 * @author pp
 */
SH = {
    hideClass: 'hide',
    testimonial: 'testimonial',
    reg: 'reg',
    nav: 'rightCol',
    main: 'mainCol',
	service:'',
	languages:'',
    current: null,

    init: function(){

        var divNav = document.getElementById(SH.nav);
        var divMain = document.getElementById(SH.main);
        if (!divMain || !divNav) {
            return;
        }
        var divSections = divMain.getElementsByTagName('div');
        var divTestimonials = divNav.getElementsByTagName('div');

        var teststr = '';
        for (var i = 0; i < divSections.length; i++) {
            var elm = divSections[i];
            var elmID = elm.getAttribute('id');
			var innerStyle = elm.style.display;
			if (innerStyle == 'none') {
				elm.style.display='';
				//alert(innerStyle);
			}
            if (!elmID) {
                continue;
            }

            var idsub = elmID.substr(0, elmID.length - 1);
            if (idsub != SH.reg) {
                continue;
            }
            var cls = elm.className;
			if(!SH.current&&elmID=='reg1'){
				SH.current = elm;
				SH.current.base = 'reg';
				DOMhelp.cssjs('remove',elm,SH.hideClass);
				SH.addValidation();
			}
            //teststr += SH.current.id+'\n';
        }
        var inputs = SH.current.getElementsByTagName('input');
        var buttons = new Array;
        for (var j = 0; j < inputs.length; j++) {
            var input = inputs[j];
			var innerStyle2 = input.style.display;
			if (innerStyle2 == 'none') {
				input.style.display='';
				//alert(innerStyle);
			}
            var inputType = input.getAttribute('type');
            if (inputType != 'button') {
				var inName = input.getAttribute('name');
				if(inName=='pass2'){
					DOMhelp.addEvent(input,'blur',SH.passCheck,false);
				}
                continue;
            }
            var butID = input.getAttribute('id');
            var idBase = butID.substr(0, butID.length - 1);
            var idNum = butID.substr(butID.length - 1);
            if (idBase == 'next') {
                var next = input;
                next.num = idNum;
                continue;
            }
            else
                if (idBase == 'previous') {
                    var prev = input;
                    prev.num = idNum;
                    continue;
                }
            teststr += idBase + '+' + idNum + '\n';
        }
        if (next) {
            DOMhelp.addEvent(next, 'click', SH.goNext, false);
            if (prev) {
                DOMhelp.addEvent(prev, 'click', SH.goPrev, false);
            }
        }
        else {
            DOMhelp.addEvent(prev, 'click', SH.goPrev, false);
        }
        var p = document.getElementById('service');
		var opts = p.getElementsByTagName('input');
		for (var i = 0; i < opts.length; i++) {
			DOMhelp.addEvent(opts[i],'click',SH.optShow,false);
			if(opts[i].checked){
				var val = opts[i].value;
				var servopts = document.getElementById(val);
				DOMhelp.cssjs('remove',servopts,SH.hideClass);
			}
		}
    },
    goNext: function(e){
        var elm = DOMhelp.getTarget(e);
		//window.alert(elm.num);
        switch (elm.num) {
        	case '1':
        		if(!SH.passCheck()){return;}
        		break;
            case '2':
                SH.getService();
                break;
            case '3':
                SH.getLanguages();
                break;
            default:

                break;
        }
        var num = new Number(elm.num) + 1;
        var newId = SH.current.base + num;
		var newt = SH.testimonial+num;
		var oldt = SH.testimonial+elm.num;
		var testim = document.getElementById(oldt);
		var testimN = document.getElementById(newt);
		DOMhelp.cssjs('add', testim, SH.hideClass);
        DOMhelp.cssjs('remove', testimN, SH.hideClass);
        var newSection = document.getElementById(newId);
        DOMhelp.cssjs('add', SH.current, SH.hideClass);
        DOMhelp.cssjs('remove', newSection, SH.hideClass);
		SH.current = newSection;
		SH.current.base = 'reg';
        SH.init();
        //window.alert(elm.num+','+SH.current.base+','+num+','+newId);
    },
    passCheck:function(){
    	var parent = SH.current;
    	var inputs = parent.getElementsByTagName('input');
    	for(var i=0;i<inputs.length;i++){
    		var input = inputs[i];
    		var type = input.getAttribute('type');
    		var inName = input.getAttribute('name');
    		if(type=='button'||inName.substr(0,4)!='pass'){continue;}
//    		alert(type+': '+inName);
			switch(inName){
				case 'pass1':
					var password1 = input.value;
				break;
				case 'pass2':
				var pass2 = input.value;
				var span = document.getElementById('msgSpn');
				if(pass2!=password1){
					if (!span) {
						var msg = ' Passwords do not match!';
						span = DOMhelp.createTextElm('span', msg);
						span.setAttribute('id', 'msgSpn');
						var replace = input.nextSibling;
						input.parentNode.replaceChild(span, replace);
					}
					return false;
				}else{
					var msg = ' Thank you';
					if(!span){

						var span = DOMhelp.createTextElm('span', msg);
						span.setAttribute('id', 'msgSpn');
						var replace = input.nextSibling;
						input.parentNode.replaceChild(span, replace);

					}else{
						DOMhelp.setText(span,msg);
					}
					return true;
				}
				break;
				default:
				break;
			}
    	}
    	return true;
    },
    addValidation:function(){

    	var parent = SH.current;
    	var inputs = parent.getElementsByTagName('input');
    	for(var i=0;i<inputs.length;i++){
    		var input = inputs[i];
    		var type = input.getAttribute('type');
    		var inName = input.getAttribute('name');
    		if(type=='button'){continue;}
//    		alert(type+': '+inName);
			switch(inName){
				case 'title':
					break;
				case 'forename':
					var forname = new LiveValidation(input, { validMessage: " Thank you ",onlyOnBlur: true});
					forname.add(Validate.Presence, { failureMessage: " Fill in your name!"});
				break;
				case 'surname':
				var surname = new LiveValidation(input, { validMessage: " Thank you",onlyOnBlur: true });
					surname.add(Validate.Presence, { failureMessage: " Fill in your surname!"});
				break;
				case 'company':
				var company = new LiveValidation(input, { validMessage: " Thank you",onlyOnBlur: true });
					company.add(Validate.Presence, { failureMessage: " Fill in your company name!"});
				break;
				case 'email':
				var email = new LiveValidation(input, { validMessage: " Thank you",onlyOnBlur: true });
					email.add(Validate.Presence,{ failureMessage: " Fill in your email!"});
					email.add(Validate.Email);
				break;
				case 'tel':
				var tel = new LiveValidation(input, { validMessage: " Thank you",onlyOnBlur: true });
					tel.add(Validate.Presence, {failureMessage: " Fill in your telephone number!"});
				break;
				case 'pass1':
				var pass1 = new LiveValidation(input, { validMessage: " Thank you",onlyOnBlur: true});
					pass1.add(Validate.Presence, { failureMessage: " You must supply a password!" });
				break;
				default:
				break;
			}
    	}
//    	alert(parent);
    },
    goPrev: function(e){
        var elm = DOMhelp.getTarget(e);
		//window.alert(elm.num);
		switch (elm.num) {
            case '2':

                SH.getService();
                break;
            case '3':

                SH.getLanguages();
                break;
            default:
			//window.alert(elm.num);
                break;
        }
        var num = new Number(elm.num) - 1;
        var newId = SH.current.base + num;
		var newt = SH.testimonial+num;
		var oldt = SH.testimonial+elm.num;
		var testim = document.getElementById(oldt);
		var testimN = document.getElementById(newt);
		DOMhelp.cssjs('add', testim, SH.hideClass);
        DOMhelp.cssjs('remove', testimN, SH.hideClass);
        var newSection = document.getElementById(newId);
        DOMhelp.cssjs('add', SH.current, SH.hideClass);
        DOMhelp.cssjs('remove', newSection, SH.hideClass);
		SH.current = newSection;
		SH.current.base = 'reg';
        SH.init();
        //window.alert(elm.num+','+SH.current.base+','+num+','+newId);
    },
	getService:function(){
		var p = document.getElementById('service');
		var opts = p.getElementsByTagName('input');
		SH.service = '';
		var setup='';
		var monthly='';
		var credit = '';
		for(var i=0;i<opts.length;i++){
			if(opts[i].checked){
				SH.service += opts[i].value+', ';
				switch(opts[i].value){
					case 'Light':
						setup = '$500';
						monthly = '$195/month';
						credit = '$3000 per 10K words';
					break;
					case 'Full':
						setup = '$1995';
						monthly = '$995/month';
						credit = '$3000 per 10K words';
					break;
					default:
						setup = '$0';
						monthly = '$0';
						credit = '$0';
					break;
				}
			}
		}
		SH.service = SH.service.substr(0,SH.service.length-2);
		var version = document.getElementById('version');

		var spSetup = document.getElementById('setup');
		DOMhelp.setText(spSetup,setup);
		var spMonthly = document.getElementById('monthly');
		DOMhelp.setText(spMonthly,monthly);
		var spCredit = document.getElementById('credit');
		DOMhelp.setText(spCredit,credit);
		//var txt = DOMhelp.getText(version);
		var txt = 'You have chosen the "' + SH.service+'" version.';
		DOMhelp.setText(version,txt);
		SH.getOptions();
		//window.alert(SH.service);
	},
	getLanguages:function(){
		var d = document.getElementById('lang');
		var checks = d.getElementsByTagName('input');
		SH.languages = '';
		for(var i=0;i<checks.length;i++){
			if(checks[i].checked){
				SH.languages += checks[i].value+', ';
			}
		}
		SH.languages = SH.languages.substr(0,SH.languages.length-2);
		var langs = document.getElementById('list_lang');
		//var txt = DOMhelp.getText(langs);
		var txt = 'For the following languages:  "'+SH.languages+'".';
		DOMhelp.setText(langs,txt);
		//window.alert(SH.languages);
	},
	getOptions:function(){
		var optDiv = document.getElementById('options');
		var options = optDiv.getElementsByTagName('div');
		var line = '';
		for(var i=0;i<options.length;i++){
			if(options[i].className=='hide'){
				continue;
			}
			var d = options[i];
			var opts = d.getElementsByTagName('input');
			var table = document.getElementById('pricing_tbl');
			for(var j=0;j<opts.length;j++){
				var el = opts[j];
				var type = el.getAttribute('type');
				if(type=='checkbox'&&el.checked){
					line += el.value+', ';
				}else if(type!='checkbox'){
					line = el.value+', ';
				}
				switch(el.value){
					case 'Priority Service':
						var fee = '$100 / month';
					break;
					case 'Backup':
						var fee = '$10 / month';
					break;
					case 'Spam Filter':
						var fee = '$10 / month';
					break;
					default:
					break;
				}

				var row = document.createElement('tr');
				row.className = 'style2';
				var cellV = document.createElement('td');
				cellV.className = 'countryName';
				var cellD = document.createElement('td');
				cellD.className = 'submitButtonHolder';
				cellV.appendChild(document.createTextNode(el.value));
				cellD.appendChild(document.createTextNode(fee));
				row.appendChild(cellV);
				row.appendChild(cellD);
				table.appendChild(row);
			}
			line = line.substr(0,line.length-2);
			line = 'With the following options: '+line;
			var list_opt = document.getElementById('list_opt');
			DOMhelp.setText(list_opt,line);
		}
	},
	optShow:function(e){
		var opt = DOMhelp.getTarget(e);
		var val = opt.value;
		var servopts = document.getElementById(val);
		if (servopts) {
			var parent = servopts.parentNode;
			var divs = parent.getElementsByTagName('div');
			for(var i=0;i<divs.length;i++){

				if(divs[i] != servopts && !DOMhelp.cssjs('check',divs[i],SH.hideClass)&&!DOMhelp.cssjs('check',divs[i],'submitButtonHolder')&&!(divs[i].getAttribute('id')=='options')){
					DOMhelp.cssjs('add',divs[i],SH.hideClass);
				}
			}
			DOMhelp.cssjs('remove', servopts, SH.hideClass);
		}else{
			var divs = opt.parentNode.parentNode.getElementsByTagName('div');
			for(var j=0;j<divs.length;j++){
				if(!DOMhelp.cssjs('check',divs[j],SH.hideClass)&&!DOMhelp.cssjs('check',divs[j],'submitButtonHolder')&&!(divs[j].getAttribute('id')=='options')){
					DOMhelp.cssjs('add',divs[j],SH.hideClass);
				}
			}
		}
	}
}
DOMhelp.addEvent(window, 'load', SH.init, false);



