var onepage_content2 = "div#content1",
    onepage_content1 = "div#content2",
    onepage_advantage_width = 400,
    inner_page_open = false,
    content_loadingTimeStamp,
    onepage_lockEvent = false,
    content_timeoutId;

checkurl = function (url) {
    var l = window.location;
    r = "^"+l.protocol+"//"+l.hostname+".*"
    pat_abs = new RegExp("^(ftp|http|https)://");
    pat_this = new RegExp(r,"i");
    pat_wiki = new RegExp("(@@|%40%40)searchpage.html");
    pat_tool = new RegExp("/\\+\\+tool\\+\\+(@@|%40%40)[^/]+/(@@|%40%40).+");
    pat_dialog = new RegExp("/\\+\\+dialog\\+\\+[^:]*$");
    pat_dialogfixed = new RegExp("/\\+\\+dialog\\+\\+.*$");

    if (pat_dialog.test(unescape(url))) {
	return url+":contentdialog.html";
    } else if (pat_dialogfixed.test(url)) {
        return url;
    } else if (pat_tool.test(url)) {
        return url.replace(pat_tool,"/@@contentlet");
    } else if (pat_abs.test(url) && !pat_this.test(url)) {
        window.location.assign(url);
        return null;
    } else if (pat_wiki.test(url)) {
        return url + '&view=/@@contentlet';
    } else {
        return url + '/@@contentlet';
    }
    return url;
}

parsecontentlet = function(base) {
    var count = 0;

    $(onepage_content2 + " div.article img").each(
        function() {
            $(this).attr("src",base+"/"+$(this).attr("src"));
            var node_a = $(this).closest("a");
            node_a.attr("href",base+"/"+node_a.attr("href"));
            node_a.click(loadfullimage);
        }
    );

    $(onepage_content1 + " div#gallery").removeAttr('id');
    $(onepage_content1 + " div.contenticons").removeClass('contenticons');
    $(onepage_content2 + " a").not(onepage_content2 + " div.contenticons a").click(loadpage); 

    gallery_init(onepage_prev, onepage_next);
//    gallery_activate();

    $(onepage_content2 + " div.shareit").hide();
    $(onepage_content2 + " div.facebook").hide();
    $(onepage_content2 + " div.reference").hide();

    if ($(onepage_content2 + " div.contenticons").size()) {
        switchpagegallery();
        $("a#onepage_gallery").show();
        count ++;
    } else {
        $("a#onepage_gallery").hide();
    }

    if ($(onepage_content2 + " div.values").size()) {
        switchpagecontent();
        $("a#onepage_content").show();
        count ++;
    } else {
        $("a#onepage_content").hide();
    }

    sp = new RegExp("\\S","mi");

    if (sp.test($(onepage_content2 + " div.article").text()) || ( sp.test($(onepage_content2 + " div.abstract").text()) && count == 0)) { 
        switchpagearticle();
        $("div.article a[href^=#]").each(function() { $(this).unbind();} )
        $("a#onepage_article").show();
        count ++;
    } else {
        $("a#onepage_article").hide();
    }
 
    if (count <= 1) {
        $("div#buttons a").hide();
    } 
    
    if (count != 1) {
	$("div#gallery").hide();
    } else {
        $(onepage_content2 + " div.abstract").show();
    }

    $(onepage_content2+" form").submit(function(event) {
	var action = $(this).attr("action");
	if (action == "http://webtogether.ru") {
	    $("img#logo").click();
	} else {
            var data = $(this).serializeArray();
	    jQuery.post(
	       checkurl(action),
               jQuery.param(data)+"&UPDATE_SUBMIT=Send",
               function (data,textStatus,request) {
		   $(onepage_content2 + " div.subcontent").html(data);
	           parsecontentlet(base); 
               }
           );
        }
  	return false;
     });
}

loadpage = function(event){
    return loadpageurl(event.target.getAttribute('href'));
}

loadpagecurrenttarget = function(event){
    return loadpageurl(event.currentTarget);
}

loadpagecurrenttarget1 = function(event){

    return loadpageurl(event.currentTarget.getAttribute('href'));
}

loadpageurl = function(href) {
    if ($(":animated").size()!=0) {
	return false;
    } else {
        if (onepage_lockEvent) {
            return false;
        } else {
	    return loadpageurl_do(href);
        }
    }
}


