  var DT_NS = {};
 	DT_NS.Transport = 	function (url, callback) {
		var timestamp = new Date();
  		var param = "timestamp="+(timestamp*1);
		  var req;
		  if (window.XMLHttpRequest) {
		      	req = new XMLHttpRequest();

			req.open("POST", url, false);
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req.send(param);
			if(req.status == 200){
		  		if (callback) {callback(req.responseText);
				}
			}
		  }else if (window.ActiveXObject) {
		    req =  new ActiveXObject("Microsoft.XMLHTTP");
            req.open("POST", url, false);
			req.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
			req.onreadystatechange = processRequest;
			req.send(param);
          }
		  function processRequest() {
		      if (req.readyState == 4) {
		        if (req.status == 200) {
		          if (callback) callback(req.responseText);

		        }
		      }
		  }

	}

	function getTemplate(template) {
  		var lnk;
  		lnk = DT_NS.tmplt.getTemplateLink();
  		var id = template["element_id"];
        var instOfAJAX = new DT_NS.Transport(lnk, function(resp) { DT_NS.parseResponse(resp,id);});
    }

 	DT_NS.parseResponse = function(response,idOfInsertingPlace){
  		document.write(response);
  		for(var key in template){
			delete template[key];
		}
   	}

    DT_NS.tmplt ={
 	 getTemplateLink : function(){
		var url;
        for(var i=0;i<template["items"].length;i++){
          	var conds_match_count = 0;
  			var conds_count = 0;
			var switcher;
			/* ===== */
			if(template["items"][i]["conds"].length==0){
				url = template["items"][i]["link"];
				return url;
			}
			/* ===== */
        	for(var j=0;j<template["items"][i]["conds"].length;j++){
        		var params_match_count = 0;
        	    params_count=template["items"][i]["conds"][j]["params"].length;
                for(var z=0;z<template["items"][i]["conds"][j]["params"].length;z++){
                	switcher = template['items'][i]["conds"][j]["params"][z]["type"];
                    switch(switcher){
                        case "1":   /* refferal*/
                            var ref = this.referrerComparison();
                            if(template['items'][i]["conds"][j]["params"][z]["value"] == ref){
                                params_match_count++;
                            }
                            break;
                        case "2": 	/* get-request */
                            if(template['items'][i]["conds"][j]["params"][z]["value"] == this.showParametrsForGetRequest(template['items'][i]["conds"][j]["params"][z]["value"],template['items'][i]["conds"][j]["params"][z]["name"])){
                                params_match_count++;
                            }
                           break;
                        case "3":  /* cookies */
                            if(template['items'][i]["conds"][j]["params"][z]["value"] == this.getCookie(template['items'][i]["conds"][j]["params"][z]["value"],template['items'][i]["conds"][j]["params"][z]["name"])){
                                params_match_count++;
                          }
                        break;
                    }
				}
					if( ((template["items"][i]['param_oper']=='1' && params_count == params_match_count)   && !(template["items"][i]['param_oper']=='2' && params_match_count ))
				||
		    	    (!(template["items"][i]['param_oper']=='1' && params_count == params_match_count)   && ((template["items"][i]['param_oper']=='2') && params_match_count ))
      		  	  )
                {conds_match_count++;}
			}
            conds_count = template["items"][i]["conds"].length;
			if( ((template["items"][i]["cond_oper"]=="1" && conds_count == conds_match_count)   && !(template["items"][i]["cond_oper"]=="2" && conds_match_count ))
			||
		    (!(template["items"][i]["cond_oper"]=="1" && conds_count == conds_match_count)   && ((template["items"][i]["cond_oper"]=="2") && conds_match_count ))
                  )
		  		{url = template["items"][i]["link"];}
        }
       	if(typeof(url)=="undefined"){ url = template["items"][0]["link"]; }
       	return url;
    },

    showParametrsForGetRequest   : function(value,keyOfValue){
    	var tmp = new Array();
    	var tmp2 = new Array();
	    var param = new Array();
	    var get = location.search;
	    if(get != ''){
	    	tmp = (get.substr(1)).split('&');
   	        for(var i=0; i < tmp.length; i++){
            	tmp2 = tmp[i].split('=');
            	if(typeof(tmp2[1])=="undefined"){
            		tmp2[1] = "";
            	}
      	    	param[tmp2[0]] = tmp2[1];
            }
    		for(var j in param){
    			if((param[j]==value)&&(j==keyOfValue)){
					return value;
			 	}
		    }
        }
		else{return 0;}
    },

    getCookie                    : function(value,name){
       var pattern = "(?:; )?" + name + "=([^;]*);?";
	   var regexp  = new RegExp(pattern);
       if (regexp.test(document.cookie)){
	   	   if(value==decodeURIComponent(RegExp["$1"])){
               return decodeURIComponent(RegExp["$1"]);
		   }
          else return;
	   }
    },

    referrerComparison            : function(){
       var referWithoutParams;
	   var refer_full = document.referrer;
	   var myRe=/^\w+:\/\/[^/]+\//;
	   var main_part_of_refer = myRe.exec(refer_full)+"";
	   var current_url = window.location;
	   var main_part_of_current_url = myRe.exec(current_url)+"";
	   main_part_of_current_url = main_part_of_current_url;
       switch(main_part_of_refer){
  	   		case "http://search.yahoo.com/":	var searchRequestWords = /p=[^&]+/i ;
					  							    var yahooWords = searchRequestWords.exec(refer_full);
                                                    var url = "http://search.yahoo.com/search?"+yahooWords;
					  		                        return url;

            case "http://www.google.com/"   :   var searchRequestWords = /q=[^&]+/i ;
							  			     		var googleWords = searchRequestWords.exec(refer_full);
							  				    	var url = "http://www.google.com/search?"+googleWords;
					  		  					    return url;
		    default							:   return referWithoutParams = /[^\?]+/.exec(document.referrer)+"";
	    }

    }
 }