var services  = new Array();
// Header customization
services['hdr'] = {items: new Array(), count: 0}
services['hdr'].items = [
  { name:'Header customization...', items:0, pages:0 }, // title
  { name:'Changing logo and company name'  , items:1, pages:0 },
  { name:'Changing navigation menu buttons', items:1, pages:0 },
  { name:'Changing main image'             , items:1, pages:0 }
];
// Content operations
services['cont'] = {items: new Array(), count: 0}
services['cont'].items = [
  { name:'Content operations...', items:0, pages:0 }, // title
  { name:'Inserting customer\'s content to template body'             , items:0, pages:1 },
  { name:'Changing page layout with no content changes'               , items:0, pages:1 },
  { name:'Changing text on the entire page'                           , items:0, pages:1 },
  { name:'Changing text in existing text box'                         , items:1, pages:1 },
  { name:'Changing graphical text (headlines)'                        , items:1, pages:1 },
  { name:'Changing any image under the header ( in the template body)', items:1, pages:1 }
];
// Custom design
services['dsgn'] = {items: new Array(), count: 0}
services['dsgn'].items = [
  { name:'Custom design...'  , items:0, pages:0 }, // title
  { name:'Design a non-flash unique template'                              , items:0, pages:1 },
  { name:'Design a non-flash unique template with flash header animation'  , items:0, pages:1 },
  { name:'Design a unique flash template'                                  , items:0, pages:1 },
  { name:'Development of  2D unique logotype'                              , items:1, pages:0 },
  { name:'Development of  3D logotype'                                     , items:1, pages:0 },
  { name:'Custom made collage'                                             , items:1, pages:0 }
];
// Other customization services
services['othr'] = {items: new Array(), count: 0}
services['othr'].items = [
  { name:'Other customization services...', items:0, pages:0 }, // title
  { name:'Changing music in a flash area'     , items:1, pages:0 },
  { name:'Changing color scheme'              , items:0, pages:1 },
  { name:'Change all phrases in flash intro'  , items:1, pages:0 },
  { name:'Changing resolution'                , items:0, pages:1 }
];
// Programming
services['prgr'] = {items: new Array(), count: 0}
services['prgr'].items = [
  { name:'Programming...'  , items:0, pages:0 }, // title
  { name:'Content Management Page' , items:0, pages:1 },
  { name:'Image Gallery'           , items:0, pages:1 },
  { name:'News management'         , items:0, pages:1 },
  { name:'Maillist management'     , items:1, pages:0 },
  { name:'Contact Form'            , items:1, pages:0 },
  { name:'Mp3 player'              , items:1, pages:0 }
];


function CreateNode(name,param,parent){
	var obj = parent?parent.ownerDocument.createElement(name):document.createElement(name);
	if(parent)
		parent.appendChild(obj)
	if(param)
		CreateParam(param,obj)
	return obj;
}

function CreateParam(param,obj){
	for(var p in param){
		if(p == 'className')
			obj.className = param[p]
		else if(p == 'style')
			CreateParam(param[p],obj.style)
		else if(obj.setAttribute)
			obj.setAttribute(p,param[p]);
		else
			obj[p] = param[p];
	}
}

function changeType(serv_type){
	//alert(serv_type);
	var s_items = document.getElementById(serv_type.s_alias+'_items_'+serv_type.st_id);
	var s_pages = document.getElementById(serv_type.s_alias+'_pages_'+serv_type.st_id);
	var s_type  = services[serv_type.s_alias].items[serv_type.value];
	s_items.disabled = !s_type.items;
	s_pages.disabled = !s_type.pages;
}

function getService(s_name){
	serv = services[s_name];
	serv.count++
	return serv;
}