loadpageurl_do = function(href) {

    if (!href) {
        return true;
    }

    url = checkurl(href);

    if (url=="http://webtogether.ru/@@contentlet" ||  url == "http://webtogether.ru//@@contentlet") {
       $("img#logo").click();
       return false;
    }

    if (!inner_page_open) {

        /* opencontent(); */

        $("img#logo").unbind();
        $("img#logo").click(function () { 
            if (inner_page_open) {
		closecontent();
            } else { 
		opencontent();
            }
            return false; 
        });
    }

    if (url) {
	var timeoutexceeded = false;
        var completed = false;
        var starttimeout = 0;
        if (inner_page_open) {
            starttimeout = 1000;
        }
        var c;
        c = onepage_content1;
        var base;
 
        onepage_content1 = onepage_content2;
        onepage_content2 = c;
        $(onepage_content2).css({"display":"block","width":"90%", "z-index":"20"});
        $(onepage_content1).css({"display":"block","width":"90%", "z-index":"40"});

        $(onepage_content2 + " div.subcontent").html("");

        

        setTimeout(
            function(){
                timeoutexceeded = true;
                var timeout;
                var animatetime = 0;
                if (inner_page_open) {
                    animatetime = 1000;
                }

                if (completed) {
                    timeout = 0;
                } else {
                    timeout = 1000;
                    var pt;
                    
		    /* cray : получалось отрицательное значение регулярно */
                    pt = (($(onepage_content2).height() - $("div#content_loading img").get(0).height) / 2).toString() + "px";

                    $("div#content_loading").css({"display":"block", "padding-top":pt}); 
                }
                content_timeoutId = setInterval(
                    function () {
                       if (completed) {
                          clearTimeout(content_timeoutId);
                          $(onepage_content1).css({"border-right": "3px solid #002c6a"});
                          $("div#content_loading").css({"display":"none"}); 
                          $(onepage_content1).animate(
                              {"width":"0px"}, 
                              animatetime,
                              jQuery.linear,
                              function(){
                                  $(onepage_content1).css({"display":"none", "border-right-width": "0"});
				  $(onepage_content1 + " div.subcontent").html(" ");

				  if (!inner_page_open) { 
				     opencontent(function () {
	                                 $(onepage_content2).css({"display":"block","width":"90%", "z-index":"40"});
        	                         $(onepage_content1).css({"display":"block","width":"90%", "z-index":"20"});
                                     }); 
				   } else {
				       $(onepage_content2).css({"display":"block","width":"90%", "z-index":"40"});
        	                       $(onepage_content1).css({"display":"block","width":"90%", "z-index":"20"});
                                   }
   
                                  /*gallery_init(); 
                                  gallery_activate();*/

				  /* alert($(onepage_content1 + " div.subcontent").html());
				  alert("clear: " + onepage_content1 + " div.subcontent"); */
                              }
                          );
                       }
                    },
                    timeout
		)

            },
            starttimeout
        );

        $(onepage_content2 + " div.subcontent").load(
            url,
            null,
            function(node,text,response){
                $(onepage_content2 + " div.subcontent").width($(onepage_content2).width() - 15);
                if (!$(onepage_content2 + " div.subcontent").html()) {
                    window.location.assign(href);
                } else {
                    base = response.getResponseHeader('Base');
		    if (base == null) {
			alert("Invalid base, change no URL");
			base = document.URL;
		    } else {
                        document.base = base;
                        onepage_httpprefix = new RegExp("^https*://[^/]+/?");
                        $.get(base + "/@@breadcrumbs",function (result) {$(result).replaceAll("div#breadcrumbs"); });
                        $.get(base + "/@@localnavy",function (result) {$(result).replaceAll("div#localnavy"); });
                        try {
                           jQuery.history.set("/"+base.substr(String(onepage_httpprefix.exec(base)).length));
                        } catch (err) {alert("invalid base:" + err);};
                        $("#mainmenu a").each(
                            function(){
                                if(base.indexOf($(this).attr("href"), 0) == -1) {
                                    $(this).attr("class","mainmenuitem");
                                } else {
                                    $(this).attr("class","mainmenuitemactive");
                                }
                            }
                        )
                      		    }

                    parsecontentlet(base);
		    completed = true;
                }
            }
        );
    }
       
    return false;
}

switchpageof = function() {
    $(onepage_content2 + " div#gallery").hide();
    $(onepage_content2 + " div.values").hide();
    $(onepage_content2 + " div.article").hide();
    $(onepage_content2 + " div.contenticons").hide();
    $(onepage_content2 + " div.abstract").hide();
    $("div#localnavy").css({"display":"block"});
    $("div#gallery_navy").css({"display":"none"});
    $("div#buttons a").each(
        function(){
            $(this).attr("class", "");
        }
    );
}

switchpagearticle = function() {
    switchpageof();
    $(onepage_content2 + " div.article").show();
    $(onepage_content2 + " div.abstract").show();
    $("div#buttons a#onepage_article").attr("class", "buttonactive");
    return false;
  }

switchpagecontent = function() {
    switchpageof();
    $(onepage_content2 + " div.values").show();
    $("div#buttons a#onepage_content").attr("class", "buttonactive");
    return false;
  }

switchpagegallery = function() {
    switchpageof();
    $(onepage_content2 + " div.contenticons").show();
    $(onepage_content2 + " div#gallery").show();
    $("div#buttons a#onepage_gallery").attr("class", "buttonactive");
    $("div#localnavy").css({"display":"none"});
    $("div#gallery_navy").css({"display":"block"});

    return false;
}

closecontent = function(){
    if ($(":animated").size()==0) {
      $("div#body").animate( { "top": (95+$("div#body").height()) +"px" },1000,
        function () { $("div#body").css({"display":"none", "top":"95px" }); }
      );
      
      $("div#advantage_min").css( {  "display": "none" } );
      $("div#advantage").css({"display":"block"});
      $("div#advantage").animate(
          { "left":"340px", "top": "450px", "right" : "0px", "width": onepage_advantage_width+"px", height: "85px"},
          1000,
          function () {
             return false;
          }
      );
      
      $("div#advantage a img").animate({"width":"150px"});
      inner_page_open = false;
    } 
    return false;
}

opencontent = function (callback) {
    if ($(":animated").size()==0) {
      onepage_advantage_width =  $("div#advantage").width();
      
      $("div#body").css( { "display": "block", "top": (95+$("div#body").height()) +"px" } );
      $("div#body").animate( { "top": 95 + "px" }, 1000 );
      $("div#advantage").animate(
          { "left":"180px", "top": "12px", "width" : "110px", height: "140px"},
          1000,
          function () {
              $("div#advantage_min").css( {  display: "block" } );
              $("div#advantage").css( {  display: "none" } );
              if (callback) {
                  callback();
              }
          }
      );

      inner_page_open = true;
    }
    return false;

}


loadfullimage = function (event) {
    $("div#template2").load(
	event.currentTarget.getAttribute("href") + "fullimage",
	function () {
            $("div#template1").hide();
            $("div#template2").show();
            $(window).bind('resize',function () { changeImageSize('fullimage'); });
	    $("div.imagebox a").click(
		function() {
		     $(window).unbind('resize');
		     $("div#template2").hide();
                     $("div#template2").html("");
                     $("div#template1").show();
                     return false;
		}
            )
	    $("div#template2 h1.sitetitle a").click(function () {  $("div.imagebox a").click(); return false; });
	}
    );
    return false;
}


onepage_prev = function () {
    $("div#localnavy a.left").click();
}

onepage_next = function () {
    $("div#localnavy a.right").click();
}


$(document).ready(function() {
    $.history.init(function(hash){
      if(hash.substr(0,1) == "/") {
        var l = window.location;
	    loadpageurl(l.protocol+"//"+l.host+hash);
       }
    },
    { unescape: ",/" }); 

    $("div#system_menu a#system_menu_close").click(closecontent);
    $("div#mainmenu a").click(loadpage);
    $("div#middleline a").click(loadpagecurrenttarget);
    $("div#advantage a[href]").click(loadpagecurrenttarget);
    $("div#advantage_min a[href]").click(loadpagecurrenttarget);
    $("div#complex a[href]").click(loadpagecurrenttarget);
    $("div#sample a[href]").click(loadpagecurrenttarget);
    $("div#breadcrumbs a[href]").live('click',loadpagecurrenttarget);
    $("div#localnavy a[href]").live('click',loadpagecurrenttarget1);
    $("div#bookmarks a[href^=++dialog++]").click(loadpagecurrenttarget);
    $("div#gallery a").live('click',loadfullimage);

    $(this).ajaxStart(function () { onepage_lockEvent = true;  });
    $(this).ajaxStop(function () { onepage_lockEvent = false;  });
    $("div#gallery_navy a#gallery_navy_next").click(gallery_next_click);
    $("div#gallery_navy a#gallery_navy_prev").click(gallery_prev_click);

    main();
    return true;

});

main = function() { 
  inner_page_open = true;
  parsecontentlet(document.URL); 
}