function addSection(s_name){
	var opt;
    // getting service to add section
	var serv = getService(s_name);
    // "type" select
    if(serv.count >= serv.items.length) {
      alert('There is no more types of services.');
      return;
    }
    p   = CreateNode('p',{},document.getElementById(s_name+'_container_1'));
    // because MS IE... :-(
    p.innerHTML = '<select class="select" name="'+s_name+'_type['+serv.count+']" id="'+s_name+'_type_'+serv.count+'" onchange="javascript:changeType(this)"></select>';
  	type   = document.getElementById(s_name+'_type_'+serv.count);
  	//type   = CreateNode('select',{className:'select',name: s_name+'_type['+serv.count+']', onchange:'javascript:changeType(this)'}, p);
    type.s_alias = s_name;
    type.st_id   = serv.count;
    // generating options
    for (var i in serv.items) {
      opt = document.createElement("OPTION");
      opt.text  = serv.items[i].name;
      opt.value = i;
      type.options.add(opt)
    }
    // "items" input
    p   = CreateNode('p',{},document.getElementById(s_name+'_container_2'));
  	items  = CreateNode('input',{className:'inp4', type:'text', name: s_name+'_items['+serv.count+']', id: s_name+'_items_'+serv.count},p);
  	items.className = 'inp4';
    // "pages" input
    p   = CreateNode('p',{},document.getElementById(s_name+'_container_3'));
  	items  = CreateNode('input',{className:'inp4', type:'text', name: s_name+'_pages['+serv.count+']', id: s_name+'_pages_'+serv.count},p);
    // Refresh type settings
    changeType(type);
}

function validateForm(form){
    // validating name
	if( form.y_name.value == '' ){
		//'
		form.y_name.focus();
		alert('Enter the name please!')
		return false;
	}
    // validating e-mail
	if( !/^(\w+\.)*([\w-]+)@([A-Za-z0-9\-]+\.)+([a-zA-Z]{2,4})$/.test(form.y_mail.value) ){
		form.y_mail.focus();
		alert('E-mail is not valid!')
		return false;
	}
    // validating Template ID
	if(form.template_id.value != '' && !/^[0-9]+$/.test(form.template_id.value) ){
		form.template_id.focus();
		alert('Template ID must be a numeric string!')
		return false;
	}
    // validating Url
	if(form.y_url.value != '' && !/^([a-zA-Z]+):\/\/([A-Za-z0-9\-]+).([A-Za-z]{2,4})([\/]*)([A-Za-z0-9\.\-_]*)$/.test(form.y_url.value) ){
		form.y_url.focus();
		alert('Company URL is not valid!')
		return false;
	}
	// validating pages and items
    for (i=0; i<form.length; i++)
    	if(/_items/.test(form.elements[i].name) || /_pages/.test(form.elements[i].name))
    		if((!form.elements[i].disabled) && (form.elements[i].value =='' || !/^[0-9]+$/.test(form.elements[i].value)) ){
				form.elements[i].focus();
				alert('Incorrect number!')
				return false;
    		}

    return true;

}

function sendForm(form) {
   var value;
   var conn = new connect('');
   var post = '';

   // validate form
   if(!validateForm(form))
     return false;

   conn.setup(recieveForm, true);
   for (i=0; i<form.length; i++) {
  	  if(!form.elements[i].disabled){ // filter disabled values
  	  	  if(/_type/.test(form.elements[i].name)) { // if element is service type value => use current text
  	  	  	if(form.elements[i].value!=0){
  	  	      value = form.elements[i].options[form.elements[i].selectedIndex].text;
              if(post != '') post += '&';
              post += form.elements[i].name+'='+encodeURIComponent(value);
  	  	  	}
  	  	  } else  {
  	  	    value = form.elements[i].value;
            if(post != '') post += '&';
            post += form.elements[i].name+'='+encodeURIComponent(value);
  	  	  }

  	  }
  }
  conn.send('customization-order-send.php', post);
}

function recieveForm(data) {
   if(data == 'true')
     ShowSuccess();
   else
     ShowFailure();
}

function ShowForm(){
	document.getElementById('cust_success').style.display = "none";
	document.getElementById('cust_failure').style.display = "none";
	document.getElementById('cust_form'   ).style.display = "block";
}
function ShowSuccess(){
	document.getElementById('cust_success').style.display = "block";
	document.getElementById('cust_failure').style.display = "none";
	document.getElementById('cust_form'   ).style.display = "none";
}
function ShowFailure(){
	document.getElementById('cust_success').style.display = "none";
	document.getElementById('cust_failure').style.display = "block";
	document.getElementById('cust_form'   ).style.display = "none";
	var dbg_div = document.getElementById('debug_info');
}

window.onload=function() { for(var s in services) addSection(s); ShowForm(); };

